最近、ターゲット変数がマルチクラスであるプロジェクトを行ったので、カテゴリの特徴をエンコードする適切な方法を探していました。他のメソッドに対するターゲット変数の平均によるコーディングの利点と、category_encodersライブラリを使用して2行のコードでこのタスクを実行する方法をリストした多くの記事を見つけました 。しかし、驚いたことに、マルチクラスターゲット変数に対してこのメソッドを示した記事はありませんでした。 category_encodersのドキュメントを調べたところ、ライブラリはバイナリ変数または実変数に対してのみ機能することがわかりました。DanieleMicci-Barrecaによる元の作業を 調べました。、平均ターゲットエンコーディングを導入しましたが、意味のあるものは何も見つかりませんでした。
この記事では、ターゲットエンコーディングについて説明しているドキュメントの概要を示し、バイナリの問題に対してターゲットエンコーディングがどのように機能するかを例とともに示します。
理論
したがって、「0/1」、「クリックされた/クリックされなかった」、または「猫/犬」と尋ねられた場合、分類の問題はバイナリです。「赤または緑または青、しかしおそらく黄色」または「セダン対ハッチバックおよびすべて対SUV」と答えたい場合、問題はいくつかのクラスにあります。
これが私が上で述べたカテゴリー目標の記事が言わなければならないことです:
観測の結果は、ターゲット変数の確率の推定を通じて表示できます。
, , .
.
, .
. 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. , . , .
, .
!