Por que uma codificação quente melhora o desempenho do aprendizado de máquina?

127

Percebi que, quando a codificação One Hot é usada em um determinado conjunto de dados (uma matriz) e usada como dados de treinamento para algoritmos de aprendizado, ela fornece resultados significativamente melhores com relação à precisão da previsão, em comparação com o uso da própria matriz original como dados de treinamento. Como esse aumento de desempenho acontece?

maheshakya
fonte

Respostas:

260

Muitos algoritmos de aprendizado aprendem um único peso por recurso ou usam distâncias entre amostras. O primeiro é o caso de modelos lineares, como a regressão logística, que são fáceis de explicar.

Suponha que você tenha um conjunto de dados com apenas um único recurso categórico "nacionalidade", com os valores "Reino Unido", "Francês" e "EUA". Suponha, sem perda de generalidade, que eles sejam codificados como 0, 1 e 2. Você terá um peso w para esse recurso em um classificador linear, que tomará algum tipo de decisão com base na restrição w × x + b> 0 , ou equivalentemente w × x <b.

O problema agora é que o peso w não pode codificar uma opção de três vias. Os três valores possíveis de w × x são 0, w e 2 × w. Todos esses três levam à mesma decisão (são todos <b ou ≥b) ou "UK" e "French" levam à mesma decisão, ou "French" e "US" tomam a mesma decisão. Não há possibilidade do modelo aprender que "UK" e "US" devem receber o mesmo rótulo, com "French" o ímpar.

Com a codificação one-hot, você efetivamente aumenta o espaço de recursos para três recursos, cada um com seu próprio peso, de modo que a função de decisão agora é w [UK] x [UK] + w [FR] x [FR] + w [US] x [US] <b, onde todos os x são booleanos. Nesse espaço, essa função linear pode expressar qualquer soma / disjunção das possibilidades (por exemplo, "Reino Unido ou EUA", que pode ser um preditor para alguém que fala inglês).

Da mesma forma, qualquer aluno com base em métricas de distância padrão (como k-vizinhos mais próximos) entre amostras ficará confuso sem a codificação one-hot. Com a codificação ingênua e a distância euclidiana, a distância entre francês e EUA é 1. A distância entre EUA e Reino Unido é 2. Mas com a codificação one-hot, as distâncias em pares entre [1, 0, 0], [0, 1 , 0] e [0, 0, 1] são todos iguais a √2.

Isso não é verdade para todos os algoritmos de aprendizado; as árvores de decisão e os modelos derivados, como florestas aleatórias, se forem profundos o suficiente, podem lidar com variáveis ​​categóricas sem a codificação one-hot.

Fred Foo
fonte
4
Obrigado por este Lars, mas quando fazemos um OneHotEncoding que aumenta efetivamente o número de recursos, não precisamos aumentar os exemplos também, para garantir que ele não se ajuste demais.
Manoj
@ Manoj Comparado com a representação alternativa óbvia de variáveis ​​categóricas, codificando cada nível como um número inteiro distinto, acho que não importa: você precisa de estatísticas suficientes de qualquer maneira.
Fred Foo
7
Existe alguma literatura que você possa apontar para que eu possa ler mais sobre isso? Obrigado.
Dr.Knowitall
1
Existe um benefício em usar uma matriz de classificação inferior à completa (o que você não faria ao criar um modelo estatístico regular) ao empregar técnicas de aprendizado de máquina, como aumentar?
Steve S
2
Isso me parece exatamente o que um estatístico chamaria de "variáveis ​​simuladas". Mas talvez haja alguma economia de espaço de armazenamento.
Soldalma
3

Em relação ao aumento dos recursos ao fazer a codificação one-hot, pode-se usar hash de recursos. Ao fazer o hash, você pode especificar que o número de buckets seja muito menor que o número dos recursos recém-introduzidos.

user3764384
fonte
0

Quando você deseja prever categorias, deseja prever itens de um conjunto. Não usar a codificação one-hot é semelhante a permitir que as categorias tenham categorias vizinhas (por exemplo: se você fez uma regressão com os números inteiros das categorias) organizadas de uma certa maneira e em uma determinada ordem.

Agora, o que acontece se você atribuir a categoria 0 a 0, categoria 1 a 1 e categoria 2 a 2 sem a codificação one-hot, e que a previsão do seu algoritmo não tem certeza se deve escolher 0 ou 2: ele deve prever 1, apesar de ele acha que é 0 ou 2?

Você vê para onde vai. O mesmo vale para as entradas de dados: se elas não deveriam ser vizinhas, não as mostre ao seu algoritmo como vizinhas.

Guillaume Chevalier
fonte