É melhor codificar recursos como mês e hora como fator ou numérico em um modelo de aprendizado de máquina?
Por um lado, acho que a codificação numérica pode ser razoável, porque o tempo é um processo progressivo (o quinto mês é seguido pelo sexto mês), mas, por outro lado, acho que a codificação categorial pode ser mais razoável por causa da natureza cíclica de anos e dias (o 12º mês é seguido pelo primeiro).
Existe uma solução ou convenção geral para isso?
Respostas:
Você considerou adicionar a transformação (seno, cosseno) da variável hora do dia? Isso garantirá que as 0 e as 23 horas, por exemplo, estejam próximas uma da outra, permitindo assim que a natureza cíclica da variável brilhe.
( Mais informações )
fonte
A resposta depende do tipo de relacionamento que você deseja representar entre o recurso de horário e a variável de destino.
Se você codificar o tempo como numérico, estará impondo certas restrições ao modelo. Para um modelo de regressão linear, o efeito do tempo agora é monotônico, ou o alvo aumentará ou diminuirá com o tempo. Para árvores de decisão, os valores de tempo próximos um do outro serão agrupados.
Codificar o tempo como categórico oferece ao modelo mais flexibilidade, mas em alguns casos, o modelo pode não ter dados suficientes para aprender bem. Uma técnica que pode ser útil é agrupar valores de tempo em algum número de conjuntos e usar o conjunto como um atributo categórico.
Alguns exemplos de agrupamentos:
Cada uma das opções acima também pode ser usada diretamente como um atributo categórico, com dados suficientes. Além disso, os agrupamentos também podem ser descobertos por análise de dados, para complementar uma abordagem baseada no conhecimento do domínio.
fonte
Eu recomendo usar recursos numéricos. O uso de recursos categóricos significa essencialmente que você não considera a distância entre duas categorias como relevante (por exemplo, a categoria 1 é tão próxima à categoria 2 quanto à categoria 3). Definitivamente, esse não é o caso por horas ou meses.
No entanto, a questão que você levanta é que deseja representar horas e meses de uma maneira em que 12 seja o mais próximo de 11 e o de 1. Para conseguir isso, recomendo seguir o que foi sugerido nos comentários e usar uma função seno / cosseno antes de usar as horas / meses como recursos numéricos.
fonte
Depende do algoritmo que você está usando.
Se você estiver usando algoritmos baseados em árvore, como floresta aleatória, basta passar esta pergunta. A codificação categórica não é necessária para algoritmos baseados em árvore.
Para outros algoritmos como a rede neural, sugiro tentar os dois métodos (contínuo e categórico). O efeito difere entre diferentes situações.
fonte
Como todos os dados que você possui estão bem definidos, sugiro uma codificação categórica, que também é mais fácil de aplicar.
fonte
Para reformular a resposta fornecida por @raghu . Uma grande diferença entre as características categóricas e numéricas é se a magnitude dos números é comparável, ou seja, 2019 é maior que 2018 ou dezembro (12) maior que março (3)? Na verdade não. Embora exista uma ordem seqüencial nesses números, sua magnitude não é comparável. Assim, transformar em um valor categórico pode fazer mais sentido.
fonte