您當前的位置:首頁 > 遊戲

樣本權重對邏輯迴歸評分卡的影響探討

作者:由 求是汪在路上 發表于 遊戲時間:2020-04-17

風控業務背景

在統計學習建模分析中,樣本非常重要,它是我們洞察世界的視窗。在建立邏輯迴歸評分卡時,我們也會考慮對樣本賦予不同的權重weight,希望模型學習更有側重點。

誠然,我們可以透過實際資料測試來檢驗賦權前後的差異,但我們更希望從理論上分析其合理性。畢竟理論可以指導實踐。本文嘗試探討樣本權重對邏輯迴歸評分卡的影響,以及從業務和技術角度分析樣本權重調整的操作方法。

目錄

Part 1。 樣本加權對WOE的影響

Part 2。 取樣對LR係數的影響

Part 3。 樣本準備與權重指標

Part 4。 常見工具包的樣本賦權

Part 5。 總結

致謝

版權宣告

參考資料

Part 1. 樣本加權對WOE的影響

WOE與IV指標的深入理解應用

一文中,我們介紹了WOE的概念和計算方法。在邏輯迴歸評分卡中,其具有重要意義。其公式定義如下:

  WOE_i = ln( \frac{Good_i}{Good_T}/ \frac{Bad_i}{Bad_T} ) = ln(\frac{Good_i}{Bad_i}) - ln(\frac{Good_T}{Bad_T}) \tag{1}

現在,我們思考在計算WOE時,是否要考慮樣本權重呢?

如圖1所示的樣本,我們希望對某些樣本加強學習,因此對年齡在46歲以下的樣本賦予權重1。5,而對46歲以上的樣本賦予權重1。0,也就是加上權重列weight。此時再計算WOE值,我們發現數值發生變化。這是因為權重的改變,既影響了區域性bucket中的

odds

,也影響了整體的

odds

樣本權重對邏輯迴歸評分卡的影響探討

圖 1 - 樣本加權前後的Odds和WOE變化

我們有2種對樣本賦權後的模型訓練方案,如圖2所示。

方案1:WOE變換利用原訓練集,LR模型訓練時利用加權後的樣本。

方案2: WOE變換和LR模型訓練時,均使用加權後的樣本。

樣本權重對邏輯迴歸評分卡的影響探討

圖 2 - 樣本賦權後的兩種模型訓練方案

個人更傾向於第一種方案,原因在於:

WOE變換側重變數的可解釋性,引入樣本權重會引起不可解釋的困擾。

Part 2. 取樣對LR係數的影響

我們定義特徵向量

\textbf{x} = x_1, x_2,..., x_n

。記

G = Good, B = Bad

,那麼邏輯迴歸的公式組成便是:

Ln(odds(G|\textbf{x})) = Ln(\frac{p_Gf(\textbf{x}|G)}{p_Bf(\textbf{x}|B)}) = Ln(\frac{p_G}{p_B}) + Ln(\frac{f(\textbf{x}|G)}{f(\textbf{x}|B)}) \\ = Ln(\frac{p_G}{p_B}) + Ln(\frac{f(x_1,x_2,...,x_n|G)}{f(x_1,x_2,...,x_n|B)}) \\ = Ln(\frac{p_G}{p_B}) + Ln(\frac{f(x_1|G)}{f(x_1|B)}) + Ln(\frac{f(x_2|G)}{f(x_2|B)} + \space ... \space + Ln(\frac{f(x_n|G)}{f(x_n|B)}\\ = Ln(odds_{pop}) + Ln(odds_{info} (\textbf{x})) \tag{2}

其中,第2行到第3行的變換是基於樸素貝葉斯假設,即

自變數 #FormatImgID_11# 之間相互獨立

odds_{pop}

是指總體(訓練集)的

odds

,指

先驗資訊

odds

odds_{info} (\textbf{x})

是指自變數引起的

odds

變化,我們稱為

後驗資訊

odds

因此,隨著觀察資訊的不斷加入,對群體的好壞

odds

判斷將越來越趨於客觀。

樣本權重對邏輯迴歸評分卡的影響探討

圖 3 - 邏輯迴歸原理的貝葉斯圖解

樣本權重調整直接影響先驗項,也就是截距。那對係數的影響呢?

接下來,我們以過取樣(Oversampling)和欠取樣(Undersampling)為例,分析取樣對LR係數的影響。如圖4所示,對於不平衡資料集,過取樣是指對正樣本簡單複製很多份;欠取樣是指對負樣本隨機抽樣。最終,正負樣本的比例將達到1:1平衡狀態。

樣本權重對邏輯迴歸評分卡的影響探討

圖 4 - 欠取樣(左)和過取樣(右)

我們同樣從貝葉斯角度進行解釋:

P(B|\textbf{x}) = \frac{P(\textbf{x}|B)P(B)}{P(\textbf{x})}  = \frac{P(\textbf{x}|B)P(B)}{P(\textbf{x}|B)P(B) + P(\textbf{x}|G)P(G)} \\ \Leftrightarrow \frac{1}{P(B|\textbf{x})} =  1 + \frac{P(\textbf{x}|G)P(G)}{P(\textbf{x}|B)P(B)} \\ \Leftrightarrow  Ln(\frac{P(\textbf{x}|G)}{P(\textbf{x}|B)}) = Ln(\frac{1}{P(B|\textbf{x})} - 1)  - Ln(\frac{P(G)}{P(B)}) \\ \Leftrightarrow  Ln(\frac{P(G|\textbf{x})}{P(B|\textbf{x})})  = Ln(\frac{P(\textbf{x}|G)}{P(\textbf{x}|B)}) + Ln(\frac{P(G)}{P(B)}) \tag{3}

假設取樣處理後的訓練集為

\textbf{x}

。記

\# B

\# G

分別表示正負樣本數,那麼顯然:

odds = \frac{\# G}{\# B} \ne \frac{\# G

由於

Ln(\frac{P(G)}{P(B)})  = Ln(\frac{\# G}{\# B})

,因此對應

截距將發生變化

無論是過取樣,還是欠取樣,處理後的新樣本都和原樣本服從同樣的分佈,即滿足:

P(\textbf{x}|G) = P(\textbf{x}

因此,

Ln(\frac{P(\textbf{x}|G)}{P(\textbf{x}|B)})  = Ln(\frac{P(\textbf{x}

,即

係數不發生變化

實踐證明,按照做評分卡的方式,做WOE變換,然後跑LR,單變數下確實只有截距影響。而對於多變數,理想情況下,當各自變數相互獨立時,LR的係數是不變的,但實際自變數之間多少存在一定的相關性,所以還是會有一定的變化。

Part 3。 樣本準備與權重指標

風控建模的基本假設是

未來樣本和歷史樣本的分佈是一致

的。模型從歷史樣本中擬合

X_{old}

y

之間的關係,並根據未來樣本的

X_{new}

進行預測。因此,我們總是在思考,

如何選擇能代表未來樣本的訓練樣本。

如圖5所示,不同時間段、不同批次的樣本總是存在差異,即

服從不同的總體分佈

。因此,我們需要

從多個維度來衡量兩個樣本集之間的相似性。

從遷移學習的角度看,這是一個從源域(source domain)中學習模式,並應用到目標域(target domain)的過程。在這裡,源域是訓練集,目標域指測試集,或者未來樣本。

這就會涉及到一些難點:

假設測試集OOT與未來總體分佈樣本基本一致,但未來樣本是不可知且總是在發生變化。

面向測試集效果作為評估指標,會出現在測試集上過擬合現象。

樣本權重對邏輯迴歸評分卡的影響探討

圖 5 - 訓練集樣本與未來應用樣本

那麼,建模中是否可以考慮建立一個權重指標體系,即綜合多方面因素進行樣本賦權?我們採取2種思路來分析如何開展。

業務角度

時間因素

,對近期樣本提高權重,較遠樣本降低權重。這是考慮近期樣本與未來樣本之間的“相似度”更高,希望模型學到更多近期樣本的模式。

貸款型別

,不同額度、利率、期限的樣本賦予不同權重,這需要結合業務未來的發展方向。例如,未來業務模式希望是小額、短期、低利率,那就提高這批樣本的權重。

樣本分群

,不同群體賦予不同權重。例如,按流量獲客渠道,如果未來流量渠道主要來自平臺A,那麼就提高這批樣本權重。

結合以上各維度,可得到總體取樣權重的一種融合方式為:

w = w_1 * w_2 * w_3 \tag{6}

這種業務角度的方案雖然解釋性強,但實際拍定多大的權重顯得非常主觀,實踐中往往需要不斷嘗試,缺少一些理論指導。

技術角度

過取樣、欠取樣等,從樣本組成上調整正負不平衡。

代價敏感學習,在損失函式對好壞樣本加上不同的代價。比如,壞樣本少,分錯代價更高。

借鑑Adaboost的做法,對誤判樣本在下一輪訓練時提高權重。

在機器學習中,有一個常見的現象——

Covariate Shift

,是指當訓練集的樣本分佈和測試集的樣本分佈不一致的時候,訓練得到的模型無法具有很好的泛化 (Generalization) 能力。

其中一種做法,既然是希望讓訓練集儘可能像測試集,那就讓模型幫助我們做這件事。如圖6所示,將測試集標記為1,訓練集標記為0,訓練一個LR模型,在訓練集上預測,機率越高,說明這個樣例屬於測試集的可能性越大。以此達到樣本權重調整的目的。

樣本權重對邏輯迴歸評分卡的影響探討

圖 6 - 藉助分類模型的樣本權重調整

Part 4. 常見工具包的樣本賦權

現有Logistic Regression模組主要來自sklearn和scipy兩個包。很不幸,scipy包並不支援直接賦予權重列。這是為什麼呢?有統計學家認為,

尊重真實樣本分佈,人為主觀引入樣本權重,反而可能得出錯誤的結論。

樣本權重對邏輯迴歸評分卡的影響探討

圖 7 - 不支援樣本賦權的觀點(摘自網路)

因此,我們只能選擇用scikit-learn。樣本權重是如何體現在模型訓練過程呢?檢視原始碼後,發現目前主要是體現在

損失函式

中,即

代價敏感學習。

# Logistic loss is the negative of the log of the logistic function。

# 新增L2正則項的邏輯迴歸對數損失函式

out

=

-

np

sum

sample_weight

*

log_logistic

yz

))

+

5

*

alpha

*

np

dot

w

w

樣本權重對邏輯迴歸評分卡的影響探討

圖 8 - 樣本權重對決策分割面的影響

以下是scikit-learn包中的邏輯迴歸引數列表說明,可以發現調節樣本權重的方法有兩種:

在class_weight引數中使用balanced

在呼叫fit函式時,透過sample_weight調節每個樣本權重。

如果同時設定上述2個引數,那麼樣本的真正權重是class_weight * sample_weight。

那麼,在評估模型的指標時,是否需要考慮抽樣權重,即還原真實場景下的模型評價指標?筆者認為,最終評估還是需要還原到真實場景下。例如,訓練集正負比例被調節為1:1,但這並不是真實的

odds

,在預測時將會偏高。因此,仍需要進行模型校準。

Part 5. 總結

本文系統整理了樣本權重的一些觀點,但目前仍然沒有統一的答案。據筆者所知,目前在實踐中還是採取以下幾種方案:

尊重原樣本分佈,不予處理,LR模型訓練後即為真實機率估計。

結合權重指標綜合確定權重,訓練完畢模型後再進行校準,還原至真實機率估計。

值得指出的是,大環境總是在發生變化,造成樣本分佈總在偏移。因此,儘可能增強模型的魯棒性,以及策略使用時根據實際情況靈活調整,兩者相輔相成,可能是最佳的使用方法。

歡迎大家一起討論業界的一些做法。

致謝

所有參考資料中的各位作者,感謝給我的啟發。文中仍有理解不到位之處,在此拋磚引玉。

版權宣告

歡迎轉載分享

請在文章中註明作者和原文連結,感謝您對知識的尊重和對本文的肯定。

原文作者:求是汪在路上(知乎ID)

原文連結:

https://

zhuanlan。zhihu。com/p/11

0982479/

⚠️著作權歸作者所有。

商業轉載請聯絡作者獲得授權,非商業轉載請註明出處,侵權轉載將追究相關責任

參考資料

關於作者

在某網際網路金融公司從事風控建模、反欺詐、資料探勘等方面工作,目前致力於將實踐經驗固化分享,量化成長軌跡。歡迎交流

標簽: 樣本  權重  取樣  訓練  woe