Muitos algoritmos de aprendizado de máquina, por exemplo, redes neurais, esperam lidar com números. Portanto, quando você tem dados categóricos, precisa convertê-los. Por categórico, quero dizer, por exemplo:
Marcas de automóveis: Audi, BMW, Chevrolet ... IDs de usuários: 1, 25, 26, 28 ...
Mesmo que os IDs de usuários sejam números, eles são apenas rótulos e não significam nada em termos de continuidade, como idade ou soma de dinheiro.
Portanto, a abordagem básica parece usar vetores binários para codificar categorias:
Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...
Tudo bem quando existem poucas categorias, mas além disso parece um pouco ineficiente. Por exemplo, quando você tem 10.000 IDs de usuário para codificar, são 10.000 recursos.
A questão é: existe uma maneira melhor? Talvez um envolvendo probabilidades?
fonte
Respostas:
Você sempre pode tratar seus IDs de usuário como um conjunto de palavras: a maioria dos classificadores de texto pode lidar com centenas de milhares de dimensões quando os dados são escassos (muitos zeros que você não precisa armazenar explicitamente na memória, por exemplo, se você usar Linhas Escarpas Compactas representação para sua matriz de dados).
No entanto, a pergunta é: faz sentido algum problema específico tratar os IDs de usuários como recursos? Não faria mais sentido desnormalizar os dados de sua relação e usar os recursos do usuário (idade, localização, caracteres de apelido on-line, histórico de transações ...) em vez de seus IDs?
Você também pode executar o cluster de seus vetores de usuário brutos e usar os N principais IDs de centros mais próximos como recursos ativados, em vez dos IDs de usuário.
fonte
A codificação equilateral é provavelmente o que você procura ao tentar codificar classes em uma rede neural. Ele tende a funcionar melhor que a codificação "1 de n" mencionada em outras postagens. Para referência, posso sugerir: http://www.heatonresearch.com/wiki/Equilateral
fonte