互联网金融风控面试算法知识(三)
? ? ? ?資料來源于網絡搜集和匯總,把算法知識的總結放在業務知識后面也是為了說明實際工作業務落地應用的重要性大于算法創新。面試題依然是適用于3年經驗以內的初學者,希望大家在學習算法的同時不要一心只研究算法而脫離了業務,要真正做到數據驅動業務。先附上之前對算法的一些總結:
1.常用機器學習算法的原理推導
2.評分卡的一些理論知識
一、什么是特征工程?為什么特征工程對機器學習很重要?
? ? ? ?特征工程指的是使用專業知識和技巧來處理數據,使得特征在機器學習算法上發揮更好的作用的過程。這個過程包含了數據預處理,特征構建,特征篩選等。特征工程的目的就是篩選出好的特征,得到更好的訓練數據,使模型達到更好的效果。
? ? ? ?從數據中提取出來的特征好壞會直接影響到模型的效果,有的時候,如果特征工程做得好,僅使用一些簡單的機器學習算法,也能達到很好的效果。由此可見特征工程在實際的機器學習中的重要性。
二、特征工程的一般步驟是什么?什么是特征工程的迭代?
特征工程常規步驟:
1.數據獲取,數據的可用性評估(覆蓋率,準確率,獲取難度)
2.探索性數據分析,對數據和特征有一個大致的了解,同時進行數據的質量檢驗,包括缺失值,異常值,重復值,一致性,正確性等。
3.特征處理,包括數據預處理和特征轉換兩部分,數據預處理主要做清洗工作(缺失值,異常值,錯誤值,數據格式),特征轉換即對連續特征,離散特征,時間序列特征進行轉換,便于入模。
4.特征構建,特征構建的目的是找尋與目標變量相關且區分度較好的特征。常用的方法有特征交叉,四則運算,基于業務理解進行頭腦風暴構建特征等。
5.特征篩選,大量的特征中選擇少量的有用特征,也叫作特征降維,常用的方法有過濾法,包裝法,嵌入法。
特征工程的迭代:
1.選擇特征:具體問題具體分析,通過查看大量的數據和基于對業務的理解,從數據中查找可以提出出數據的關鍵。
2.設計特征:可以自動進行特征提取工作,也可以手工進行特征的構建。
3.選擇特征:使用不同的特征構造方法,從多個角度來評判這個特征是否適合放入模型中。
4.計算模型:計算模型在該特征上所提升的準確率。
5.上線測試:通過在線測試的效果來評估特征是否有效。
三、常用的特征工程方法有哪些?
1.特征處理:數據的預處理包括異常值和缺失值,要根據實際的情況來處理。特征轉換主要有標準化,歸一化,區間縮放,二值化等,根據特征類型的不同選擇合適的轉換方法。
2.特征構建:特征之間的四則運算(有業務含義),基于業務理解構造特征,分解類別特征,特征交叉組合等。
3.特征篩選:過濾法,封裝法,嵌入法。
四、在實際的風控建模中怎么做好特征工程?
? ? ? ?因為做風控模型大部分的數據源來自第三方,所以第三方數據的可用性評估非常重要,一方面需要了解這些特征底層的衍生邏輯,判斷是否與目標變量相關。另一方面考察數據的覆蓋率和真實性,覆蓋率較低和真實性存疑的特征都不能使用在模型中。
? ? ? ?基于金融的數據特點,在特征篩選這個步驟上考量的因素主要有:一個是時間序列上的穩定性,衡量的指標可以是PSI,方差或者IV。一個是特征在樣本上覆蓋率,也就是特征的缺失率不能太高。另外就是特征的可解釋性,特征與目標變量的關系要在業務上要解釋的通。
? ? ? ?如果第三方返回有用戶的原始底層數據,例如社保的繳納記錄,運營商的通話/短信記錄,則需要在特征衍生上多下功夫,基于自身對數據的敏感性和業務的理解,構建具有金融,風險屬性的特征,也可以與業務部門進行溝通找尋與業務相關的特征。
五、實際項目中原始數據通常有哪些問題?你是如何解決的?
? ? ? ?一些特征的底層邏輯不清晰,字面上的意思可能與實際的衍生邏輯相悖,這個需要與第三方數據供應商進行溝通,了解清楚特征的衍生邏輯。
? ? ? ?數據的真實性可能存在問題。比如一個特征是歷史總計,但第三方只是爬取了用戶近2年的數據,這樣的特征就不符合用戶的真實情況。所以對數據的真實性校驗顯得非常重要。
? ? ? ?有缺失的特征占的比例較高。在進行缺失值處理前先分析缺失的原因,而不是盲目的進行填充,刪除等工作。另外也要分析缺失是否有風險屬性,例如芝麻分缺失的用戶相對來說風險會較高,那么缺失可以當做一個類別來處理。
? ? ? ?大量多類特征如何使用。例如位置信息,設備信息這些特征類別數較多,如果做啞編碼處理會造成維度災難,目前常用的方法一個是降基處理,減少類別數,另一個是用xgboost來對類別數做重要性排序,篩選重要性較高的類別再做啞編碼處理。
六、在做評分卡或其他模型中,怎么衡量特征(數據)的有用性?
1.特征具有金融風險屬性,且與目標變量的關系在業務上有良好的可解釋性。
2.特征與目標變量是高度相關的,衡量的指標主要是IV。
3.特征的準確率,這個需要了解特征的衍生邏輯,并與實際一般的情況相比較是否有異常。
4.特征的覆蓋率,一般來說覆蓋率要達到70%以上。
5.特征的穩定性,特征的覆蓋率,分布,區分效果在時間序列上的表現比較穩定。
6.特征的及時性,最好是能代表用戶最近的信用風險情況。
七、為什么探索性數據分析(EDA)在機器學習中非常重要?
? ? ? ?EDA不單是看看數據的分布,而是對數據整體有一個大概的了解。通過作圖、制表、方程擬合、計算特征量等手段探索數據的結構和規律。從中發現關鍵性的價值信息,這些信息對于后續建模及對模型的正確理解有很重要的意義。
? ? ? ?通過EDA可以發現數據的異常,可以分析每個特征與目標變量之間的關系,特征與特征之間的關系,為特征構建和特征篩選提供有價值的信息。
? ? ? ?EDA分析可以驗證數據是不是你認為的那樣,實際情況中由于數據和特征量比較大,往往忽視這些數據是如何生成的,數據突出的問題或模型的實施中的錯誤會被長時間忽視,這可能會導致基于錯誤信息做出決策。
八、缺失值的處理方式有哪些?風控建模中該如何合理的處理缺失?
? ? ? ?首先要了解缺失產生的原因,因數據獲取導致的缺失建議用填充的方式(缺失率比較低的情況下),因用戶本身沒有這個屬性導致的缺失建議把缺失當做一個類別。另外可以分析缺失是否有風險屬性,有的話最好當做一個類別來處理。
? ? ? ?風控模型對于缺失率的要求比較高,尤其是評分卡。個人認為,缺失率在30%以上的特征建議不要用,缺失率在10%以下的變量可用中位數或隨機森林來填充,10%-30%的缺失率建議當做一個類別。對于xgboost和lightgbm這類可以自動處理缺失值的模型可以不做處理。
九、如何發現數據中的異常值?對異常值是怎么處理的?
? ? ? 一種是基于統計的異常點檢測算法例如極差,四分位數間距,均差,標準差等,這種方法適合于挖掘單變量的數值型數據。另一種主要通過距離方法來檢測異常點,將數據集中與大多數點之間距離大于某個閾值的點視為異常點,檢測的標準有歐式距離,絕對距離。
? ? ? ?對于異常值先檢查下是不是數據錯誤導致的,數據錯誤的異常作刪除即可。如果無法判別異常的原因,要根據實際情況而定,像評分卡會做WOE轉換,所以異常值的影響不大,可以不做處理。若異常值的數量較多,建議將異常值歸為一類,數量較少作刪除也可以。
十、對于時間序列特征,連續特征,離散特征這三類是怎么做特征轉換的?
1.時間序列特征:將時間變量的維度進行分離(年/月/日/時/分/秒),或者與位置變量進行結合衍生成新的特征。
2.連續型特征:標準化,歸一化,區間縮放,離散化。在評分卡中主要用的是離散化,離散化常用的方法有卡方分箱,決策樹分箱,等頻和等深分箱。
3.離散型特征:如果類別數不是很多,適合做啞編碼處理,對于無序離散變量用獨熱編碼,有序離散變量用順序編碼。如果類別數較多,可用平均數編碼的方法。
十一、如何處理樣本不平衡的問題?
? ? ? ?在風控建模中出現樣本不平衡主要是壞樣本的數量太少,碰到這個問題不要急著試各種抽樣方法,先看一下壞用戶的定義是否過于嚴格,過于嚴格會導致壞樣本數量偏少,中間樣本偏多。壞用戶的定義一般基于滾動率分析的結果,不過實際業務場景復雜多樣,還是得根據情況而定。
? ? ? ?確定好壞用戶定義是比較合理的之后,先嘗試能不能擴大數據集,比如一開始取得是三個月的用戶數據,試著將時間線延長來增加數據。因為機器學習是使用現在的數據在整個數據分布上進行估計,因此更多的數據往往能夠得到更多的分布信息,以及更好的分布估計。
? ? ? ?對數據集進行抽樣,一種是進行欠采樣,通過減少大類的數據樣本來降低數據的不平衡,另一種是進行過采樣,通過增加小類數據的樣本來降低不平衡,實際工作中常用SMOTE方法來實現過采樣。
? ? ? ?嘗試使用xgboost和lightgbm等對不平衡數據處理效果較好的模型。
? ? ? ?嘗試從新的角度來理解問題,可以把那些小類樣本當做異常點,因此該分類問題轉化為異常檢測問題或變化趨勢檢測問題,這種方法筆者很少用到,就不詳細說明了。
十二、特征衍生的方法有哪些?說說你平時工作中是怎么做特征衍生的?
常規的特征衍生方法:
1.基于對業務的深入理解,進行頭腦風暴,構造特征。
2.特征交叉,例如對類別特征進行交叉相乘。
3.分解類別特征,例如對于有缺失的特征可以分解成是否有這個類別的二值化特征,或者將缺失作為一個類別,再進行啞編碼等處理。
4.重構數值量(單位轉換,整數小數拆分,構造階段性特征)
5.特征的四則運算,例如取平均/最大/最小,或者特征之間的相乘相除。
平時工作特征衍生的做法:
1.因為風控模型通常需要好的解釋能力,所以在特征衍生時也會考慮到衍生出來的特征是否與目標變量相關。例如拿到運營商的通話記錄數據,可以衍生一個"在敏感時間段(深夜)的通話次數占比",如果占比較高,用戶的風險也較大。
2.平常會將大量的時間和精力花在底層數據的衍生上,這個不僅需要對業務的理解,也需要一定的想象力進行頭腦風暴,即使衍生出來的特征90%都效果不佳,但只要剩下的10%是好的特征,那對于模型效果的提升是很顯著的。
3.對于評分卡來說,特征需要好的解釋能力,所以一些復雜的衍生方法,像特征交叉,log轉換基本不會用到。但如果是xgboost等復雜模型,進行特征交叉等方法或許有比較好的效果。
十三、特征篩選的作用和目的?篩選的特征需要滿足什么要求?
作用和目的:
1.簡化模型,增加模型的可解釋性, 降低模型過擬合的風險。
2.縮短模型的訓練時間。
3.避免維度災難。
篩選特征滿足的要求:
1.具有良好的區分能力。
2.可解釋性好,與目標變量的關系在業務上能解釋的通。
3.在時間序列上有比較好的穩定性。
4.特征的用戶覆蓋率符合要求。
十四、特征篩選的方法有哪些?每種方法的優缺點?實際工作中用到了哪些方法?
1.Filter(過濾法)
? ? ? ?按照發散性或者相關性對各個特征進行評分,設定閾值或者待選擇閾值的個數,選擇特征。
? ? ? ?相關系數,方差(適用于連續型變量),卡方檢驗(適用于類別型變量),信息熵,IV。實際工作中主要基于IV和相關性系數(皮爾遜系數)。
優點:算法的通用性強;省去了分類器的訓練步驟,算法復雜性低,因而適用于大規模數據集;可以快速去除大量不相關的特征,作為特征的預篩選器非常合適。
缺點:由于算法的評價標準獨立于特定的學習算法,所選的特征子集在分類準確率方面通常低于Wrapper方法。
2.Wrapper(封裝法)
? ? ? ?封裝式特征選擇是利用學習算法的性能評價特征子集的優劣。因此,對于一個待評價的特征子集,Wrapper方法需要訓練一個分類器,根據分類器的性能對該特征子集進行評價。
方法有完全搜索(遞歸消除法),啟發式搜索(前向/后向選擇法,逐步選擇法),隨機搜索(訓練不同的特征子集)。實際工作中主要用到啟發式搜索,例如評分卡的逐步邏輯回歸。
優點:相對于Filter方法,Wrapper方法找到的特征子集分類性能通常更好。
缺點:Wrapper方法選出的特征通用性不強,當改變學習算法時,需要針對該學習算法重新進行特征選擇;由于每次對子集的評價都要進行分類器的訓練和測試,所以算法計算復雜度很高,尤其對于大規模數據集來說,算法的執行時間很長。
3.Embedded(嵌入法)
? ? ? ?先使用某些機器學習的算法和模型進行訓練,得到各個特征的權值系數,根據系數從大到小選擇特征。類似于Filter方法,但是是通過訓練來確定特征的優劣。
? ? ? ?一種是基于懲罰項,例如嶺回歸,lasso回歸,L1/L2正則化。另一種是基于樹模型輸出的特征重要性,在實際工作中較為常用,可選擇的模型有隨機森林,xgboost,lightgbm。
優點:效果最好速度最快,模式單調,快速并且效果明顯。
缺點:如何參數設置, 需要對模型的算法原理有較好的理解。
【作者】:Labryant ?
【原創公眾號】:風控獵人 ?
【簡介】:做一個有規劃的長期主義者。
【轉載說明】:轉載請說明出處,謝謝合作!~
總結
以上是生活随笔為你收集整理的互联网金融风控面试算法知识(三)的全部內容,希望文章能夠幫你解決所遇到的問題。