Representação: dados de limpeza

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

As árvores de maçã produzem uma mistura de ótimas frutas de frutas e vermes. No entanto, as maçãs em supermercados sofisticados exibem 100% de frutas perfeitas. Entre pomar e mercearia, alguém passa um tempo significativo removendo as maçãs ruins ou jogando uma pequena cera nas que podem ser recuperadas. Como engenheiro de ML, você passará muito tempo dedicando exemplos ruins e limpando aqueles que podem ser resgatados. Mesmo algumas maçãs" podem estragar um grande conjunto de dados.

Como escalonar valores de atributos

Escalonamento significa converter valores de recursos de ponto flutuante do seu intervalo natural (por exemplo, 100 para 900) em um intervalo padrão (por exemplo, de 0 para 1 ou -1 para +1). Se um conjunto de atributos consistir em apenas um atributo, o escalonamento fornece pouco ou nenhum benefício prático. No entanto, se um conjunto de recursos consistir em vários atributos, o escalonamento de atributos fornecerá os seguintes benefícios:

  • Ajuda o gradiente descendente a convergir mais rapidamente.
  • Ajuda a evitar a armadilha de "NaN," em que um número no modelo se torna um NaN (por exemplo, quando um valor excede o limite de precisão de ponto flutuante durante o treinamento) e, devido a operações matemáticas, todos os outros números no modelo também se tornam um NaN.
  • Ajuda o modelo a aprender os pesos apropriados para cada atributo. Sem o escalonamento de atributos, o modelo prestará muita atenção aos atributos que têm um intervalo maior.

Não é necessário atribuir a mesma escala a todos os recursos de pontos flutuantes. Nada muito ruim vai acontecer se o Recurso A for dimensionado de -1 a +1, enquanto o Recurso B for escalonado de -3 para +3. No entanto, o modelo reagirá mal se o Recurso B for escalonado de 5000 para 100000.

Como lidar com outliers extremos

O gráfico a seguir representa um recurso chamado roomsPerPerson do conjunto de dados de imóveis da Califórnia. O valor de roomsPerPerson foi calculado dividindo o número total de salas de uma área pela população dessa área. O gráfico mostra que a grande maioria das áreas na Califórnia tem um ou dois quartos por pessoa. Veja o eixo X.

Um gráfico de salas por pessoa em que quase todos os valores estão agrupados entre 0 e 4, mas há uma cauda longa e longa que chega a 55 quartos por pessoa

Figura 4. Uma cauda lorny lonnnnnnng.

Como podemos minimizar a influência desses outliers extremos? Uma maneira é usar o registro de cada valor:

Um gráfico de log(roomsPerPerson) em que 99% dos valores se agrupam entre 0,4 e 1,8, mas ainda há uma cauda longa que vai para 4,2 ou mais.

Figura 5. O escalonamento logarítmico ainda deixa uma cauda.

O escalonamento de registros faz um trabalho um pouco melhor, mas ainda há uma cauda significativa de valores outliers. Vamos escolher outra abordagem. E se nós simplesmente "quot;cap" ou "clip" o valor máximo de roomsPerPerson em um valor arbitrário, digamos 4,0?

Um gráfico de roomPerPerson em que todos os valores ficam entre -0,3 e 4,0. O gráfico tem forma de sino, mas há uma colina anômala de 4,0

Figura 6. Valores de recursos de corte em 4.0

Cortar o valor do recurso em 4.0 não significa que ignoramos todos os valores maiores que 4.0. Em vez disso, isso significa que todos os valores maiores que 4,0 agora se tornam 4,0. Isso explica o engraçado morro em 4.0. Apesar dessa montanha, o conjunto de atributos em escala agora é mais útil que os dados originais.

Agrupamento por classes

O gráfico a seguir mostra a prevalência relativa de casas em diferentes latitudes na Califórnia. Observe o clustering. Los Angeles está na latitude 34, e São Francisco está na latitude 38.

Um lote de casas por latitude. O gráfico é altamente irregular, contendo tambores ao redor da latitude 36 e picos enormes ao redor das latitudes 34 e 38.

Figura 7. Casas por latitude.

No conjunto de dados, latitude é um valor de ponto flutuante. No entanto, não faz sentido representar latitude como um atributo de ponto flutuante no nosso modelo. Isso porque não há relação linear entre a latitude e os valores das casas. Por exemplo, as casas na latitude 35 não \(\frac{35}{34}\) são mais (ou menos) caras que as casas na latitude 34. Ainda assim, as latitudes individuais provavelmente são um preditor muito bom de valores internos.

Para tornar a latitude um preditor útil, vamos dividir as latitudes em "bins" conforme sugerido pela figura a seguir:

Um lote de casas por latitude. O gráfico é dividido em

Figura 8. Valores de agrupamento.

Em vez de ter um atributo de ponto flutuante, agora temos 11 atributos booleanos diferentes (LatitudeBin1, LatitudeBin2, ..., LatitudeBin11). Ter 11 atributos separados é um pouco insignificante, então vamos unificá-los em um único vetor de 11 elementos. Ao fazer isso, será possível representar a latitude 37.4 da seguinte forma:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

Graças à vinculação, nosso modelo pode aprender pesos completamente diferentes para cada latitude.

Refinamento

Até agora, presumimos que todos os dados usados para treinamento e teste fossem confiáveis. Na vida real, muitos exemplos em conjuntos de dados não são confiáveis devido a um ou mais dos seguintes motivos:

  • Valores omitidos. Por exemplo, uma pessoa se esqueceu de inserir um valor para a idade da casa.
  • Exemplos duplicados. Por exemplo, um servidor fez upload dos mesmos registros duas vezes por engano.
  • Ruim. Por exemplo, uma pessoa rotulou incorretamente uma foto de uma árvore de carvalho como um bordo.
  • Valores de recurso inválidos. Por exemplo, alguém digitou um dígito extra ou um termômetro escondido no sol.

Após a detecção, você normalmente os "corrigir" maus exemplos os remove do conjunto de dados. Para detectar valores omitidos ou exemplos duplicados, escreva um programa simples. Detectar valores de recursos ou rótulos inadequados pode ser muito mais difícil.

Além de detectar exemplos individuais ruins, você também precisa detectar dados inválidos na agregação. Os histogramas são um ótimo mecanismo para visualizar seus dados de maneira agregada. Além disso, coletar estatísticas como as seguintes pode ajudar:

  • Máximo e mínimo
  • Média e mediana
  • Desvio padrão

Considere gerar listas dos valores mais comuns para atributos discretos. Por exemplo, faça a correspondência entre o número de exemplos com country:uk e o número esperado. O language:jp precisa ser a linguagem mais comum no conjunto de dados?

Conheça seus dados

Siga estas regras:

  • Lembre-se de como você acha que seus dados devem ser.
  • Verifique se os dados atendem a essas expectativas ou se você pode explicar por que eles não atendem a essas expectativas.
  • Verifique se os dados de treinamento estão de acordo com outras fontes (por exemplo, painéis).

Trate seus dados com todos os cuidados que você faria com qualquer código essencial. Um bom ML depende de bons dados.

Mais informações

Regras de machine learning, Fase 2 de ML: engenharia de atributos