机器学习 基本算法 (5 (adaboost、 Gradient boost

来源:互联网 发布:清理恶意软件 编辑:程序博客网 时间:2024/06/08 06:51

adaboost

boosting: 增强的 adaboost 适应的增强
适应的增强 就是给你好多个弱的方案,让你经过不断地适应增强 得到一个新的好方案。
就是让孩童来讨论一个问题,比如什么是太阳 一人只能说一条
那就有很多说法 太阳是圆的,发光的 等等
但每个人说法都是片面的 弱的
adaboost的所求目标
这里写图片描述
这里 我们要得个每个 弱方案的权重 和弱方案

对第一个方案,给每一个样本都赋予一个权重 w,这些权重变成了D向量
用任意的弱方法 做分类。
因为是弱方法,肯定会有很多错误。错误率 e e=
好了 这个弱方案的权重就订下来了 做对越多 权重越高
(但弱方案 权重高也高不到哪去,这是为了防止 被独占了发言权)

权重随你定 这边用 12ln1ee

好 那下一个方案也可以出来了 什么叫自适应 就是在原来的地方 自己调整
把那些做错的给注明出来 对的先不看了 (就是 增加做错的权重)
这个方法也很多
这边用 做对的 Dt+1i=DtieaSum(D)
做错的 Dt+1i=DtieaSum(D)

好了 新的方案也找出来了 开始进行下一轮讨论

直到完成目标

Gradient boost

在分类问题中adaboost可以很有作用 但是如果是回归的问题 就不能用adaboost这样来做
Gradient boost 梯度优化 既然不能直接优化 ,我改用梯度不就行了,梯度下降来拟合数据

adaboost 每轮直接定权重 Gradient boost 计算残差(实值和计算值的差) 梯度逼近残差
转化成数学计算 就是算下面这个
这里写图片描述
找一个最优的属性划分,使得两侧的真实值与各自平均值的差的平方和最小。然后求每个值的余数,进行下一次划分。
然后再确定权重

这里写图片描述

值得注意的是 求出g权重后 最后还要对η最优化 ,不过η只需要求导即可。

Gradient boost就是每次都是整体取 最优 而adaboost是把当前次的做到最好

代码

#Import Libraryfrom sklearn.ensemble import GradientBoostingClassifier# X  Y for training data set and x_test_dataset# Create Gradient Boosting Classifier objectmodel= GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)model.fit(X, y)#Predict Outputpredicted= model.predict(x_test)
0 0
原创粉丝点击