Ist es besser, Features wie Monat und Stunde als Faktor oder numerisch in einem Modell für maschinelles Lernen zu codieren?
Einerseits halte ich die numerische Codierung für sinnvoll, da die Zeit vorwärts geht (auf den fünften Monat folgt der sechste Monat), andererseits halte ich die kategoriale Codierung aufgrund der zyklischen Natur für sinnvoller von Jahren und Tagen (dem 12. Monat folgt der erste).
Gibt es eine allgemeine Lösung oder Konvention dafür?
Antworten:
Haben Sie darüber nachgedacht, die (Sinus-, Cosinus-) Transformation der Tageszeitvariablen hinzuzufügen? Dies stellt sicher, dass beispielsweise die Stunden 0 und 23 nahe beieinander liegen, wodurch die zyklische Natur der Variablen durchscheinen kann.
( Mehr Info )
quelle
Die Antwort hängt von der Art der Beziehungen ab, die Sie zwischen dem Zeitmerkmal und der Zielvariablen darstellen möchten.
Wenn Sie die Zeit als numerisch codieren, werden dem Modell bestimmte Einschränkungen auferlegt. Bei einem linearen Regressionsmodell ist der Effekt der Zeit nun monoton. Entweder nimmt das Ziel mit der Zeit zu oder ab. Für Entscheidungsbäume werden Zeitwerte, die nahe beieinander liegen, zusammengefasst.
Die Codierungszeit als kategorial gibt dem Modell mehr Flexibilität, aber in einigen Fällen verfügt das Modell möglicherweise nicht über genügend Daten, um gut zu lernen. Eine Technik, die nützlich sein kann, besteht darin, Zeitwerte in einer bestimmten Anzahl von Sätzen zu gruppieren und den Satz als kategoriales Attribut zu verwenden.
Einige Beispielgruppierungen:
Jedes der oben genannten Attribute kann bei ausreichender Datenmenge auch direkt als kategoriales Attribut verwendet werden. Darüber hinaus können Gruppierungen auch durch Datenanalyse ermittelt werden, um einen domänenwissensbasierten Ansatz zu ergänzen.
quelle
Ich empfehle die Verwendung von numerischen Merkmalen. Die Verwendung von kategorialen Merkmalen bedeutet im Wesentlichen, dass Sie die Entfernung zwischen zwei Kategorien nicht als relevant betrachten (z. B. ist Kategorie 1 der Kategorie 2 ebenso ähnlich wie der Kategorie 3). Dies ist definitiv nicht der Fall für Stunden oder Monate.
Das Problem, das Sie ansprechen, ist jedoch, dass Sie Stunden und Monate in einer Weise darstellen möchten, in der 12 gleich 11 ist wie 1. Um dies zu erreichen, empfehle ich, mit den in den Kommentaren und in der Verwendung vorgeschlagenen Schritten fortzufahren eine Sinus / Cosinus-Funktion, bevor die Stunden / Monate als numerische Merkmale verwendet werden.
quelle
Es hängt davon ab, welchen Algorithmus Sie verwenden.
Wenn Sie baumbasierte Algorithmen wie zufällige Gesamtstrukturen verwenden, übergeben Sie einfach diese Frage. Für baumbasierte Algorithmen ist keine kategoriale Codierung erforderlich.
Für andere Algorithmen wie das neuronale Netzwerk empfehle ich, beide Methoden (kontinuierlich und kategorial) zu verwenden. Der Effekt ist in verschiedenen Situationen unterschiedlich.
quelle
Da alle Daten, die Sie haben, gut definiert sind, würde ich Ihnen eine kategoriale Kodierung vorschlagen, die auch einfacher anzuwenden ist.
quelle
Umformulieren der Antwort von @raghu . Ein wesentlicher Unterschied zwischen kategorialen und numerischen Merkmalen besteht darin, ob die Größenordnung der Zahlen vergleichbar ist, dh 2019 größer als 2018 oder Dezember (12) größer als März (3)? Nicht wirklich. Obwohl diese Zahlen eine sequentielle Reihenfolge haben, ist ihre Größe nicht vergleichbar. Daher kann die Umwandlung in einen kategorialen Wert sinnvoller sein.
quelle