日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kaggle债务违约预测冠军经验分享

發布時間:2025/3/21 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kaggle债务违约预测冠军经验分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄(?)[-]

  • 引言
  • SWOT分析法
  • 優勢Strengths利用我們已有的優勢
  • 弱勢weaknesses我們需要提升的領域
  • 機會opportunities可以利用的機會及實踐得到的經驗
  • 威脅threats我們需要減輕和控制的危機
  • Agile過程
  • Agile過程是什么
  • 為何使用Agile過程
  • 試探性數據分析
  • 特征工程
  • 模型實施戰略
  • 貝葉斯優化
  • 貝葉斯優化被用來做什么
  • 為什么貝葉斯優化比網格搜索和隨機搜索更高效呢
  • 何時貝葉斯優化無法返回最優值
  • 登頂之路
  • ROCAUC曲線
  • 結果和發現
  • 得到的經驗以及一些見解
  • 后繼的工作
  • 結論

  • 引言

    債務違約預測是Kaggle中的一個比賽,本文將介紹取得第一名成績的方法,本次比賽的目標包括兩個方面。其一是建立一個模型,債務人可以通過它來更好地進行財務方面的決策。其二是債權人可以預測這個債務人何時會陷入到財務方面的困境。最終目的是,通過預測未來兩年內債務違約的概率,來改進現有的信用評分制度。這是一個極度復雜和困難的Kaggle挑戰,因為銀行和各種借貸機構一直都在不斷地尋找和優化信用評分的算法。這個模型是銀行用來判定是否準許某一筆貸款的。根據這個模型提供的信息,銀行可以更好地作出決策,借貸者也可以更好地進行財務方面的規劃,以免將來陷入債務危機。?
    本次挑戰允許團隊使用集成模型和算法,如XGBoost, Gradient Boosting, 隨機森林(Random Forest), 限制玻爾茲曼機(Restricted Boltzman Machine Neural Networks), Adaboost。以及使用先進的堆疊技術(stacking)和投票分類器來準確地預測違約概率。?
    我們的測量和排名嚴格使用ROC曲線的AUC值。我們遵照了Agile過程,來確保我們分塊、并行地完成關鍵的任務。我們很快地失敗,又很快地在此基礎上迭代,以此來確保最高效的工作和產出。我們使用復雜貝葉斯優化算法,獲取最好的超參數集,大幅減少了測試和交叉驗證的時間。這為我們提升排名、獲得AUC最高分提供了很大的幫助。?
    通過我們對工具的利用、團隊的協作、以及一個使我們產出最大化的流程,我們不僅躋身排名榜的前列,還打破了第一名的成績,獲得了這次挑戰的冠軍。

    SWOT分析法

    SWOT分析法讓我們可以讓我們思路更清晰,專注于利用我們最大的優勢(Strengths),了解我們的弱點(Weaknesses),利用現有的機會(Opportunities),警惕潛在的威脅(Threats)。?
    SWOT方法使我們可以在正確的方向前進,避開很多令人頭疼的事兒。

    優勢(Strengths):利用我們已有的優勢

    • 利用堆疊技術和Agile過程的經驗
    • 協作團隊的經驗和技能可以相互補充
    • 吸取之前的Kaggle挑戰的經驗和教訓
    • 使用Agile過程處理并行工作的經驗

    弱勢(weaknesses):我們需要提升的領域

    • 時間有限,限制了探索的深度和廣度
    • 對新工具和模型的不熟悉,大大降低了我們的戰斗力
    • 邊做邊學,拖慢了整個進程
    • 對于所使用的新技術,相關的資源十分稀少

    機會(opportunities):可以利用的機會,及實踐得到的經驗

    • 了解如何制定策略,調整模型、算法和參數,來達到對違約幾率的最佳預測
    • 在使用貝葉斯優化算法時,獲得實時的經驗
    • 嘗試使用深度學習(Theano/Keras)來進行違約預測

    威脅(threats):我們需要減輕和控制的危機

    • 數據集比較小,這對模型的泛化有較大的挑戰。這影響了模型的構造,最終影響了預測的精度。
    • 對AUC的公差嚴格到了小數點后10,000位
    • 前5%的目標分數太高了-簡直不可行

    Agile過程



    我們使用‘Agile過程’作為本項目的流程,這是由Bernard發明的。它特別為了機器學習優化過,因為他需要整合很大一塊內容,包括數據是如何被處理的,建模、測試的,以及很多更傳統的開發生命周期。?
    Agile過程利用了‘分塊’的概念,以一種快速的方式來完成工作任務。它整合了很多并行的任務,很快地失敗,又很快地迭代。它發揮了強大的作用,使產出最大化。這是我們在短短兩星期內獲得第一名的主要因素之一。

    Agile過程是什么?

    敏捷過程是一個標準的全行業的傳統軟件開發和工程的生命周期。它基于迭代開發,需要通過發展自組織、跨職能的團隊之間的協作來進行。本工程使用的Agile是一個改進的形式,它是專門為機器學習設計的。它和傳統流程的組成部分比較相似,大多數任務是并行地而不是順序的。流程的組成部分包括數據預處理(包括缺失值插補),探索性數據分析(如單變量分布,二維分布,相關分析),特征工程(如增加特征,刪除特征,PCA),算法選擇(如有監督),超參數優化,模型擬合,模型評估,模型再造,交叉驗證,預測,以及最后的提交。不同于傳統機器學習的順序流程,一次只能進行一個模型的選擇和調整,并且在缺失值插補的方法沒有確定之前無法進行模型的擬合。Agile過程充分利用缺失值插補,特征工程和模型擬合的并行執行,使多個人在這個項目上協作工作。

    為何使用Agile過程?

    在我們的團隊領導伯納德的指導下,我們腦子里從一開始就有整個的Agile過程。由于大部分流程并行完成,并且我們每個人都分配了非常具體的任務,沒有人等著別人的結果來完成自己的工作。我們可以快速評估模型和戰術方法,并能夠快速失敗和迭代,快速搞清楚什么可行,什么不可行。轉化為成果方面,就是到了第一周的周中,我們已經在排行榜上排名前100。在第一周結束時,我們到達了第2名,這給我們留下了整整一個星期去挑戰第一名。

    試探性數據分析

    從下面的缺失值圖像可以看出,變量‘負債率’和‘家屬數’分別有20%和3%左右的數據缺失。?


    ?

    我們嘗試了不同的缺失值估算方法,包括KNN,平均值,隨機數和中位數。然而,我們發現,不去補充缺失值,模型反而會有更好的表現。?
    我們也做了PCA。結果表明,選擇5個主成分只能解釋總方差的66%。由于只有10個特征,PCA可能不適合這個項目。?


    ?

    數據集的一個有趣的特性是,除了“年齡”,幾乎每列有一些異常值。例如,列‘逾期30-59天’,‘逾期60-89天’和‘逾期90天’都有大約0.2%的異常值,異常值為98或96。這些數字實際上是在調查中輸入的,表示用戶不愿意透露這些信息。這些會對單變量分布有很大的影響。還有變量‘循環貸款無抵押額度(RevolvingUtilizationOfUnsecuredLines)’,是信用卡額度和除分期付款,如購車貸款的個人限制之和除以總貸款余額。因此,這個變量的正常范圍是0與1之間,而它有大于5000的異常值。因此,我們必須處理這個問題。


    ?

    對于每一列,我們檢測基于第95百分位數的異常值,基于中位數的異常值和基于標準偏差的異常值,并用投票來決定最終結果。如果三種方法中,如果有兩種方法都認為某一個點是一個異常值,那么我們就確定這個點是一個異常值。然后,我們將異常值替換為該列的中值或最不異常的異常值。至于使用哪種替換,取決于具體的列。?
    過濾掉異常值改變了原有的數據結構。在此之前,這三個異常變量是高度相關的。在濾值之后,相關性消失了。如下面的圖片所示。



    特征工程

    下圖是特征重要性圖示,從圖中可以看出,‘循環貸款無抵押額度(RevolvingUtilizationOfUnsecuredLines)’,‘負債率’和‘月收入’是最重要的三個變量。


    ?

    這個信息對于特征工程來說是十分重要的。下面是特征工程的工作流程。?
    我們嘗試了幾種不同的方法。我們把一些列組合在了一起,生成了一個新的列,并且刪除了原有的列。例如,負債率乘以月收入得到月負債。我們對違約變量分配了權重。對于每一個違約變量,我們做了一個邏輯回歸,然后使用得到的R^2除以三個R^2的和,作為它的權重。最后,我們構造了7個訓練集和7個測試集。這些數據集使樸素貝葉斯和邏輯回歸的AUC值從0.7左右提升到了0.85左右。然而,對基于樹的模型,這些數據集并沒什么幫助。?



    模型實施戰略



    我們為了本次挑戰,構造了4個模型,并評估了他們的準確率。團隊實施了一個并行流程,所有的模型同步構造。在自動優化過程中,每發現一個更優的參數集,這些參數會用于整個流程循環,即時地進行協同工作。

    • 簡單和集成模型:?
      作為構造模型的第一步,我們訓練了邏輯回歸和樸素貝葉斯模型,并且這兩個模型的精度(曲線下面積,AUC值)都是0.7左右。上面提到的這兩個模型提供了很好的基線,可以用于比較更加復雜的模型,比如堆疊、投票以及混合模型的表現。梯度提升和隨機森林模型作為集成模型的一部分它們的AUC評分在文檔中。

    • 優化的堆疊模型:?
      堆疊模型將貝葉斯分類器以非線性的方式組合在一起。這個通過在元級別(meta-level)上的訓練集上學習,來進行組合的過程,稱作元學習(meta learner),它把獨立運算的基礎分類器集成為一個高級的分類器,這稱作元分類器(meta classifier)。這個2層的堆疊模型,使用梯度提升和XGBoost作為基礎分類器。它們的分類結果被輸入一個邏輯回歸模型,這個邏輯回歸模型就是元分類器。堆疊模型使得分達到了0.8685左右,進入了Kaggle排行榜前30名。

    • 投票分類模型:?
      投票模型根據獲得最多票數的類別對沒有標簽的對象進行分類。我們使用加權平均算法,對每個分類器輸出的可能性值進行計算,得出最終預測的結果。盡管團隊開始時只有兩個分類器,最終的結果有12個分類器,包括7個梯度提升的,1個樸素貝葉斯的,3個隨機森林的和一個AdaBoost分類器。如果測試結果表明會對交叉驗證得分的提高有貢獻的話,就會增加分類器的數量。投票模型把AUC的得分提高到了0.869左右,使我們到達了排行榜的第8名。

    • 投票和堆疊的混合模型:?
      最終使我們超越現有第一名的模型,就是投票和堆疊的混合模型。這個模型包括2個梯度提升的,2個隨機森林的,1個AdaBoost分類器,1個嚴格玻爾茲曼機(estricted Boltzman Machine,RBM)。并且引入了神經網絡算法。這個模型將得分提到了0.869574,使我們Eigenauts隊成為了排行榜上第一名。

    貝葉斯優化

    貝葉斯優化被用來做什么?

    幾乎所有的機器學習算法都包括一些超參數,也叫做調整參數。這些參數和常規參數不同,它們不是模型的一部分,不會在模型擬合中被自動調整。它們是在另外的步驟中被調整的。一些超參數的例子,包括在嶺回歸和lasso回歸中的正則項lambda、支持向量機中的C項、基于樹的算法中樹的數量(如,隨機森林、梯度提升機)。?
    共有4中超參數優化方法:1、網格搜索 2、隨機搜索 3、基于梯度的優化 4、貝葉斯優化。在這4中方法之中,我們嘗試了網格搜索,隨機搜索和貝葉斯優化。我們發現貝葉斯優化是最高效的,可以自動達到最優。


    ?

    為什么貝葉斯優化比網格搜索和隨機搜索更高效呢?

    在尋找最優超參數值的時候,需要提前確定一些數據。首先,也是最重要的,任何算法都需要一個目標函數,來找它的最大值?;蛘咭粋€損失函數,來找它的最小值。然后,需要確定搜索范圍,一般通過上限和下限來確定??赡苓€有一些對于算法的參數,比如搜索的步長。

    網格搜索可能是應用最廣泛的超參數搜索算法了,因為它確實很簡單。網格搜索通過查找搜索范圍內的所有的點,來確定最優值。它返回目標函數的最大值或損失函數的最小值。給出較大的搜索范圍,以及較小的步長,網格搜索是一定可以找到全局最大值或最小值的。但是,網格搜索一個比較大的問題是,它十分消耗計算資源,特別是,需要調優的超參數比較多的時候(例如,隨機森林里有8個左右)。因此,當人們實際使用網格搜索來找到最佳超參數集的時候,一般會先使用較廣的搜索范圍,以及較大的步長,來找到全局最大值或者最小值可能的位置。然后,人們會縮小搜索范圍和步長,來達到更精確的最值。盡管這樣做可以降低所需的時間,但是由于目標參數一般是非凸的,如圖1所示,所以人們常常就會錯過了全局的最大值或最小值,因為他們在第一次測試的時候找到了一個局部的最值。

    隨機搜索的思想和網格搜索比較相似,只是不再測試上界和下界之間的所有值,只是在搜索范圍中隨機取樣本點。它的理論依據是,如果隨即樣本點集足夠大,那么也可以找到全局的最大或最小值,或它們的近似值。通過對搜索范圍的隨機取樣,隨機搜索一般會比網格搜索要快一些。但是和網格搜索的快速版(非自動版)相似,結果也是沒法保證的。

    貝葉斯優化尋找使全局達到最值的參數時,使用了和網格搜索、隨機搜索完全不同的方法。網格搜索和隨機搜索在測試一個新的點時,會忽略前一個點的信息。而貝葉斯優化充分利用了這個信息。貝葉斯優化的工作方式是通過對目標函數形狀的學習,找到使結果向全局最大值提升的參數。它學習目標函數形狀的方法是,根據先驗分布,假設一個搜集函數。在每一次使用新的采樣點來測試目標函數時,它使用這個信息來更新目標函數的先驗分布。然后,算法測試由后驗分布給出的,全局最值最可能出現的位置的點。

    對于貝葉斯優化,一個主要需要注意的地方,是一旦它找到了一個局部最大值或最小值,它會在這個區域不斷采樣,所以它很容易陷入局部最值。為了減輕這個問題,貝葉斯優化算法會在勘探和開采(exploration and exploitation)中找到一個平衡點。

    勘探(exploration),就是在還未取樣的區域獲取采樣點。開采(exploitation),就是根據后驗分布,在最可能出現全局最值的區域進行采樣。

    我們用于進行貝葉斯優化的包是一個Python包,叫做“bayes_opt”。下面的視頻(http://blog.nycdatascience.com/wp-content/uploads/2016/09/bayes_opt_visualisation.mp4)顯示了“bayes_opt”包是如何保證勘探和開采的平衡的。

    何時貝葉斯優化無法返回最優值?

    貝葉斯優化,盡管比網格搜索和隨機搜索要好一些,但是它也不是魔法,所以有些東西還是要好好考慮一下。根據我們的經驗,迭代次數(也就是選取采樣點的數量),和搜索范圍的大小的比值,十分重要。讓我們假想一個極端的例子,來說明這一點。想象你要調整兩個超參數,每個參數的范圍是從1到1000.然后你把迭代指數設置成了2,算法幾乎肯定會返回一個錯誤結果,因為他還沒充分學習到目標函數的形狀。

    登頂之路



    ROC/AUC曲線



    畫出接受者操作特性曲線(ROC)可以看出預測違約或不違約的二分類器的表現。這個圖像是最后的混合模型,它在Kaggle榜單上得到了第一名。在ROC曲線中,真正率(或靈敏度)是對于參數不同切分點的假正率(100-靈敏度)的函數。?
    ROC曲線的曲線下面積(AUC)是對于一個參數分割兩組數據的效果的度量,在這里是違約或不違約。根據這張圖可以看出,我們最好的模型,曲線下面積大約是0.89。這表示,在訓練集中隨機抽取一個標簽為1(可能違約)的數據,他的得分比從訓練集中抽取的標簽為0(不太可能違約)的數據高的概率為89%。

    結果和發現

    下面使我們基于特征工程和預測模型在用戶債務違約數據的表現,得到的結果和發現。

    • 模型在不進行缺失值查補的情況下,表現好像更好一點。
    • 相比于簡單的集成模型,堆疊和投票,以及兩者的結合,一般會有更高的預測能力。
    • 對于簡單模型(樸素貝葉斯和邏輯回歸),特征工程可以把AUC的分數中0.7左右提到0.85左右。但是對于基于樹的方法,這并沒什么用。
    • 當我們向著Kaggle榜的前2%接近的時候,對于AUC,每提升0.0001,會變得越來越難。

    得到的經驗以及一些見解

    這個項目讓團隊學習到了很多關于機器學習和預測模型的寶貴的經驗。它們使我們在這樣高度競爭的數據科學競賽中拿到了第一的好成績:

    • 超參數調整是十分耗時的,最好把它進行團隊分工,并行工作。
    • 交叉驗證十分關鍵,在測試不同數據集對模型準確度的影響上話時間是很值當的。
    • 模型的調整應該在更高精度上進行,因為數據集比較小。(不論是特征的數量還是數據的條目)
    • 遵照Agile并行進程,它被證明是一個使成功最大化的因素。

    后繼的工作

    當我們考慮還可以做什么的時候,一些事情來到了我們的腦海。這些任務可以看作是將來提高的一個愿景。

    • 使用Theano / Keras來進行深度學習模型的調整,并且比較它和堆疊、投票算法的準確度和表現。
    • 嘗試增加新的特征多項式,以及轉化過的特征,并衡量預測的精度。

    結論

    第一名的小伙伴在這次機器學習挑戰中達到了目標,可以應用多種模型、算法、以及策略,來達到相對較好的結果。他們最終上榜的得分是 0.869574,在本次Kaggle競賽925個競爭者中排名第一。這使小伙伴們很有成就感,因為我們只有兩個星期來進行準備,提交挑戰的結果。

    3

    總結

    以上是生活随笔為你收集整理的Kaggle债务违约预测冠军经验分享的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。