`
kavy
  • 浏览: 888642 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

机器学习之——模型组合(Model Combining)之Boosting与Gradient Boosting

 
阅读更多

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/02/machine-learning-boosting-and-gradient-boosting.html

 

  本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gmail.com

 

前言:

    本来上一章的结尾提到,准备写写线性分类的问题,文章都已经写得差不多了,但是突然听说最近Team准备做一套分布式的分类器,可能会使用Random Forest来做,下了几篇论文看了看,简单的random forest还比较容易弄懂,复杂一点的还会与boosting等算法结合(参见iccv09),对于boosting也不甚了解,所以临时抱佛脚的看了看。说起boosting,强哥之前实现过一套Gradient Boosting Decision Tree(GBDT)算法,正好参考一下。

    最近看的一些论文中发现了模型组合的好处,比如GBDT或者rf,都是将简单的模型组合起来,效果比单个更复杂的模型好。组合的方式很多,随机化(比如random forest),Boosting(比如GBDT)都是其中典型的方法,今天主要谈谈Gradient Boosting方法(这个与传统的Boosting还有一些不同)的一些数学基础,有了这个数学基础,上面的应用可以看Freidman的Gradient Boosting Machine。

    本文要求读者学过基本的大学数学,另外对分类、回归等基本的机器学习概念了解。

    本文主要参考资料是prml与Gradient Boosting Machine。

 

Boosting方法:

    Boosting这其实思想相当的简单,大概是,对一份数据,建立M个模型(比如分类),一般这种模型比较简单,称为弱分类器(weak learner)每次分类都将上一次分错的数据权重提高一点再进行分类,这样最终得到的分类器在测试数据与训练数据上都可以得到比较好的成绩。

   image

    上图(图片来自prml p660)就是一个Boosting的过程,绿色的线表示目前取得的模型(模型是由前m次得到的模型合并得到的),虚线表示当前这次模型。每次分类的时候,会更关注分错的数据,上图中,红色和蓝色的点就是数据,点越大表示权重越高,看看右下角的图片,当m=150的时候,获取的模型已经几乎能够将红色和蓝色的点区分开了。

    Boosting可以用下面的公式来表示:image

    训练集中一共有n个点,我们可以为里面的每一个点赋上一个权重Wi(0 <= i < n),表示这个点的重要程度,通过依次训练模型的过程,我们对点的权重进行修正,如果分类正确了,权重降低,如果分类错了,则权重提高,初始的时候,权重都是一样的。上图中绿色的线就是表示依次训练模型,可以想象得到,程序越往后执行,训练出的模型就越会在意那些容易分错(权重高)的点。当全部的程序执行完后,会得到M个模型,分别对应上图的y1(x)…yM(x),通过加权的方式组合成一个最终的模型YM(x)。

    我觉得Boosting更像是一个人学习的过程,开始学一样东西的时候,会去做一些习题,但是常常连一些简单的题目都会弄错,但是越到后面,简单的题目已经难不倒他了,就会去做更复杂的题目,等到他做了很多的题目后,不管是难题还是简单的题都可以解决掉了。

 

Gradient Boosting方法:

    其实Boosting更像是一种思想,Gradient Boosting是一种Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。这句话有一点拗口,损失函数(loss function)描述的是模型的不靠谱程度,损失函数越大,则说明模型越容易出错(其实这里有一个方差、偏差均衡的问题,但是这里就假设损失函数越大,模型越容易出错)。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度(Gradient)的方向上下降。

    下面的内容就是用数学的方式来描述Gradient Boosting,数学上不算太复杂,只要潜下心来看就能看懂:)

    可加的参数的梯度表示:

    假设我们的模型能够用下面的函数来表示,P表示参数,可能有多个参数组成,P = {p0,p1,p2….},F(x;P)表示以P为参数的x的函数,也就是我们的预测函数。我们的模型是由多个模型加起来的,β表示每个模型的权重,α表示模型里面的参数。为了优化F,我们就可以优化{β,α}也就是P。

image

    我们还是用P来表示模型的参数,可以得到,Φ(P)表示P的likelihood函数,也就是模型F(x;P)的loss函数,Φ(P)=…后面的一块看起来很复杂,只要理解成是一个损失函数就行了,不要被吓跑了。

image   既然模型(F(x;P))是可加的,对于参数P,我们也可以得到下面的式子:image   这样优化P的过程,就可以是一个梯度下降的过程了,假设当前已经得到了m-1个模型,想要得到第m个模型的时候,我们首先对前m-1个模型求梯度。得到最快下降的方向,gm就是最快下降的方向。

image    这里有一个很重要的假设,对于求出的前m-1个模型,我们认为是已知的了,不要去改变它,而我们的目标是放在之后的模型建立上。就像做事情的时候,之前做错的事就没有后悔药吃了,只有努力在之后的事情上别犯错:

image    我们得到的新的模型就是,它就在P似然函数的梯度方向。ρ是在梯度方向上下降的距离。

image    我们最终可以通过优化下面的式子来得到最优的ρ:

image

    可加的函数的梯度表示:

    上面通过参数P的可加性,得到了参数P的似然函数的梯度下降的方法。我们可以将参数P的可加性推广到函数空间,我们可以得到下面的函数,此处的fi(x)类似于上面的h(x;α),因为作者的文献中这样使用,我这里就用作者的表达方法:

image    同样,我们可以得到函数F(x)的梯度下降方向g(x)

image    最终可以得到第m个模型fm(x)的表达式:

image

 

    通用的Gradient Descent Boosting的框架:

   下面我将推导一下Gradient Descent方法的通用形式,之前讨论过的:

image    对于模型的参数{β,α},我们可以用下面的式子来进行表示,这个式子的意思是,对于N个样本点(xi,yi)计算其在模型F(x;α,β)下的损失函数,最优的{α,β}就是能够使得这个损失函数最小的{α,β}。image 表示两个m维的参数:

image    写成梯度下降的方式就是下面的形式,也就是我们将要得到的模型fm(x)的参数{αm,βm}能够使得fm的方向是之前得到的模型Fm-1(x)的损失函数下降最快的方向:

image

    对于每一个数据点xi都可以得到一个gm(xi),最终我们可以得到一个完整梯度下降方向

image

image    为了使得fm(x)能够在gm(x)的方向上,我们可以优化下面的式子得到,可以使用最小二乘法:

image    得到了α的基础上,然后可以得到βm。  image    最终合并到模型中:

image

    算法的流程图如下

image     之后,作者还说了这个算法在其他的地方的推广,其中,Multi-class logistic regression and classification就是GBDT的一种实现,可以看看,流程图跟上面的算法类似的。这里不打算继续写下去,再写下去就成论文翻译了,请参考文章:Greedy function Approximation – A Gradient Boosting Machine,作者Freidman。

 

总结:

    本文主要谈了谈Boosting与Gradient Boosting的方法,Boosting主要是一种思想,表示“知错就改”。而Gradient Boosting是在这个思想下的一种函数(也可以说是模型)的优化的方法,首先将函数分解为可加的形式(其实所有的函数都是可加的,只是是否好放在这个框架中,以及最终的效果如何)。然后进行m次迭代,通过使得损失函数在梯度方向上减少,最终得到一个优秀的模型。值得一提的是,每次模型在梯度方向上的减少的部分,可以认为是一个“小”的或者“弱”的模型,最终我们会通过加权(也就是每次在梯度方向上下降的距离)的方式将这些“弱”的模型合并起来,形成一个更好的模型。

    有了这个Gradient Descent这个基础,还可以做很多的事情。也在机器学习的道路上更进一步了:)

 

分享到:
评论

相关推荐

    An Efficient Boosting Algorithm for Combining Preferences.pdf

    Boosting是一种迭代方法,旨在组合多个弱学习器以形成一个强学习器。在RankBoost中,每个弱学习器可以是一个简单的偏好或排名函数,而最终的目标是构建一个能够准确预测对象间相对顺序的强学习器。 - **初始化**:...

    Gurobi 机器学习讲座第一部分

    文件“Combining Machine Learning and Optimization for Better Decisions.mp4”可能是一个视频讲座,详细解释了如何将机器学习模型的预测能力与优化模型的决策能力结合起来。这种结合通常涉及到嵌入机器学习模型到...

    机器学习技法(台大-林轩田)数据集

    机器学习技法(台大-林轩田)数据集 Embedding Numerous Features [嵌入大量的特徵] -- Linear Support Vector Machine [線性支持向量機] -- Dual Support Vector Machine [對偶支持向量機] -- Kernel Support Vector ...

    国外机器学习和模式识别经典教材PRML 习题解答

    最后,第十四章“Combining Models”讲述了模型组合技术,即如何有效地结合多个模型以提高预测和识别性能。 由于《国外机器学习和模式识别经典教材PRML 习题解答》是一份辅导资源,它被设计为仅供教学使用,旨在...

    Combining Pattern Classifiers Methods and Algorithms

    Kuncheva的《Combining Pattern Classifiers Methods and Algorithms》是一本在机器学习领域中关于模式分类器集成和组合方法的专业书籍,它提供了丰富的理论知识和实践指导,并强调了在实际应用中对这些知识的应用...

    机器学习与数据同化相结合从噪声部分观测预测动力系统_Combining machine learning and data as

    本文“机器学习与数据同化相结合从噪声部分观测预测动力系统”探讨了一种新颖的方法,将机器学习和数据同化技术整合起来,用于从不完整且带有噪声的数据中预测动力系统的动态行为。该研究由悉尼大学的Georg A. ...

    Combining 3D Morphable Models: A Large scale Face-and-Head Model

    - **构建新的面部与头部模型**:作者结合了LSFM(Large Scale Facial Model)的面部细节和LYHM(York Head Model)的全头部模型,创造了一个既包含面部细节又涵盖整个头部的新模型。 - **性能评估**:结果显示,该...

    Combining Pattern Classifie Methods and Algorithms(组合模式分类器:方法和算法)

    ### 组合模式分类器:方法与算法 #### 概述 《Combining Pattern Classifiers: Methods and Algorithms》是一本全面介绍分类器组合方法的专著。本书由Ludmila I. Kuncheva撰写,并由John Wiley & Sons, Inc.出版。...

    Data-Science-and-Economics:学习笔记-机器学习与经济学

    学习笔记——机器学习与经济学 计量经济学与R语言 15时间序列预测 16混合OLS、随机效应和固定效应估计 17DID估计 统计学 1处理缺失数据的高级方法 Machine Learning and Causal Inference( Python & R ) python...

    台湾大学林轩田机器学习技法

    台湾大学林轩田机器学习技法所有课程的slides和视频,包括三方面, Embedding Numerous Features: Kernel Models Combining Predictive Features: Aggregation Models Distilling Implicit Features: Extraction ...

    基于灰色BP神经网络组合模型的深基坑沉降预测.pdf

    "基于灰色BP神经网络组合模型的深基坑沉降预测" titre overview: This paper proposes a novel approach to predicting the settlement of deep foundation pits using a combination of gray BP neural network ...

    PRML课后答案

    13. 模型组合(Combining Models):模型组合是指将不同的模型进行结合,以期望获得比单一模型更好的性能。组合模型的方式包括集成学习、模型融合等,这些方法能够提升模型预测的准确性和稳定性。 从以上知识点中...

    AdaBoost-Freund&Schapire

    1. **Arcing**(Adaptive Resampling and Combining):这是一种适应性重采样和组合的技术,通过重新加权或选择数据以改善分类性能。 2. **Bagging**(Bootstrap Aggregation):这是一种通过自举采样创建多个训练集...

    论文研究-Combining Extra Information into Topic Models.pdf

    与之相比,概率主题模型更具优势。主题模型通过假设文本结构并结合统计工具,能够基于纯粹的数据驱动,自动地从大型文本集合中发现高级知识。 人类在语义判断方面表现出色,但在处理大量文本集合时,面临着计算速度...

    Combining Explicit and Implicit Feature Interactions for Recommender Systems.pdf

    本文的标题《Combining Explicit and Implicit Feature Interactions for Recommender Systems.pdf》和描述表明,文章主题聚焦于推荐系统领域,并且探讨了如何结合显式和隐式的特征交互。这方面的研究对于理解和改善...

    Combining_Symbolic_Execution_and_Model_Checking_for_Data_Flow_Testing.pdf

    Combining Symbolic Execution and Model Checking for Data Flow Testing 是一篇发表在ICSE‘15会议上的论文 。本文提出了通过符号执行和模型测试以提高动态数据流分析代码覆盖率的方法。 Overview Data Flow ...

Global site tag (gtag.js) - Google Analytics