Banyak algoritma pembelajaran mesin, misalnya jaringan saraf, mengharapkan untuk berurusan dengan angka. Jadi, ketika Anda memiliki data kategorikal, Anda perlu mengubahnya. Maksud saya kategorikal, misalnya:
Merek mobil: Audi, BMW, Chevrolet ... ID Pengguna: 1, 25, 26, 28 ...
Meskipun id pengguna adalah angka, itu hanya label, dan tidak berarti apa pun dalam hal kesinambungan, seperti usia atau jumlah uang.
Jadi, pendekatan dasar tampaknya menggunakan vektor biner untuk menyandikan kategori:
Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...
Tidak apa-apa ketika ada beberapa kategori, tetapi di luar itu terlihat sedikit tidak efisien. Misalnya, saat Anda memiliki 10.000 id pengguna untuk disandikan, berarti 10.000 fitur.
Pertanyaannya adalah, adakah cara yang lebih baik? Mungkin satu yang melibatkan probabilitas?
sumber
Jawaban:
Anda selalu dapat memperlakukan id pengguna Anda sebagai sekumpulan kata: sebagian besar pengklasifikasi teks dapat menangani ratusan ribu dimensi saat data jarang (banyak nol yang tidak perlu Anda simpan secara eksplisit di memori, misalnya jika Anda menggunakan Baris Terkompresi yang Sparse representasi untuk matriks data Anda).
Namun pertanyaannya adalah: apakah masuk akal jika Anda memiliki masalah khusus untuk memperlakukan id pengguna sebagai fitur? Bukankah lebih masuk akal untuk mendenormalisasi data relasi Anda dan menggunakan fitur pengguna (usia, lokasi, karakter dari nama panggilan online, riwayat transaksi ...) daripada id mereka?
Anda juga bisa melakukan pengelompokan vektor pengguna mentah Anda dan menggunakan id pusat terdekat N teratas sebagai fitur yang diaktifkan untuk bukan id pengguna.
sumber
Pengkodean sama sisi mungkin adalah apa yang Anda cari ketika mencoba untuk menyandikan kelas ke dalam jaringan saraf. Ini cenderung bekerja lebih baik daripada pengkodean "1 of n" yang dirujuk dalam posting lain. Untuk referensi boleh saya sarankan: http://www.heatonresearch.com/wiki/Equilateral
sumber