劉婷婷



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