資料競賽入門-金融風控(貸款違約預測)五、模型融合
前言
本次活動為datawhale與天池聯合舉辦,為金融風控之貸款違約預測挑戰賽(入門)
比賽地址:https://tianchi.aliyun.com/competition/entrance/531830/introduction
為什麼要進行模型融合
這裡得談到整合學習:
整合學習可以分為兩類,一種是把強分類器進行強強聯合,使得融合後的模型效果更強,稱為模型融合。另一種是將弱分類器通過學習演算法整合起來變為很強的分類器,稱為機器學習元演算法。
這裡我們把用來進行融合的學習器稱為個體學習器。
模型融合的代表有:投票法(Voting)、線性混合(Linear Blending)、Stacking。
而機器學習元演算法又可以根據個體學習器之間是否存在依賴關係分為兩類,稱為Bagging和Boosting:
- Bagging: 個體學習器不存在依賴關係,可同時對樣本隨機取樣並行化生成個體學習器。代表作為隨機森林(Random Forest)
- Boosting: 個體學習器存在依賴關係,基於前面模型的訓練結果誤差生成新的模型,必須序列化生成。代表的演算法有:Adaboost、GBDT、XGBoost
模型融合
在進行模型融合的時候,也不是說隨意的融合就能達到好的效果。進行融合時,所需的整合個體(就是用來整合的模型)應該好而不同。好指的是個體學習器的效能要好,不同指的是個體模型的類別不同。
在這裡舉個西瓜書的例子,在介紹例子之前,首先提前介紹簡單投票法,以分類問題為例,就是每個分類器對樣例進行投票,哪個類別得到的票數最多的就是融合後模型的結果。
在上面的例子中,採用的就是簡單的投票法。中間的圖b各個模型輸出都一樣,因此沒有什麼效果。第三個圖c每個分類器的精度只有33%,融合後反而更糟。也就是說,想要模型融合有效果,個體學習器要有一定的準確率,並且要有多樣性,學習器之間具有差異,即”好而不同“。
如何做到好而不同呢?可以由下面幾個方面:
- 針對輸入資料:使用取樣的方法得到不同的樣本(比如bagging方法採用自助法進行抽樣)
- 針對特徵:對特徵進行抽樣
- 針對演算法本身:
- 個體學習器 h t h_{t} ht來自不同的模型集合
- 個體學習器 h t h_{t} ht來自於同一個模型集合的不同超引數,例如學習率η不同
- 演算法本身具有隨機性,例如用不同的隨機種子來得到不同的模型
- 針對輸出:對輸出表示進行操縱以增強多樣性
- 如將多分類轉化為多個二分類任務來訓練單模型
- 將分類輸出轉化為迴歸輸出等
那麼進行模型融合為什麼比較好呢?雖然有俗話說:三個臭皮匠賽過諸葛亮,但是我們還是想知道,究竟是如何“賽過諸葛亮”的。這裡摘錄西瓜書如下:
學習器的結合可能會從三個方面帶來好處:
-
首先,從統計的方面來看,由於學習任務的假設空間往往很大,可能有多個假設在訓練集上達到相同的效能,此時若使用單學習器,可能因誤選而導致泛化效能不佳,結合多個學習器則會減少這一風險;
-
第二,從計算的方面來看,學習演算法往往會陷入區域性極小,有的區域性極小點所對應的泛化效能可能很糟糕,而通過多次執行之後進行結合,可降低陷入糟糕區域性極小點的風險;
-
第三,從表示的方面來看,某些學習任務的真實假設可能不在當前學習演算法所考慮的假設空間中,此時若使用單學習器則肯定無效,而通過結合多個學習器,由於相應的假設空間有所擴大,有可能學得更好的近似。
模型融合方法:
平均
簡單平均法
-
簡單加權平均,結果直接融合 求多個預測結果的平均值。pre1-pren分別是n組模型預測出來的結果,將其進行加權融
pre = (pre1 + pre2 + pre3 +...+pren )/n
加權平均法
-
加權平均法 一般根據之前預測模型的準確率,進行加權融合,將準確性高的模型賦予更高的權重。
pre = 0.3pre1 + 0.3pre2 + 0.4pre3
投票
簡單投票
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150, max_depth=4, min_child_weight=2, subsample=0.7,objective='binary:logistic')
vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb', clf3)])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))
加權投票
在VotingClassifier中加入引數 voting=‘soft’, weights=[2, 1, 1],weights用於調節基模型的權重
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150, max_depth=4, min_child_weight=2, subsample=0.7,objective='binary:logistic')
vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb', clf3)], voting='soft', weights=[2, 1, 1])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))
綜合:
排序融合
log融合
stacking:
構建多層模型,並利用預測結果再擬合預測。
blending:
選取部分資料預測訓練得到預測結果作為新特徵,帶入剩下的資料中預測。
boosting/bagging
參考:
細語呢喃
相關文章
- 資料競賽入門-金融風控(貸款違約預測)四、建模與調參
- 零基礎入門金融風控之貸款違約預測—模型融合模型
- 天池金融風控-貸款違約挑戰賽 Task5 模型融合模型
- 資料探勘實踐(金融風控):金融風控之貸款違約預測挑戰賽(上篇)[xgboots/lightgbm/Catboost等模型]--模型融合:stacking、blendingboot模型
- 零基礎入門金融風控之貸款違約預測挑戰賽——簡單實現
- 零基礎入門金融風控-貸款違約預測-Task04——建模與調參
- 貸款違約預測專案-資料分箱
- Datawhale零基礎入門金融風控 Task5 模型融合 打卡模型
- 【 專案:信用卡客戶使用者畫像 及 貸款違約預測模型 】模型
- 資料探勘實踐(金融風控)-第五次任務
- 【機器學習PAI實踐六】金融貸款發放預測機器學習AI
- 大資料競賽平臺——Kaggle 入門篇大資料
- 網際網路金融風控模型大全模型
- 資料競賽:第四屆工業大資料競賽-虛擬測量大資料
- 0基礎入門金融風控的 Task4 建模調參
- 實戰人品預測之一_國內大資料競賽平臺大資料
- 『阿里大資料競賽』音樂流行趨勢預測_不斷更新阿里大資料
- 大資料徵信如何提升金融機構風控能力大資料
- 大語言模型微調資料競賽,冠-軍!模型
- 網際網路金融風控中的資料科學資料科學
- 演算法競賽C++快速入門演算法C++
- 資料探勘-預測模型彙總模型
- 【機器學習入門與實踐】資料探勘-二手車價格交易預測(含EDA探索、特徵工程、特徵最佳化、模型融合等)機器學習特徵工程模型
- Python資料分析入門(五)Python
- 資料競賽Tricks集錦
- 阿里天池大資料競賽阿里大資料
- 資料探勘實踐(金融風控)-第四次任務
- 滴滴大資料在汽車金融風控場景中的應用大資料
- 圖資料庫在中國移動金融風控的落地應用資料庫
- 紡織供應鏈中的金融大資料風控體系大資料
- 演算法競賽入門經典_5 c++與STL入門演算法C++
- 預測模型要大資料還是小資料?模型大資料
- 零基礎入門推薦系統-【排序模型+模型融合】排序模型
- 競賽釋出 | AI戰疫·小分子成藥屬性預測大賽開賽!AI
- kaggle再一次入門~經典入門級競賽~Titanic
- 詳解 Kaggle 房價預測競賽優勝方案:用 Python 進行全面資料探索Python
- 模型訓練:資料預處理和預載入模型
- 大資料競賽技術分享大資料