Plattのスケーリングを使用する理由
教師あり学習の信頼度を確率に調整する(たとえば、オーバーサンプリングデータを使用してSVMまたは決定木から信頼度をマップする)方法の1つは、Plattのスケーリングを使用することです(たとえば、ブースティングから調整済み確率を取得する)。 基本的には、ロジスティック回帰を使用してをにマッピングします。従属変数は真のラベルであり、予測子は未較正モデルからの信頼度です。私が理解していないのは、1または0以外のターゲット変数の使用です。このメソッドは、新しい「ラベル」の作成を呼び出します。[−∞;∞][−∞;∞][-\infty;\infty][0;1][0;1][0;1] シグモイド列セットへの過剰適合を回避するために、サンプル外モデルが使用されます。ある場合正例と各トレーニング例えば列車セット内の負例、プラットキャリブレーションが使用目標値及び(代わりに、1と0のそれぞれ)、 N+N+N_+N−N−N_-y+y+y_+y−y−y_-y+=N++1N++2;y−=1N−+2y+=N++1N++2;y−=1N−+2 y_+=\frac{N_++1}{N_++2};\quad\quad y_-=\frac{1}{N_-+2} 私が理解していないのは、この新しいターゲットの有用性です。ロジスティック回帰では、従属変数をバイナリラベルとして扱うだけではありませんか(どのラベルが指定されているかに関係なく)。 更新: SASで依存関係をから別の何かに変更すると、同じモデルに戻ります(を使用)。おそらく私のエラーか、多分SASの汎用性の欠如でしょう。Rでモデルを変更できました。例として:1/01/01/0PROC GENMOD data(ToothGrowth) attach(ToothGrowth) # 1/0 coding dep <- ifelse(supp == "VC", 1, 0) OneZeroModel <- glm(dep~len, family=binomial) OneZeroModel predict(OneZeroModel) # Platt coding dep2 <- ifelse(supp == "VC", 31/32, 1/32) plattCodeModel <- glm(dep2~len, family=binomial) plattCodeModel predict(plattCodeModel) compare <- cbind(predict(OneZeroModel), predict(plattCodeModel)) plot(predict(OneZeroModel), predict(plattCodeModel))