機能ターゲットエンコーディングの実装に関する紹介記事

最近、ターゲット変数がマルチクラスであるプロジェクトを行ったので、カテゴリの特徴をエンコードする適切な方法を探していました。他のメソッドに対するターゲット変数の平均によるコーディングの利点と、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), .





category_encodersライブラリのTargetEncoderを使用した場合、kはmin_sample_leafパラメーターであり、fはアンチエイリアシングパラメーターです。
TargetEncoder category_encoders, k - min_sample_leaf, f - .

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(-(21)/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) + ((10.73) * 0.4) = 0.485
      
      



, «Female» , n = 4;





λ(‘Female’)=1/(1+exp(-(41)/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) + ((10.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.  , .  , .





  , . 





!








All Articles