Logistic

為什麼使用 Platt 標度法?

  • December 7, 2010

為了將置信水平校準為監督學習中的概率(例如,使用過採樣數據從 SVM 或決策樹映射置信度),一種方法是使用 Platt 的縮放(例如,從 Boosting 獲得校準的概率)。

基本上一個使用邏輯回歸來映射到. 因變量是真實標籤,預測變量是來自未校準模型的置信度。我不明白的是使用 1 或 0 以外的目標變量。該方法要求創建新的“標籤”:

為了避免對 sigmoid 訓練集的過度擬合,使用了樣本外模型。如果有正面例子和訓練集中的負樣本,對於每個訓練樣本 Platt Calibration 使用目標值和(而不是分別為 1 和 0),其中

我不明白這個新目標有什麼用處。邏輯回歸不是簡單地將因變量視為二元標籤(無論給出什麼標籤)?

更新:

我發現在 SAS 中將依賴項從其他東西恢復到相同的模型(使用PROC GENMOD)。也許是我的錯誤,或者是 SAS 缺乏多功能性。我能夠在 R 中更改模型。例如:

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))

我建議查看邏輯回歸的維基百科頁面。它指出,在二元因變量的情況下,邏輯回歸將預測變量映射到因變量的發生概率。在沒有任何轉換的情況下,用於訓練模型的概率為 1(如果 y 在訓練集中為正數)或 0(如果 y 為負數)。

所以:擬合時不要使用絕對值 1 表示正類,而使用 0 表示負類(在哪裡是 SVM 的未校準輸出),Platt 建議使用上述轉換來允許相反的標籤以一定的概率出現。通過這種方式,引入了一些正則化。當數據集的大小達到無窮大時,將變為 1 並且將變為零。詳情請參閱Platt 的原始論文

引用自:https://stats.stackexchange.com/questions/5196

comments powered by Disqus