Saya mencoba memahami bagaimana saya dapat menyandikan variabel kategori menggunakan estimasi kemungkinan, tetapi sejauh ini hanya sedikit keberhasilan.
Setiap saran akan sangat dihargai.
feature-engineering
kurcaci kecil
sumber
sumber
Jawaban:
Saya juga mempelajari topik ini, dan inilah yang saya temukan:
Jenis pengkodean ini disebut pengkodean kemungkinan , pengkodean dampak atau pengkodean target
Idenya adalah mengkodekan variabel kategori Anda dengan menggunakan variabel target (kontinu atau kategori tergantung pada tugas). Misalnya, jika Anda memiliki tugas regresi, Anda dapat menyandikan variabel kategori Anda dengan rata-rata target. Untuk setiap kategori, Anda menghitung rata-rata target yang sesuai (di antara kategori ini) dan mengganti nilai kategori dengan mean ini.
Jika Anda memiliki tugas klasifikasi, Anda menghitung frekuensi relatif target Anda sehubungan dengan setiap nilai kategori.
Dari sudut pandang matematika, pengodean ini berarti probabilitas target Anda, tergantung pada setiap nilai kategori.
Jika Anda melakukannya dengan cara yang sederhana, seperti yang saya jelaskan di atas, Anda mungkin akan mendapatkan estimasi yang bias. Itu sebabnya di komunitas Kaggle mereka biasanya menggunakan 2 level cross-validation. Baca komentar ini oleh raddar di sini . Notebook yang sesuai ada di sini .
Kutipan:
Implementasi lain dari pengkodean ini ada di sini .
Di R library vtreat mereka memiliki implementasi pengkodean dampak. Lihat posting ini .
Di perpustakaan CatBoost mereka memiliki banyak opsi untuk pengkodean variabel kategorikal termasuk pengkodean target.
Belum ada pengkodean di sklearn.
sumber
Pengkodean target sekarang tersedia di sklearn melalui paket category_encoders.
Seperti yang dicatat oleh josh dalam komentar di atas.
sumber
Kemungkinan encoding masih belum tersedia di scikit belajar. Anda dapat melakukannya dengan membuat kamus, dan kemudian melakukan fungsi ganti.
sumber