前言
本次練習承接上篇《競賽練習—公共自行車使用量預(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 可作為特征選擇使用。
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)參提高不多,則再一次審視模型選擇。
⑤其中②③④需要耐心的交接進行。