競賽練習—交通事故理賠審核

前言

本次練習承接上篇《競賽練習—公共自行車使用量預(yù)測》的下一個競賽,但本次主要為數(shù)據(jù)處理模型選擇,調(diào)參可參照上一篇文章。(交通事故理賠審核
結(jié)果要求PR-AUC接近1,本文最終處理結(jié)果為PR-AUC:0.861185,排名9。

1 數(shù)據(jù)分析

1.1 數(shù)據(jù)可視化

首先我們可以檢查有無缺失值——結(jié)果是沒有缺失值。

print(train.isnull().any())# 缺失值檢查

然后再查看各變量與Evaluation的相關(guān)性

print(train.corr()['Evaluation'])# 查看特征相關(guān)性

可以發(fā)現(xiàn),在36個問題中絕大多數(shù)是接近0的負相關(guān),只有少部分為正相關(guān)
于是我們查看其中為-0.006511的Q1和為0.410700的Q28,當然還有作為估計值的Evaluation的分布情況

for i in ['Q1', 'Q28', 'Evaluation']:

sns.countplot(x=i, data=train)# 查看數(shù)據(jù)集各變量和類別的**分布**

plt.show()

Evaluation——審核能否通即是0和1的分布,絕大多數(shù)都為可以通過并且占據(jù)17/20。
Q1——取值幾乎都為0,和它相同分布的特征還有許多,這些特征難以體現(xiàn)區(qū)分度。
Q28——有不同的取值,雖然大多為0,但分布還不算太過懸殊。



我們先使用表現(xiàn)最好的標桿模型——RF(隨機森林分類),使用其默認參數(shù),在三折交叉驗證下查看PR-AUC的值

RP-AUC數(shù)值為:0.8429819733147138
耗時:51.35982632637024秒

1.2 類不平衡處理

類不平衡(class-imbalance)是指在訓練分類器中所使用的訓練集的類別分布不均。
于是我嘗試使用過采樣SMOTE算法

from collectionsimport Counter

from imblearn.over_samplingimport SMOTE

# print(Counter(train_y))

smo = SMOTE(random_state=42)

train_x, train_y = smo.fit_sample(train_x, train_y)

# print(Counter(train_y))

可以發(fā)現(xiàn)在SMOTE處理后,兩個類別樣本數(shù)量達到相同

RP-AUC數(shù)值為:0.8399920675137803
耗時:107.54732489585876 秒


使用過采樣的樣本訓練后,分數(shù)下降了,時間還提升了。這是由于過采樣它不可避免的帶來更大的運算開銷,其次當數(shù)據(jù)中噪音過大時,結(jié)果反而可能會更差因為噪音也被重復(fù)使用。(欠采樣(undersampling)和過采樣(oversampling)會對模型帶來怎樣的影響?

1.3 特征選擇

由于在Q1特征中,表現(xiàn)出絕大特征值為0,這是方差極為低的特征,難以帶來有效的信息。

1.3.1 移除方差較低特征

方差為0的特征會被自動移除。剩下的特征按設(shè)定的方差的閾值進行選擇。

from sklearn.feature_selectionimport VarianceThreshold

sel = VarianceThreshold(threshold=.09) # 選擇方差大于0.9的特征

train = sel.fit_transform(train)

test = sel.fit_transform(test)

RP-AUC數(shù)值為:0.8300324079765956
耗時:39.80928683280945 秒


移除方差較低的特征后,分數(shù)降低很大,時間卻降低很多。因為許多特征都表現(xiàn)出方差低的情況,移除后剩下為數(shù)不多的特征,此時耗時自然下降,但信息不足以支撐模型訓練。(使用scikit-learn進行特征選擇

2 模型選擇

類不平衡處理移除方差較低的特征后模型表現(xiàn)都不大好。于是我們直接對RF模型進行調(diào)參,會發(fā)現(xiàn)多次調(diào)參仍提升不多
于是考慮選擇其他模型,在這之前我們先分析標桿模型和其類似的模型

2.1 LASSO邏輯回歸模型

LASSO 的特點:趨向于使得一部分θ 值變?yōu)?0,也就是說 LASSO 認為與θ= 0 對應(yīng)的特征是完全沒有用的,而剩下與θ不為 0 所對應(yīng)的特征是有用的,所以 LASSO 可作為特征選擇使用。

機器學習:模型泛化(LASSO 回歸)

2.2 隨機森林分類模型

隨機森林的特點:是在以決策樹為基學習器構(gòu)建Bagging集成的基礎(chǔ)上,進一步在決策樹的訓練過程中引入了隨機屬性選擇,即每棵樹隨機選擇樣本并隨機選擇特征,使得具有很好的抗噪能力,性能穩(wěn)定。

隨機森林(原理/樣例實現(xiàn)/參數(shù)調(diào)優(yōu))

2.3 XGBoost分類模型

XGBoost的特點:

①使用許多策略去防止過擬合,如:正則化項、Shrinkage and Column Subsampling等。
②目標函數(shù)優(yōu)化利用了損失函數(shù)關(guān)于待求函數(shù)的二階導(dǎo)數(shù)。
③支持并行化,這是XGBoost的閃光點,雖然樹與樹之間是串行關(guān)系,但是同層級節(jié)點可并行。具體的對于某個節(jié)點,節(jié)點內(nèi)選擇最佳分裂點,候選分裂點計算增益用多線程并行。訓練速度快。
④添加了對稀疏數(shù)據(jù)的處理。
⑤交叉驗證,early stop,當預(yù)測結(jié)果已經(jīng)很好的時候可以提前停止建樹,加快訓練速度。
⑥支持設(shè)置樣本權(quán)重,該權(quán)重體現(xiàn)在一階導(dǎo)數(shù)g和二階導(dǎo)數(shù)h,通過調(diào)整權(quán)重可以去更加關(guān)注一些樣本。

可參考我上一篇《xgboost回歸模型—公共自行車使用量預(yù)測》文章

其實發(fā)現(xiàn)標桿模型都有一個特點,即可以特征選擇,對稀疏特征有較好的處理能力。
所以最終我選擇XGBoost分類模型,因為他即結(jié)合Lasso回歸中正則化處理,又結(jié)合了隨機森林中集成思想特征選擇,所以對處理Q1這類特征有較好的反響。還有一點是根據(jù)上一篇文章對xgboost的處理,發(fā)現(xiàn)仔細調(diào)參后可較大幅度提升性能。


3 調(diào)參

使用XGBoost分類模型,使用其默認參數(shù),在三折交叉驗證下查看PR-AUC的值

RP-AUC數(shù)值為:0.8238557416902802
耗時:30.34992218017578 秒


發(fā)現(xiàn)分數(shù)降低很大,但耗時降低。但不要緊張,我們參考網(wǎng)上同樣使用xgboost的(競賽文章)和上一篇調(diào)參方法(有時間可以三個參數(shù)一起調(diào)),在經(jīng)歷幾個晚上運行終于調(diào)出較高的數(shù)值。

cv_params = {}

other_params = {'base_score':0.5, 'booster':'gbtree', 'colsample_bylevel':0.9,

'colsample_bytree':0.4, 'gamma':0.4, 'learning_rate':0.13,

'max_delta_step':0, 'max_depth':5, 'min_child_weight':1, 'missing':None,

'n_estimators':800, 'n_jobs': -1, 'nthread':4, 'objective':'binary:logistic',

'random_state':0, 'reg_alpha':1, 'reg_lambda':1, 'scale_pos_weight':1,

'seed':27, 'silent':True, 'subsample':0.9}

model = XGBClassifier(**other_params)

clf = GridSearchCV(estimator=model, param_grid=cv_params, scoring='average_precision', verbose=1, n_jobs=-1, cv=3)

clf.fit(train_x, train_y)

RP-AUC數(shù)值為:0.8583719786179845
耗時:93.17677021026611 秒


這里我們再對數(shù)據(jù)進行以上類不平衡問題和特征選擇,并代入調(diào)參后的XGBoost模型,結(jié)果不盡人意。所以還是采取不處理,僅調(diào)參的XGBoost模型。

最終處理結(jié)果為PR-AUC:0.861185,排名9

小結(jié)

①本次是分類問題,數(shù)據(jù)表現(xiàn)出部分特征區(qū)分度低類不平衡問題。
②處理以上問題,我們進行特征選擇和數(shù)據(jù)處理和。
③如果未有太好效應(yīng),則直接進行調(diào)參。
④調(diào)參提高不多,則再一次審視模型選擇。
⑤其中②③④需要耐心的交接進行。

代碼與數(shù)據(jù)在我的代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容