Est-il préférable d'encoder des fonctionnalités comme le mois et l'heure en tant que facteur ou numérique dans un modèle d'apprentissage automatique?
D'une part, je pense que l'encodage numérique pourrait être raisonnable, car le temps est un processus progressif (le cinquième mois est suivi du sixième mois), mais d'autre part, je pense que l'encodage catégoriel pourrait être plus raisonnable en raison de la nature cyclique d'années et de jours (le 12e mois est suivi du premier).
Existe-t-il une solution ou une convention générale pour cela?
Réponses:
Avez-vous envisagé d'ajouter la transformation (sinus, cosinus) de la variable de l'heure de la journée? Cela garantira que les heures 0 et 23, par exemple, sont proches l'une de l'autre, permettant ainsi à la nature cyclique de la variable de transparaître.
( Plus d'infos )
la source
La réponse dépend du type de relations que vous souhaitez représenter entre l'entité temporelle et la variable cible.
Si vous codez l'heure sous forme numérique, vous imposez certaines restrictions au modèle. Pour un modèle de régression linéaire, l'effet du temps est désormais monotone, la cible augmentera ou diminuera avec le temps. Pour les arbres de décision, les valeurs temporelles proches les unes des autres seront regroupées.
Le temps de codage catégorique donne au modèle plus de flexibilité, mais dans certains cas, le modèle peut ne pas avoir suffisamment de données pour bien apprendre. Une technique qui peut être utile consiste à regrouper les valeurs de temps en un certain nombre d'ensembles et à utiliser l'ensemble comme attribut catégorique.
Quelques exemples de regroupements:
Chacun des éléments ci-dessus peut également être utilisé directement en tant qu'attribut catégorique, avec suffisamment de données. En outre, des regroupements peuvent également être découverts par l'analyse des données, pour compléter une approche basée sur les connaissances du domaine.
la source
Je recommande d'utiliser des fonctionnalités numériques. L'utilisation de caractéristiques catégoriques signifie essentiellement que vous ne considérez pas la distance entre deux catégories comme pertinente (par exemple, la catégorie 1 est aussi proche de la catégorie 2 qu'elle l'est de la catégorie 3). Ce n'est définitivement pas le cas pendant des heures ou des mois.
Cependant, le problème que vous soulevez est que vous voulez représenter les heures et les mois d'une manière où 12 est aussi proche de 11 que de 1. Pour y parvenir, je recommande d'aller avec ce qui a été suggéré dans les commentaires et d'utiliser une fonction sinus / cosinus avant d'utiliser les heures / mois comme caractéristiques numériques.
la source
Cela dépend de l'algorithme que vous utilisez.
Si vous utilisez des algorithmes arborescents comme la forêt aléatoire, passez simplement cette question. L'encodage catégorique n'est pas nécessaire pour les algorithmes basés sur des arbres.
Pour d'autres algorithmes comme le réseau neuronal, je suggère d'essayer les deux méthodes (continue et catégorique). L'effet diffère entre différentes situations.
la source
Étant donné que toutes les données dont vous disposez sont bien définies, je vous suggère un codage catégorique, qui est également plus facile à appliquer.
la source
Pour reformuler la réponse fournie par @raghu . Une différence majeure entre les caractéristiques catégorielles et numériques est de savoir si l'ampleur des chiffres est comparable, c'est-à-dire que 2019 est plus grand que 2018 ou décembre (12) plus grand que mars (3)? Pas vraiment. Bien qu'il y ait un ordre séquentiel dans ces nombres, leur ampleur n'est pas comparable. Ainsi, la transformation en une valeur catégorielle peut avoir plus de sens.
la source