分類問題-樣本權重(sample_weight)和類別權重(class_weight)

樣本權重是對損失函數來講的對於類別少的樣本 經過調節其對
損失函數的影響程度來達到提升預測精度html

  1. 類型權重參數: class_weight

class_weight有什麼做用?在分類模型中,咱們常常會遇到兩類問題:web

  第一種是誤分類的代價很高。好比對合法用戶和非法用戶進行分類,將非法用戶分類爲合法用戶的代價很高,咱們寧願將合法用戶分類爲非法用戶,這時能夠人工再甄別,可是卻不肯將非法用戶分類爲合法用戶。這時,咱們能夠適當提升非法用戶的權重class_weight={0:0.9, 1:0.1}。算法

  第二種是樣本是高度失衡的,好比咱們有合法用戶和非法用戶的二元樣本數據10000條,裏面合法用戶有9995條,非法用戶只有5條,若是咱們不考慮權重,則咱們能夠將全部的測試集都預測爲合法用戶,這樣預測準確率理論上有99.95%,可是卻沒有任何意義。這時,咱們能夠選擇balanced(scikit-learn 邏輯迴歸類庫使用小結),讓類庫自動提升非法用戶樣本的權重。svg

2. 樣本權重參數: sample_weight

  樣本不平衡,致使樣本不是整體樣本的無偏估計,從而可能致使咱們的模型預測能力降低。遇到這種狀況,咱們能夠經過調節樣本權重來嘗試解決這個問題。調節樣本權重的方法有兩種,第一種是在class_weight使用balanced。第二種是在調用fit函數時,經過sample_weight來本身調節每一個樣本權重。函數

    在scikit-learn作邏輯迴歸時,若是上面兩種方法都用到了,那麼樣本的真正權重是class_weight*sample_weight.測試

原理 => 樣本或類別的權重在訓練模型最終經過損失函數實現(以邏輯迴歸爲例):spa

算法會把每一個樣本的訓練損失乘以它的權重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)))) 。xml

應用 => 1. 作受衆選擇(人羣擴展、人羣定向)模型,若種子包包括目標商品轉化和行爲用戶(購買較少,加入線上加購、收藏做爲正樣本),可考慮加大轉化用戶的樣本權重。htm

2.DSP中CVR預估,廣告主同時對ROI提出要求時,可嘗試把客單價轉化爲樣本權重列(spark lr: Weight_Col)參與到模型訓練以提高ROI。blog

3. QLMX:第四屆拍拍貸魔鏡杯冠軍方案分享 - 日期權重調整: 現金流預測中統計分析月初的還款量較大,月底的還款量較小,將每個月月初的loss權重增到到1.12,月末的loss權重的loss減少到0.79。

4.

清凇:Deep Neural Network for YouTube Recommendation論文精讀 zhuanlan.zhihu.com圖標
  • 有點擊的爲正樣本,有PV無點擊的爲負樣本,正樣本根據觀看時長進行加權( weighted logistic regression), 其目標其實爲預測指望觀看時長