Saya baru-baru ini melakukan proyek dengan variabel target multi-kelas, jadi saya mencari cara yang sesuai untuk menyandikan fitur kategorikal. Saya menemukan banyak artikel yang mencantumkan manfaat pengkodean melalui mean variabel target dibandingkan metode lain, dan bagaimana menyelesaikan tugas ini dalam dua baris kode menggunakan pustaka category_encoders . Namun, yang mengejutkan saya, saya menemukan bahwa tidak ada artikel yang mendemonstrasikan metode ini untuk variabel target multikelas. Saya melihat-lihat dokumentasi category_encoders dan menyadari bahwa perpustakaan hanya berfungsi untuk variabel biner atau nyata, melihat karya asli oleh Daniele Micci-Barreca, yang memperkenalkan pengkodean target rata-rata dan juga tidak menemukan sesuatu yang masuk akal.
Pada artikel ini, saya akan memberikan gambaran umum tentang dokumen yang menjelaskan pengkodean target dan menunjukkan dengan contoh bagaimana pengkodean target bekerja untuk masalah biner.
Teori
Jadi: jika Anda ditanya "0/1", "diklik / tidak diklik" atau "kucing / anjing", maka masalah klasifikasi Anda adalah biner; Jika Anda ingin menjawab "merah atau hijau atau biru, tapi mungkin kuning" atau "sedan versus hatchback dan all versus SUV," maka masalahnya ada di beberapa kelas.
Inilah yang dikatakan artikel tujuan kategoris yang saya sebutkan di atas:
Hasil pengamatan dapat ditampilkan melalui perkiraan probabilitas variabel target.
, , .
.
, .
. 0, 1. P (Y = 1 | X = Xi), ..:
n(Y) - 1 ,
n(i) - i- ,
n(iY) - 1 i- .
, 1 i- , - 1 . Ī» - , 0 1, n(i), .
TargetEncoder category_encoders, k - min_sample_leaf, f - .
, , , . , , , (. . Y). .
. . , . , , , . .
, .
.
, 1, «»?
: 1/2 = 0,5.
, , Target 1, «»?
: 1/4 = 0,25.
?
, «Female» 0,25, . , 4/9 = 0,4.
, «» , , .
min_sample_leaf, k = 1 , f = 1,
«Male», n = 2;
Ī»(āMaleā)=1/(1+exp(-(2ā1)/1))=0.73 # Weight Factor for 'Male'
Target Statistic=(Weight Factor * Probability of 1 for Males)
+ ((1-Weight Factor) * Probability of 1 Overall)S(āMaleā)= (0.73 * 0.5) + ((1ā0.73) * 0.4) = 0.485
, «Female» , n = 4;
Ī»(āFemaleā)=1/(1+exp(-(4ā1)/1))=0.95 #Weight Factor for 'Female'
Target Statistic=(Weight Factor * Probability of 1 for Females)
+ ((1-Weight Factor) * Probability of 1 Overall)S(āFemaleā)= (0.95 * 0.25) + ((1ā0.95) * 0.4) = 0.259
, , λ , . 4 «Female», 2 «Male». 0,95 0,73.
, «Male» 0,485 , «Female» 0,259. «».
! !
?
, , category_encoders:
!pip install category_encoders
import category_encoders as ce
x=['Male','Male','Female','Female','Female','Female','Other','Other','Other']
y=[1,0,0,0,0,1,1,1,0]
print(ce.TargetEncoder().fit_transform(x,y))
TargetEncoder category_encoders. , . , .
, .
!