統合の1.コンセプトモデル:最初の個々の学習のセットを生成して、モデルの結果を強化するために、それらを組み合わせた戦略を使用します。ズハウ・ジワとLiハン先生の本は、個々の学習者数の増加に伴って、統合エラー率が指数関数的に下降を示していることを証明している、最終的にはゼロになる傾向があります。そのため、統合モデルが広く使用されています。
2.統合戦略のモデル:
1.単純な加重統合:
回帰(分類確率):算術平均収束(算術平均)、幾何平均融合(幾何平均);
カテゴリー:投票(投票)
の統合:ソート融合(ランク平均)ログ融合
:ブレンド2.stacking /
その後、多層モデルの構築、および予測予測結果を使用してフィット。
(すでに、アダブースト、GBDTでxgboostで使用)3.boosting /袋詰め:
多くの木のアップグレード方法
ここで回帰\分類確率-融合:
1との間の融合)の単純な加重平均モデル
#回归/分类概率-融合
# 1.简单加权平均,结果直接融合
## 生成一些简单的样本数据,test_prei 代表第i个模型的预测值
test_pre1 = [1.2, 3.2, 2.1, 6.2]
test_pre2 = [0.9, 3.1, 2.0, 5.9]
test_pre3 = [1.1, 2.9, 2.2, 6.0]
# y_test_true 代表第模型的真实值
y_test_true = [1, 3, 2, 6]
import numpy as np
import pandas as pd
## 定义结果的加权平均函数
def Weighted_method(test_pre1,test_pre2,test_pre3,w=[1/3,1/3,1/3]):
Weighted_result = w[0]*pd.Series(test_pre1)+w[1]*pd.Series(test_pre2)+w[2]*pd.Series(test_pre3)
return Weighted_result
from sklearn.metrics import mean_absolute_error as MAE
# 各模型的预测结果计算MAE
print('Pred1 MAE:',MAE(y_test_true, test_pre1))
print('Pred2 MAE:',MAE(y_test_true, test_pre2))
print('Pred3 MAE:',MAE(y_test_true, test_pre3))
Pred1 THERE:0.1750000000000001
Pred2 THERE:0.07499999999999993
Pred3 THERE:0.10000000000000009
## 根据加权计算MAE
w = [0.3,0.4,0.3] # 定义比重权值
Weighted_pre = Weighted_method(test_pre1,test_pre2,test_pre3,w)
print('Weighted_pre MAE:',MAE(y_test_true, Weighted_pre))
Weighted_pre MAE:0.05750000000000027は
重量に対する以前の結果の結果で見つけることができますが、我々は、単純な加重平均を呼んで、持ち上げられます。また、このような平均値の平均値、中央値、平均などの一部の特殊な形態があります。
2)スタッキング融合(リターン):
from sklearn import linear_model
def Stacking_method(train_reg1,train_reg2,train_reg3,y_train_true,test_pre1,test_pre2,test_pre3,model_L2= linear_model.LinearRegression()):
model_L2.fit(pd.concat([pd.Series(train_reg1),pd.Series(train_reg2),pd.Series(train_reg3)],axis=1).values,y_train_true)
Stacking_result = model_L2.predict(pd.concat([pd.Series(test_pre1),pd.Series(test_pre2),pd.Series(test_pre3)],axis=1).values)
return Stacking_result
## 生成一些简单的样本数据,test_prei 代表第i个模型的预测值
train_reg1 = [3.2, 8.2, 9.1, 5.2]
train_reg2 = [2.9, 8.1, 9.0, 4.9]
train_reg3 = [3.1, 7.9, 9.2, 5.0]
# y_test_true 代表第模型的真实值
y_train_true = [3, 8, 9, 5]
test_pre1 = [1.2, 3.2, 2.1, 6.2]
test_pre2 = [0.9, 3.1, 2.0, 5.9]
test_pre3 = [1.1, 2.9, 2.2, 6.0]
# y_test_true 代表第模型的真实值
y_test_true = [1, 3, 2, 6]
model_L2= linear_model.LinearRegression()
Stacking_pre = Stacking_method(train_reg1,train_reg2,train_reg3,y_train_true,
test_pre1,test_pre2,test_pre3,model_L2)
print('Stacking_pre MAE:',metrics.mean_absolute_error(y_test_true, Stacking_pre))
Stacking_pre MAE:0.0421348314607は
、我々はノートに必要な前モデルに比べてさらに改善された結果を、見つけることができますがその、スタッキングモデルのために選択された第二の層が複雑すぎるべきではありませんが、これは、トレーニングセットにオーバーフィットモデルにつながりますテストセットにそれはそうと、良い結果を達成することはできません。
最後に、を教えてRMSE、MSE、MAE、SDの概念。
- RMSE(二乗平均平方根誤差)根平均二乗誤差の
標準の測定値の結果を予測するために使用されるモデルを機械学習などの観測値との偏差の真の値との間の尺度。
- MSE(平均二乗誤差)は、平均二乗誤差
MSEは、それほど頻繁に線形回帰機能喪失として使用差の二乗と真値の予測値と、次に導出を容易にするために、正方形の形で、平均、です。
- MAE(平均絶対誤差)、平均絶対誤差は、
平均絶対誤差では、より良好な予測誤差の実際の状況を反映することができます。
- SD(標準偏差)標準差動
分散度を測定するためのデータのセットに対する算術平均分散。