劉婷婷



摘 要:如果某人今天買了一份保險,萬一明天或者后天就發生了風險,那么保險公司賠給他的錢是他今天所花的錢的倍數,這是衡量一張保單保障意義的有力數據。機器學習方法在如今的許多領域都發揮著重要作用,在目前眾多廣泛應用于各種學習任務的機器學習算法中,集成樹算法屬于其中的佼佼者。文章對集成樹算法中的XGBoost算法研究分析,通過在保險理賠預測的應用展示了其算法功能的優越性能。
關鍵詞:XGBoost;保險理賠;預測;機器學習
據統計,在2015年度Kaggle數據挑戰賽中,29個冠軍案例中有17個采用XGBoost方法,其中有8個解決方案僅使用XGBoost算法,其它的解決方案采用XGBoost與神經網絡聯合的方法。這些競賽涵蓋了多個領域:商店銷售預測,高能物理事件分類,網頁文本分類,顧客行為預測,運動檢測,廣告點擊率預測,惡意軟件分類,產品分類,危害風險預測。當然,不可忽視數據分析和特征工程在這些解決方案中發揮了重要作用,但XGBoost是參賽者青睞的選擇,這一事實表明了其算法的超強性能。
一、XGBoost模型的建立
(一)XGBoost樹的定義
XGBoost算法原理于2004年由陳天奇提出,是在GBDT(梯度提升決策樹)的基礎上對Boosting算法的改進,解決GBDT算法模型難以并行計算的問題,實現對模型過擬合問題的有效控制。
GBDT是一種迭代的決策樹算法,為便于求解目標函數,GBDT常用回歸樹生長過程中,錯誤分類產生的殘差平方作為損失函數,即通過擬合殘差平方構造損失函數。隨著樹的生成,損失函數不斷下降;回歸樹生長過程每個分裂節點劃分時枚舉所有特征值,選擇使得錯誤分類最少、損失函數下降最快的特征值作為劃分點;每一棵回歸樹學習的是之前所有樹的結論和殘差,擬合得到一個當前的殘差回歸樹;最后,累加所有樹的結果作為最終結果。
GBDT 回歸樹求取目標函數最優解只對平方損失函數方便求得,對于其他的損失函數變得很復雜。以最小平方損失確定分裂節點的選取,僅考慮了回歸樹各葉節點預測精度,在追求高精度的同時易造成模型復雜度提升,造成回歸樹的生長出現過擬合。
XGBoost算法模型對GBDT上述兩個不足進行改進。XGBoost算法增加了對樹模型復雜度的衡量,在回歸樹生成過程分裂節點的選取考慮了損失和模型復雜度兩個因素,在權衡模型低損失高復雜和模型低復雜高損失后,求取最優解,防止一味追求降低損失函數產生過擬合現象,且速度快,準確性高,是有效的集成學習算法。
(二)XGBoost目標函數
XGBoost 整體目標函數為:
其中,是損失函數(通常是凸函數),用于刻畫預測值和真實值之間的差異;為模型的正則化項,用于降低模型的復雜度和過擬合問題,模型目標是最小化目標函數。
二、實證分析
(一)數據來源與描述
文章的數據來源于Allstate公司給出的數據,當你被嚴重的車禍摧毀時,你的注意力集中在最重要的事情上:家人,朋友和其他親人。與您的保險代理人一起處理是您希望花費時間或精力的最后一個地方。這就是Allstate不斷尋求新的方法來改善他們保護的1600多萬戶家庭的理賠服務的原因。該數據集公有188318條數據,有132個特征。特征中有15個連續特征,116個離散特征。其中id是int64,loss是float64,通過處理分析,數據中沒有缺失值。
(二)數據預處理
通過觀察離散值分布的情況,可以看出,大部分的分類特征(72/116)是二值的,絕大多數特征(88/116)有四個值,其中有一個具有326個值的特征,考慮是記錄的天數。對于賠償值loss,損失值中有幾個顯著的峰值表示嚴重事故。這樣的數據分布,會使得這個功能非常扭曲會導致回歸表現不佳。
數據越傾斜越不利于建模,越均勻越利于建模。將類別數據的類別用數字替換,對數據進行對數變換可以改變數據的傾斜程度。如圖1所示,左側是沒有進行處理的loss值的直方圖,右側是np.log后的loss值的直方圖,右側圖像分布更均勻,轉換之后賠償值趨于正態分布,因此選擇右側圖像對應的loss作為目標值,見圖1。
(三)回歸建模
XGboost是Gradient Boosting 算法的改進版本,XGBoost對損失函數生成二階泰勒展開,并在損失函數之外對正則項求得最優解,充分利用多核CPU 的并行計算優勢,提高了精度和速度。算法步驟可表示如下:
從上述步驟可知,XGBoost 在優化目標函數的同時做了預剪枝,從而可以得到最優參數,使預測結果更準確。
(四)評價標準
對于保險行業理賠的預測分析,本次研究更加關注預測的損失值和真實賠償損失值之間的誤差大小,通過觀察誤差可以判斷出模型的好壞,因此選用平均絕對誤差,能更好地反映出預測值誤差的實際情況。
(五)實驗結果與結論分析
首先,訓練一個基本的xgboost模型,然后進行參數調節通過交叉驗證來觀察結果的變化,使用平均絕對誤差來衡量mean_absolute_error(np.exp(y),np.exp(yhat))。
Xgboost自定義了一個數據矩陣類DMatrix,會在訓練開始時進行一遍預處理,從而提高之后每次迭代的效率。在設定50棵樹的情況下,得到了一個基準結果:MAE=1218.9,并且沒有發生過擬合。
在建立了100棵樹的情況下,得到了新的記錄MAE=1171.77,比第一次的要好,考慮到60棵樹之后又一點點過擬合,查看了60棵樹之后的預測情況,沒有太大的影響。
樹的深度和節點的權重這些參數對xgboost性能影響最大,因此,在調整參數的時候應該首先選擇他們。max_depth指的是樹的最大深度,增加這個值會使模型更加復雜,也容易出現過擬合,深度3-10是合理的。min_child_weight是正則化參數,如果樹分區中的實例權重小于定義的總和,則停止樹構建過程。
三、結語
建立合理有效而又科學的保險賠償預測模型,能為保險等服務機構提供更加可靠而科學的決策支持,減少不必要的損失,意義非常重大。文章在對比多個集成算法模型基礎上,建立基于目前最流行及性能較好的XGBoost集成算法的理賠預測模型,并在Allstate開源數據集上,對XGBoost算法進行比較與對比研究。實證結果表明,在機器學習等領域具有顯著優勢的XGBoost算法對預測模型的建立性能很優越。
參考文獻
[1] Chen T, He T, Benesty M, et al. Xgboost: extreme gradient boosting[J].R package version 0.4-2,2015:1-4.
[2] 連克強.基于 Boosting 的集成樹算法研究與分析[D].北京:中國地質大學 (北京),2018.