Dados numéricos: agrupamento por classes

O agrupamento por classes (também chamado de agrupamento por classes) é uma engenharia de atributos técnica que agrupa diferentes subintervalos numéricos em classes ou buckets. Em muitos casos, o agrupamento por classes transforma dados numéricos em dados categóricos. Por exemplo, considere um recurso chamado X, cujo menor valor é 15 e o valor mais alto é 425. Ao usar o agrupamento por classes, é possível representar X com o cinco agrupamentos a seguir:

  • Agrupamento 1: 15 a 34
  • Agrupamento 2: 35 a 117
  • Agrupamento 3: 118 a 279
  • Agrupamento 4: 280 a 392
  • Agrupamento 5: 393 a 425

O agrupamento 1 abrange o intervalo de 15 a 34, portanto, todo valor de X entre 15 e 34 acaba na Agrupamento 1. Um modelo treinado nesses agrupamentos não reagirá da mesma forma a valores X de 17 e 29, já que ambos estão no Agrupamento 1.

O vetor de recurso representa os cinco agrupamentos da seguinte forma:

Número do agrupamentoIntervaloVetor do atributo
1 15-34 [1,0, 0,0, 0,0, 0,0, 0,0]
2 35-117 [0,0, 1,0, 0,0, 0,0, 0,0]
3 118-279 [0,0, 0,0, 1,0, 0,0, 0,0]
4 280-392 [0,0, 0,0, 0,0, 1,0, 0,0]
5 393-425 [0,0, 0,0, 0,0, 0,0, 1,0]

Mesmo que X seja uma única coluna no conjunto de dados, o agrupamento por classes faz com que um modelo para tratar X como cinco recursos diferentes. Assim, o modelo aprende pesos separados para cada agrupamento.

O agrupamento por classes é uma boa alternativa ao escalonamento ou recorte quando um dos as seguintes condições sejam atendidas:

  • A relação linear geral entre o atributo e o O rótulo é fraco ou inexistente.
  • Quando os valores dos atributos são agrupados.

O agrupamento por classes pode parecer contraintuitivo, já que o modelo da exemplo anterior trata os valores 37 e 115 de maneira idêntica. Mas quando um recurso parece mais desajeitado do que o linear, o agrupamento por classes é uma maneira muito melhor de representam os dados.

Exemplo de agrupamento por classes: número de compradores versus temperatura

Suponha que você esteja criando um modelo que prevê o número de compradores pela temperatura externa naquele dia. Aqui está um gráfico temperatura em comparação com o número de compradores:

Figura 9. Um gráfico de dispersão de 45 pontos. Os 45 pontos
            em três grupos.
Figura 9. Um gráfico de dispersão de 45 pontos.

O gráfico mostra, sem surpresa, que o número de compradores foi maior quando e a temperatura era mais confortável.

Você pode representar o atributo como valores brutos: uma temperatura de 35,0 no no conjunto de dados seria 35,0 no vetor de atributo. Essa é a melhor ideia?

No treinamento, um modelo de regressão linear aprende um peso para cada . Portanto, se a temperatura for representada como um único atributo, temperatura de 35,0 teria uma influência cinco vezes maior (ou um quinto da influência) em uma previsão como uma temperatura de 7,0. No entanto, o gráfico não mostram qualquer tipo de relação linear entre o rótulo e o valor do atributo.

O gráfico sugere três clusters nos seguintes subintervalos:

  • O agrupamento 1 é a faixa de temperatura de 4 a 11.
  • O agrupamento 2 é o intervalo de temperatura de 12 a 26.
  • O agrupamento 3 é o intervalo de temperatura de 27 a 36.
Figura 10. O mesmo gráfico de dispersão de 45 pontos do exemplo anterior
            figura, mas com linhas verticais para deixar os agrupamentos mais óbvios.
Figura 10. O gráfico de dispersão dividido em três agrupamentos.

O modelo aprende pesos separados para cada agrupamento.

Embora seja possível criar mais de três agrupamentos, até mesmo um agrupamento separado para cada leitura de temperatura, essa não é uma boa ideia pelas seguintes razões:

  • Um modelo só pode aprender a associação entre um agrupamento e um rótulo se houver há exemplos suficientes nesse agrupamento. No exemplo dado, cada um dos três agrupamentos contém pelo menos 10 exemplos, o que pode ser suficiente para o treinamento. Com 33 agrupamentos separados, nenhum dos agrupamentos conteria exemplos suficientes para o treinamento do modelo.
  • Um compartimento separado para cada temperatura resulta em 33 recursos de temperatura separados. No entanto, você normalmente deve minimizar o número de atributos em um modelo.

Exercício: testar seu conhecimento

O gráfico a seguir mostra o preço médio residencial para cada 0,2 grau de latitude do país mítico da Freedonia:

Figura 11. Um gráfico de valores residenciais por latitude. A casa mais baixa
            o valor é cerca de 327 e o mais alto é 712. As latitudes abrangem 41,0
            a 44,8, com um ponto representando o valor médio de casas para cada
            0,2 grau de latitude. O padrão é altamente irregular, mas com
            dois clusters distintos (um cluster entre as latitudes 41.0 e 41.8,
            e outro entre as latitudes 42.6 e 43.4).
Figura 11. Valor médio da casa por latitude de 0,2 grau.

O gráfico mostra um padrão não linear entre o valor inicial e a latitude, portanto, representar a latitude como seu valor de ponto flutuante provavelmente não ajudará de um modelo fazer boas previsões. Talvez o agrupamento por classes de latitude seja uma opção ideia?

Qual seria a melhor estratégia de agrupamento por classes?
Não crie buckets.
Dada a aleatoriedade da maior parte do gráfico, esta provavelmente é a a melhor estratégia.
Crie quatro buckets:
  • 41,0 a 41,8
  • 42,0 a 42,6
  • 42,8 a 43,4
  • 43,6 a 44,8
Seria difícil para um modelo encontrar um único peso preditivo para todas as casas na segunda ou quarta, com alguns exemplos.
Transforme cada ponto de dados no próprio bucket.
Isso só será útil se o conjunto de treinamento tiver exemplos para cada 0,2 grau de latitude. Em geral, casas tendem a se aglomerar perto das cidades e são relativamente escassas em outros lugares.

Agrupamento por classes quantil

O agrupamento por classes de quantil cria limites de agrupamento, de modo que o número de exemplos em cada bucket é exatamente ou quase igual. Agrupamento por classes de quantis na maioria das vezes oculta os outliers.

Para ilustrar o problema que o agrupamento por classes de quantil resolve, considere o de buckets igualmente espaçados mostrados na figura a seguir, em que dos dez buckets representa um período de exatamente 10.000 dólares. O bucket de 0 a 10.000 contém dezenas de exemplos mas o bucket de 50.000 a 60.000 contém apenas 5 exemplos. Consequentemente, o modelo tem exemplos suficientes para ser treinado nos 0 a 10.000 mas não há exemplos suficientes para treinar para o bucket de 50.000 a 60.000.

Figura 13. Um gráfico do preço do carro em relação ao número de carros vendidos a
            esse preço. O número de carros vendidos chega a um pico de preço de 6.000.
            Acima de preço de 6.000, o número de carros vendidos em geral
            diminui, com pouquíssimos carros vendidos entre preços de 40.000 a
            60 mil. O gráfico é dividido em 6 buckets do mesmo tamanho, cada um com
            em um intervalo de 10.000. Portanto, o primeiro bucket contém todos os carros vendidos
            entre 0 e 10.000, o segundo
            contém todos os carros vendidos entre um preço de 10.001 e
            20.000 e assim por diante. O primeiro bucket tem muitos exemplos. cada
            o bucket subsequente contém menos exemplos.
Figura 13. Alguns buckets contêm muitos carros. outros buckets contêm em pouquíssimos carros.

Em contraste, a figura a seguir usa o agrupamento por classes de quantis para dividir os preços dos carros em agrupamentos com aproximadamente o mesmo número de exemplos em cada um deles. Alguns dos agrupamentos têm uma faixa de preço estreita, enquanto outros abrangem uma faixa de preços muito ampla.

Figura 14. Igual à figura anterior, exceto com buckets de quantil.
            Ou seja, os buckets agora têm tamanhos diferentes. O primeiro bucket
            contém os carros vendidos de 0 a 4.000, o segundo bucket contém
            venderam de 4.001 a 6.000. O sexto bucket contém
            de carros vendidos de 25.001 a 60.000. O número de carros em cada bucket
            não mudou.
Figura 14. Com o agrupamento por classes quantil, cada bucket tem aproximadamente a mesma de carros.