目录html
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython
提高树(boosting tree)是以分类树或回归树做为弱学习器的强学习器。算法
提高树模型用的是加法模型,算法用的是前向分步算法,弱学习器是决策树的集成学习方法。数据结构
假设Nick的年龄是25岁。机器学习
把Nick的年龄设置成初始值0岁去学习,若是第1棵决策树预测Nick的年龄是12岁,即残差值为\(25-12=13\)函数
把Nick的年龄设置成残差值3岁去学习……学习
提高树模型能够表示为决策树的加法模型
\[ f_M(x)=\sum_{i=1}^MT(x;\theta_m) \]
其中\(T(x;\theta_m)\)表示决策树;\(\theta_m\)表示决策树的参数;\(M\)为树的个数。网站
提高树模型使用的是前向分布算法,即假设初始提高树\(f_0(x)=0\),第\(m\)步的模型是
\[ f_m(x)=f_{m-1}(x)+T(x;\theta_m) \]
其中\(f_{m-1}(x)\)为当前模型,经过经验风险极小化肯定一下课决策树的参数\(\theta_m\)
\[ \hat{\theta_m}=\underbrace{arg\,min}_{\theta_m}\sum_{i=1}^mL(y_i,f_{m-1}(x_i)+T(x_i;\theta_m)) \]人工智能
AdaBoost算法使用的是前向分步算法,利用前一轮弱学习器的偏差率更新训练数据的权重;提高树使用的也是前向分步算法,可是提高树如其名,他的弱学习器只能使用决策树,通常使用CART树,而后他的迭代思路也与AdaBoost算法不一样spa
假设提高树在\(t-1\)轮的强学习器为\(f_{t-1}(x)\),目标函数是
\[ L(y,f_{m-1}(x)) \]
在第\(t\)轮的目标则是找到一个弱学习器(决策树)\(h_t(x)\),最小化第\(t\)轮的目标函数
\[ L(y,f_m(x))=L(y_i,f_{m-1}(x)+T(x;\theta_m)) \]
可是当AdaBoost算法中的弱学习器为二类分类树的时候,其实AdaBoost就是提高树,便可以说分类提高树算法是AdaBoost算法的一种特殊状况。
有\(m\)个数据\(n\)个特征的训练数据集\(T=\{(x_,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\),若是将输入空间划分为\(k\)互不相交的区域\(R_1,R_2,\cdots,R_j\),而且在每一个区域上肯定输出的常量\(c_j\),决策树能够表示为
\[ T(x;\theta)=\sum_{j=1}^Jc_jI(x\in{R_j}) \]
其中,\(\theta=\{(R_1,c_1),(R_2,c_2),\cdots,(R_J,c_J)\}表示树的区域划分和各区域上的常数,\)J$是回归树的叶节点个数。
\[ \begin{align} & f_0(x)=0 \\ & f_1(x)=f_0(x)+T(x;\theta_1) \\ & \cdots \\ & f_m(x)=f_{m-1}(x)+T(x,\theta_m),m=1,2,\cdots,M \\ & f_M(x)=\sum_{m=1}^MT(x;\theta_m) \end{align} \]
在第\(m\)步\(f_m(x)=f_{m-1}(x)+T(x,\theta_m)\)的时候,给定了\(f_{m-1}(x)\),须要求解第\(m\)棵的参数\(\hat{\theta_m}\)
\[ \hat{\theta_m} = \underbrace{arg\,min}_{\theta_m}\sum_{i=1}^mL(y_i,f_{m-1}(x_i)+T(x_i;\theta_m)) \]
对于第\(m\)棵树的参数\(\hat{\theta_m}\),能够采用平方偏差损失函数\(L(y,f(x))=(y-f(x))^2\)求解,树的损失变为
\[ \begin{align} L(y,f_{m-1}(x)+T(x;\theta_m)) & = [y-f_{m-1}(x)-T(x;\theta_m)]^2 \\ & = [r-T(x;\theta_m)]^2 \end{align} \]
其中\(r=y-f_{m-1}(x)\)是当前模型拟合数据的残差。
对于回归提高树,只需简单地拟合当前模型的残差。
有\(m\)个数据\(n\)个特征的训练数据集\(T=\{(x_,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\)。
回归提高树\(f_M(x)\)。
提高树属于Boosting系列算法,他和AdaBoost有类似之处的,而且当AdaBoost算法中的弱学习器为二类分类树的时候,梯度提高树就是一种特殊的AdaBoost算法。
因为提高树是由简单的残差计算获得的,因此在某种程度上来讲,提高树是有必定缺陷的,为了解决这个问题,通常会采用梯度提高树来弥补。