Czy lepiej jest kodować funkcje takie jak miesiąc i godzina jako czynnik lub wartość liczbowa w modelu uczenia maszynowego?
Z jednej strony uważam, że kodowanie numeryczne może być rozsądne, ponieważ czas jest procesem postępowym (po piątym miesiącu następuje szósty miesiąc), ale z drugiej strony uważam, że kodowanie kategoryczne może być bardziej rozsądne z uwagi na cykliczność lat i dni (po 12 miesiącu następuje pierwszy).
Czy istnieje ogólne rozwiązanie lub konwencja?
Odpowiedzi:
Czy rozważałeś dodanie transformacji (sinus, cosinus) zmiennej pory dnia? Zapewni to, że na przykład 0 i 23 godziny są blisko siebie, umożliwiając w ten sposób cykliczny charakter zmiennej.
( Więcej informacji )
źródło
Odpowiedź zależy od rodzaju relacji, które chcesz reprezentować między funkcją czasu a zmienną docelową.
Jeśli kodujesz czas jako wartość liczbową, wówczas nakładasz pewne ograniczenia na model. W przypadku modelu regresji liniowej wpływ czasu jest teraz monotoniczny, albo cel wzrośnie lub zmniejszy się z czasem. W przypadku drzew decyzyjnych wartości czasu blisko siebie zostaną zgrupowane.
Czas kodowania jako kategoryczny daje modelowi większą elastyczność, ale w niektórych przypadkach model może nie mieć wystarczającej ilości danych, aby dobrze się uczyć. Jedną z technik, która może być przydatna, jest grupowanie wartości czasu w pewną liczbę zestawów i użycie zestawu jako atrybutu kategorycznego.
Niektóre przykładowe grupy:
Każde z powyższych można również zastosować bezpośrednio jako atrybut kategoryczny, biorąc pod uwagę wystarczającą ilość danych. Co więcej, grupy można również odkryć poprzez analizę danych, aby uzupełnić podejście oparte na wiedzy w dziedzinie.
źródło
Polecam korzystanie z funkcji numerycznych. Korzystanie z funkcji kategorialnych zasadniczo oznacza, że nie uznajesz odległości między dwiema kategoriami za istotne (np. Kategoria 1 jest tak bliska kategorii 2, jak kategorii 3). Z pewnością nie dzieje się tak przez kilka godzin lub miesięcy.
Jednak podnoszona przez ciebie kwestia polega na tym, że chcesz reprezentować godziny i miesiące w sposób, w którym 12 jest tak bliskie 11, jak to jest 1. Aby to osiągnąć, zalecam postępować zgodnie z sugestiami i używać funkcja sinus / cosinus przed użyciem godzin / miesięcy jako funkcji numerycznych.
źródło
To zależy od używanego algorytmu.
Jeśli używasz algorytmów opartych na drzewach, takich jak losowy las, po prostu przekaż to pytanie. Kodowanie kategoryczne nie jest konieczne w przypadku algorytmów opartych na drzewach.
W przypadku innych algorytmów, takich jak sieć neuronowa, sugeruję wypróbowanie obu metod (ciągłej i kategorycznej). Efekt różni się w zależności od sytuacji.
źródło
Ponieważ wszystkie dane, które posiadasz, są dobrze zdefiniowane, sugeruję kodowanie kategoryczne, które jest również łatwiejsze do zastosowania.
źródło
Przeformułować odpowiedź udzieloną przez @raghu . Jedną z głównych różnic między kategorycznymi i liczbowymi cechami jest to, czy wielkość liczb jest porównywalna, tj. Czy 2019 jest większy niż 2018, czy też grudzień (12) większy niż marzec (3)? Nie całkiem. Chociaż w tych liczbach występuje sekwencja, ich wielkość nie jest porównywalna. Dlatego przekształcenie w wartość kategoryczną może mieć większy sens.
źródło