金融風(fēng)控面試題目(一)

在公眾號(hào)「python風(fēng)控模型」里回復(fù)關(guān)鍵字:學(xué)習(xí)資料?
QQ學(xué)習(xí)群:1026993837 領(lǐng)學(xué)習(xí)資料? ? ? ? ? ??

風(fēng)控面試包括業(yè)務(wù)、模型和技術(shù)
技術(shù)篇之算法包括 38 題,10000 字;第二部分技術(shù)之特征工程、模型評(píng)估與優(yōu)化 23 題,8000字;第三部分業(yè)務(wù)與模型篇包括 23 題,一共 7250 字,其中四題是正陽(yáng)準(zhǔn)備的所有問(wèn)題。主要來(lái)源于知乎、七月在線、??途W(wǎng)等。
一、技術(shù)篇之算法
邏輯回歸
決策樹(shù)
集成學(xué)習(xí)(隨機(jī)森林,Adaboost,GBDT,XGBOOST,LightGbm)
1.1 邏輯回歸的優(yōu)缺點(diǎn),在金融領(lǐng)域相比其他算法有什么優(yōu)勢(shì),局限性在哪?
1)優(yōu)點(diǎn):
實(shí)現(xiàn)簡(jiǎn)單,速度快,占用內(nèi)存小,可在短時(shí)間內(nèi)迭代多個(gè)版本的模型。
模型的可解釋性非常好,可以直接看到各個(gè)特征對(duì)模型結(jié)果的影響,可解釋性在金融領(lǐng)域非
常重要,所以在目前業(yè)界大部分使用的仍是邏輯回歸模型。
模型客群變化的敏感度不如其他高復(fù)雜度模型,因此穩(wěn)健更好,魯棒性更強(qiáng)。
特征工程做得好,模型的效果不會(huì)太差,并且特征工程可以并行開(kāi)發(fā),大大加快開(kāi)發(fā)的速度。
模型的結(jié)果可以很方便的轉(zhuǎn)化為策略規(guī)則,且線上部署簡(jiǎn)單。
2)缺點(diǎn)和局限性:
容易欠擬合,相比集成模型,準(zhǔn)確度不是很高。
對(duì)數(shù)據(jù)的要求比較高,邏輯回歸對(duì)缺失值,異常值,共線性都比較敏感,且不能直接處理非
線性的特征。所以在數(shù)據(jù)清洗和特征工程上會(huì)花去很大部分的時(shí)間。
在金融領(lǐng)域?qū)?chǎng)景的適應(yīng)能力有局限性,例如數(shù)據(jù)不平衡問(wèn)題,高維特征,大量多類特征,
邏輯回歸在這方面不如決策樹(shù)適應(yīng)能力強(qiáng)。
1.2 邏輯回歸是線性模型嗎?邏輯回歸和線性回歸的區(qū)別?
邏輯回歸是一種廣義線性模型,它引入了 Sigmod 函數(shù),是非線性模型,但本質(zhì)上還是一個(gè)
線性回歸模型,因?yàn)槌?Sigmod 函數(shù)映射關(guān)系,其他的算法原理,步驟都是線性回歸的。
邏輯回歸和線性回歸首先都是廣義的線性回歸,在本質(zhì)上沒(méi)多大區(qū)別,區(qū)別在于邏輯回歸多
了個(gè) Sigmod 函數(shù),使樣本映射到[0,1]之間的數(shù)值,從而來(lái)處理分類問(wèn)題。另外邏輯回歸是
假設(shè)變量服從伯努利分布,線性回歸假設(shè)變量服從高斯分布。邏輯回歸輸出的是離散型變量,
用于分類,線性回歸輸出的是連續(xù)性的,用于預(yù)測(cè)。邏輯回歸是用最大似然法去計(jì)算預(yù)測(cè)函
數(shù)中的最優(yōu)參數(shù)值,而線性回歸是用最小二乘法去對(duì)自變量因變量關(guān)系進(jìn)行擬合。
1.3 邏輯回歸做分類的樣本應(yīng)該滿足什么分布?
應(yīng)該滿足伯努利分布,邏輯回歸的分類標(biāo)簽是基于樣本特征通過(guò)伯努利分布產(chǎn)生的,分類器
要做的就是估計(jì)這個(gè)分布。
1.4 邏輯回歸解決過(guò)擬合的方法有哪些?
減少特征數(shù)量,在實(shí)際使用中會(huì)用很多方法進(jìn)行特征篩選,例如基于 IV 值的大小,變量的
穩(wěn)定性,變量之間的相關(guān)性等。
正則化,常用的有 L1 正則化和 L2 正則化。
4
1.5 什么是特征的離散化和特征交叉?邏輯回歸為什么要對(duì)特征進(jìn)行離散化?
特征離散化是將數(shù)值型特征(一般是連續(xù)型的)轉(zhuǎn)變?yōu)殡x散特征,例如評(píng)分卡中的 woe 轉(zhuǎn)
化,就是將特征進(jìn)行分箱,再將每個(gè)分箱映射到 woe 值上,就轉(zhuǎn)換為了離散特征。特征交
叉也叫作特征組合,是將單獨(dú)的特征進(jìn)行組合,使用相乘/相除/笛卡爾積等形成合成特征,
有助于表示非線性關(guān)系。比如使用 One-Hot 向量的方式進(jìn)行特征交叉。這種方式一般適用于
離散的情況,我們可以把它看做基于業(yè)務(wù)理解的邏輯和操作,例如經(jīng)度和緯度的交叉,年齡
和性別的交叉等。
實(shí)際工作中很少直接將連續(xù)型變量帶入邏輯回歸模型中,而是將特征進(jìn)行離散化后再加入模
型,例如評(píng)分卡的分箱和 woe 轉(zhuǎn)化。這樣做的優(yōu)勢(shì)有以下幾個(gè):1)特征離散化之后,起到
了簡(jiǎn)化模型的作用,使模型變得更穩(wěn)定,降低了模型過(guò)擬合的風(fēng)險(xiǎn)。2)離散化之后的特征
對(duì)異常數(shù)據(jù)有很強(qiáng)的魯棒性,實(shí)際工作中的哪些很難解釋的異常數(shù)據(jù)一般不會(huì)做刪除處理,
如果特征不做離散化,這個(gè)異常數(shù)據(jù)帶入模型,會(huì)給模型帶來(lái)很大的干擾。3)離散特征的
增加和減少都很容易,且稀疏向量的內(nèi)積乘法運(yùn)算速度快,易于模型的快速迭代。4)邏輯
回歸屬于廣義線性模型,表達(dá)能力有限,特征離散化之后,每個(gè)離散變量都有單獨(dú)的權(quán)重,
相當(dāng)于給模型引入了非線性,能夠提高模型的表達(dá)能力。5)離散化后的特征可進(jìn)行特征交
叉,進(jìn)一步引入非線性,提高模型的表達(dá)能力。
1.6 在邏輯回歸中,為什么要常常做特征組合(特征交叉)?
邏輯回歸模型屬于線性模型,線性模型不能很好處理非線性特征,特征組合可以引入非線性
特征,提升模型的表達(dá)能力。另外,基本特征可以認(rèn)為是全局建模,組合特征更加精細(xì),是
個(gè)性化建模,但對(duì)全局建模會(huì)對(duì)部分樣本有偏,對(duì)每一個(gè)樣本建模又會(huì)導(dǎo)致數(shù)據(jù)爆炸,過(guò)擬
合,所以基本特征+特征組合兼顧了全局和個(gè)性化。
1.7 做評(píng)分卡中為什么要進(jìn)行 WOE 化?
更好的解釋性,變量離散化之后可將每個(gè)箱體映射到 woe 值,而不是通常做 one-hot 轉(zhuǎn)換。
woe 化之后可以計(jì)算每個(gè)變量的 IV 值,可用來(lái)篩選變量。
對(duì)離散型變量,woe 可以觀察各個(gè) level 間的跳轉(zhuǎn)對(duì) odds 的提升是否呈線性。
對(duì)連續(xù)型變量,woe 和 IV 值為分箱的合理性提供了一定的依據(jù),也可分析變量在業(yè)務(wù)上的
可解釋性。
用 woe 編碼可以處理缺失值問(wèn)題。
1.8 高度相關(guān)的特征帶入邏輯回歸到底有什么影響?為什么邏輯回歸要將高度相關(guān)特征剔
除?
在損失函數(shù)最終收斂的情況下,就算有很多相關(guān)度很高的特征,也不會(huì)影響模型的效果。假
設(shè)一個(gè)特征將它重復(fù) 100 次,生成 100 個(gè)高度相關(guān)的特征。那么模型訓(xùn)練完之后,這 100
個(gè)特征和原來(lái)那一個(gè)特征扮演的效果一樣,每一個(gè)特征的權(quán)重都是原來(lái)特征的 1/100,只是
可能中間很多特征的系數(shù)正負(fù)相互抵消了,比如做評(píng)分卡,如果引入了高度相關(guān)的特征,那
么最后邏輯回歸的系數(shù)符號(hào)可能就會(huì)不一致。
雖然高度相關(guān)特征對(duì)模型結(jié)果沒(méi)什么大的影響,但還是要剔除相關(guān)性高的特征,原因是一個(gè)
可以減少特征數(shù)量,提高模型的訓(xùn)練速度,減少過(guò)擬合的風(fēng)險(xiǎn)。二是去掉高相關(guān)特征可以讓
模型的可解釋性更好。尤其在做評(píng)分卡時(shí),為了使最后每個(gè)特征的系數(shù)符號(hào)一致,必須做特
征相關(guān)性篩選。
5
1.9 邏輯回歸的特征系數(shù)的絕對(duì)值可以認(rèn)為是特征的重要性嗎?
首先特征系數(shù)的絕對(duì)值越大,對(duì)分類效果的影響越顯著,但不能表示系數(shù)更大的特征重要性
更高。因?yàn)楦淖冏兞康某叨染蜁?huì)改變系數(shù)的絕對(duì)值,而且如果特征是線性相關(guān)的,則系數(shù)可
以從一個(gè)特征轉(zhuǎn)移到另一個(gè)特征,特征間相關(guān)性越高,用系數(shù)解釋變量的重要性就越不可靠。
1.10 為什么做數(shù)據(jù)歸一化?
數(shù)據(jù)歸一到 0 和 1,這樣的話梯度下降會(huì)收斂的更快,相比不歸一化,不會(huì)出現(xiàn)扁平的情況。
數(shù)據(jù)歸一化之后可以提高結(jié)果的精度,尤其在與正則化同時(shí)使用時(shí),數(shù)據(jù)歸一化可以避免由
于特征取值范圍差距過(guò)大,對(duì)取值較小特征的參數(shù)影響更大的問(wèn)題。
1.11 決策樹(shù)模型的優(yōu)缺點(diǎn)及適用性?
優(yōu)點(diǎn):
易于理解,決策樹(shù)可以生成 IF..TEHN 邏輯表達(dá)的樹(shù)結(jié)構(gòu),可解釋性很好。
相比邏輯回歸對(duì)數(shù)據(jù)的處理較簡(jiǎn)單,不太需要做例如數(shù)據(jù)離散化,歸一化等操作。
決策樹(shù)是目前已知的對(duì)于處理非線性交互的最好的算法。
模型的效果比較好,例如隨機(jī)森林,xgboost 都是基于決策樹(shù)構(gòu)建的。
缺點(diǎn):
很容易在訓(xùn)練過(guò)程中生成過(guò)于復(fù)雜的樹(shù)結(jié)構(gòu),造成過(guò)擬合。
不適合處理高維數(shù)據(jù),當(dāng)屬性數(shù)量過(guò)大時(shí),部分決策樹(shù)就不適用了。
泛化能力能力比較差,對(duì)于沒(méi)有出現(xiàn)過(guò)的值幾乎沒(méi)有辦法。
1.12 簡(jiǎn)述一下決策樹(shù)的原理以及樹(shù)的構(gòu)建過(guò)程。
決策樹(shù)時(shí)基于樹(shù)的結(jié)構(gòu)進(jìn)行決策的,學(xué)習(xí)過(guò)程包括特征選擇,決策樹(shù)的生成和剪枝過(guò)程。決
策樹(shù)的學(xué)習(xí)過(guò)程通常是遞歸地選擇最優(yōu)特征,并用最優(yōu)特征對(duì)數(shù)據(jù)集進(jìn)行分割。開(kāi)始時(shí),構(gòu)
建根節(jié)點(diǎn),選擇最優(yōu)特征,該特征有幾種值就劃分為多少子集,每個(gè)子集遞歸調(diào)用此方法,
返回結(jié)點(diǎn),返回的結(jié)點(diǎn)就是上一層的子節(jié)點(diǎn),直到所有特征都已經(jīng)用完,或者數(shù)據(jù)集只有一
維特征為止。
1.13 簡(jiǎn)述一下 ID3,C4.5,CART 三類決策樹(shù)的原理和異同點(diǎn)。
ID3 選擇最佳分割點(diǎn)是基于信息增益的,信息增益越大,表明使用這個(gè)屬性來(lái)劃分所獲得的
“純度提升”越大。C4.5 對(duì) ID3 進(jìn)行了改進(jìn),因?yàn)?ID3 使用的信息增益對(duì)數(shù)據(jù)劃分時(shí),可
能出現(xiàn)每個(gè)結(jié)點(diǎn)只包含一個(gè)樣本,這些子節(jié)點(diǎn)的純度已經(jīng)達(dá)到最大,但是,這樣的決策樹(shù)并
不具有泛化能力,無(wú)法對(duì)新樣本進(jìn)行預(yù)測(cè)。且 ID3 不能處理連續(xù)型變量和缺失值。而 C4.5
使用信息增益率來(lái)選擇屬性,克服了信息增益選擇屬性時(shí)偏向選擇值多的屬性的不足。且可
以處理連續(xù)型變量和缺失值。
C4.5 是基于 ID3 的改進(jìn)版,只能用于分類。而 CART 樹(shù)既可以做分類,也可以做回歸。CART
的本質(zhì)是對(duì)特征空間進(jìn)行二元?jiǎng)澐郑?CART 生成的是一顆二叉樹(shù),且可以對(duì)類別型變
量和數(shù)值型變量進(jìn)行分裂。對(duì)分類型變量進(jìn)行劃分時(shí),分為等于該屬性和不等于該屬性,在
對(duì)連續(xù)型變量進(jìn)行劃分時(shí),分為大于和小于,在做分類是使用的是 GINI 系數(shù)作為劃分標(biāo)準(zhǔn),
在做回歸時(shí)使用的是均方誤差。
Q:分類樹(shù)和回歸樹(shù)的區(qū)別在哪里?
分類樹(shù)以 C4.5 為例,在對(duì)一個(gè)特征進(jìn)行劃分時(shí),是窮舉這個(gè)特征的每一個(gè)閾值,找到使得
特征<=閾值和特征>閾值分成的兩個(gè)分支的熵的最大值,按照該標(biāo)準(zhǔn)分支得到兩個(gè)新的節(jié)
6
點(diǎn),用同樣的方法繼續(xù)分支,直到得到種類唯一的葉子節(jié)點(diǎn),或者達(dá)到預(yù)設(shè)的終止條件為止。
回歸樹(shù)的流程是類似分類樹(shù)的,區(qū)別在于劃分時(shí)的標(biāo)準(zhǔn)不再是最大熵,而是最小化均差,如
果節(jié)點(diǎn)的預(yù)測(cè)值錯(cuò)的越離譜,均方差越大,通過(guò)最小化均差能夠找到最可靠的分支依據(jù)。
1.14 決策樹(shù)對(duì)缺失值是如何處理的?
決策樹(shù)處理缺失要考慮以下三個(gè)問(wèn)題:
當(dāng)開(kāi)始選擇哪個(gè)屬性來(lái)劃分?jǐn)?shù)據(jù)集時(shí),樣本在某幾個(gè)屬性上有缺失怎么處理:
忽略這些缺失的樣本。
填充缺失值,例如給屬性 A 填充一個(gè)均值或者用其他方法將缺失值補(bǔ)全。
計(jì)算信息增益率時(shí)根據(jù)缺失率的大小對(duì)信息增益率進(jìn)行打折,例如計(jì)算屬性 A 的信息增益
率,若屬性 A 的缺失率為 0.9,則將信息增益率乘以 0.9 作為最終的信息增益率。
2. 一個(gè)屬性已經(jīng)被選擇,那么在決定分割點(diǎn)時(shí),有些樣本在這個(gè)屬性上有缺失怎么處理?
忽略這些缺失的樣本。
填充缺失值,例如填充一個(gè)均值或者用其他方法將缺失值補(bǔ)全。
把缺失的樣本,按照無(wú)缺失的樣本被劃分的子集樣本個(gè)數(shù)的相對(duì)比率,分配到各個(gè)子集上去,
至于那些缺失樣本分到子集 1,哪些樣本分配到子集 2,這個(gè)沒(méi)有一定準(zhǔn)則,可以隨機(jī)而動(dòng)。
把缺失的樣本分配給所有的子集,也就是每個(gè)子集都有缺失的樣本。
單獨(dú)將缺失的樣本歸為一個(gè)分支。
3.決策樹(shù)模型構(gòu)建好后,測(cè)試集上的某些屬性是缺失的,這些屬性該怎么處理?
如果有單獨(dú)的缺失值分支,依據(jù)此分支。
把待分類的樣本的屬性 A 分配一個(gè)最常出現(xiàn)的值,然后進(jìn)行分支預(yù)測(cè)。
待分類的樣本在到達(dá)屬性 A 結(jié)點(diǎn)時(shí)就終止分類,然后根據(jù)此時(shí) A 結(jié)點(diǎn)所覆蓋的葉子節(jié)點(diǎn)類
別狀況為其分配一個(gè)發(fā)生概率最高的類。
1.15 為什么決策樹(shù)不需要對(duì)數(shù)據(jù)做歸一化等預(yù)處理?
決策樹(shù)是一種概率模型,所以不需要做歸一化,因?yàn)樗魂P(guān)心變量的值,而是關(guān)心變量的分
布和變量之間的條件概率,所以歸一化這種數(shù)值縮放,不影響分裂結(jié)點(diǎn)位置。
1.16 如何解決決策樹(shù)的過(guò)擬合問(wèn)題?
預(yù)剪枝的方法:通過(guò)提前停止樹(shù)的構(gòu)建而對(duì)樹(shù)剪枝,是目前解決過(guò)擬合的主要方法。常用的
剪枝條件包括限制樹(shù)的深度,限制葉節(jié)點(diǎn)最小樣本數(shù),限制葉節(jié)點(diǎn)的最小樣本權(quán)重,限制葉
節(jié)點(diǎn)的信息增益值的閾值等。
后剪枝的方法:首先構(gòu)造完整的決策樹(shù),允許樹(shù)過(guò)度擬合數(shù)據(jù),然后應(yīng)單個(gè)結(jié)點(diǎn)代替子樹(shù),
節(jié)點(diǎn)的分類采用子樹(shù)的主要分類。剪枝方法有錯(cuò)誤率降低剪枝,悲觀錯(cuò)誤剪枝,代價(jià)復(fù)雜度
剪枝
1.17 什么是集成學(xué)習(xí)?集成學(xué)習(xí)有哪些框架?簡(jiǎn)單介紹各個(gè)框架的常用算法。
集成學(xué)習(xí)是一種優(yōu)化手段和策略,通常是結(jié)合多個(gè)簡(jiǎn)單的弱分類器來(lái)集成模型組,去做更可
靠的決策。一般的弱分類器可以是決策樹(shù),SVM,kNN 等構(gòu)成,其中的模型可以單獨(dú)來(lái)訓(xùn)
練,并且這些弱分類器以某種方式結(jié)合在一起去做出一個(gè)總體預(yù)測(cè)。集成學(xué)習(xí)就是找出哪些
弱分類器可以結(jié)合在一起,以及如何結(jié)合的方法。目前集成學(xué)習(xí)主要有 bagging,boosting,
stacking 三種:
bagging:對(duì)訓(xùn)練集進(jìn)行隨機(jī)子抽樣,對(duì)每個(gè)子訓(xùn)練集構(gòu)建基模型,對(duì)所有的基模型的預(yù)測(cè)
結(jié)果進(jìn)行綜合產(chǎn)生最后的預(yù)測(cè)結(jié)果。如果是分類算法,則用多數(shù)投票法確定最終類別,如果
7
是回歸算法,則將各個(gè)回歸結(jié)果做算術(shù)平均作為最終的預(yù)測(cè)值。常用的 bagging 算法:隨機(jī)
森林
boosting:訓(xùn)練過(guò)程為階梯狀,基模型按照次序進(jìn)行訓(xùn)練(實(shí)際上可以做到并行處理),先
給定一個(gè)初始訓(xùn)練數(shù)據(jù),訓(xùn)練出第一個(gè)基模型,根據(jù)基模型的表現(xiàn)對(duì)樣本進(jìn)行調(diào)整,在之前
基模型預(yù)測(cè)錯(cuò)誤的樣本上投入更多的關(guān)注,然后用調(diào)整后的樣本訓(xùn)練下一個(gè)基模型,重復(fù)上
述過(guò)程N(yùn)次,將N個(gè)基模型進(jìn)行加權(quán)結(jié)合,輸出最后的結(jié)果。常用的算法有GBDT,XGBOOST
等。
stacking:是一種組合分類器的方法,以兩層為例,第一層由多個(gè)基學(xué)習(xí)器組成,其輸入為
原始訓(xùn)練集,第二層的模型則是以第一層基學(xué)習(xí)器的輸出作為訓(xùn)練集進(jìn)行再訓(xùn)練(一般用 LR
進(jìn)行回歸組合),從而得到完整的 stacking 模型。要得到 stacking 模型,關(guān)鍵在于如何構(gòu)造
第二層的特征,構(gòu)造第二層特征的原則是盡可能的避免信息泄露,因此對(duì)原始訓(xùn)練集常常采
用類似于 K 折交叉驗(yàn)證的劃分方法。各個(gè)基模型要采用相同的 Kfold,這樣得到的第二層特
征的每一折(對(duì)應(yīng)于之前的 K 折劃分)都將不會(huì)泄露進(jìn)該折數(shù)據(jù)的目標(biāo)值信息 ,從而盡可
能的降低過(guò)擬合的風(fēng)險(xiǎn)。
1.18 簡(jiǎn)單描述一下模型的偏差和方差?bagging 和 boosting 主要關(guān)注哪個(gè)?
偏差描述的是預(yù)測(cè)值與真實(shí)值的差距,偏差越大,越偏離真實(shí)數(shù)據(jù)。
方差描述的是預(yù)測(cè)值的變化范圍,離散程度,方差越大,數(shù)據(jù)分布越分散。
bagging 主要關(guān)注的是降低方差,boosting 主要關(guān)注降低偏差。
1.19 簡(jiǎn)述一下隨機(jī)森林的原理,隨機(jī)森林的構(gòu)造過(guò)程。
隨機(jī)森林是 bagging 算法的代表,使用了 CART 樹(shù)作為弱分類器,將多個(gè)不同的決策樹(shù)進(jìn)行
組合,利用這種組合來(lái)降低單棵決策樹(shù)的可能帶來(lái)的片面性和判斷不準(zhǔn)確性。對(duì)于普通的決
策樹(shù),是在所有樣本特征中找一個(gè)最優(yōu)特征來(lái)做決策樹(shù)的左右子樹(shù)劃分,而隨機(jī)森林會(huì)先通
過(guò)自助采樣的方法(bootstrap)得 到 N 個(gè)訓(xùn)練集,然后在單個(gè)訓(xùn)練集上會(huì)隨機(jī)選擇一部分特
征,來(lái)選擇一個(gè)最優(yōu)特征來(lái)做決策樹(shù)的左右子樹(shù)劃分,最后得到 N 棵決策樹(shù),對(duì)于分類問(wèn)
題,按多數(shù)投票的準(zhǔn)則確定最終結(jié)果,對(duì)于回歸問(wèn)題,由多棵決策樹(shù)的預(yù)測(cè)值的平均數(shù)作為
最終結(jié)果。隨機(jī)森林的隨機(jī)性體現(xiàn)在兩方面,一個(gè)是選取樣本的隨機(jī)性,一個(gè)是選取特征的
隨機(jī)性,這樣進(jìn)一步增強(qiáng)了模型的泛化能力。
1.20 隨機(jī)森林的優(yōu)缺點(diǎn)?
優(yōu)點(diǎn):
訓(xùn)練可以高度并行化,訓(xùn)練速度快,效率高。
兩個(gè)隨機(jī)性的引入,使得隨機(jī)森林不容易過(guò)擬合,具有很好的抗噪聲能力。
由于每次不再考慮全部的特征屬性,二是特征的一個(gè)子集,所以相對(duì)于 bagging 計(jì)算開(kāi)銷更
小,效率更高。
對(duì)于數(shù)據(jù)的適應(yīng)能力強(qiáng),可以處理連續(xù)型和離散型的變量,數(shù)據(jù)無(wú)需規(guī)范化。
可以輸出變量的重要程度,被認(rèn)為是一種不錯(cuò)的降維方法。
缺點(diǎn):
在某些噪聲較大的分類問(wèn)題和或回歸問(wèn)題上容易過(guò)擬合。
模型的可解釋性比較差,無(wú)法控制模型內(nèi)部的運(yùn)行。
對(duì)于小數(shù)據(jù)或者低維數(shù)據(jù),效果可能會(huì)不太好。
1.21 隨機(jī)森林為什么不容易過(guò)擬合?
8
隨機(jī)森林由很多棵樹(shù)組合在一起,單看每一棵樹(shù)可以是過(guò)擬合的,但是既然是過(guò)擬合,就會(huì)
擬合到非常小的細(xì)節(jié),隨機(jī)森林通過(guò)引入隨機(jī)性,讓每一棵樹(shù)過(guò)擬合的細(xì)節(jié)不同,再將這些
樹(shù)組合在一起,過(guò)擬合的部分就會(huì)抵消掉,不過(guò)隨機(jī)森林還是可能會(huì)出現(xiàn)過(guò)擬合的現(xiàn)象,只
是出現(xiàn)的概率相對(duì)較低。
1.22 隨機(jī)森林輸出特征重要性的原理?
隨機(jī)森林對(duì)于特征重要性的評(píng)估思想:判斷每個(gè)特征在隨機(jī)森林中的每顆樹(shù)上做了多大的貢
獻(xiàn),然后取個(gè)平均值,最后比一比特征之間的貢獻(xiàn)大小。其中關(guān)于貢獻(xiàn)的計(jì)算方式可以是基
尼指數(shù)或袋外數(shù)據(jù)錯(cuò)誤率。
基于基尼系數(shù):如果特征 X 出現(xiàn)在決策樹(shù) J 中的結(jié)點(diǎn) M,則計(jì)算節(jié)點(diǎn) M 分枝前后的 Gini
指數(shù)變化量,假設(shè)隨機(jī)森林由 N 棵樹(shù),則計(jì)算 N 次的 Gini 系數(shù),最后將所有的 Gini 系數(shù)做
一個(gè)歸一化處理就得到了該特征的重要性。
基于袋外數(shù)據(jù)錯(cuò)誤率:袋外數(shù)據(jù)指的是每次隨機(jī)抽取未被抽取達(dá)到的數(shù)據(jù),假設(shè)袋外的樣本
數(shù)為 O,將這 O 個(gè)數(shù)據(jù)作為測(cè)試集,代入已生成好的隨機(jī)森林分類器,得到預(yù)測(cè)的分類結(jié)
果,其中預(yù)測(cè)錯(cuò)誤的樣本數(shù)為 X,則袋外數(shù)據(jù)誤差為 X/O,這個(gè)袋外數(shù)據(jù)誤差記為 errOOB1,
下一步對(duì)袋外數(shù)據(jù)的特征 A 加入噪聲干擾,再次計(jì)算袋外誤差 errOOB2,假設(shè)隨機(jī)森林由 N
個(gè)分類器,則特征 A 的重要性為:sum(errOOB2-errOOB1)/N,其依據(jù)就是,如果一個(gè)特征很
重要,那么其變動(dòng)后會(huì)非常影響測(cè)試誤差,如果測(cè)試誤差沒(méi)有怎么改變,則說(shuō)明特征 A 不
重要。
1.23 簡(jiǎn)單描述一下 Adaboost 的算法原理和流程。
Adaboost 基于分類器的錯(cuò)誤率分配不同的權(quán)重系數(shù),最后得到累加加權(quán)的的預(yù)測(cè)結(jié)果。
算法流程:
給數(shù)據(jù)中每一個(gè)樣本一個(gè)權(quán)重,若有 N 個(gè)樣本,則每個(gè)樣本的權(quán)重為 1/N.
訓(xùn)練數(shù)據(jù)的每一個(gè)樣本,得到第一個(gè)分類器。
計(jì)算該分類器的錯(cuò)誤率,根據(jù)錯(cuò)誤率計(jì)算給分類器分配的權(quán)重。
將第一個(gè)分類器分錯(cuò)的樣本權(quán)重增加,分對(duì)的樣本權(quán)重減少,然后再用新的樣本權(quán)重訓(xùn)練數(shù)
據(jù),得到新的分類器。
迭代這個(gè)訓(xùn)練步驟直到分類器錯(cuò)誤為 0 或達(dá)到迭代次數(shù)。
將所有的弱分類器加權(quán)求和,得到分類結(jié)果(分類器權(quán)重),錯(cuò)誤率低的分類器獲得更高的
決定系數(shù),從而在數(shù)據(jù)進(jìn)行預(yù)測(cè)起關(guān)鍵作用。
1.24 Adaboost 的優(yōu)點(diǎn)和缺點(diǎn)?
優(yōu)點(diǎn):
分類精度高,構(gòu)造簡(jiǎn)單,結(jié)果可理解。
可以使用各種回歸分類模型來(lái)構(gòu)建弱學(xué)習(xí)器,非常靈活。
不容易過(guò)擬合。
缺點(diǎn):
訓(xùn)練時(shí)會(huì)過(guò)于偏向分類困難的數(shù)據(jù),導(dǎo)致 Adaboost 容易受噪聲數(shù)據(jù)干擾。
依賴于弱分類器,訓(xùn)練時(shí)間可能比較長(zhǎng)。
1.25 簡(jiǎn)單說(shuō)一下 GBDT 的原理。
GBDT 是 boosting 的一種方法,主要思想是每一次建立單個(gè)分類器時(shí),是在之前建立的模型
的損失函數(shù)的梯度下降方向。損失函數(shù)越大,說(shuō)明模型越容易出錯(cuò),如果我們的模型能讓損
9
失函數(shù)持續(xù)的下降,則說(shuō)明我們的模型在持續(xù)不斷的改進(jìn),而最好的方式就是讓損失函數(shù)在
其梯度的方向上下降。
GBDT 的核心在于每一棵樹(shù)學(xué)的是之前所有樹(shù)結(jié)論和的殘差,殘差就是真實(shí)值與預(yù)測(cè)值的差
值,所以為了得到殘差,GBDT 中的樹(shù)全部是回歸樹(shù),之所以不用分類樹(shù),是因?yàn)榉诸惖慕Y(jié)
果相減是沒(méi)有意義的。
Shrinkage(縮減)是 GBDT 的一個(gè)重要演進(jìn)分支,Shrinkage 的思想在于每次走一小步來(lái)
逼近真實(shí)的結(jié)果,要比直接邁一大步的方式更好,這樣做可以有效減少過(guò)擬合的風(fēng)險(xiǎn)。它認(rèn)
為每棵樹(shù)只學(xué)到了一小部分,累加的時(shí)候只累加這一小部分,通過(guò)多學(xué)習(xí)幾棵樹(shù)來(lái)彌補(bǔ)不足。
這累加的一小部分(步長(zhǎng)*殘差)來(lái)逐步逼近目標(biāo),所以各個(gè)樹(shù)的殘差是漸變的而不是陡變
的。
GBDT 可以用于回歸問(wèn)題(線性和非線性),也可用于分類問(wèn)題。
1.26 為什么對(duì)于高維稀疏特征不太適合用 GBDT?
GBDT 在每一次分割時(shí)需要比較大量的特征,特征太多,模型訓(xùn)練很耗費(fèi)時(shí)間。
樹(shù)的分割往往只考慮了少部分特征,大部分的特征都用不到,所有的高維稀疏的特征會(huì)造成
大量的特征浪費(fèi)。
1.27 GBDT 和隨機(jī)森林的異同點(diǎn)?
相同點(diǎn):
都是由多棵樹(shù)構(gòu)成,最終的結(jié)果也是由多棵樹(shù)決定。
不同點(diǎn):
隨機(jī)森林可以由分類樹(shù)和回歸樹(shù)組成,GBDT 只能由回歸樹(shù)組成。
隨機(jī)森林的樹(shù)可以并行生成,而 GBDT 只能串行生成,所以隨機(jī)森林的訓(xùn)練速度相對(duì)較快。
隨機(jī)森林關(guān)注減小模型的方差,GBDT 關(guān)注減小模型的偏差。
隨機(jī)森林對(duì)異常值不敏感,GBDT 對(duì)異常值非常敏感。
隨機(jī)森林最終的結(jié)果是多數(shù)投票或簡(jiǎn)單平均,而 GBDT 是加權(quán)累計(jì)起來(lái)。
1.28 GBDT 的優(yōu)缺點(diǎn)?
優(yōu)點(diǎn):
GBDT 每一次的殘差計(jì)算都增大了分錯(cuò)樣本的權(quán)重,而分對(duì)的權(quán)重都趨近于 0,因此泛化性
能比較好。
可以靈活的處理各種類型的數(shù)據(jù)。
缺點(diǎn):
對(duì)異常值比較敏感。
由于分類器之間存在依賴關(guān)系,所以很難進(jìn)行并行計(jì)算。
1.29 簡(jiǎn)單介紹一下 XGBOOST。
XGBOOST 是一種梯度提升的算法,用來(lái)解決分類和回歸問(wèn)題。它的基學(xué)習(xí)器可以是 CART
樹(shù),也可以是線性分類器。當(dāng)用 CART 樹(shù)做基學(xué)習(xí)器時(shí),訓(xùn)練的時(shí)候采用前向分布算法進(jìn)
行貪婪的學(xué)習(xí),每次迭代都學(xué)習(xí)一棵 CART 樹(shù)來(lái)擬合之前 t-1 棵樹(shù)的預(yù)測(cè)結(jié)果與訓(xùn)練樣本
真實(shí)值的殘差。XGBoost 對(duì) GBDT 進(jìn)行了一系列優(yōu)化,比如損失函數(shù)進(jìn)行了二階泰勒展開(kāi)、
目標(biāo)函數(shù)加入正則項(xiàng)、特征粒度上支持并行計(jì)算和默認(rèn)缺失值處理等,在可擴(kuò)展性和訓(xùn)練速
度上有了巨大的提升。
10
1.30 XGBOOST 和 GBDT 的區(qū)別在哪里?
傳統(tǒng)的 GBDT 是以 CART 樹(shù)作為基分類器,xgboost 還支持線性分類器,這個(gè)時(shí)候 xgboost
相當(dāng)于帶 L1 和 L2 正則化項(xiàng)的邏輯斯蒂回歸(分類問(wèn)題)或者線性回歸(回歸問(wèn)題),線
性分類器的速度是比較快的,這時(shí)候 xgboost 的速度優(yōu)勢(shì)就體現(xiàn)了出來(lái)。
傳統(tǒng)的 GBDT 在優(yōu)化時(shí)只使用一階導(dǎo)數(shù),而 xgboost 對(duì)損失函數(shù)做了二階泰勒展開(kāi),同時(shí)用
到了一階和二階導(dǎo)數(shù),并且 xgboost 支持使用自定義損失函數(shù),只要損失函數(shù)可一階,二階
求導(dǎo)。
xgboost 在損失函數(shù)里加入了正則項(xiàng),用來(lái)減小模型的方差,防止過(guò)擬合,正則項(xiàng)里包含了
樹(shù)的葉節(jié)點(diǎn)的個(gè)數(shù), 每個(gè)葉子節(jié)點(diǎn)上輸出的 score 的 L2 模的平方和。
xgboost 里有一個(gè)參數(shù)叫學(xué)習(xí)速率(learning_rate), xgboost 在進(jìn)行完一次迭代后,會(huì)將葉
子節(jié)點(diǎn)的權(quán)重乘上學(xué)習(xí)速率,主要是為了削弱每棵樹(shù)的影響,讓后面有更大的學(xué)習(xí)空間。實(shí)
際應(yīng)用中,一般把 learing_rate 設(shè)置得小一點(diǎn),然后迭代次數(shù)(n_estimators)設(shè)置得大一點(diǎn)。
xgboost 借 鑒 了 隨 機(jī) 森 林 的 原 理 , 支 持 行 抽 樣 (subsample) 和 列 抽 樣
(colsample_bytree,colsample_bylevel), 行抽樣指的是隨機(jī)森林里對(duì)數(shù)據(jù)集進(jìn)行有放回抽樣,
列抽樣指的是對(duì)特征進(jìn)行隨機(jī)選擇,不僅能降低過(guò)擬合,還能減少計(jì)算,這也是 xgboost 異
于傳統(tǒng) gbdt 的一個(gè)特性。
1.31 為什么 XGBOOST 要用泰勒展開(kāi),優(yōu)勢(shì)在哪里?
xgboost 使用了一階和二階偏導(dǎo),二階導(dǎo)數(shù)有利于梯度下降的更快更準(zhǔn),使用泰勒展開(kāi)取得
函數(shù)做自變量的二階導(dǎo)數(shù)形式,可以在不選定損失函數(shù)具體形式的情況下,僅僅依靠輸入數(shù)
據(jù)的值就可以進(jìn)行葉子分裂優(yōu)化計(jì)算,本質(zhì)上也就把損失函數(shù)的選取和模型算法的優(yōu)化分開(kāi)
來(lái)了,這種去耦合增加了 xgboost 的適用性,使得它按需選取損失函數(shù),既可以用于分類,
也可以用于回歸。
1.32 XGBOOST 是如何尋找最優(yōu)特征的?
xgboost 在訓(xùn)練過(guò)程中給出各個(gè)特征的增益評(píng)分,最大增益的特征會(huì)被選出來(lái)作為分裂依據(jù),
從而記憶了每個(gè)特征在模型訓(xùn)練時(shí)的重要性,從根到葉子中間節(jié)點(diǎn)涉及某特征的次數(shù)作為該
特征重要性排序。
1.33 XGBOOST 是如何處理缺失值的?
xgboost 為缺失值設(shè)定了默認(rèn)的分裂方向,xgboost 在樹(shù)的構(gòu)建過(guò)程中選擇能夠最小化訓(xùn)練誤
差的方向作為默認(rèn)的分裂方向,即在訓(xùn)練時(shí)將缺失值劃入左子樹(shù)計(jì)算訓(xùn)練誤差,再劃入右子
樹(shù)計(jì)算訓(xùn)練誤差,然后將缺失值劃入誤差小的方向。
1.34 XGBOOST 的并行化是如何實(shí)現(xiàn)的?
xgboost 的并行不是在 tree 粒度上的并行,xgboost 也是一次迭代完才能進(jìn)行下一次迭代(第
t 次迭代的損失函數(shù)包含了第 t-1 次迭代的預(yù)測(cè)值),它的并行處理是在特征粒度上的,在
決策樹(shù)的學(xué)習(xí)中首先要對(duì)特征的值進(jìn)行排序,然后找出最佳的分割點(diǎn),xgboost 在訓(xùn)練之前,
就預(yù)先對(duì)數(shù)據(jù)做了排序, 然后保存為 block 結(jié)構(gòu),后面的迭代中重復(fù)地使用這個(gè)結(jié)構(gòu),大
大減小計(jì)算量。這個(gè) block 結(jié)構(gòu)也使得并行成為了可能,在進(jìn)行節(jié)點(diǎn)的分裂時(shí),需要計(jì)算每
個(gè)特征的增益,最終選增益最大的那個(gè)特征去做分裂,那么各個(gè)特征的增益計(jì)算就可以開(kāi)多
線程進(jìn)行。
可并行的近似直方圖算法。樹(shù)節(jié)點(diǎn)在進(jìn)行分裂時(shí),我們需要計(jì)算每個(gè)特征的每個(gè)分割點(diǎn)對(duì)應(yīng)
的增益,即用貪心法枚舉所有可能的分割點(diǎn)。當(dāng)數(shù)據(jù)無(wú)法一次載入內(nèi)存或者在分布式情況下,
11
貪心算法效率就會(huì)變得很低,所以 xgboost 還提出了一種可并行的近似直方圖算法,用于高
效地生成候選的分割點(diǎn)。
1.35 XGBOOST 采樣時(shí)有放回的還是無(wú)放回的?
xgboost 屬于 boosting 方法的一種,所以采樣時(shí)樣本是不放回的,因而每輪計(jì)算樣本不重復(fù),
另外,xgboost 支持子采樣,每輪計(jì)算可以不使用全部的樣本,以減少過(guò)擬合。另外一點(diǎn)是
xgboost 還支持列采樣,每輪計(jì)算按百分比隨機(jī)抽取一部分特征進(jìn)行訓(xùn)練,既可以提高速度
又能減少過(guò)擬合。
1.36 XGBOOST 的調(diào)參步驟是怎樣的?
PS:這里使用 Gridsearch cv 來(lái)窮舉檢索最佳的參數(shù),如果時(shí)間允許,可以通過(guò)設(shè)置步數(shù)先
粗調(diào),再細(xì)調(diào)。
保持 learning rate 和其他 booster 相關(guān)的參數(shù)不變,調(diào)節(jié)和 estimators 的參數(shù)。learing_rate 可
設(shè)為 0.1, max_depth 設(shè)為 4-6 之間,min_child_weight 設(shè)為 1,subsample 和 colsample_bytree
設(shè)為 0.8 ,其他的參數(shù)都設(shè)為默認(rèn)值即可。
調(diào)節(jié) max_depth 和 min_child_weight 參數(shù),首先,我們先大范圍地粗調(diào)參數(shù),然后再小范
圍地微調(diào)。
gamma 參數(shù)調(diào)優(yōu)
subsample 和 colsample_bytree 調(diào)優(yōu)
正則化參數(shù)調(diào)優(yōu),選擇 L1 正則化或者 L2 正則化
縮小 learning rate,得到最佳的 learning rate 值
1.37 XGBOOST 特征重要性的輸出原理?
xgboost 是用 get_score 方法輸出特征重要性的,其中 importance_type 參數(shù)支持三種特征重要
性的計(jì)算方法:
importance_type=weight(默認(rèn)值),使用特征在所有樹(shù)中作為劃分屬性的次數(shù)。
importance_type=gain,使用特征在作為劃分屬性時(shí) loss 平均的降低量。
importance_type=cover,使用特征在作為劃分屬性時(shí)對(duì)樣本的覆蓋度。
1.38 LightGBM 相比 XGBOOST 在原理和性能上的差異?
1.速度和內(nèi)存上的優(yōu)化:
xgboost 用的是預(yù)排序(pre-sorted)的方法, 空間消耗大。這樣的算法需要保存數(shù)據(jù)的特征
值,還保存了特征排序的結(jié)果(例如排序后的索引,為了后續(xù)快速的計(jì)算分割點(diǎn)),這里需
要消耗訓(xùn)練數(shù)據(jù)兩倍的內(nèi)存。 其次,時(shí)間上也有較大的開(kāi)銷,在遍歷每一個(gè)分割點(diǎn)的時(shí)候,
都需要進(jìn)行分裂增益的計(jì)算,消耗的代價(jià)大。
LightGBM 用的是直方圖(Histogram)的決策樹(shù)算法,直方圖算法的基本思想是先把連續(xù)的
浮點(diǎn)特征值離散化成 k 個(gè)整數(shù),同時(shí)構(gòu)造一個(gè)寬度為 k 的直方圖。在遍歷數(shù)據(jù)的時(shí)候,根據(jù)
離散化后的值作為索引在直方圖中累積統(tǒng)計(jì)量,當(dāng)遍歷一次數(shù)據(jù)后,直方圖累積了需要的統(tǒng)
計(jì)量,然后根據(jù)直方圖的離散值,遍歷尋找最優(yōu)的分割點(diǎn)。
2.準(zhǔn)確率上的優(yōu)化:
xgboost 通過(guò) level(depth)-wise 策略生長(zhǎng)樹(shù), Level-wise 過(guò)一次數(shù)據(jù)可以同時(shí)分裂同一層
的葉子,容易進(jìn)行多線程優(yōu)化,也好控制模型復(fù)雜度,不容易過(guò)擬合。但實(shí)際上 Level-wise
是一種低效的算法,因?yàn)樗患訁^(qū)分的對(duì)待同一層的葉子,帶來(lái)了很多沒(méi)必要的開(kāi)銷,因?yàn)?br>實(shí)際上很多葉子的分裂增益較低,沒(méi)必要進(jìn)行搜索和分裂。
12
LightGBM 通過(guò) leaf-wise(best-first)策略來(lái)生長(zhǎng)樹(shù), Leaf-wise 則是一種更為高效的策略,
每次從當(dāng)前所有葉子中,找到分裂增益最大的一個(gè)葉子,然后分裂,如此循環(huán)。因此同
Level-wise 相比,在分裂次數(shù)相同的情況下,Leaf-wise 可以降低更多的誤差,得到更好的精
度。Leaf-wise 的缺點(diǎn)是可能會(huì)長(zhǎng)出比較深的決策樹(shù),產(chǎn)生過(guò)擬合。因此 LightGBM 在 Leaf-wise
之上增加了一個(gè)最大深度的限制,在保證高效率的同時(shí)防止過(guò)擬合。
3.對(duì)類別型特征的處理:
xgboost 不支持直接導(dǎo)入類別型變量,需要預(yù)先對(duì)類別型變量作亞編碼等處理。如果類別型
特征較多,會(huì)導(dǎo)致啞變量處理后衍生后的特征過(guò)多,學(xué)習(xí)樹(shù)會(huì)生長(zhǎng)的非常不平衡,并且需要
非常深的深度才能來(lái)達(dá)到較好的準(zhǔn)確率。
LightGBM 可以支持直接導(dǎo)入類別型變量(導(dǎo)入前需要將字符型轉(zhuǎn)為整數(shù)型,并且需要聲明
類別型特征的字段名),它沒(méi)有對(duì)類別型特征進(jìn)行獨(dú)熱編碼,因此速度比獨(dú)熱編碼快得多。
LightGBM 使用了一個(gè)特殊的算法來(lái)確定屬性特征的分割值?;舅枷胧菍?duì)類別按照與目標(biāo)
標(biāo)簽的相關(guān)性進(jìn)行重排序,具體一點(diǎn)是對(duì)于保存了類別特征的直方圖根據(jù)其累計(jì)值
(sum_gradient/sum_hessian)重排序,在排序好的直方圖上選取最佳切分位置。
二、技術(shù)之特征工程、模型評(píng)估與優(yōu)化
2.1 什么是特征工程?為什么特征工程對(duì)機(jī)器學(xué)習(xí)很重要?
特征工程指的是使用專業(yè)知識(shí)和技巧來(lái)處理數(shù)據(jù),使得特征在機(jī)器學(xué)習(xí)算法上發(fā)揮更好的作
用的過(guò)程。這個(gè)過(guò)程包含了數(shù)據(jù)預(yù)處理,特征構(gòu)建,特征篩選等。特征工程的目的就是篩選
出好的特征,得到更好的訓(xùn)練數(shù)據(jù),使模型達(dá)到更好的效果。
從數(shù)據(jù)中提取出來(lái)的特征好壞會(huì)直接影響到模型的效果,有的時(shí)候,如果特征工程做得好,
僅使用一些簡(jiǎn)單的機(jī)器學(xué)習(xí)算法,也能達(dá)到很好的效果。由此可見(jiàn)特征工程在實(shí)際的機(jī)器學(xué)
習(xí)中的重要性。
2.2 特征工程的一般步驟是什么?什么是特征工程的迭代?
特征工程常規(guī)步驟:
數(shù)據(jù)獲取,數(shù)據(jù)的可用性評(píng)估(覆蓋率,準(zhǔn)確率,獲取難度)
探索性數(shù)據(jù)分析,對(duì)數(shù)據(jù)和特征有一個(gè)大致的了解,同時(shí)進(jìn)行數(shù)據(jù)的質(zhì)量檢驗(yàn),包括缺失值,
異常值,重復(fù)值,一致性,正確性等。
特征處理,包括數(shù)據(jù)預(yù)處理和特征轉(zhuǎn)換兩部分,數(shù)據(jù)預(yù)處理主要做清洗工作(缺失值,異常
值,錯(cuò)誤值,數(shù)據(jù)格式),特征轉(zhuǎn)換即對(duì)連續(xù)特征,離散特征,時(shí)間序列特征進(jìn)行轉(zhuǎn)換,便
于入模。
特征構(gòu)建,特征構(gòu)建的目的是找尋與目標(biāo)變量相關(guān)且區(qū)分度較好的特征。常用的方法有特征
交叉,四則運(yùn)算,基于業(yè)務(wù)理解進(jìn)行頭腦風(fēng)暴構(gòu)建特征等。
特征篩選,大量的特征中選擇少量的有用特征,也叫作特征降維,常用的方法有過(guò)濾法,包
裝法,嵌入法。
特征工程的迭代:
選擇特征:具體問(wèn)題具體分析,通過(guò)查看大量的數(shù)據(jù)和基于對(duì)業(yè)務(wù)的理解,從數(shù)據(jù)中查找可
以提出出數(shù)據(jù)的關(guān)鍵。
設(shè)計(jì)特征:可以自動(dòng)進(jìn)行特征提取工作,也可以手工進(jìn)行特征的構(gòu)建。
選擇特征:使用不同的特征構(gòu)造方法,從多個(gè)角度來(lái)評(píng)判這個(gè)特征是否適合放入模型中。
計(jì)算模型:計(jì)算模型在該特征上所提升的準(zhǔn)確率。
上線測(cè)試:通過(guò)在線測(cè)試的效果來(lái)評(píng)估特征是否有效。
13
2.3 常用的特征工程方法有哪些?
特征處理:數(shù)據(jù)的預(yù)處理包括異常值和缺失值,要根據(jù)實(shí)際的情況來(lái)處理。
特征轉(zhuǎn)換主要有標(biāo)準(zhǔn)化,歸一化,區(qū)間縮放,二值化等,根據(jù)特征類型的不同選擇合適的轉(zhuǎn)
換方法。
特征構(gòu)建:特征之間的四則運(yùn)算(有業(yè)務(wù)含義),基于業(yè)務(wù)理解構(gòu)造特征,分解類別特征,
特征交叉組合等。
特征篩選:過(guò)濾法,封裝法,嵌入法。
2.4 在實(shí)際的風(fēng)控建模中怎么做好特征工程?
本人工作中的一些經(jīng)驗(yàn)總結(jié):
因?yàn)樽鲲L(fēng)控模型大部分的數(shù)據(jù)源來(lái)自第三方,所以第三方數(shù)據(jù)的可用性評(píng)估非常重要,一方
面需要了解這些特征底層的衍生邏輯,判斷是否與目標(biāo)變量相關(guān)。另一方面考察數(shù)據(jù)的覆蓋
率和真實(shí)性,覆蓋率較低和真實(shí)性存疑的特征都不能使用在模型中。
基于金融的數(shù)據(jù)特點(diǎn),在特征篩選這個(gè)步驟上考量的因素主要有:一個(gè)是時(shí)間序列上的穩(wěn)定
性,衡量的指標(biāo)可以是 PSI,方差或者 IV。一個(gè)是特征在樣本上覆蓋率,也就是特征的缺失
率不能太高。另外就是特征的可解釋性,特征與目標(biāo)變量的關(guān)系要在業(yè)務(wù)上要解釋的通。
如果第三方返回有用戶的原始底層數(shù)據(jù),例如社保的繳納記錄,運(yùn)營(yíng)商的通話/短信記錄,
則需要在特征衍生上多下功夫,基于自身對(duì)數(shù)據(jù)的敏感性和業(yè)務(wù)的理解,構(gòu)建具有金融,風(fēng)
險(xiǎn)屬性的特征,也可以與業(yè)務(wù)部門進(jìn)行溝通找尋與業(yè)務(wù)相關(guān)的特征。
2.5 實(shí)際項(xiàng)目中原始數(shù)據(jù)通常有哪些問(wèn)題?你是如何解決的?
一些特征的底層邏輯不清晰,字面上的意思可能與實(shí)際的衍生邏輯相悖,這個(gè)需要與第三方
數(shù)據(jù)供應(yīng)商進(jìn)行溝通,了解清楚特征的衍生邏輯。
數(shù)據(jù)的真實(shí)性可能存在問(wèn)題。比如一個(gè)特征是歷史總計(jì),但第三方只是爬取了用戶近 2 年的
數(shù)據(jù),這樣的特征就不符合用戶的真實(shí)情況。所以對(duì)數(shù)據(jù)的真實(shí)性校驗(yàn)顯得非常重要。
有缺失的特征占的比例較高。在進(jìn)行缺失值處理前先分析缺失的原因,而不是盲目的進(jìn)行填
充,刪除等工作。另外也要分析缺失是否有風(fēng)險(xiǎn)屬性,例如芝麻分缺失的用戶相對(duì)來(lái)說(shuō)風(fēng)險(xiǎn)
會(huì)較高,那么缺失可以當(dāng)做一個(gè)類別來(lái)處理。
大量多類特征如何使用。例如位置信息,設(shè)備信息這些特征類別數(shù)較多,如果做亞編碼處理
會(huì)造成維度災(zāi)難,目前常用的方法一個(gè)是降基處理,減少類別數(shù),另一個(gè)是用 xgboost 來(lái)對(duì)
類別數(shù)做重要性排序,篩選重要性較高的類別再做亞編碼處理。
2.6 在做評(píng)分卡或其他模型中,怎么衡量特征(數(shù)據(jù))的有用性?
特征具有金融風(fēng)險(xiǎn)屬性,且與目標(biāo)變量的關(guān)系在業(yè)務(wù)上有良好的可解釋性。
特征與目標(biāo)變量是高度相關(guān)的,衡量的指標(biāo)主要是 IV。
特征的準(zhǔn)確率,這個(gè)需要了解特征的衍生邏輯,并與實(shí)際一般的情況相比較是否有異常。
特征的覆蓋率,一般來(lái)說(shuō)覆蓋率要達(dá)到 70%以上。
特征的穩(wěn)定性,特征的覆蓋率,分布,區(qū)分效果在時(shí)間序列上的表現(xiàn)比較穩(wěn)定。
特征的及時(shí)性,最好是能代表用戶最近的信用風(fēng)險(xiǎn)情況。
2.7 為什么探索性數(shù)據(jù)分析(EDA)在機(jī)器學(xué)習(xí)中非常重要?
EDA 不單是看看數(shù)據(jù)的分布,而是對(duì)數(shù)據(jù)整體有一個(gè)大概的了解。通過(guò)作圖、制表、方程
擬合、計(jì)算特征量等手段探索數(shù)據(jù)的結(jié)構(gòu)和規(guī)律。從中發(fā)現(xiàn)關(guān)鍵性的價(jià)值信息,這些信息對(duì)
于后續(xù)建模及對(duì)模型的正確理解有很重要的意義。
14
通過(guò) EDA 可以發(fā)現(xiàn)數(shù)據(jù)的異常,可以分析每個(gè)特征與目標(biāo)變量之間的關(guān)系,特征與特征之
間的關(guān)系,為特征構(gòu)建和特征篩選提供有價(jià)值的信息。
EDA 分析可以驗(yàn)證數(shù)據(jù)是不是你認(rèn)為的那樣,實(shí)際情況中由于數(shù)據(jù)和特征量比較大,往往
忽視這些數(shù)據(jù)是如何生成的,數(shù)據(jù)突出的問(wèn)題或模型的實(shí)施中的錯(cuò)誤會(huì)被長(zhǎng)時(shí)間忽視,這可
能會(huì)導(dǎo)致基于錯(cuò)誤信息做出決策。
2.8 缺失值的處理方式有哪些?風(fēng)控建模中該如何合理的處理缺失?
首先要了解缺失產(chǎn)生的原因,因數(shù)據(jù)獲取導(dǎo)致的缺失建議用填充的方式(缺失率比較低的情
況下),因用戶本身沒(méi)有這個(gè)屬性導(dǎo)致的缺失建議把缺失當(dāng)做一個(gè)類別。另外可以分析缺失
是否有風(fēng)險(xiǎn)屬性,有的話最好當(dāng)做一個(gè)類別來(lái)處理。
風(fēng)控模型對(duì)于缺失率的要求比較高,尤其是評(píng)分卡。個(gè)人認(rèn)為,缺失率在 30%以上的特征
建議不要用,缺失率在 10%以下的變量可用中位數(shù)或隨機(jī)森林來(lái)填充,10%-30%的缺失率
建議當(dāng)做一個(gè)類別。對(duì)于 xgboost 和 lightgbm 這類可以自動(dòng)處理缺失值的模型可以不做處理。
2.9 如何發(fā)現(xiàn)數(shù)據(jù)中的異常值?對(duì)異常值是怎么處理的?
一種是基于統(tǒng)計(jì)的異常點(diǎn)檢測(cè)算法例如極差,四分位數(shù)間距,均差,標(biāo)準(zhǔn)差等,這種方法適
合于挖掘單變量的數(shù)值型數(shù)據(jù)。另一種主要通過(guò)距離方法來(lái)檢測(cè)異常點(diǎn),將數(shù)據(jù)集中與大多
數(shù)點(diǎn)之間距離大于某個(gè)閾值的點(diǎn)視為異常點(diǎn),檢測(cè)的標(biāo)準(zhǔn)有歐式距離,絕對(duì)距離。
對(duì)于異常值先檢查下是不是數(shù)據(jù)錯(cuò)誤導(dǎo)致的,數(shù)據(jù)錯(cuò)誤的異常作刪除即可。如果無(wú)法判別異
常的原因,要根據(jù)實(shí)際情況而定,像評(píng)分卡會(huì)做 WOE 轉(zhuǎn)換,所以異常值的影響不大,可以
不做處理。若異常值的數(shù)量較多,建議將異常值歸為一類,數(shù)量較少作刪除也可以。
2.10 對(duì)于時(shí)間序列特征,連續(xù)特征,離散特征這三類是怎么做特征轉(zhuǎn)換的?
時(shí)間序列特征:將時(shí)間變量的維度進(jìn)行分離(年/月/日/時(shí)/分/秒),或者與位置變量進(jìn)行結(jié)
合衍生成新的特征。
連續(xù)型特征:標(biāo)準(zhǔn)化,歸一化,區(qū)間縮放,離散化。在評(píng)分卡中主要用的是離散化,離散化
常用的方法有卡房分箱,決策樹(shù)分箱,等頻和等深分箱。
離散型特征:如果類別數(shù)不是很多,適合做亞編碼處理,對(duì)于無(wú)序離散變量用獨(dú)熱編碼,有
序離散變量用順序編碼。如果類別數(shù)較多,可用平均數(shù)編碼的方法。
2.11 如何處理樣本不平衡的問(wèn)題?
在風(fēng)控建模中出現(xiàn)樣本不平衡主要是壞樣本的數(shù)量太少,碰到這個(gè)問(wèn)題不要急著試各種抽樣
方法,先看一下壞用戶的定義是否過(guò)于嚴(yán)格,過(guò)于嚴(yán)格會(huì)導(dǎo)致壞樣本數(shù)量偏少,中間樣本偏
多。壞用戶的定義一般基于滾動(dòng)率分析的結(jié)果,不過(guò)實(shí)際業(yè)務(wù)場(chǎng)景復(fù)雜多樣,還是得根據(jù)情
況而定。
確定好壞用戶定義是比較合理的之后,先嘗試能不能擴(kuò)大數(shù)據(jù)集,比如一開(kāi)始取得是三個(gè)月
的用戶數(shù)據(jù),試著將時(shí)間線延長(zhǎng)來(lái)增加數(shù)據(jù)。因?yàn)闄C(jī)器學(xué)習(xí)是使用現(xiàn)在的數(shù)據(jù)在整個(gè)數(shù)據(jù)分
布上進(jìn)行估計(jì),因此更多的數(shù)據(jù)往往能夠得到更多的分布信息,以及更好的分布估計(jì)。
對(duì)數(shù)據(jù)集進(jìn)行抽樣,一種是進(jìn)行欠采樣,通過(guò)減少大類的數(shù)據(jù)樣本來(lái)降低數(shù)據(jù)的不平衡,另
一種是進(jìn)行過(guò)采樣,通過(guò)增加小類數(shù)據(jù)的樣本來(lái)降低不平衡,實(shí)際工作中常用 SMOTE 方法
來(lái)實(shí)現(xiàn)過(guò)采樣。
嘗試使用 xgboost 和 lightgbm 等對(duì)不平衡數(shù)據(jù)處理效果較好的模型。
嘗試從新的角度來(lái)理解問(wèn)題,可以把那些小類樣本當(dāng)做異常點(diǎn),因此該分類問(wèn)題轉(zhuǎn)化為異常
檢測(cè)問(wèn)題或變化趨勢(shì)檢測(cè)問(wèn)題,這種方法筆者很少用到,就不詳細(xì)說(shuō)明了。
15
2.12 特征衍生的方法有哪些?說(shuō)說(shuō)你平時(shí)工作中是怎么做特征衍生的?
常規(guī)的特征衍生方法:
基于對(duì)業(yè)務(wù)的深入理解,進(jìn)行頭腦風(fēng)暴,構(gòu)造特征。
特征交叉,例如對(duì)類別特征進(jìn)行交叉相乘。
分解類別特征,例如對(duì)于有缺失的特征可以分解成是否有這個(gè)類別的二值化特征,或者將缺
失作為一個(gè)類別,再進(jìn)行亞編碼等處理。
重構(gòu)數(shù)值量(單位轉(zhuǎn)換,整數(shù)小數(shù)拆分,構(gòu)造階段性特征)
特征的四則運(yùn)算,例如取平均/最大/最小,或者特征之間的相乘相除。
平時(shí)工作特征衍生的做法:
因?yàn)轱L(fēng)控模型通常需要好的解釋能力,所以在特征衍生時(shí)也會(huì)考慮到衍生出來(lái)的特征是否與
目標(biāo)變量相關(guān)。例如拿到運(yùn)營(yíng)商的通話記錄數(shù)據(jù),可以衍生一個(gè)"在敏感時(shí)間段(深夜)的
通話次數(shù)占比",如果占比較高,用戶的風(fēng)險(xiǎn)也較大。
平常會(huì)將大量的時(shí)間和精力花在底層數(shù)據(jù)的衍生上,這個(gè)不僅需要對(duì)業(yè)務(wù)的理解,也需要一
定的想象力進(jìn)行頭腦風(fēng)暴,即使衍生出來(lái)的特征 90%都效果不佳,但只要剩下的 10%是好
的特征,那對(duì)于模型效果的提升是很顯著的。
對(duì)于評(píng)分卡來(lái)說(shuō),特征需要好的解釋能力,所以一些復(fù)雜的衍生方法,像特征交叉,log 轉(zhuǎn)
換基本不會(huì)用到。但如果是 xgboost 等復(fù)雜模型,進(jìn)行特征交叉等方法或許有比較好的效果。
2.13 特征篩選的作用和目的?篩選的特征需要滿足什么要求?
作用和目的:
簡(jiǎn)化模型,增加模型的可解釋性, 降低模型過(guò)擬合的風(fēng)險(xiǎn)。
縮短模型的訓(xùn)練時(shí)間。
避免維度災(zāi)難。
篩選特征滿足的要求:
具有良好的區(qū)分能力。
可解釋性好,與目標(biāo)變量的關(guān)系在業(yè)務(wù)上能解釋的通。
在時(shí)間序列上有比較好的穩(wěn)定性。
特征的用戶覆蓋率符合要求。
2.14 特征篩選的方法有哪些?每種方法的優(yōu)缺點(diǎn)?實(shí)際工作中用到了哪些方法?
Filter(過(guò)濾法):按照發(fā)散性或者相關(guān)性對(duì)各個(gè)特征進(jìn)行評(píng)分,設(shè)定閾值或者待選擇閾值
的個(gè)數(shù),選擇特征。
相關(guān)系數(shù),方差(適用于連續(xù)型變量),卡方檢驗(yàn)(適用于類別型變量),信息熵,IV。
實(shí)際工作中主要基于 IV 和相關(guān)性系數(shù)(皮爾遜系數(shù))。
優(yōu)點(diǎn):算法的通用性強(qiáng);省去了分類器的訓(xùn)練步驟,算法復(fù)雜性低,因而適用于大規(guī)模數(shù)據(jù)
集;可以快速去除大量不相關(guān)的特征,作為特征的預(yù)篩選器非常合適。
缺點(diǎn):由于算法的評(píng)價(jià)標(biāo)準(zhǔn)獨(dú)立于特定的學(xué)習(xí)算法,所選的特征子集在分類準(zhǔn)確率方面通常
低于 Wrapper 方法。
Wrapper(封裝法):封裝式特征選擇是利用學(xué)習(xí)算法的性能評(píng)價(jià)特征子集的優(yōu)劣。因此,
對(duì)于一個(gè)待評(píng)價(jià)的特征子集,Wrapper 方法需要訓(xùn)練一個(gè)分類器,根據(jù)分類器的性能對(duì)該特
征子集進(jìn)行評(píng)價(jià)。
方法有完全搜索(遞歸消除法),啟發(fā)式搜索(前向/后向選擇法,逐步選擇法),隨機(jī)搜
索(訓(xùn)練不同的特征子集)。實(shí)際工作中主要用到啟發(fā)式搜索,例如評(píng)分卡的逐步邏輯回歸。
16
優(yōu)點(diǎn):相對(duì)于 Filter 方法,Wrapper 方法找到的特征子集分類性能通常更好。
缺點(diǎn):Wrapper 方法選出的特征通用性不強(qiáng),當(dāng)改變學(xué)習(xí)算法時(shí),需要針對(duì)該學(xué)習(xí)算法重新
進(jìn)行特征選擇;由于每次對(duì)子集的評(píng)價(jià)都要進(jìn)行分類器的訓(xùn)練和測(cè)試,所以算法計(jì)算復(fù)雜度
很高,尤其對(duì)于大規(guī)模數(shù)據(jù)集來(lái)說(shuō),算法的執(zhí)行時(shí)間很長(zhǎng)。
Embedded(嵌入法):先使用某些機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個(gè)特征的權(quán)值
系數(shù),根據(jù)系數(shù)從大到小選擇特征。類似于 Filter 方法,但是是通過(guò)訓(xùn)練來(lái)確定特征的優(yōu)劣。
一種是基于懲罰項(xiàng),例如嶺回歸,lasso 回歸,L1/L2 正則化。另一種是基于樹(shù)模型輸出的特
征重要性,在實(shí)際工作中較為常用,可選擇的模型有隨機(jī)森林,xgboost,lightgbm。
優(yōu)點(diǎn):效果最好速度最快,模式單調(diào)
缺點(diǎn):如何參數(shù)設(shè)置, 需要對(duì)模型的算法原理有較好的理解。
2.15 簡(jiǎn)單介紹一下風(fēng)控模型常用的評(píng)估指標(biāo)。
混淆矩陣指標(biāo):精準(zhǔn)率,查全率,假正率。當(dāng)模型最后轉(zhuǎn)化為規(guī)則時(shí),一般用這三個(gè)指標(biāo)來(lái)
衡量規(guī)則的有效性。要么注重精準(zhǔn)率,要么注重查全率,兩者不可兼而得之。
roc 曲線和 AUC 值,roc 曲線是一種對(duì)于查全率和假正率的權(quán)衡,具體方法是在不同閾
值下以查全率作為縱軸,假正率作為橫軸繪制出一條曲線。曲線越靠近左上角,意味著越多
的正例優(yōu)先于負(fù)例,模型的整體表現(xiàn)也就越好。AUC 是 roc 曲線下面的面積,AUC 可以
解讀為從所有正例中隨機(jī)選取一個(gè)樣本 A,再?gòu)乃胸?fù)例中隨機(jī)選取一個(gè)樣本 B,分類器將
A 判為正例的概率比將 B 判為正例的概率大的可能性。在對(duì)角線(隨機(jī)線)左邊的點(diǎn)上 TPR
總大于 FPR,意為正例被判為正例的概率大于負(fù)例被判為正例的概率。從另一個(gè)角度看,由
于畫(huà) roc 曲線時(shí)都是先將所有樣本按分類器的預(yù)測(cè)概率排序,所以 AUC 反映的是分類器
對(duì)樣本的排序能力。AUC 越大,自然排序能力越好,即分類器將越多的正例排在負(fù)例之前。
KS:用于區(qū)分預(yù)測(cè)正負(fù)樣本分隔程度的評(píng)價(jià)指標(biāo),KS 越大,表示模型能將好壞樣本區(qū)分開(kāi)
的程度越大。KS 的繪制方法是先將每個(gè)樣本的預(yù)測(cè)結(jié)果化為概率或者分?jǐn)?shù),將最低分到最
高分(分?jǐn)?shù)越低,壞的概率越大)進(jìn)行排序做樣本劃分,橫軸就是樣本的累計(jì)占比,縱軸則
是好壞用戶的累計(jì)占比分布曲線,KS 值為兩個(gè)分布的最大差值(絕對(duì)值)。KS 值僅能代
表模型的區(qū)隔能力,KS 不是越高越好,KS 如果過(guò)高,說(shuō)明好壞樣本分的過(guò)于開(kāi)了,這樣
整體分?jǐn)?shù)(概率)就是比較極端化的分布狀態(tài),這樣的結(jié)果基本不能用。
基尼系數(shù):其橫軸是根據(jù)分?jǐn)?shù)(概率)由高到低累計(jì)的好用戶占總的好用戶的比例,縱軸是
分?jǐn)?shù)(概率)從高到低壞用戶占總的壞用戶的比例。由于分?jǐn)?shù)高者為低風(fēng)險(xiǎn)用戶,所以累計(jì)
壞用戶比例的增長(zhǎng)速度會(huì)低于累計(jì)好用戶比例,因此,基尼曲線會(huì)呈現(xiàn)向下彎曲的形式,向
下突出的半月形的面積除以下方三角形的面積即是基尼系數(shù)。基尼系數(shù)越大,表示模型對(duì)于
好壞用戶的區(qū)分能力越好。
2.16 為什么 roc 適合不平衡數(shù)據(jù)的評(píng)價(jià)?
roc 曲線的縱軸是 TPR= ,橫軸是 FPR= ,TPR 聚焦于正例,F(xiàn)PR 聚焦于與負(fù)例,
所以 roc 兼顧了正樣本和負(fù)樣本的權(quán)衡,使其成為一個(gè)比較均衡的評(píng)估方法。
因?yàn)?TPR 用到的 TP 和 FN 都是正樣本,F(xiàn)PR 用到的 FP 和 TN 都是負(fù)樣本,所以說(shuō)正樣本
或負(fù)樣本發(fā)生了改變,TPR 和 FPR 也不會(huì)相互影響,因此即使類別分布發(fā)生了改變,數(shù)據(jù)
變得不平衡了,roc 曲線也不會(huì)產(chǎn)生大的變化。roc 曲線的優(yōu)點(diǎn),即具有魯棒性,在類別
分布發(fā)生明顯改變的情況下依然能客觀地識(shí)別出較好的分類器。
17
2.18 什么是模型的欠擬合和過(guò)擬合?
欠擬合指的是模型沒(méi)有很好的捕捉到數(shù)據(jù)特征,不能很好的擬合數(shù)據(jù)。
過(guò)擬合指的是模型把數(shù)據(jù)學(xué)習(xí)的太徹底,以至于把噪聲數(shù)據(jù)學(xué)習(xí)進(jìn)去了,這樣模型在預(yù)測(cè)未
知數(shù)據(jù)時(shí),就不能正確的分類,模型的泛化能力太差。
2.19 如何判斷模型是否存在過(guò)擬合或欠擬合?對(duì)應(yīng)的解決方法有哪些?
判斷模型是否存在過(guò)擬合/欠擬合主要用學(xué)習(xí)曲線,學(xué)習(xí)曲線指的是通過(guò)畫(huà)出不同訓(xùn)練集大
小時(shí)訓(xùn)練集和交叉驗(yàn)證的準(zhǔn)確率,可以看到模型在新數(shù)據(jù)上的表現(xiàn),進(jìn)而來(lái)判斷模型是否方
差偏高(過(guò)擬合)或偏差過(guò)高(欠擬合)。當(dāng)訓(xùn)練集和測(cè)試集的誤差收斂但卻很高時(shí),即為
欠擬合,當(dāng)訓(xùn)練集和測(cè)試集的誤差之間有大的差距時(shí),為過(guò)擬合。
解決欠擬合的方法:增加效果好的特征,添加多項(xiàng)式特征,減小正則化參數(shù)等。
解決過(guò)擬合的方法:使用更多的數(shù)據(jù),選擇更加合適的模型,加入正則項(xiàng)等。
2.20 什么是正則化?什么是 L1 正則化和 L2 正則化?
正則化是在模型的 loss function 的基礎(chǔ)上,加上了一些正則化項(xiàng)或者稱為模型復(fù)雜度懲罰項(xiàng),
它會(huì)向?qū)W習(xí)算法略微做些修正,從而讓模型能更好地泛化。這樣反過(guò)來(lái)能提高模型在不可見(jiàn)
數(shù)據(jù)上的性能。
L1 正則化就是在 loss function 后邊所加正則項(xiàng)為 L1 范數(shù),加上 L1 范數(shù)容易得到稀疏解,
所以 L1 正則化會(huì)趨向于產(chǎn)生少量的特征。
L2 正則化就是 loss function 后邊所加正則項(xiàng)為 L2 范數(shù)的平方,加上 L2 正則相比于 L1 正則
來(lái)說(shuō),得到的解比較平滑(不是稀疏),所以 L2 正則化會(huì)使特征的解趨近于 0,但不會(huì)為
0。
2.21 正則化為什么可以防止過(guò)擬合?
最簡(jiǎn)單的解釋是正則化對(duì)模型參數(shù)添加了先驗(yàn),在數(shù)據(jù)少的時(shí)候,先驗(yàn)知識(shí)可以防止過(guò)擬合。
舉個(gè)例子:拋一枚硬幣 5 次,得到的全是正面,則得出結(jié)論:正面朝上的概率為 1,這類似
于模型的過(guò)擬合,如果加上硬幣朝上的概率是 0.5 的先驗(yàn),結(jié)果就不會(huì)這么離譜,這就是正
則。
2.22 什么是交叉驗(yàn)證?交叉驗(yàn)證的目的是什么?有哪些優(yōu)點(diǎn)?
交叉驗(yàn)證概念:
交叉驗(yàn)證,就是重復(fù)的使用數(shù)據(jù),把得到的樣本數(shù)據(jù)進(jìn)行切分,組合為不同的訓(xùn)練集和測(cè)試
集,用訓(xùn)練集來(lái)訓(xùn)練模型,用測(cè)試集來(lái)評(píng)估模型預(yù)測(cè)的好壞。在此基礎(chǔ)上可以得到多組不同
的訓(xùn)練集和測(cè)試集,某次訓(xùn)練集中的某樣本在下次可能成為測(cè)試集中的樣本,即所謂"交叉"。
交叉驗(yàn)證的目的:
評(píng)估給定算法在特定數(shù)據(jù)集上訓(xùn)練后的泛化性能,比單次劃分訓(xùn)練集和測(cè)試集的方法更加穩(wěn)
定,全面。
交叉驗(yàn)證的優(yōu)點(diǎn):
如果只是對(duì)數(shù)據(jù)隨機(jī)劃分為訓(xùn)練集和測(cè)試集,假如很幸運(yùn)地將難以分類的樣本劃分進(jìn)訓(xùn)練集
中,則在測(cè)試集會(huì)得出一個(gè)很高的分?jǐn)?shù),但如果不夠幸運(yùn)地將難以分類的樣本劃分進(jìn)測(cè)試集
中,則會(huì)得到一個(gè)很低的分?jǐn)?shù)。所以得出的結(jié)果隨機(jī)性太大,不夠具有代表性。而交叉驗(yàn)證
中每個(gè)樣本都會(huì)出現(xiàn)在訓(xùn)練集和測(cè)試集中各一次,因此,模型需要對(duì)所有樣本的泛化能力都
很好,才能使其最后交叉驗(yàn)證得分,及其平均值都很高,這樣的結(jié)果更加穩(wěn)定,全面,具有
說(shuō)服力。
18
對(duì)數(shù)據(jù)集多次劃分后,還可以通過(guò)每個(gè)樣本的得分比較,來(lái)反映模型對(duì)于訓(xùn)練集選擇的敏感
性信息。
對(duì)數(shù)據(jù)的使用更加高效,可以得到更為精確的模型。
2.23 交叉驗(yàn)證常用的方法有哪些?
標(biāo)準(zhǔn) K 折交叉驗(yàn)證:K 是自定義的數(shù)字,通常取 5 或 10,如果設(shè)為 5 折,則會(huì)訓(xùn)練 5 個(gè)模
型,得到 5 個(gè)精度值。
分層 K 折交叉驗(yàn)證:如果一個(gè)數(shù)據(jù)集經(jīng)過(guò)標(biāo)準(zhǔn) K 折劃分后,在測(cè)試集上只有一種類別,則
無(wú)法給出分類器整體性能的信息,這種情況用標(biāo)準(zhǔn) K 折是不合理的。而在分層 K 折交叉驗(yàn)
證中,每個(gè)折中的類別比例與整個(gè)數(shù)據(jù)集類別比例相同,這樣能對(duì)泛化性能做出更可靠的估
計(jì)。
留一法交叉驗(yàn)證:每次劃分時(shí),把單個(gè)數(shù)據(jù)點(diǎn)作為測(cè)試集,如果數(shù)據(jù)量小,能得到更好的估
計(jì)結(jié)果,數(shù)據(jù)量很大時(shí)則不適用。
打亂劃分交叉驗(yàn)證:每次劃分?jǐn)?shù)據(jù)時(shí)為訓(xùn)練集取樣 train_size 個(gè)點(diǎn),為測(cè)試集取樣 test_size
個(gè)點(diǎn),將這一劃分劃分方法重復(fù) n_splits 次。這種方法還允許每次迭代中使用部分?jǐn)?shù)據(jù),可
通過(guò)設(shè)置 train_size 和 test_size 之和不為 0 來(lái)實(shí)現(xiàn),用這種方法對(duì)數(shù)據(jù)進(jìn)行二次采樣可能對(duì)
大型數(shù)據(jù)上的試驗(yàn)很用用。另外也有分層劃分的形式( StratifiedShuffleSplit),為分類任務(wù)
提供更可靠的結(jié)果。
分組交叉驗(yàn)證:適用于數(shù)據(jù)中的分組高度相關(guān)時(shí),以 group 數(shù)組作為參數(shù),group 數(shù)組表示
數(shù)據(jù)中的分組,在創(chuàng)建訓(xùn)練集和測(cè)試集的時(shí)候不應(yīng)該將其分開(kāi),也不應(yīng)該與類別標(biāo)簽弄混。
三、業(yè)務(wù)+模型篇
3.1 互聯(lián)網(wǎng)金融場(chǎng)景下的的風(fēng)控模型種類?
獲客階段:用戶響應(yīng)模型,風(fēng)險(xiǎn)預(yù)篩選模型。
授信階段:申請(qǐng)?jiān)u分模型,反欺詐模型,風(fēng)險(xiǎn)定價(jià)模型,收益評(píng)分模型。
貸后階段:行為評(píng)分模型,交易欺詐模型,客戶流失模型。
催收階段:早期催收模型,晚期催收模型。
3.2 簡(jiǎn)單描述一下風(fēng)控建模的流程?
前期準(zhǔn)備工作:不同的模型針對(duì)不同的業(yè)務(wù)場(chǎng)景,在建模項(xiàng)目開(kāi)始前需要對(duì)業(yè)務(wù)的邏輯和需
求有清晰的理解,明確好模型的作用,項(xiàng)目周期時(shí)間和安排進(jìn)度,以及模型效果的要求。
模型設(shè)計(jì):包括模型的選擇(評(píng)分卡還是集成模型),單個(gè)模型還是做模型的細(xì)分,是否需
要做拒絕推論,觀察期,表現(xiàn)期的定義,好壞用戶的定義,數(shù)據(jù)的獲取途徑等都要確定好。
數(shù)據(jù)拉取及清洗:根據(jù)觀察期和表現(xiàn)期的定義從數(shù)據(jù)池中取數(shù),并進(jìn)行前期的數(shù)據(jù)清洗和穩(wěn)
定性驗(yàn)證工作,數(shù)據(jù)清洗包括用戶唯一性檢查,缺失值檢查,異常值檢查等。穩(wěn)定性驗(yàn)證主
要考察變量在時(shí)間序列上的穩(wěn)定性,衡量的指標(biāo)有 PSI,平均值/方差,IV 等。
特征工程:主要做特征的預(yù)處理和篩選,如果是評(píng)分卡,需要對(duì)特征進(jìn)行離散化,歸一化等
處理,再對(duì)特征進(jìn)行降維,降維的方法有 IV 篩選,相關(guān)性篩選,顯著性篩選等。另外會(huì)基
于對(duì)業(yè)務(wù)的深入理解做特征構(gòu)造工作,包括特征交叉,特征轉(zhuǎn)換,對(duì)特征進(jìn)行四則運(yùn)算等。
模型建立和評(píng)估:選擇合適的模型,像評(píng)分卡用邏輯回歸,只需要做出二分類預(yù)測(cè)可以選擇
xgboost 等集成模型,模型建好后需要做模型評(píng)估,計(jì)算 AUC,KS,并對(duì)模型做交叉驗(yàn)證來(lái)
評(píng)估泛化能力及模型的穩(wěn)定性。
模型上線部署:在風(fēng)控后臺(tái)上配置模型規(guī)則,對(duì)于一些復(fù)雜的模型還得需要將模型文件進(jìn)行
19
轉(zhuǎn)換,并封裝成一個(gè)類,用 Java 等其他形式來(lái)調(diào)用。
模型監(jiān)控:前期主要監(jiān)控模型整體及變量的穩(wěn)定性,衡量標(biāo)準(zhǔn)主要是 PSI,并每日觀察模型
規(guī)則的拒絕率與線下的差異。后期積累一定線上用戶后可評(píng)估線上模型的 AUC,KS,與線下
進(jìn)行比較,衡量模型的線上的實(shí)際效果。
3.3 評(píng)分卡,集成模型在線上是如何部署的?
評(píng)分卡的部署較為簡(jiǎn)單,因?yàn)樵u(píng)分卡將變量映射到了一個(gè)個(gè)區(qū)間及得分,所以在普通的風(fēng)控
決策引擎上就可配置。
像一些比較復(fù)雜的模型,例如 xgboost 和 lightgbm,一般是將模型文件轉(zhuǎn)換為 pmml 格式,
并封裝 pmml,在風(fēng)控后臺(tái)上上傳 pmml 文件和變量參數(shù)文件,并配置好模型的閾值。python
模型和 R 模型都可以用這種方式來(lái)部署。
3.4 對(duì)于金融場(chǎng)景,穩(wěn)定勝于一切,那在建模過(guò)程中如何保證模型的穩(wěn)定性?
在數(shù)據(jù)預(yù)處理階段可以驗(yàn)證變量在時(shí)間序列上的穩(wěn)定性,通過(guò)這個(gè)方法篩掉穩(wěn)定性不好的變
量,也能達(dá)到降維的目的。篩選的手段主要有:計(jì)算月 IV 的差異,觀察變量覆蓋率的變化,
兩個(gè)時(shí)間點(diǎn)的 PSI 差異等。
異常值的檢查,剔除噪聲,尤其對(duì)于邏輯回歸這種對(duì)于噪聲比較敏感的模型。
在變量篩選階段剔除與業(yè)務(wù)理解相悖的變量,如果是評(píng)分卡,可以剔除區(qū)分度過(guò)強(qiáng)的變量,
這種變量一般不適合放入模型中,否則會(huì)造成整個(gè)模型被這個(gè)變量所左右,造成模型的穩(wěn)定
性下降,過(guò)擬合的風(fēng)險(xiǎn)也會(huì)增加。
做交叉驗(yàn)證,一種是時(shí)間序列上的交叉驗(yàn)證,考察模型在時(shí)間上的穩(wěn)定性,另一種是 K 折
隨機(jī)交叉驗(yàn)證,考察模型的隨機(jī)穩(wěn)定性。
選擇穩(wěn)定性較好的模型,例如隨機(jī)森林或 xgboost 這類泛化能力較好的模型。
3.5 為什么要做拒絕推斷?常用的拒絕推斷方法有哪些?
拒絕推斷的目的:
如果只用好壞用戶建模,則忽略了那些授信被拒的用戶,加入拒絕用戶是為了讓建模樣本更
接近總體的分布,防止樣本有偏,同時(shí)也能增加樣本數(shù)量。
公司內(nèi)部策略的變動(dòng),導(dǎo)致當(dāng)前的申請(qǐng)者已不能代表建模時(shí)點(diǎn)的申請(qǐng)者,所以過(guò)去被拒的用
戶不一定現(xiàn)在也會(huì)被拒絕,因此,只使用審批通過(guò)的用戶可能會(huì)造成誤判。
做拒絕推斷可以找出之前被拒的好用戶,挖掘這些用戶,改善風(fēng)控流程,增加公司收益。
拒絕推斷的常用方法:
硬性截?cái)喾ǎ合扔煤脡挠脩艚⒊跏寄P?,然后用這個(gè)初始模型對(duì)拒絕用戶進(jìn)行打分,設(shè)定
一個(gè)閾值分?jǐn)?shù)(根據(jù)對(duì)拒絕用戶的風(fēng)險(xiǎn)容忍度),低于這個(gè)閾值的為壞用戶,高于這個(gè)閾值
的為好用戶。再將已標(biāo)記好的拒絕用戶放入樣本中,重新建立模型。
分配法:此方法適用于評(píng)分卡,先用好壞用戶建立初始評(píng)分卡模型,再將樣本跟據(jù)評(píng)分高低
進(jìn)行分組,計(jì)算各分組的違約率。然后對(duì)拒絕用戶進(jìn)行打分并按此前的步驟進(jìn)行分組,以各
分組的違約率為抽樣比例,隨機(jī)抽取改分組下的違約用戶,指定其為壞用戶,剩下的則是好
用戶。最后將已標(biāo)記的拒絕用戶加入樣本中,重新建立模型。
平常工作中主要用到以上兩種方法,個(gè)人建議做申請(qǐng)模型最好做一下拒絕推斷,這樣模型上
線后的得分分布和拒絕率和線下才不會(huì)有很大的差異。
3.6 模型轉(zhuǎn)化為規(guī)則后決策點(diǎn)(cutoff 點(diǎn))怎么設(shè)定?
規(guī)則只是判斷用戶好壞,而不會(huì)像模型會(huì)輸出違約概率,所以設(shè)定決策點(diǎn)時(shí)需要考慮到規(guī)則
20
的評(píng)估指標(biāo)(精準(zhǔn)率,查全率,誤傷率,拒絕率),一般模型開(kāi)發(fā)前會(huì)設(shè)定一個(gè)預(yù)期的拒絕
率,在這個(gè)拒絕率下再考量精確率,查全率和誤傷率的取舍,找到最佳的平衡點(diǎn)。
好的模型能接受更多的好用戶,拒絕掉更多的壞用戶,也就是提高好壞件比例,所以可事先
設(shè)定一個(gè)預(yù)期目標(biāo)的好壞件比例來(lái)選擇最佳的決策點(diǎn)。
3.7 怎么做風(fēng)控模型的冷啟動(dòng)?
風(fēng)控模型的冷啟動(dòng)是指產(chǎn)品剛上線時(shí),沒(méi)有積累的用戶數(shù)據(jù),或者用戶還沒(méi)有表現(xiàn)出好壞,
此時(shí)需要做模型就是一個(gè)棘手的問(wèn)題,常用的方法如下:
不做模型,只做規(guī)則。憑借自己的業(yè)務(wù)經(jīng)驗(yàn),做一些硬性規(guī)則,比如設(shè)定用戶的準(zhǔn)入門檻,
考量用戶的信用歷史和多頭風(fēng)險(xiǎn),而且可以接入第三方提供的反欺詐服務(wù)和數(shù)據(jù)產(chǎn)品的規(guī)
則。另外可以結(jié)合人審來(lái)對(duì)用戶的申請(qǐng)資料做風(fēng)險(xiǎn)評(píng)估。
借助相同模式產(chǎn)品的數(shù)據(jù)來(lái)建模。如果兩個(gè)產(chǎn)品的獲客渠道,風(fēng)控邏輯,用戶特征都差不多
的話,可以選擇之前已上線那個(gè)產(chǎn)品所積累的用戶來(lái)建模,不過(guò)在模型上線后需要比較線上
用戶的特征是否與建模用戶有較大的差異,如果差異較大,需要對(duì)模型對(duì)一些調(diào)整。
無(wú)監(jiān)督模型+評(píng)分卡。這種方法適用于產(chǎn)品上線一段時(shí)間后,表現(xiàn)出好壞的用戶比較少,但
需要做一個(gè)模型出來(lái),此時(shí)可用線上的申請(qǐng)用戶做無(wú)監(jiān)督模型,找出一部分壞樣本和好樣本,
用這些數(shù)據(jù)來(lái)做評(píng)分卡模型,當(dāng)然這種模型準(zhǔn)確性是存疑的,需要后續(xù)對(duì)模型不斷迭代優(yōu)化。
3.8 模型上線后是怎么監(jiān)控的?
前期監(jiān)控(模型上線后一個(gè)月內(nèi)):
模型最后設(shè)定 cutoff 點(diǎn)后可以得出模型的拒絕率(線下拒絕率), 上線后需要比較模型每日
的拒絕率與線下拒絕率。如果兩者差異較大,說(shuō)明線上的用戶與建模的用戶分布有很大差異,
原因可能是沒(méi)做拒絕推斷,或者用戶屬性隨著時(shí)間發(fā)生了偏移。
監(jiān)控模型整體的穩(wěn)定性,通常用 PSI 來(lái)衡量?jī)蓚€(gè)時(shí)間點(diǎn)的差異程度。模型的穩(wěn)定性是一個(gè)需
要長(zhǎng)期觀察的指標(biāo),可繪制月/周 PSI 變化趨勢(shì)圖來(lái)分析穩(wěn)定性的變化,從中可以發(fā)現(xiàn)用戶
是否隨著時(shí)間推移屬性發(fā)生了變化,以便及時(shí)對(duì)模型做出合理的調(diào)整。
變量穩(wěn)定度分析,目的是如果模型的穩(wěn)定性不好,可利用變量穩(wěn)定度分析來(lái)了解是哪些變量
造成的。對(duì)于不穩(wěn)定的變量要分析其原因,并對(duì)模型做出調(diào)整,棄用不穩(wěn)定的變量或者找其
他變量來(lái)替換。
后期監(jiān)控(用戶表現(xiàn)出了好壞程度):
此時(shí)已積累了一些線上的好壞用戶,可做模型的線上效果的評(píng)估,評(píng)估的指標(biāo)有 AUC, KS,
基尼系數(shù),如果模型的線下效果好,但線上效果卻不理想,這個(gè)模型是要做優(yōu)化的。
好壞用戶的評(píng)分分布。繪制線上好壞用戶的評(píng)分分布圖,如果符合期望(高分段好用戶占比
多,低分段壞用戶占比多),則說(shuō)明模型的線上的區(qū)隔能力較好。
變量鑒別力分析。用線上的好壞用戶來(lái)計(jì)算變量的 IV 值,評(píng)價(jià)變量的預(yù)測(cè)能力,預(yù)測(cè)能力
不好的變量可以考慮棄用。
3.9 怎么設(shè)計(jì)反欺詐模型?
本人之前沒(méi)做過(guò)風(fēng)控的反欺詐模型,因?yàn)楣镜姆雌墼p檢測(cè)都是外包給第三方的,所以對(duì)于
如何設(shè)計(jì)反欺詐模型只能給出自己的一些見(jiàn)解:
反欺詐模型不太適合用二分類監(jiān)督模型來(lái)做,一是詐騙的類型很多,是一個(gè)多分類的問(wèn)題,
不可能只做單一類型的反欺詐模型。二是大部分?jǐn)?shù)據(jù)都是沒(méi)有標(biāo)簽的,各種監(jiān)督學(xué)習(xí)模型幾
乎無(wú)用武之地,而且區(qū)分噪聲和異常點(diǎn)難度很大,甚至需要一點(diǎn)點(diǎn)想象力和直覺(jué)。三是欺詐
類型不斷在變化,如果用歷史數(shù)據(jù)建的模型來(lái)識(shí)別之前從未出現(xiàn)過(guò)的欺詐類型,幾乎是做不
21
到的。
個(gè)人覺(jué)得做模型之前需要確定兩個(gè)問(wèn)題,一是如何發(fā)現(xiàn)欺詐點(diǎn),二是如何驗(yàn)證欺詐點(diǎn)。第一
個(gè)問(wèn)題可以用數(shù)據(jù)可視化的手段,做一下時(shí)序分析,或者用無(wú)監(jiān)督學(xué)習(xí)來(lái)識(shí)別異常點(diǎn)。第二
個(gè)問(wèn)題可以用統(tǒng)計(jì)學(xué)的方法來(lái)驗(yàn)證異常點(diǎn)與總體是有顯著性差異的,但有差異不一定就是欺
詐,所以需要與領(lǐng)域?qū)<疫M(jìn)行討論,也可以直接叫來(lái)領(lǐng)域?qū)<襾?lái)分析用戶哪些行為是欺詐的。
反欺詐規(guī)則+機(jī)器學(xué)習(xí)模型來(lái)檢測(cè)欺詐用戶,不能單純依靠機(jī)器學(xué)習(xí)模型來(lái)檢測(cè)欺詐。規(guī)則
和模型用到的變量一般有:用戶的設(shè)備,位置信息,關(guān)系網(wǎng)絡(luò),異常操作記錄和第三方黑名
單等??傊雌墼p模型難度很高
3.10 當(dāng)模型上線后發(fā)現(xiàn)穩(wěn)定性不佳,或者線上的區(qū)分效果不好,你是怎么對(duì)模型作調(diào)整的?
模型穩(wěn)定性不佳先檢查當(dāng)初建模時(shí)有沒(méi)有考量過(guò)特征的穩(wěn)定性,在模型前期監(jiān)控一般會(huì)做變
量的穩(wěn)定性分析,如果發(fā)現(xiàn)穩(wěn)定性不佳的變量,考慮棄用或用其他變量替代。另外可以分析
下線上用戶和建模用戶的分布差異,考慮在建模時(shí)增加拒絕推斷的步驟,讓建模樣本的分布
更加接近于實(shí)際整體的申請(qǐng)用戶。
線上的效果不好可以從變量角度分析,做一下變量鑒別度分析,剔除掉效果不好的變量,挖
掘新的變量入模。如果一個(gè)模型已上線較長(zhǎng)的時(shí)間,用戶的屬性也慢慢發(fā)生偏移,建議重新
取數(shù)做一個(gè)新的模型替代舊模型。
3.11 如何衡量一個(gè)風(fēng)控模型的效果?
1.評(píng)分卡建模之前的評(píng)估:
主要評(píng)估建模樣本的穩(wěn)定性,根據(jù)評(píng)分卡的目的不同,比較對(duì)象為總體或者近段時(shí)間的樣本。
2.分箱過(guò)程的評(píng)估
變量分箱的同時(shí)會(huì)計(jì)算 WOE,這里是對(duì) WOE 進(jìn)行可解釋性上的評(píng)估,包括變化趨勢(shì),箱
體之間 WOE 差異,WOE 絕對(duì)值大小等。
3.對(duì)邏輯回歸模型的評(píng)估
將數(shù)據(jù)集隨機(jī)劃分為訓(xùn)練集和測(cè)試集,計(jì)算 AUC, KS 及 Gini 系數(shù)
通過(guò)交叉驗(yàn)證的方法,評(píng)估模型的泛化能力,評(píng)判指標(biāo)選擇 AUC。
繪制學(xué)習(xí)曲線,評(píng)估模型是否有過(guò)擬合的風(fēng)險(xiǎn),評(píng)判指標(biāo)為準(zhǔn)確率(Accuracy)。
4.轉(zhuǎn)化評(píng)分之后的評(píng)估
對(duì) score 進(jìn)行可解釋上的評(píng)估,評(píng)估原則與 WOE 評(píng)估大致相同。
繪制評(píng)分分布圖,觀察分布的形狀及好壞用戶分布的重疊程度。
繪制提升圖和洛倫茲曲線,評(píng)估評(píng)分卡的可解釋性和好壞用戶區(qū)分效果。
評(píng)估準(zhǔn)確性,根據(jù)對(duì)精確率和查全率的重視程度繪制 PR 曲線,并根據(jù)業(yè)務(wù)目標(biāo)設(shè)定 cutoff
點(diǎn)。
5.評(píng)分卡上線后的評(píng)估
繪制評(píng)分分布表和評(píng)分分布圖,計(jì)算評(píng)分的 PSI,評(píng)估其穩(wěn)定性。
評(píng)估每個(gè)入模變量的穩(wěn)定性。
3.12 在實(shí)際應(yīng)用中,如何權(quán)衡模型的性能,可解釋性和部署的難易程度?
首先要考慮到部署的難易程度,評(píng)分卡可以像普通規(guī)則一樣在風(fēng)控后臺(tái)部署,但是像 xgboost
等比較復(fù)雜的模型需要考慮平臺(tái)支不支持,一般來(lái)說(shuō)能用評(píng)分卡解決的就最好用評(píng)分卡,部
署簡(jiǎn)單而且可解釋性好。然后關(guān)于可解釋性和模型效果的權(quán)衡,個(gè)人認(rèn)為模型的效果達(dá)到要
求的情況下再去考慮可解釋性,如果用評(píng)分卡做出來(lái)的效果不好,則可以考慮用集成模型或
者神經(jīng)網(wǎng)絡(luò)等復(fù)雜的機(jī)器學(xué)習(xí)模型,只要你的風(fēng)控后臺(tái)支持部署。
22
3.13 對(duì)于高維稀疏特征,或者是弱特征,你是怎么處理的?
對(duì)于高維稀疏特征,邏輯回歸的效果要比 GBDT 好。這是由于邏輯回歸的正則項(xiàng)是對(duì)特征
權(quán)重的懲罰,以至于特征的權(quán)重不至于過(guò)大,而樹(shù)模型的懲罰項(xiàng)主要是深度和葉子節(jié)點(diǎn)數(shù)目,
而對(duì)于高維稀疏特征,10000 個(gè)樣本可能 9990 個(gè)值是 0,那只需要一個(gè)節(jié)點(diǎn)就可以劃分 9990
和剩下的 10 個(gè)樣本,可見(jiàn)懲罰項(xiàng)之小,所以 GBDT 對(duì)于高維稀疏特征很容易過(guò)擬合。平時(shí)
工作中如果用的是邏輯回歸評(píng)分卡,則可以對(duì)稀疏特征進(jìn)行離散化,離散成值為 0 或不為 0,
再用 woe 進(jìn)行編碼。而如果使用 xgboost 等集成模型,最好還是不要用高維的稀疏特征。
弱特征指的是與目標(biāo)變量關(guān)系不大的特征,或者是區(qū)分能力較弱的特征。在大數(shù)據(jù)風(fēng)控中弱
特征的種類很多,包括社交,通話,位置等信息,而且建模時(shí)弱特征會(huì)多達(dá)數(shù)百個(gè)。如果是
用評(píng)分卡建模,弱特征一般會(huì)被舍棄掉,因?yàn)樵u(píng)分卡的入模特征數(shù)不宜過(guò)多,一般在 15 個(gè)
以下,所以要找尋比較強(qiáng)的特征。而對(duì)于 xgboost 等模型,本身對(duì)數(shù)據(jù)的要求不是很高,并
且精度好,一些弱特征進(jìn)行交叉組合或許能給模型帶來(lái)不錯(cuò)的效果。
3.14 對(duì)于成千上萬(wàn)維的特征你是怎么做特征篩選的,如何保證其模型的可解釋性和穩(wěn)定
性?
可先做特征的粗篩選,例如缺失率高,方差為 0,非常稀疏的特征可以先剔除。
根據(jù)變量的穩(wěn)定性再次進(jìn)行粗篩,衡量指標(biāo)有月 IV 差異,兩個(gè)時(shí)間點(diǎn)的 PSI 差異等。
根據(jù) IV 值的高低篩選變量,或者直接用集成模型的特征重要性進(jìn)行篩選。
為了保證模型的可解釋性,需要將共線性的特征剔除。
最后考察各個(gè)特征與目標(biāo)變量的關(guān)系,要求在業(yè)務(wù)上有良好的可解釋能力,并且特征與目標(biāo)
變量的關(guān)系最好是呈單調(diào)線性變化的,這樣也能保證模型的穩(wěn)定性。
3.15 如何根據(jù)風(fēng)險(xiǎn)因素對(duì)用戶分層,構(gòu)建客群差異化的模型?
做客群差異化模型之前最好做一下用戶畫(huà)像,在風(fēng)控領(lǐng)域中做用戶畫(huà)像的目的是:
系統(tǒng)性的梳理用戶群體,找到異同點(diǎn)對(duì)用戶進(jìn)行劃分群體,分類的維度很多,可以是靜態(tài)屬
性,購(gòu)買偏好,也可以是褥羊毛黨等風(fēng)險(xiǎn)屬性。
便于更深刻的理解業(yè)務(wù),理解用戶需求,風(fēng)控離不開(kāi)業(yè)務(wù),只有深刻理解業(yè)務(wù)后,才能發(fā)現(xiàn)
更多潛在的風(fēng)險(xiǎn)。
便于后續(xù)的數(shù)據(jù)挖掘,了解壞用戶的行為特征,并且根據(jù)用戶特征做關(guān)聯(lián)規(guī)則分析。
對(duì)不同類型的用戶,做針對(duì)性的風(fēng)控規(guī)則和風(fēng)控模型。
平常工作中的做法:
對(duì)用戶做靜態(tài)屬性的劃分,比如按性別,年齡,收入,職業(yè)等。例如剛畢業(yè)工作的年輕人和
收入比較穩(wěn)定的中年人,他們的借款需求,風(fēng)險(xiǎn)程度就不一樣,可以先對(duì)用戶群體做這樣的
劃分,再對(duì)每個(gè)群體單獨(dú)建立模型。
根據(jù)用戶風(fēng)險(xiǎn)屬性做差異化模型,例如對(duì)手機(jī)分期業(yè)務(wù)做一個(gè)套現(xiàn)風(fēng)險(xiǎn)模型,挖掘套現(xiàn)風(fēng)險(xiǎn)
屬性,目標(biāo)變量變成是否為套現(xiàn)用戶。
3.16 額度,利率的風(fēng)險(xiǎn)定價(jià)模型你是如何設(shè)計(jì)的?
首先做風(fēng)險(xiǎn)定價(jià)模型需要熟悉產(chǎn)品的屬性和特點(diǎn),像小額現(xiàn)金貸和大額分期貸兩種產(chǎn)品的額
度定價(jià)邏輯就不同。另外也要了解產(chǎn)品的盈利模式和預(yù)期的利潤(rùn),這點(diǎn)需要與業(yè)務(wù)部門做好
溝通,通常關(guān)于額度,利率也是業(yè)務(wù)或者產(chǎn)品制定的。
風(fēng)險(xiǎn)定價(jià)模型一般采用評(píng)分卡模型,最后設(shè)定 cutoff 點(diǎn)后對(duì)通過(guò)的用戶進(jìn)行風(fēng)險(xiǎn)等級(jí)劃分,
對(duì)于風(fēng)險(xiǎn)高的用戶給的額度較低,或者利率較高。一般來(lái)說(shuō)中低額度的用戶占大部分,高額
23
度用戶占小部分,最后可以得出一個(gè)平均額度或利率,這個(gè)值事先可以根據(jù)預(yù)期的利潤(rùn)/資
損來(lái)計(jì)算。
3.17 風(fēng)控流程中不同環(huán)節(jié)的評(píng)分卡是怎么設(shè)計(jì)的?
申請(qǐng)?jiān)u分 A 卡用在貸前審核階段,主要的作用是決定用戶是否準(zhǔn)入和對(duì)用戶進(jìn)行風(fēng)險(xiǎn)定價(jià)
(確定額度和利率),用到的數(shù)據(jù)是用戶以往的信用歷史,多頭借貸,消費(fèi)記錄等信息,并
且做 A 卡一般需要做拒絕推斷。A 卡一般預(yù)測(cè)用戶的首筆借款是否逾期,或者預(yù)測(cè)一段時(shí)
間內(nèi)是否會(huì)逾期,設(shè)計(jì)的方式也多種多樣,有風(fēng)險(xiǎn)差異化評(píng)分卡,群體差異化評(píng)分卡,或者
做交叉評(píng)分卡等。
行為 B 卡主要用在借貸周期較長(zhǎng)的產(chǎn)品上,例如手機(jī)分期。作用一是防控貸中風(fēng)險(xiǎn),二是
對(duì)用戶的額度做一個(gè)調(diào)整。用到的數(shù)據(jù)主要是用戶在本平臺(tái)的登錄,瀏覽,消費(fèi)行為數(shù)據(jù),
還有借還款,逾期等借貸表現(xiàn)數(shù)據(jù)。
催收 C 卡主要是對(duì)逾期用戶做一個(gè)畫(huà)像分析,通過(guò)深度挖掘用戶特征,對(duì)逾期用戶進(jìn)行分
群,做智能催收策略等。
最后四題是正陽(yáng)的所有面試題,這里只提出問(wèn)題部分會(huì)給出解題思路。
3.18 正陽(yáng)之風(fēng)控建模
談?wù)勀銓?duì)風(fēng)控模型的理解?
模型如何設(shè)計(jì)? 可以從滾動(dòng)率、遷徙率來(lái)回答,也可以從反欺詐、ABC 卡回答。
對(duì)客群進(jìn)行細(xì)分建模的本質(zhì)是什么? 其實(shí)分客群進(jìn)行建模,實(shí)質(zhì)也是一種交叉特征,能提
高模型穩(wěn)定性。
拒絕推斷應(yīng)該怎么做,作用是什么?效果怎么樣? (多查資料,博學(xué)審問(wèn)慎思明辨)
簡(jiǎn)要說(shuō)明下標(biāo)準(zhǔn)評(píng)分卡開(kāi)發(fā)流程 (多查資料,博學(xué)審問(wèn)慎思明辨)
3.19 正陽(yáng)之特征工程
如何對(duì)數(shù)據(jù)做質(zhì)量檢驗(yàn)? 在完成數(shù)據(jù)匹配工作之后,建模之前,我們需要對(duì)數(shù)據(jù)進(jìn)行整體
的質(zhì)量檢測(cè),主要有兩個(gè)方面: 1、數(shù)據(jù)分布。 2、數(shù)據(jù)集中度檢測(cè)。 3、數(shù)據(jù)臟亂情況。
缺失值(是否隱藏風(fēng)險(xiǎn))、離群值、錯(cuò)誤值、重復(fù)值,根據(jù)其是否符合業(yè)務(wù)邏輯,判斷數(shù)據(jù)
是否存在異常。
特征工程流程 關(guān)鍵詞: 特征預(yù)處理、特征選擇、特征衍生、特征提取等。用到的技術(shù)主要
有連續(xù)變量離散化、分類變量啞編碼、卡方分箱、特征編碼、共線性檢驗(yàn)、PCA 降維、交
叉驗(yàn)證等。
篩選變量的常用方法 篩選變量有很多種方法,隨機(jī)森林、GBDT、邏輯回歸顯著性、VIF
共線性、相關(guān)性圖譜等、隨機(jī)邏輯回歸篩選、遞歸法篩選等。
好的特征需要具備哪些優(yōu)勢(shì)? 1、穩(wěn)定性高 2、區(qū)分度高 3、差異性大 4、符合業(yè)務(wù)邏輯
如何衍生特征? 變量的衍生并不復(fù)雜,通常我們會(huì)從三種角度出發(fā): 1、數(shù)學(xué)運(yùn)算。求和、
比例、頻率、平均等。 2、時(shí)間窗口。有些變量的意義只有在一段時(shí)間內(nèi)才有效,所以針對(duì)
時(shí)間比如說(shuō)注冊(cè)如期、交易日期等變量,需要計(jì)算其到現(xiàn)在的時(shí)間段,完成變量的衍生。 3、
交叉組合。GBDT\XGBoost 模型、用戶畫(huà)像分等等都可以做特征衍生。 衍生出來(lái)的特征要
符合實(shí)際業(yè)務(wù)含義,并且要保持穩(wěn)定。
3.20 正陽(yáng)之機(jī)器學(xué)習(xí)算法
簡(jiǎn)單介紹你熟悉的幾種算法及其在應(yīng)用場(chǎng)景中的差別!
一些基本公式的推導(dǎo),比如 LR、xgb 之類的,這些可以自己推導(dǎo)一下。
24
簡(jiǎn)單評(píng)價(jià)幾種常用算法的優(yōu)缺點(diǎn): 1、邏輯回歸 優(yōu)點(diǎn):簡(jiǎn)單、穩(wěn)定、可解釋、技術(shù)成熟、
易于監(jiān)測(cè)和部署 缺點(diǎn):一定不能有缺失數(shù)據(jù);必須是數(shù)值型特征,需要編碼;準(zhǔn)確度不高 2、
決策樹(shù) 優(yōu)點(diǎn):對(duì)數(shù)據(jù)質(zhì)量要求不高,易解釋 缺點(diǎn):準(zhǔn)確度不高 3、其他元模型 4、組合模
型 優(yōu)點(diǎn):準(zhǔn)確度高,穩(wěn)定性強(qiáng),泛化能力強(qiáng),不易過(guò)擬合 缺點(diǎn):不易解釋,部署困難,計(jì)
算量大
3.21 正陽(yáng)之模型評(píng)估
模型評(píng)估的常用方法? 從三方面回答: 1、區(qū)分度:主要有 KS 和 GINI 指標(biāo),理解 KS 的
定義及用法 2、準(zhǔn)確性:主要有 roc 曲線和 AUC 指標(biāo),理解 AUC 的定義及用法 3、穩(wěn)定性:
主要有 PSI 指標(biāo),理解 PSI 的定義及用法
auc 和 ks 的關(guān)系? 有人說(shuō) auc 是衡量整個(gè)模型的排序能力,KS 是衡量某個(gè)分段的區(qū)分能力。
5、模型部署
模型的部署上線應(yīng)用類似的問(wèn)題,偏開(kāi)發(fā),分析人員可能不太擅長(zhǎng)。主要就是 api 接口安裝、
測(cè)試、等級(jí)劃分、額度設(shè)計(jì)、風(fēng)險(xiǎn)定價(jià)、ABtest 的設(shè)計(jì)等等。
6、模型監(jiān)測(cè)
上述一些運(yùn)營(yíng)數(shù)據(jù)和風(fēng)控指標(biāo)的關(guān)注
7、模型調(diào)優(yōu)
模型調(diào)優(yōu)的方法
A 類調(diào)優(yōu)
D 類調(diào)優(yōu)
