Criação de perfil de Big Data em ambiente distribuído usando o Spark: Um Pyspark Data Primer para Machine Learning

Shaheen Gauher Segue 17 de jul · 6 min ler

Shaheen Gauher, PhD

Ao usar dados para construir modelos preditivos, é importante estabelecer a santidade dos dados antes que eles possam ser usados para qualquer tarefa de Aprendizado de Máquina. De uma perspectiva de modelagem, uma coisa que é útil para detectar facilmente quaisquer valores e colunas desonestos nos dados é observar o Perfil de Dados . O perfil é gerado calculando os valores mínimo e máximo em cada coluna da tabela, a média e o desvio padrão de cada coluna, o número de valores distintos em cada coluna, o valor mais frequente e a sua contagem, o valor menos frequente e sua contagem e o número de valores ausentes em cada coluna. Esses atributos dos dados são um bom ponto de partida para entender o que está contido em cada coluna da tabela e começar a ter uma noção da distribuição de dados. O perfil de dados serve como uma boa ferramenta de inspeção de dados e garante que os dados sejam válidos e adequados para consumo adicional.

Para pequenos conjuntos de dados que podem ser carregados na memória para serem acessados usando python ou R, a criação de perfil de dados pode ser feita rapidamente. No entanto, para grandes conjuntos de dados, por exemplo, dados de transações que podem alcançar facilmente a ordem de milhões de registros por dia, isso se torna uma tarefa árdua. Em muitas empresas, os dados normalmente seriam armazenados de maneira distribuída no sistema de arquivos distribuídos do Hadoop (HDFS). A seguir, apresentarei uma função de utilitário para o perfil de big data em um ambiente distribuído usando o Spark. Spark é uma estrutura para computação em cluster e processamento paralelo. Estarei usando o pyspark em particular, uma colaboração entre o Apache Spark e o python. Um código mais detalhado com explicações pode ser encontrado no GitHub . Também compartilharei algumas maneiras pelas quais um perfil de dados pode ajudar a projetar a estratégia de preparação e pré-processamento de dados para fins de modelagem.

Abaixo, consultarei uma tabela de seção de um esquema de seção especificado e carregue-a como um quadro de dados de ignição usando o Spark SQL.

A função do utilitário pyspark abaixo terá como entradas, as colunas a serem perfiladas (todas ou algumas colunas selecionadas) como uma lista e os dados em um DataFrame pyspark.

A função acima irá definir o perfil das colunas e imprimir o perfil como um quadro de dados de pandas.

Perfil DataFrame

Usos do perfil de dados

O perfil de dados é útil de várias maneiras. Ele fornece um nível de confiança sobre a qualidade dos dados e é a maneira mais rápida de começar a entender os dados. Ao mesmo tempo em que garante a qualidade dos dados, o perfil de dados também ajuda a elaborar a estratégia de preparação e pré-processamento de dados . Ao observar as colunas e seus atributos, ela pode ajudar imediatamente a tomar decisões sobre como lidar com valores ausentes, cardinalidade, sem colunas de informações e limpeza de dados.

Lidar com valores ausentes

Ao revelar a porcentagem de valores omissos (os nulos, nans, espaços em branco e espaços em branco) na coluna, o perfil de dados pode ajudar a determinar o valor de porcentagem limite acima do qual as colunas seriam descartadas para fins de modelagem. Mesmo que alguns algoritmos tenham a capacidade de lidar com valores ausentes, é importante entender as razões do desaparecimento . Se uma coluna tiver valores omissos majoritários (~ 80%), a pergunta a ser feita será se a coluna deve ser descartada para fins de modelagem ou se o valor ausente significa alguma coisa. Um exemplo seria uma coluna contendo o número de dias em que um veículo estava em gasolina premium e a pergunta a ser feita seria: o valor ausente na coluna significa que a instância de dados é para um veículo que usa apenas gás comum e, portanto, a falta valor ou que o valor simplesmente não foi registrado corretamente? (Sugestão: envolva-se com o SME para investigar). Os atributos acima também podem ajudar a criar uma estratégia para imputar valores para colunas com alguns valores ausentes (~ 20%). Decisões sobre se a substituição de valores ausentes pelos valores médios ou de modo funcionariam ou se algoritmos de imputação mais complexos, como o SMOTE etc. devem ser chamados, podem ser facilitados observando o perfil de dados.

Lidar com cardinalidade

O perfil de dados pode ajudar a determinar facilmente se a coluna é categórica ou contínua, observando o número de valores exclusivos na coluna. A cardinalidade pode ser determinada observando o número de valores exclusivos para colunas categóricas que podem ser usados na decisão da técnica de codificação apropriada e se a categorização seria necessária para reduzir o espaço do recurso.

Lidar com colunas sem informação

Com o perfil de dados, é fácil identificar colunas que possuem apenas um valor exclusivo e podem ser facilmente descartadas como colunas constantes que não adicionam nenhuma informação da perspectiva de modelagem. As colunas vazias podem ser identificadas se o número de valores ausentes for igual ao número de linhas e descartado. Se o número de valores exclusivos for igual ao número de linhas, a coluna será uma coluna de índice e também poderá ser descartada.

Lidar com dados sujos

Uma das coisas que eu acho um perfil de dados para ser especialmente útil é a limpeza de dados. Se o perfil de dados mostrar o valor de ocorrência mais freqüente como Nenhum ou o valor mínimo como -9999.9 ou o valor máximo for 99999 , é uma indicação de que esses valores precisam ser convertidos em nan ou nulo e o perfil gerado novamente para localizar o valor valores verdadeiros min, max e mode. Ele também pode ajudar a identificar caracteres não imprimíveis e espaços em branco nos dados que precisam ser limpos antes que os dados possam ser usados posteriormente.

Acima estão apenas alguns exemplos de pré-processamento e etapas de preparação de dados sobre as quais um perfil de dados pode começar a informar imediatamente. Desequilíbrio nos dados, outliers e skewness na distribuição de dados são algumas outras coisas que o perfil de dados também pode ajudar a trazer à luz.

Resumo

Para qualquer tipo de carga de trabalho de análise, não há substituto para conhecer os dados de entrada e saída. A criação de perfil dos dados deve ser o primeiro passo antes de usá-lo para qualquer exercício de Aprendizado de Máquina seguido por visualizações para entender melhor as relações entre diferentes elementos de dados e formar uma hipótese sobre como melhor capturá-los com um modelo. Uma boa compreensão dos dados pode não apenas ajudar a gerar insights valiosos, mas também auxiliar na engenharia inteligente de recursos para modelos robustos de aprendizado de máquina. Adoraria saber quais outros atributos de dados poderiam ser incluídos no perfil que seriam úteis para preparar dados para fins de modelagem e dicas sobre como tornar o código mais eficiente (sem configurar um cluster maior). Embora o caso de uso apresentado aqui seja para o perfil de dados no Hadoop, a função pyspark é genérica o suficiente para tomar como dados de entrada de qualquer origem carregada como um quadro de dados pyspark. Apreciar!

@Shaheen_Gauher

Shaheen Gauher é um comunicador de IA, um facilitador de solução inteligente e um cientista de dados por profissão. Ela ajuda as empresas a criar e implantar soluções preditivas para aproveitar melhor seus dados e capacita-os a obter mais recursos por meio da tecnologia e da inteligência artificial. Ela é cientista do clima e física por formação e atua no conselho consultivo para Análise de Dados na Escola de Artes e Ciências da Universidade de Tufts.

Texto original em inglês.