內容介紹
模型融合是比賽後期上分的重要手段,特別是多人組隊學習的比賽中,將不同隊友的模型進行融合,可能會收穫意想不到的效果哦,往往模型相差越大且模型表現都不錯的前提下,模型融合後結果會有大幅提公升,以下是模型融合的方式。
平均:
stacking
將若干基學習器獲得的**結果,將**結果作為新的訓練集來訓練乙個學習器。如下圖 假設有五個基學習器,將資料帶入五基學習器中得到**結果,再帶入模型六中進行訓練**。但是由於直接由五個基學習器獲得結果直接帶入模型六中,容易導致過擬合。所以在使用五個基模型進行**的時候,可以考慮使用k折驗證,防止過擬合。
stacking.png
blending
與stacking不同,blending是將**的值作為新的特徵和原特徵合併,構成新的特徵值,用於**。為了防止過擬合,將資料分為兩部分d1、d2,使用d1的資料作為訓練集,d2資料作為測試集。**得到的資料作為新特徵使用d2的資料作為訓練集結合新特徵,**測試集結果。
blending與stacking的不同
stacking
stacking中由於兩層使用的資料不同,所以可以避免資訊洩露的問題。
在組隊競賽的過程中,不需要給隊友分享自己的隨機種子。
blending
由於blending對將資料劃分為兩個部分,在最後 iris =
datasets.load_iris(
)x, y = iris.data[:,
1:3]
, iris.target
clf1 = kneighborsclassifier(n_neighbors=1)
clf2 = randomforestclassifier(random_state=1)
clf3 = gaussiannb(
)lr = logisticregression(
)sclf = stackingclassifier(classifiers=
[clf1, clf2, clf3]
, meta_classifier=lr)
label =
['knn'
,'random forest'
,'***** bayes'
,'stacking classifier'
]clf_list =
[clf1, clf2, clf3, sclf]
fig = plt.figure(figsize=(10
,8))
gs = gridspec.gridspec(2,
2)grid = itertools.product([0
,1],repeat=2)
clf_cv_mean =
clf_cv_std =
for clf, label, grd in
zip(clf_list, label, grid)
:
scores = cross_val_score(clf, x, y, cv=
5, scoring=
'accuracy'
)print
("accuracy: %.2f (+/- %.2f) [%s]"
%(scores.mean(
), scores.std(
), label)))
)))
clf.fit(x, y)
ax = plt.subplot(gs[grd[0]
, grd[1]
])fig = plot_decision_regions(x=x, y=y, clf=clf)
plt.title(label)
plt.show(
)
accuracy: 0.91 (+/- 0.07) [knn]
accuracy: 0.94 (+/- 0.04) [random forest]
accuracy: 0.91 (+/- 0.04) [***** bayes]
accuracy: 0.94 (+/- 0.04) [stacking classifier]
blending
data_0 = iris.data
data = data_0[
:100,:
]target_0 = iris.target
target = target_0[
:100
]#模型融合中基學習器
clfs =
[logisticregression(),
randomforestclassifier(),
extratreesclassifier(),
gradientboostingclassifier()]
#切分一部分資料作為測試集
x, x_predict, y, y_predict = train_test_split(data, target, test_size=
0.3, random_state=
914)
#切分訓練資料集為d1,d2兩部分
x_d1, x_d2, y_d1, y_d2 = train_test_split(x, y, test_size=
0.5, random_state=
914)
dataset_d1 = np.zeros(
(x_d2.shape[0]
,len
(clfs)))
dataset_d2 = np.zeros(
(x_predict.shape[0]
,len
(clfs)))
for j, clf in
enumerate
(clfs)
:#依次訓練各個單模型
clf.fit(x_d1, y_d1)
y_submission = clf.predict_proba(x_d2)[:
,1] dataset_d1[
:, j]
= y_submission
#對於測試集,直接用這k個模型的**值作為新的特徵。
dataset_d2[
:, j]
= clf.predict_proba(x_predict)[:
,1]print
("val auc score: %f"
% roc_auc_score(y_predict, dataset_d2[
:, j]
))
#融合使用的模型
clf = gradientboostingclassifier(
)clf.fit(dataset_d1, y_d2)
y_submission = clf.predict_proba(dataset_d2)[:
,1]print
("val auc score of blending: %f"
%(roc_auc_score(y_predict, y_submission)
))
TASK 5 模型融合
task 5 模型融合 總結自 datawhale 零基礎入門資料探勘 task 5 模型融合 ml67 1 stacking 是用初始訓練資料學習出若干個基學習器後,將這幾個學習器的 結果作為新的訓練集,來學習乙個新的學習器。2 結合策略 如何將個體學習器結合在一起使用的方法。分類可以使用投票法。...
Task5模型融合整理筆記
模型融合用於對多個模型進行融合以得到優於單個模型的效果。模型融合的方法主要有 回歸 算術平均融合,幾何平均融合 分類 投票融合 綜合 排序融合,融合 將多個模型得到的 結果concate之後再次進行模型 def weighted method test pre1,test pre2,w 1 2,1 ...
金融風控 Task5 模型融合
模型融合是比賽後期上分的重要手段,特別是多人組隊學習的比賽中,將不同隊友的模型進行融合,可能會收穫意想不到的效果哦,往往模型相差越大且模型表現都不錯的前提下,模型融合後結果會有大幅提公升,以下是模型融合的方式。平均 a.簡單平均法 b.加權平均法 投票 a.簡單投票法 b.加權投票法 綜合 a.排序...