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