
數(shù)據(jù)挖掘模型中的IV和WOE詳解
1.IV的用途
IV的全稱是Information Value,中文意思是信息價(jià)值,或者信息量。
我們在用邏輯回歸、決策樹等模型方法構(gòu)建分類模型時(shí),經(jīng)常需要對自變量進(jìn)行篩選。比如我們有200個候選自變量,通常情況下,不會直接把200個變量直接放到模型中去進(jìn)行擬合訓(xùn)練,而是會用一些方法,從這200個自變量中挑選一些出來,放進(jìn)模型,形成入模變量列表。那么我們怎么去挑選入模變量呢?
挑選入模變量過程是個比較復(fù)雜的過程,需要考慮的因素很多,比如:變量的預(yù)測能力,變量之間的相關(guān)性,變量的簡單性(容易生成和使用),變量的強(qiáng)壯性(不容易被繞過),變量在業(yè)務(wù)上的可解釋性(被挑戰(zhàn)時(shí)可以解釋的通)等等。但是,其中最主要和最直接的衡量標(biāo)準(zhǔn)是變量的預(yù)測能力。
“變量的預(yù)測能力”這個說法很籠統(tǒng),很主觀,非量化,在篩選變量的時(shí)候我們總不能說:“我覺得這個變量預(yù)測能力很強(qiáng),所以他要進(jìn)入模型”吧?我們需要一些具體的量化指標(biāo)來衡量每自變量的預(yù)測能力,并根據(jù)這些量化指標(biāo)的大小,來確定哪些變量進(jìn)入模型。IV就是這樣一種指標(biāo),他可以用來衡量自變量的預(yù)測能力。類似的指標(biāo)還有信息增益、基尼系數(shù)等等。
2.對IV的直觀理解
從直觀邏輯上大體可以這樣理解“用IV去衡量變量預(yù)測能力”這件事情:我們假設(shè)在一個分類問題中,目標(biāo)變量的類別有兩類:Y1,Y2。對于一個待預(yù)測的個體A,要判斷A屬于Y1還是Y2,我們是需要一定的信息的,假設(shè)這個信息總量是I,而這些所需要的信息,就蘊(yùn)含在所有的自變量C1,C2,C3,……,Cn中,那么,對于其中的一個變量Ci來說,其蘊(yùn)含的信息越多,那么它對于判斷A屬于Y1還是Y2的貢獻(xiàn)就越大,Ci的信息價(jià)值就越大,Ci的IV就越大,它就越應(yīng)該進(jìn)入到入模變量列表中。
3.IV的計(jì)算
前面我們從感性角度和邏輯層面對IV進(jìn)行了解釋和描述,那么回到數(shù)學(xué)層面,對于一個待評估變量,他的IV值究竟如何計(jì)算呢?為了介紹IV的計(jì)算方法,我們首先需要認(rèn)識和理解另一個概念——WOE,因?yàn)镮V的計(jì)算是以WOE為基礎(chǔ)的。
3.1WOE
WOE的全稱是“Weight of Evidence”,即證據(jù)權(quán)重。WOE是對原始自變量的一種編碼形式。
要對一個變量進(jìn)行WOE編碼,需要首先把這個變量進(jìn)行分組處理(也叫離散化、分箱等等,說的都是一個意思)。分組后,對于第i組,WOE的計(jì)算公式如下:
其中,pyi是這個組中響應(yīng)客戶(風(fēng)險(xiǎn)模型中,對應(yīng)的是違約客戶,總之,指的是模型中預(yù)測變量取值為“是”或者說1的個體)占所有樣本中所有響應(yīng)客戶的比例,pni是這個組中未響應(yīng)客戶占樣本中所有未響應(yīng)客戶的比例,#yi是這個組中響應(yīng)客戶的數(shù)量,#ni是這個組中未響應(yīng)客戶的數(shù)量,#yT是樣本中所有響應(yīng)客戶的數(shù)量,#nT是樣本中所有未響應(yīng)客戶的數(shù)量。
從這個公式中我們可以體會到,WOE表示的實(shí)際上是“當(dāng)前分組中響應(yīng)客戶占所有響應(yīng)客戶的比例”和“當(dāng)前分組中沒有響應(yīng)的客戶占所有沒有響應(yīng)的客戶的比例”的差異。
對這個公式做一個簡單變換,可以得到:
變換以后我們可以看出,WOE也可以這么理解,他表示的是當(dāng)前這個組中響應(yīng)的客戶和未響應(yīng)客戶的比值,和所有樣本中這個比值的差異。這個差異是用這兩個比值的比值,再取對數(shù)來表示的。WOE越大,這種差異越大,這個分組里的樣本響應(yīng)的可能性就越大,WOE越小,差異越小,這個分組里的樣本響應(yīng)的可能性就越小。
關(guān)于WOE編碼所表示的意義,大家可以自己再好好體會一下。
3.2 IV的計(jì)算公式
有了前面的介紹,我們可以正式給出IV的計(jì)算公式。對于一個分組后的變量,第i 組的WOE前面已經(jīng)介紹過,是這樣計(jì)算的:
同樣,對于分組i,也會有一個對應(yīng)的IV值,計(jì)算公式如下:
有了一個變量各分組的IV值,我們就可以計(jì)算整個變量的IV值,方法很簡單,就是把各分組的IV相加:
其中,n為變量分組個數(shù)。
3.3 用實(shí)例介紹IV的計(jì)算和使用
下面我們通過一個實(shí)例來講解一下IV的使用方式。
3.3.1 實(shí)例
假設(shè)我們需要構(gòu)建一個預(yù)測模型,這個模型是為了預(yù)測公司的客戶集合中的每個客戶對于我們的某項(xiàng)營銷活動是否能夠響應(yīng),或者說我們要預(yù)測的是客戶對我們的這項(xiàng)營銷活動響應(yīng)的可能性有多大。假設(shè)我們已經(jīng)從公司客戶列表中隨機(jī)抽取了100000個客戶進(jìn)行了營銷活動測試,收集了這些客戶的響應(yīng)結(jié)果,作為我們的建模數(shù)據(jù)集,其中響應(yīng)的客戶有10000個。另外假設(shè)我們也已經(jīng)提取到了這些客戶的一些變量,作為我們模型的候選變量集,這些變量包括以下這些(實(shí)際情況中,我們擁有的變量可能比這些多得多,這里列出的變量僅僅是為了說明我們的問題):
假設(shè),我們已經(jīng)對這些變量進(jìn)行了離散化,統(tǒng)計(jì)的結(jié)果如下面幾張表所示。
(1) 最近一個月是否有過購買:
(2) 最近一次購買金額:
(3) 最近一筆購買的商品類別:
(4) 是否是公司VIP客戶:
3.3.2 計(jì)算WOE和IV
我們以其中的一個變量“最近一次購買金額”變量為例:
我們把這個變量離散化為了4個分段:<100元,[100,200),[200,500),>=500元。首先,根據(jù)WOE計(jì)算公式,這四個分段的WOE分別為:
插播一段,從上面的計(jì)算結(jié)果中我們可以看一下WOE的基本特點(diǎn):
當(dāng)前分組中,響應(yīng)的比例越大,WOE值越大;
當(dāng)前分組WOE的正負(fù),由當(dāng)前分組響應(yīng)和未響應(yīng)的比例,與樣本整體響應(yīng)和未響應(yīng)的比例的大小關(guān)系決定,當(dāng)前分組的比例小于樣本整體比例時(shí),WOE為負(fù),當(dāng)前分組的比例大于整體比例時(shí),WOE為正,當(dāng)前分組的比例和整體比例相等時(shí),WOE為0。
WOE的取值范圍是全體實(shí)數(shù)。
我們進(jìn)一步理解一下WOE,會發(fā)現(xiàn),WOE其實(shí)描述了變量當(dāng)前這個分組,對判斷個體是否會響應(yīng)(或者說屬于哪個類)所起到影響方向和大小,當(dāng)WOE為正時(shí),變量當(dāng)前取值對判斷個體是否會響應(yīng)起到的正向的影響,當(dāng)WOE為負(fù)時(shí),起到了負(fù)向影響。而WOE值的大小,則是這個影響的大小的體現(xiàn)。
好,回到正題,計(jì)算完WOE,我們分別計(jì)算四個分組的IV值:
再插播一段,從上面IV的計(jì)算結(jié)果我們可以看出IV的以下特點(diǎn):
對于變量的一個分組,這個分組的響應(yīng)和未響應(yīng)的比例與樣本整體響應(yīng)和未響應(yīng)的比例相差越大,IV值越大,否則,IV值越?。?
極端情況下,當(dāng)前分組的響應(yīng)和未響應(yīng)的比例和樣本整體的響應(yīng)和未響應(yīng)的比例相等時(shí),IV值為0;V值的取值范圍是[0,+∞),且,當(dāng)當(dāng)前分組中只包含響應(yīng)客戶或者未響應(yīng)客戶時(shí),IV = +∞。
OK,再次回到正題。最后,我們計(jì)算變量總IV值:
3.3.3 IV值的比較和變量預(yù)測能力的排序
我們已經(jīng)計(jì)算了四個變量中其中一個的WOE和IV值。另外三個的計(jì)算過程我們不再詳細(xì)的說明,直接給出IV結(jié)果。
最近一個月是否有過購買:0.250224725
最近一筆購買的商品類別:0.615275563
是否是公司VIP客戶:1.56550367
前面我們已經(jīng)計(jì)算過,最近一次購買金額的IV為0.49270645
這四個變量IV排序結(jié)果是這樣的:是否是公司VIP客戶 > 最近一筆購買的商品類別 > 最近一次購買金額 > 最近一個月是否有過購買。我們發(fā)現(xiàn)“是否是公司VIP客戶”是預(yù)測能力最高的變量,“最近一個月是否有過購買”是預(yù)測能力最低的變量。如果我們需要在這四個變量中去挑選變量,就可以根據(jù)IV從高到低去挑選了。
4.關(guān)于IV和WOE的進(jìn)一步思考
4.1 為什么用IV而不是直接用WOE
從上面的內(nèi)容來看,變量各分組的WOE和IV都隱含著這個分組對目標(biāo)變量的預(yù)測能力這樣的意義。那我們?yōu)槭裁床恢苯佑肳OE相加或者絕對值相加作為衡量一個變量整體預(yù)測能力的指標(biāo)呢?
并且,從計(jì)算公式來看,對于變量的一個分組,IV是WOE乘以這個分組響應(yīng)占比和未響應(yīng)占比的差。而一個變量的IV等于各分組IV的和。如果愿意,我們同樣也能用WOE構(gòu)造出一個這樣的一個和出來,我們只需要把變量各個分組的WOE和取絕對值再相加,即(取絕對值是因?yàn)閃OE可正可負(fù),如果不取絕對值,則會把變量的區(qū)分度通過正負(fù)抵消的方式抵消掉):
那么我們?yōu)槭裁床恢苯佑眠@個WOE絕對值的加和來衡量一個變量整體預(yù)測能力的好壞,而是要用WOE處理后的IV呢。
我們這里給出兩個原因。IV和WOE的差別在于IV在WOE基礎(chǔ)上乘以的那個,我們暫且用pyn來代表這個值。
第一個原因,當(dāng)我們衡量一個變量的預(yù)測能力時(shí),我們所使用的指標(biāo)值不應(yīng)該是負(fù)數(shù),否則,說一個變量的預(yù)測能力的指標(biāo)是-2.3,聽起來很別扭。從這個角度講,乘以pyn這個系數(shù),保證了變量每個分組的結(jié)果都是非負(fù)數(shù),你可以驗(yàn)證一下,當(dāng)一個分組的WOE是正數(shù)時(shí),pyn也是正數(shù),當(dāng)一個分組的WOE是負(fù)數(shù)時(shí),pyn也是負(fù)數(shù),而當(dāng)一個分組的WOE=0時(shí),pyn也是0。
當(dāng)然,上面的原因不是最主要的,因?yàn)槠鋵?shí)我們上面提到的這個指標(biāo)也可以完全避免負(fù)數(shù)的出現(xiàn)。
更主要的原因,也就是第二個原因是,乘以pyn后,體現(xiàn)出了變量當(dāng)前分組中個體的數(shù)量占整體個體數(shù)量的比例,對變量預(yù)測能力的影響。怎么理解這句話呢?我們還是舉個例子。
假設(shè)我們上面所說的營銷響應(yīng)模型中,還有一個變量A,其取值只有兩個:0,1,數(shù)據(jù)如下:
我們從上表可以看出,當(dāng)變量A取值1時(shí),其響應(yīng)比例達(dá)到了90%,非常的高,但是我們能否說變量A的預(yù)測能力非常強(qiáng)呢?不能。為什么呢?原因就在于,A取1時(shí),響應(yīng)比例雖然很高,但這個分組的客戶數(shù)太少了,占的比例太低了。雖然,如果一個客戶在A這個變量上取1,那他有90%的響應(yīng)可能性,但是一個客戶變量A取1的可能性本身就非常的低。所以,對于樣本整體來說,變量的預(yù)測能力并沒有那么強(qiáng)。我們分別看一下變量各分組和整體的WOE,IV。
從這個表我們可以看到,變量取1時(shí),響應(yīng)比達(dá)到90%,對應(yīng)的WOE很高,但對應(yīng)的IV卻很低,原因就在于IV在WOE的前面乘以了一個系數(shù),而這個系數(shù)很好的考慮了這個分組中樣本占整體樣本的比例,比例越低,這個分組對變量整體預(yù)測能力的貢獻(xiàn)越低。相反,如果直接用WOE的絕對值加和,會得到一個很高的指標(biāo),這是不合理的。
4.2 IV的極端情況以及處理方式
IV依賴WOE,并且IV是一個很好的衡量自變量對目標(biāo)變量影響程度的指標(biāo)。但是,使用過程中應(yīng)該注意一個問題:變量的任何分組中,不應(yīng)該出現(xiàn)響應(yīng)數(shù)=0或非響應(yīng)數(shù)=0的情況。
原因很簡單,當(dāng)變量一個分組中,響應(yīng)數(shù)=0時(shí),
此時(shí)對應(yīng)的IVi為+∞。
而當(dāng)變量一個分組中,沒有響應(yīng)的數(shù)量 = 0時(shí),
此時(shí)的IVi為+∞。
IVi無論等于負(fù)無窮還是正無窮,都是沒有意義的。
由上述問題我們可以看到,使用IV其實(shí)有一個缺點(diǎn),就是不能自動處理變量的分組中出現(xiàn)響應(yīng)比例為0或100%的情況。那么,遇到響應(yīng)比例為0或者100%的情況,我們應(yīng)該怎么做呢?建議如下:
(1)如果可能,直接把這個分組做成一個規(guī)則,作為模型的前置條件或補(bǔ)充條件;
(2)重新對變量進(jìn)行離散化或分組,使每個分組的響應(yīng)比例都不為0且不為100%,尤其是當(dāng)一個分組個體數(shù)很小時(shí)(比如小于100個),強(qiáng)烈建議這樣做,因?yàn)楸旧戆岩粋€分組個體數(shù)弄得很小就不是太合理。
(3)如果上面兩種方法都無法使用,建議人工把該分組的響應(yīng)數(shù)和非響應(yīng)的數(shù)量進(jìn)行一定的調(diào)整。如果響應(yīng)數(shù)原本為0,可以人工調(diào)整響應(yīng)數(shù)為1,如果非響應(yīng)數(shù)原本為0,可以人工調(diào)整非響應(yīng)數(shù)為1.
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營問題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10