机器学习笔记_ 提升
来源:互联网 发布:自学java知乎 编辑:程序博客网 时间:2024/05/16 23:43
- 提升:每一步产生一个弱的预测模型(如决策树),并加权到总的模型中
- 每一步弱模型的的生成都是依据损失函数的梯度下降方向—梯度提升
提升算法
给定输入向量和输出变量
(x1,y1)...(xn,yn) , 目标是找到近似函数F′(x→) 使得损失函数L(y,F(x)) 的损失值最小最优函数
F∗(x→)=argminFE(x,y)[L(x,F(x→)] F(x)是一族基函数
fi(x)的加权和 F(x→)=ΣMi=1γifi(x)+const
提升算法推导
需找最优解
F(x) , 使得损失函数在训练集上的期望最小。首先,给定常函数
F0(x) F0(x→)=argminγΣni=1L(yi,γ) 贪心算法
Fm(x→)=Fm−1(x→)+argminf∈HΣni=1L(yi,Fm−1(xi→)+f(xi→))
梯度近似
使用梯度下降的方法近似计算
给定模型为常数
F0(x→)=argminγΣni=1L(yi,γ) 对于m=1到M
a 计算伪残差(用梯度来代替正真的残差:真正残差=
ym−Fm−1(x) )rim=[∂L(yi,F(xi→))∂F(xi→)]F(x→)=Fm−1(x→) b 使用数据
(xi→,rim)ni=1 计算残差的基函数fm(x) c 计算步长
更新模型
Fm(x→)=Fm−1(x→)−rmfm(xi→)
Adaboost
- 采用指数损失的方式提升
boosting
PAC
http://blog.pluskid.org/?p=821
http://www.cnblogs.com/HappyAngel/p/3495804.html
- 概率近似正确
- 一个概念如果存在一个多项式的学习算法能够学习它,并且正确率高,则为强可学习的。
- 一个概念如果存在一个多项式的学习算法能够学习它,并且正确率仅比随机猜测高,则为弱学习的。
- 在PAC学习框架下,强可学习和弱可学习是充分必要条件
Adaboost提升算法
- 每一轮如何改变训练数据的权值或者概率分布:提高错误分类的样本的权值
- 将弱分类器组合成强分类器:加权多数表决
算法
输入:训练集
T=(x1,y1),(x2,y2),...,(xN,yN) ;y∈−1,+1 ;
弱分类算法输出:最终的分类器
(1) 初始化训练数据集的权值分布
D1=(w11,...w1i,...w1N),w1i=1N,i=1,2,...,N (2) 对m=1,2,….M
使用具有权值分布的Dm得到基本分类器 ;Gm(x):X−>{−1,+1} 计算Gm(x)在训练集上的分类误差率 ;em=P(Gm(xi)≠yi)=ΣNi=1wmiI(Gm(xi)≠yi) 计算Gm(x)的系数 ;αm=12log1−emem - 更新训练数据的权值
Dm+1=(wm=1,1,...,wm+i,i,...wm+1,N) wm+1,i=wmiZmexp(−αmyiGm(xi)) Zm 是规范化因子Zm=ΣNi=1wmiexp(−αmyiGm(xi))
(3) 基础分类器的线性组合
f(x=ΣMm=1αmGm(x)) (4) 最终分类器
G(x)=sign(f(x))
Adaboost
- 加法模型
- 损失函数为指数函数
- 学习算法是前向分布算法时的二分类算法
- 机器学习笔记_ 提升
- 王小草【机器学习】笔记--提升
- 王小草【机器学习】笔记--提升
- 【机器学习】笔记--梯度提升(Gradient boosting)
- 【机器学习】笔记--梯度提升(Gradient boosting)
- 机器学习笔记_ 决策树
- 机器学习笔记_ SVM
- 机器学习笔记_逻辑回归
- 机器学习笔记_ 最大熵模型
- 机器学习笔记_ 降维_2:PCA
- 机器学习笔记_ 降维_3:SVD
- 机器学习笔记_ 聚类_2:谱聚类
- 吴恩达机器学习笔记_第一周
- 吴恩达机器学习笔记_第二周
- 吴恩达机器学习笔记_第三周
- 吴恩达机器学习笔记_第四周
- 吴恩达机器学习笔记_第五周
- 机器学习之提升
- web service的定义
- Android属性动画完全解析(上),初识属性动画的基本用法
- VS2015配置OpenCV3.0
- 微信公众号开发系列-获取微信OpenID
- 安装压缩版mysql5.6.25
- 机器学习笔记_ 提升
- Maven环境配置及pom.xml文件遇到的问题
- linux 下Python调用C模块
- [游戏与人生]推荐几款老单机游戏
- 给无符号数赋值负数(有符号数)的理解(unsigned\signedf)
- UIVie和CALayer属性对应关系
- IOS UItextfield 和 UItextView 键盘隐藏
- 使用ThreadLocal编写HibernateUtil工具类
- swift笔记之新项目中navigationController的创建和初始化