分类问题-样本权重(sample_weight)和类别权重(class_weight)
樣本權重是對損失函數來說的對于類別少的樣本 通過調節其對
損失函數的影響程度來達到提高預測精度
- 類型權重參數: class_weight
class_weight有什么作用?在分類模型中,我們經常會遇到兩類問題:
第一種是誤分類的代價很高。比如對合法用戶和非法用戶進行分類,將非法用戶分類為合法用戶的代價很高,我們寧愿將合法用戶分類為非法用戶,這時可以人工再甄別,但是卻不愿將非法用戶分類為合法用戶。這時,我們可以適當提高非法用戶的權重class_weight={0:0.9, 1:0.1}。
第二種是樣本是高度失衡的,比如我們有合法用戶和非法用戶的二元樣本數據10000條,里面合法用戶有9995條,非法用戶只有5條,如果我們不考慮權重,則我們可以將所有的測試集都預測為合法用戶,這樣預測準確率理論上有99.95%,但是卻沒有任何意義。這時,我們可以選擇balanced(scikit-learn 邏輯回歸類庫使用小結),讓類庫自動提高非法用戶樣本的權重。
2. 樣本權重參數: sample_weight
樣本不平衡,導致樣本不是總體樣本的無偏估計,從而可能導致我們的模型預測能力下降。遇到這種情況,我們可以通過調節樣本權重來嘗試解決這個問題。調節樣本權重的方法有兩種,第一種是在class_weight使用balanced。第二種是在調用fit函數時,通過sample_weight來自己調節每個樣本權重。
在scikit-learn做邏輯回歸時,如果上面兩種方法都用到了,那么樣本的真正權重是class_weight*sample_weight.
原理 => 樣本或類別的權重在訓練模型最終通過損失函數實現(以邏輯回歸為例):
算法會把每個樣本的訓練損失乘以它的權重class_weight*sample_weight,損失函數為:
J(θ)=?(class_weight?sample_weight)lnL(θ)=?(class_weight?sample_weight)∑i=1m(y(i)log(hθ(x(i)))+(1?y(i))log(1?hθ(x(i)))) 。
應用 => 1. 做受眾選擇(人群擴展、人群定向)模型,若種子包包括目標商品轉化和行為用戶(購買較少,加入線上加購、收藏作為正樣本),可考慮加大轉化用戶的樣本權重。
2.DSP中CVR預估,廣告主同時對ROI提出要求時,可嘗試把客單價轉化為樣本權重列(spark lr: Weight_Col)參與到模型訓練以提升ROI。
3. QLMX:第四屆拍拍貸魔鏡杯冠軍方案分享 - 日期權重調整: 現金流預測中統計分析月初的還款量較大,月底的還款量較小,將每月月初的loss權重增到到1.12,月末的loss權重的loss減小到0.79。
4.
清凇:Deep Neural Network for YouTube Recommendation論文精讀- 有點擊的為正樣本,有PV無點擊的為負樣本,正樣本根據觀看時長進行加權( weighted logistic regression), 其目標其實為預測期望觀看時長。
總結
以上是生活随笔為你收集整理的分类问题-样本权重(sample_weight)和类别权重(class_weight)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协方差矩阵有什么意义?
- 下一篇: 奇异值分解与最小二乘问题 线性回归