集成模型一览
boosting思想
- 先构建,后结合
- 个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,然后使用组合策略,得到最终的集成模型,这就是boosting的思想
boosting回归例题
注:每一轮的训练集发生变化(标签变为了残差),即下一个模型要基于新训练集进行学习,学习完毕后,将所有模型简单叠加,就得到了最终模型
代码实现
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
df = pd.DataFrame([[1,5.56],[2,5.7],[3,5.91],[4,6.4],[5,6.8]
,[6,7.05],[7,8.9],[8,8.7],[9,9],[10,9.05]],columns=["x","y"])
M = [] # 存储决策树模型的数组
n_trees = 6 # 设置树的颗数
X = df.iloc[:,:-1] # 获取全部数据的X
Y = pd.Series(df['y'])
for i in range(n_trees):
model = DecisionTreeRegressor(max_depth=2) # 新建决策树模型
model.fit(X,Y)
# 将决策树模型加入数组
M.append(model)
Y_het = model.predict(X) # 输出模型预测值
Y = Y - Y_het
res = 0 # 初始化全零向量
for i in M: # 遍历模型数组
res += i.predict(X) # 将每个模型预测值叠加到res变量
# 输出最终对每个样本标签的预测值
print(res)
'''
# 效果
[5.56 5.7 5.91 6.4 6.8 7.05
8.91388889 8.73055556 8.95555556 9.05 ]
'''