Apakah lebih baik untuk menyandikan fitur seperti bulan dan jam sebagai faktor atau angka dalam model pembelajaran mesin?
Di satu sisi, saya merasa pengkodean numerik mungkin masuk akal, karena waktu adalah proses maju maju (bulan kelima diikuti oleh bulan keenam), tetapi di sisi lain saya pikir pengkodean kategororial mungkin lebih masuk akal karena sifat sikliknya tahun dan hari (bulan ke-12 diikuti oleh yang pertama).
Apakah ada solusi atau konvensi umum untuk ini?
Jawaban:
Sudahkah Anda mempertimbangkan untuk menambahkan transformasi (sinus, kosinus) variabel waktu hari? Ini akan memastikan bahwa 0 dan 23 jam misalnya dekat satu sama lain, sehingga memungkinkan sifat siklus variabel untuk bersinar.
( Info Lebih Lanjut )
sumber
Jawabannya tergantung pada jenis hubungan yang ingin Anda wakili antara fitur waktu, dan variabel target.
Jika Anda menyandikan waktu sebagai angka, maka Anda menerapkan batasan tertentu pada model. Untuk model regresi linier, efek waktu sekarang monotonik, baik targetnya akan bertambah atau berkurang seiring waktu. Untuk pohon keputusan, nilai waktu yang berdekatan satu sama lain akan dikelompokkan bersama.
Pengkodean waktu sebagai kategori memberikan model lebih banyak fleksibilitas, tetapi dalam beberapa kasus, model mungkin tidak memiliki cukup data untuk belajar dengan baik. Salah satu teknik yang mungkin berguna adalah mengelompokkan nilai-nilai waktu bersama menjadi beberapa set, dan menggunakan set sebagai atribut kategorikal.
Beberapa contoh pengelompokan:
Masing-masing di atas juga dapat digunakan secara langsung sebagai atribut kategori juga, mengingat data yang cukup. Selanjutnya, pengelompokan juga dapat ditemukan dengan analisis data, untuk melengkapi pendekatan berbasis pengetahuan domain.
sumber
Saya sarankan menggunakan fitur numerik. Menggunakan fitur-fitur kategorikal pada dasarnya berarti Anda tidak menganggap jarak antara dua kategori sebagai relevan (misalnya kategori 1 sedekat dengan kategori 2 seperti halnya dengan kategori 3). Ini jelas tidak terjadi berjam-jam atau berbulan-bulan.
Namun, masalah yang Anda ajukan adalah bahwa Anda ingin merepresentasikan jam dan bulan dengan cara di mana 12 mendekati 11 dibandingkan dengan 1. Untuk mencapai itu, saya sarankan pergi dengan apa yang disarankan dalam komentar dan menggunakan fungsi sinus / kosinus sebelum menggunakan jam / bulan sebagai fitur numerik.
sumber
Itu tergantung pada algoritma yang Anda gunakan.
Jika Anda menggunakan algoritma berbasis pohon seperti hutan acak, cukup ajukan pertanyaan ini. Pengkodean kategorikal tidak diperlukan untuk algoritma berbasis pohon.
Untuk algoritma lain seperti jaringan saraf, saya sarankan mencoba kedua metode (kontinu & kategorikal). Efeknya berbeda antara situasi yang berbeda.
sumber
Karena semua data yang Anda miliki terdefinisi dengan baik, saya sarankan Anda melakukan pengkodean kategoris, yang juga lebih mudah diterapkan.
sumber
Untuk mengulangi jawaban yang diberikan oleh @raghu . Salah satu perbedaan utama antara fitur kategorikal dan fitur numerik adalah apakah besarnya angka-angka tersebut sebanding, yaitu apakah 2019 lebih besar dari 2018, atau Desember (12) lebih besar dari Maret (3)? Tidak juga. Meskipun ada urutan berurutan dalam angka-angka ini, besarnya tidak sebanding. Jadi, mentransformasikannya menjadi nilai kategorikal mungkin lebih masuk akal.
sumber