聊一聊信貸領域中的特征分箱
楔子
最近收到不少小伙伴的私信,在這里統一回復:謝謝大家關心,我還活著,只是不更新了而已。然后也有小伙伴從幾個月前就一直問我啥時候更新,我的回答是沒啥好更新的了,建議大家一定要擁抱 AI,生產力絕對會成倍提升。
但話都說到這兒了,不更新一篇也不合適。由于目前正在從事風控領域,就更新一篇風控相關的文章吧。
什么是特征分箱?
在信貸風控領域,特征分箱(Feature Binning)是一項至關重要且應用廣泛的特征工程技術,它的作用是將連續型特征(如年齡、收入)或多取值的離散型特征(如職業)進行分組、裝箱,將其轉化為一系列離散的區間或類別。這一看似簡單的操作,在構建穩定、可解釋且高效的信用評分卡等風控模型中,扮演著定海神針般的關鍵角色。
而之所以要特征分箱,是因為在原始的連續型特征上直接建模,往往會遇到諸多挑戰。而特征分箱通過將數據離散化,帶來了多方面的顯著優勢。
- 提升模型的穩定性和魯棒性:分箱操作能夠有效降低特征中 "噪聲" 的干擾。例如借款人年齡的微小變動(從 30 歲變為 31 歲)可能并不會對其信用風險產生實質性影響,分箱后,這些細微的波動被平滑處理,能有效防止模型因過度擬合個別數據點而變得不穩定,從而增強模型的泛化能力,使其在面對新數據時表現更穩健。
- 增強模型的可解釋性:將連續特征轉化為有限的幾個箱,極大地增強了業務人員對模型決策邏輯的理解。例如,相比于 "年齡每增加一歲,違約概率下降 0.5%" 這種復雜的線性關系,"年齡在 30 ~ 40歲之間的客群,其信用風險較低" 這樣的結論顯然更直觀,更易于向決策層和業務部門解釋和溝通。
- 有效處理非線性關系:現實世界中,許多特征與信用風險之間并非是簡單的線性關系。例如,年齡與違約率可能呈現 U 型關系,即年輕人和老年人的風險相對較高,中年人風險較低。分箱操作可以將這種非線性關系轉化為分段的線性關系,使得邏輯回歸等線性模型也能有效捕捉到這種復雜的模式。
- 便捷地處理缺失值和異常值:在進行分箱時,可以將缺失值或異常值作為一個獨立的 "箱" 來處理。這不僅避免了復雜的缺失值填充或異常值剔除操作,還能將 "缺失" 或 "異常" 本身作為一種信息納入模型考量,有時這些特殊值本身就蘊含著特定的風險信息。
- 為后續的 WOE 轉換和評分卡創建奠定基礎:在構建信用評分卡時,特征分箱是計算證據權重(Weight of Evidence,WOE)和信息價值(Information Value,IV)的前提。WOE 可以衡量每個分箱內好壞客戶的比例差異,從而揭示該分箱對風險的預測能力。
常見的特征分箱方法
特征分箱的方法主要有以下幾種:
- 等寬分箱(Equal Width Binning)
- 等頻分箱(Equal Frequency Binning)
- 卡方分箱(Chi-Merge Binning)
- 決策樹分箱(Decision Tree Binning)
等寬分箱
核心思想:將特征的取值范圍(最大值 ~ 最小值)等分成 N 個區間。
這種做法實現簡單、快速,但缺點也很明顯。如果特征值分布不均,容易產生某些箱內樣本量過多,而另一些箱內樣本量過少的情況,導致分箱結果無意義。
因此等寬分箱一般用于數據分布比較均勻的特征,或作為快速探索性分析的初步分箱方法。
等頻分箱
核心思想:將特征按從小到大的順序排列,然后切分成 N 個部分,使得每個部分(箱)內的樣本數量大致相等。
這種做法保證了每個箱內都有足夠的樣本量,避免了等寬分箱的缺點。但它自身也有缺點,因為可能會將數值上非常接近的樣本點強行切分到不同的箱中,對于某些業務場景,這種純粹基于頻率的切分可能破壞了原有的業務邏輯。
卡方分箱
等款分箱和等頻分箱針對的是無監督樣本,而卡方分箱針對的是有監督樣本。其核心思想是利用卡方檢驗(Chi-Square Test)來衡量相鄰兩個區間的分布相似性,從最小的箱開始,不斷合并卡方值最小的相鄰箱,直到滿足停止條件(如分箱數、卡方閾值)。
這種做法是一種基于目標變量(如是否違約)進行分箱的監督方法,能保證分箱后的每個箱都有顯著不同的風險水平。至于缺點是計算相對復雜,對某些值域的樣本量敏感。
卡方分箱在構建信用評分卡時非常常用,因為它能確保分箱結果與風險有很強的關聯性。
決策樹分箱
針對有監督樣本,核心思想是利用單特征構建一個簡單的決策樹模型來擬合目標變量,樹的每個葉子節點就代表一個分箱。
這種做法能自動找到最優的分割點,并且可以很好地處理非線性關系,分箱結果與目標變量強相關。但缺點是容易過擬合,需要通過剪枝或限制樹的深度來控制,因此對于強線性關系的特征可能不是最優選擇。
決策樹分箱主要用于需要深度挖掘特征與風險之間非線性關系的場景。
卡方分箱
下面來單獨說一下卡方分箱(Chi-Merge Binning)的原理,因為它不像等寬和等頻那么簡單。
卡方分箱的哲學可以用一句老話來概括:"物以類聚,人以群分",它的核心目標是將特征值相近且目標值(如好壞客戶)分布也相似的區間進行合并。最終保留下來的每個箱子,其內部的客戶風險水平應該盡可能一致,而不同箱子之間的風險水平則要有顯著的差異。
它是個自底向上的過程,和之后要介紹的決策樹正好相反,先讓每個特征值都自成一派(一個箱),然后通過一個標準去衡量哪些"派別"最相似,并將它們合并,不斷重復這個過程,直到"派別"數量減少到我們滿意的程度。而衡量派別相似的標準,就是統計學中著名的卡方檢驗(Chi-Square Test)。
所以要理解卡方分箱,就必須先理解它的數學引擎 - 卡方獨立性檢驗。這個檢驗的目的是判斷兩個分類變量是否相互獨立,在當前的場景中,這兩個變量是:
- 分箱變量:即樣本屬于哪個箱子,例如箱子 A 還是箱子 B。
- 目標變量:即客戶是好客戶還是壞客戶。
卡方檢驗會提出一個零假設(H0):分箱變量與目標變量相互獨立。換句話說,零假設認為 "一個客戶在箱子 A 還是箱子 B" 與 "他是一個好客戶還是壞客戶" 這兩件事沒有關系。如果這個假設成立,那么箱子 A 和箱子 B 中好壞客戶的比例應該是沒有顯著差異的。
卡方檢驗會計算出一個卡方統計量(χ2 值),這個值衡量了實際觀測值與期望值之間的差距。

- O(Observed):觀測頻數,即我們實際統計到的、落在每個箱子里的樣本數量。
- E(Expected):期望頻數,即如果零假設成立,我們理論上期望的樣本數量。
如果 χ2 值很小,說明觀測值(O)與期望值(E)非常接近,這意味著數據非常符合 "兩個變量相互獨立" 的零假設,因此我們沒有理由拒絕零假設。在分箱場景下,這代表著這兩個相鄰的箱子,其好壞客戶的分布非常相似,它們是合并的首要候選者。
如果 χ2 值很大:說明觀測值(O)與期望值(E)差距巨大,這強烈地表明 "兩個變量相互獨立" 的假設是錯誤的,因此我們可以拒絕零假設。在分箱場景下,這代表著這兩個相鄰的箱子,其好壞客戶的分布有顯著差異,它們應該被分開,不能合并。
下面通過一個例子,來實際感受一下運算過程。
假設有以下數據,并且已經初始化,每個年齡段是一個獨立的箱。我們想看看相鄰的 20 ~ 30 歲和 31 ~ 40 歲這兩個箱是否應該合并。
年齡段 | 好客戶(is_bad = 0) | 壞客戶(is_bad = 1) | 總計 |
20 ~ 30 | 80 | 10 | 90 |
31 ~ 40 | 150 | 20 | 170 |
總計 | 230 | 30 | 260 |
以上是我們的觀測值,這是通過實際的統計得到的,是真實數據。而接下來要計算期望值,這是通過數學理論得到的。
第一步:計算期望值(Expected)
如果年齡段和是否壞客戶無關(即零假設成立),那么 $20 \sim 30$ 歲年齡段的壞客戶比例應該和總體的壞客戶比例一樣。
- 總壞客戶比例 = 30 / 260 ≈ 11.54%
- 總好客戶比例 = 230 / 260 ≈ 88.46%
現在我們可以計算每個格子的期望值 E = 行總計 * 列總計 / 總計。
- E(20 ~ 30, 好客戶) = 90 * 230 / 260 ≈ 79.6
- E(20 ~ 30, 壞客戶) = 90 * 30 / 260 ≈ 10.4
- E(31 ~ 40, 好客戶) = 170 * 230 / 260 ≈ 150.4
- E(31 ~ 40, 壞客戶) = 170 * 30 / 260 ≈ 19.6
第二步:計算卡方值
現在,我們將觀測值和期望值代入公式。

此時我們便算出了 20 ~ 30 和 30 ~ 40 的卡方值 χ2,這個值為 0.026。
第三步:決策
我們會對所有相鄰的箱子重復上述計算,假設區間再多一些,我們可能還會計算 31 ~ 40 和 41 ~ 50 之間的 χ2 值,比如計算出的結果為 2.5。
因為 0.026 < 2.5,所以 20 ~ 30 和 31 ~ 40 這對箱子的相似度更高,在這一輪迭代中,算法會優先選擇合并 20 ~ 30 和 31 ~ 40,形成一個新的箱 20 ~ 40。
然后算法進入下一輪迭代,新的箱 20 ~ 40 會和它的鄰居(如 41 ~ 50)再次計算卡方值,并尋找全局最小的卡方值進行合并。這個過程會一直持續下去,直到滿足以下停止條件。
- 達到目標箱數(Max Bins):這是最常用的方法,預先設定一個最終的分箱數量(例如 10 箱),當合并到只剩下 10 個箱子時,算法停止。
- 卡方閾值(Chi-Square Threshold):設定一個卡方值的閾值,如果計算出的所有相鄰箱的最小卡方值都大于這個閾值,說明即使是差異最小的兩個箱,差異也已經很顯著了,不應該再合并,算法停止。
- 最小箱體樣本量(Minimum Bin Size):要求每個箱子必須包含最少 N 個樣本。如果合并后會導致某個箱子過大,而另一個箱子樣本過少,則可以調整策略。或者在初始化時就預先合并一些樣本極少的箱。
綜上所述,卡方分箱的原理就是巧妙地利用卡方獨立性檢驗,通過一個迭代合并的過程,不斷地將目標變量分布最相似的相鄰區間進行合并,從而找出最優的分箱切分點,確保最終的分箱結果在統計上具有區分度。
決策樹分箱
決策樹分箱的核心思想是:如果一個決策樹模型能用某個特征很好地預測客戶的好壞,那么這棵樹為了做出判斷而找到的分割點,不就是天然的、最佳的分箱邊界嗎?因此它把分箱問題轉成了一個簡單的模型訓練問題。
我們針對單個特征建立一棵決策樹來預測目標,然后把這棵樹的決策邏輯(即分割規則)直接翻譯過來,作為分箱規則。因此決策樹分箱的過程可以分解為以下幾個步驟:
1)選擇一個你想要分箱的連續型特征(例如 age)作為自變量 X,選擇你的目標變量(例如 is_bad)作為因變量 y。
2)使用 X 和 y 來訓練一個決策樹分類器(DecisionTreeClassifier),但我們不能讓這棵樹無限生長,否則它會為了擬合每一個數據點而制造出無數個細碎的箱子,導致嚴重的過擬合。所以必須對它進行預剪枝,限制其復雜度,常用的剪枝方法如下。
- 限制最大葉子節點數(max_leaf_nodes),這是最直觀的方法,如果想分成5個箱,就設定 max_leaf_nodes=5。
- 限制樹的最大深度(max_depth),例如深度為 3 的樹最多能產生 2^3=8 個箱。
- 限制葉子節點的最小樣本量(min_samples_leaf),確保每個箱子,或者說每個葉子節點都包含足夠多的樣本,避免產生不穩定的、由少數樣本構成的箱。
3)當決策樹訓練完成后,其內部已經包含了所有用于決策的分割點(也稱為閾值)。我們可以從訓練好的樹模型中,把所有內部節點(非葉子節點)的分割閾值(threshold)提取出來。
4)將提取出的所有分割點進行去重和排序,在排序后的分割點列表的開頭加上負無窮(-inf),在結尾加上正無窮(+inf),這就構成了一套完整的分箱邊界。
5)使用這些邊界,通過類似 pandas.cut 的功能,將原始的連續特征映射到其對應的分箱區間中。
假設我們用"年齡"特征訓練了一棵決策樹(max_leaf_nodes = 4),它最終的決策邏輯可能是這樣的。
- 訓練決策樹:根節點以 age <= 55.5 為條件分裂,左子樹(age <= 55.5)繼續以 age <= 28.5 分裂,右子樹(age > 55.5)不再分裂,成為一個葉子節點,age <= 28.5 的分支也不再分裂,最終形成了 4 個葉子節點(即 4 個箱)。
- 提取分割點:樹中用到的分割點是 55.5 和 28.5。
- 形成邊界:排序后為 [28.5, 55.5],加上無窮邊界后,完整的邊界列表是 [-inf, 28.5, 55.5, +inf]。
- 最終分箱結果:箱 1 為 (-inf, 28.5],箱 2 為 (28.5, 55.5],箱 3 為 (55.5, +inf]。注意:這里因為樹的結構,最終只產生了 3 個箱,即使我們設定了max_leaf_nodes=4。
那么決策樹分箱有哪些優缺點呢?
優點
- 自動尋找最佳分割點:無需人工干預,算法能基于信息增益或基尼不純度自動找到最優的分割邊界,最大化箱內的純度。
- 能捕捉非線性關系:這是它相較于卡方分箱等方法的一個巨大優勢,如果特征與目標之間存在 U 型、倒 U 型等復雜關系,決策樹可以通過多次分割來有效捕捉這種模式。
- 處理速度快:決策樹的訓練速度非常快,尤其是在特征維度很低時(我們每次只用一個特征)。
- 魯棒性強:對于異常值不敏感,因為異常值只會被分到某個葉子節點,不會像等寬分箱那樣嚴重影響整體的邊界劃分。
缺點
- 容易過擬合:如果不對樹的復雜度進行嚴格限制(即剪枝),它會生成過多且不穩定的分箱,導致模型在測試集上表現很差。控制復雜度是使用此方法的關鍵。
- 結果可能不穩定:訓練數據的微小變動可能會導致生成一棵完全不同的樹,從而得到一套不同的分箱規則。
- 不保證單調性:決策樹只關心如何最大化信息增益,它產出的分箱結果對應的風險率(或WOE值)不保證是單調的。這在需要強業務可解釋性的評分卡場景中可能是一個問題,可能需要后續手動調整。
然后是這幾種分箱的實現方式,我們可以借助 toad 庫來實現,這是一個廣受好評的 Python 庫,尤其在評分卡建模領域,它提供了包括卡方分箱在內的一整套解決方案。比如除了卡方分箱,還集成了計算 WOE、IV、特征篩選、評分卡轉換等一系列風控建模常用功能。
特征分箱與 WOE、IV 的聯動
在信貸風控中,特征分箱的最終目的往往是為了計算 WOE 和 IV,進而構建信用評分卡。那什么是 WOE 和 IV 呢?
證據權重(WOE)
WOE 是對一個分箱內好客戶(非逾期)與壞客戶(逾期)比例的衡量,其計算公式為如下。

所以每個分箱的好客戶占整體好客戶的比例,除以壞客戶占整體壞客戶的比例,再取對數,便是對應分箱的 WOE。
舉個例子,我們有 10000 個客戶,8000 個好客戶,2000 個壞客戶。某個分箱里面好客戶是 800 人,壞客戶是 400 人,那么:
- Goodi / Goodtotal = 800 / 8000 = 10%
- Badi / Badtotal = 400 / 2000 = 20%
所以 WOEi = ln(10% / 20%) = ln(0.5) = -0.693。
而基于 WOE 值,我們可以做出如下結論。
- 如果 WOE > 0:該分箱中好客戶占比高于壞客戶占比,屬于低風險區間。
- 如果 WOE < 0:該分箱中壞客戶占比高于好客戶占比,屬于高風險區間。
- 如果 WOE = 0:該分箱中好壞客戶占比相等,風險中性。
在上面的例子中,WOE = -0.693 < 0,說明這個分箱是高風險的,因為壞客戶的相對集中度(20%)高于好客戶的相對集中度(10%)。
所以通過 WOE,可以標準化不同分箱的比較基準,消除樣本不平衡的影響,以及提供直觀的風險度量。
信息價值(IV)
IV 是用來衡量一個特征對目標變量的總體預測能力的指標,它是所有分箱的 WOE 值的加權和,其計算公式如下。

所以 IV 值實際上衡量的是好客戶和壞客戶在各分箱中分布差異的加權總和,權重就是各分箱的 WOE 值,差異越大,權重越大,IV 值就越高。而 IV 值越高,說明該特征對區分好壞客戶的能力越強,通常 IV 值的評判標準如下。
- < 0.02:無預測能力
- 0.02 ~ 0.15:預測能力正常。
- 0.15 ~ 0.3:預測能力強
- 0.3 ~ 0.4:預測能力極強(需要警惕過擬合)
- > 0.4:直接看是不是過擬合了
舉個例子,假設我們對特征 "月收入" 進行分箱,得到以下結果。

顯然 IV 值等于 (17.8% - 40%) * -0.81 + (50% - 50%) * 0 + (32.2% - 10%) * 1.17 = 0.44,而 0.44 表示月收入這個特征具有極強的預測能力(當然 0.44 過于高了,這里只是隨便舉例)。而通過觀察 WOE 值,也可以證明這一點。
- < 5000元:WOE = -0.811 < 0,高風險群體。
- 5000 ~ 10000元:WOE = 0,風險中性。
- > 10000元:WOE = 1.173 > 0,低風險群體。
這個結果符合業務直覺,收入越高,信用風險越低。
然后是 IV 值的大小問題,我們說 IV 值如果大于 0.4 反而是個不好的現象,因為大于 0.4 表示特征和目標結果擬合的太完美了,這說明了以下幾個問題。
- 數據泄露:變量可能包含了未來信息或與目標變量直接相關的信息。
- 樣本偏差:訓練樣本可能存在某種特殊的數據分布,不能代表真實總體。
- 數據質量問題:變量定義不當,可能直接或間接包含了標簽信息。
0.1 ~ 0.4 通常是 IV 值最理想的范圍,既有足夠的預測能力,又保持了良好的穩定性和可解釋性。"適度" 往往比 "極端" 更可靠,這在風控建模中尤其重要。
另外可能有人會產生誤區,還是不理解為什么 IV 值不能太大,這是因為我們說的都是單個特征的 IV 值。而單個特征本身就只能解釋數據的一部分信息,任何單一維度都無法完全刻畫客戶的信用風險。
而實際的特征工程中,客戶會有大量特征,每個特征都有對應的 IV 值。通過多個特征組合,不同特征捕獲不同維度的信息,并且特征之間存在互補,從而實現預測能力遠超單個特征。
- 收入高 + 年齡大 + 工作穩定 → 低風險
- 收入高 + 年齡小 + 工作不穩定 → 中等風險
- 收入低 + 年齡大 + 工作穩定 → 中等風險
- 收入低 + 年齡小 + 工作不穩定 → 高風險
如果一個特征就能實現精準預測,那還要其它特征做什么?如果出現這樣的特征(IV 值超過了 0.4、甚至更大),那么就要好好檢測一下是不是出現了過擬合現象。
假設有以下幾個特征。
特征 | IV值 | 單獨使用時的 AUC |
月收入 | 0.35 | 0.65 |
年齡 | 0.25 | 0.62 |
信用卡使用率 | 0.30 | 0.64 |
工作年限 | 0.20 | 0.61 |
組合后的效果:
- 4 個特征組合:AUC 可能達到 0.75 ~ 0.80。
- 10 個特征組合:AUC 可能達到 0.80 ~ 0.85。
- 50 個特征組合:AUC 可能達到 0.85 ~ 0.90。
所以在實際建模時,我們更關注特征組合后的整體效果,不會因為某個特征 IV 只有 0.15 就丟棄。寧可選擇 10 個 IV=0.2 的不同維度特征,也不選擇 3 個 IV=0.4 但高度相關的特征。
關于 IV 值,我們要記住以下幾個結論。
- IV 是篩選工具,不是絕對標準。
- 特征組合的整體效果比單個特征更重要。
- 多維度的中等強度特征組合往往比少數高 IV 特征的效果更好。
- 最終評判標準是模型在驗證集上的綜合表現。
這就是為什么經驗豐富的風控建模師會說:"特征工程是藝術,不只是科學"。
IV 值在建模時應用
既然提到了 IV 值,那么繼續補充一下它在建模時的應用。
在實際的特征工程中,會為每個客戶刻畫數萬(甚至數十萬、數百萬)個特征,然后用這些特征來建模。但如果特征過多,不僅耗費資源,甚至一些無用特征反而會降低準確率,那么這時候就要進行特征篩選,從數萬個特征中篩選出最有用的部分特征。而 "最有用" 三個字的量化方式就是通過 IV 值,IV 值越大,說明它對樣本預測的重要性越大。
和 PCA 降維的關系
有過機器學習經驗的朋友會發現,整個過程就類似于 PCA 降維,因為不是所有特征都是有用的。而 PCA 會將原始數據映射到新的空間,每個軸都是原始特征的加權組合,如果該軸的可解釋方差比例越大,證明這個軸就越有用。當然一個軸是不夠的,我們需要可解釋方差比例最大的 k 個軸,如果它們的可解釋方差比例加起來接近 1,那么只需要這 k 個軸即可。
因此通過 PCA 降維,將具有 n 個特征的原始數據映射到新的空間之后,只需 k 個特征即可進行預測,并且 k 是遠小于 n 的。而建模這個過程與之類似,雖然原理不一樣,但做的事情是一樣的,也是從全量特征中篩選出部分最有用的特征,只是量化標準是 IV 值。
維度 | 特征篩選(基于 IV) | PCA 降維 |
選擇方式 | 從原特征中選擇子集 | 創造新的組合特征 |
可解釋性 | 保持業務含義 | 失去原始特征含義 |
評價標準 | 與目標變量的關聯性(IV 值) | 數據本身的方差貢獻 |
特征關系 | 考慮特征與 y 的關系 | 只考慮特征間的關系 |
那么問題來了,為啥不用 PCA 降維呢?原因有以下幾個。
1)監管合規要求
監管機構如果問,為什么拒絕這個客戶的貸款申請?
- PCA 降維:因為他的 xx 值較低 …(無法解釋)
- 特征篩選:因為他的月收入過低且信用卡使用率過高(可解釋)
2)業務策略制定
- PCA 方法:xx < -0.5 且 yy > 1.2 的客戶需要額外審核(難以操作)
- 傳統方法:月收入 < 5000 且年齡 < 25 歲的客戶需要額外審核(易操作)
3)模型監控和調試
- 當模型表現下降時,可以直接分析具體特征的變化
- 容易發現數據漂移和特征失效
所以無論是 PCA 降維還是 IV 值篩選,本質都是在高維空間中尋找最有價值的信息維度。PCA 是通過尋找方差最大的方向,而 IV 值篩選是尋找與目標最相關的特征,兩者做的事情都是在有限的維度預算下,最大化保留信息。
但在金融風控場景下,可解釋性往往比信息壓縮更重要,所以過濾特征時會使用 IV 值篩選,而不是 PCA 降維。
如何通過 IV 值實現特征篩選
好,再來看看通過 IV 值實現特征篩選的具體流程。
第一階段:數據準備與預處理
1)原始數據質量檢查
統計每個特征的缺失率、唯一值數量、數據類型,識別常數列(所有值都相同的特征),檢查數據分布的基本情況。
2)基礎數據清晰
剔除缺失率過高的特征(通常 > 80%),刪除方差過小的數值型特征(幾乎沒有變化),移除唯一值過少的特征(如只有 1 ~ 2 個取值)。
第二階段:特征分箱處理
如果是數值型特征:對于每個特征進行分箱,一般選擇卡方分箱,并且確保每個分箱有足夠的樣本量(通常要求每箱 > 5%總樣本)。檢查分箱后的單調性,每個箱的 WOE 值應該單調遞增或遞減。
如果是非數值型(字符串)特征:將該特征可能出現的值進行分類,每個類別也要有足夠的樣本量。如果是非常少見的值,那么整體合并為 "其它"。
第三階段:IV 值批量計算
按照 WOE 和 IV 的公式,為每個特征計算 IV 值。并且在此過程中,要記錄出現的異常情況(如某個分箱沒有正樣本或負樣本),并且建立詳細的計算日志,便于后續排查問題。
然后將所有特征的 IV 值匯總到一張表中,按 IV 值從高到低排序,統計不同 IV 值區間的特征數量分布。
第四階段:多層次特征篩選
1)IV 閾值篩選
設置 IV 值的上下限,剔除 IV 值過低的特征(預測能力不足),標記 IV 值過高的特征(可能存在數據問題)。
2)可疑特征檢查
對 IV 值大于 0.3 的特征進行深度檢查,主要包含以下方面。
- 數據泄露檢查:是否包含未來信息或目標變量的直接信息。
- 業務合理性驗證:特征與目標變量的關系是否符合業務邏輯。
- 時間穩定性驗證:在不同時間段上 IV 值是否穩定。
- 樣本分布檢查:是否存在極端的樣本分布導致 IV 值虛高。
3)特征多樣性保證
確保不同業務維度的特征都有覆蓋(如收入、年齡、信用歷史等),避免選擇的特征過于集中在某個業務領域,平衡高 IV 特征和中等 IV 特征的數量。
第五階段:特征穩定性驗證
1)時間穩定性測試
在不同的時間窗口上重新計算 IV 值,檢查 IV 值的波動幅度(波動 < 20% 認為穩定),剔除在不同時期表現差異過大的特征。
2)跨樣本驗證
在訓練集、驗證集、測試集上分別計算 IV 值,確保特征的預測能力不是因為某個特定樣本導致的。
第六階段:最終特征集確定
1)將多個維度的評估結果綜合
- IV 值大小(權重 40%)
- 穩定性評分(權重 30%)
- 業務重要性評分(權重 20%)
- 數據可得性評分(權重 10%)
2)根據模型類型和業務需求確定最終特征數量
所以整個流程非常清晰:
原始特征 → 基礎清洗 → IV 計算 → 初步篩選 → 深度驗證 → 穩定性測試 → 最終選擇
而篩選標準也很簡單:
- 數據質量:缺失率 < 20%,異常值 < 5%
- IV 值合理性:0.02 ≤ IV ≤ 0.4
- 穩定性要求:不同時期 IV 值波動 < 30%
- 業務合理性:特征邏輯符合業務常識


























