机器学习算法总结_决策树(含代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章 提升算法

6.1 引言

当做重要决定时,大家可能都会考虑吸取多个专家而不是一个人的意见。机器学习处理问题时也是如此,这就是提升算法背后的思路,提升算法是对其它算法进行组合的一种方式,接下来我们将对提升算法,以及提升算法中最流行的一个算法AdaBoost 算法进行介绍,并对提升树以及简单的基于单层决策树的Adaboost 算法进行讨论。

提升方法是一种常用的统计学习方法,应用广泛且有效,在分类问题上,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类性能。一个分类器在训练数据上能够获得比其他分类器更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据,这时就称为该分类器出现了过拟合(overfitting )。提升算法能够有效地防止过拟合现象的发生。

图1 过拟合现象示意图

提升算法是一种为了拟合自适应基函数模型(adaptive basis-function models, ABM )的贪心算法,自适应基函数模型可表达为:

()()01M

m m m f X w w X φ==+∑ (6-1)

其中,m φ是一种分类算法或者回归算法,被称为弱分类器(weak learner )或者基分类器(base learner )。也可以表达为如下形式:

1()(;)M

m m m f X b X βγ==∑ (6-2)

提升算法的目的是对以下公式的优化:

1

min (,())N

i i f

i L y f x =∑ (6-3)

其中,ˆ(,)L y y 称为损失函数(loss function ),f 是ABM 模型。不同的损失函数有着不同

的性质,对应不同的提升算法,如表1所示。

将(2)式代入(3)式可得如下表达式:

,11min ,(;)m m

N

M

i m i m i m L y x βγβφγ==⎛⎫

⎪⎝⎭

∑∑ (6-4) 因为学习的是加法模型,如果能够从前向后,每一步只学习一个基分类器及其系数,那

么就可以简化优化的复杂度,具体推导过程如下所示:

(),1

min ,(;)m m

N

i m i m i L y x βγβφγ=∑ (6-5)

表1 常见损失函数以及相应提升算法

名称 损失函数

导数

*f

算法 平方误差 21

(())2

i i y f x - ()i i y f x -

[]|i y x E

L2Boosting 绝对误差 ()i i y f x -

sgn(())

i i y f x -

(|)i median y x

Gradient boosting 指数损失 ()

exp ()i i y f x -

()

exp ()i i i y y f x --

1

log 21i i ππ- AdaBoost 对数损失

()log 1i i

y f e -+

i i y π-

1

log 21i i

ππ-

LogitBoost

01

()arg min (,(;))N

i i i f X L y f x γ

γ==∑ (6-6)

1,1

(,)argmin (,()(;))N

m m i m i i i L y f x x βγ

βγβφγ-==+∑ (6-7)

1()()(;)m m m m f X f X X βφγ-=+ (6-8)

算法不进行回溯对参数进行修改,因此该算法称为前向分步算法。

6.2 AdaBoost 算法

AdaBoost (Adaptive boosting )算法,也称为自适应提升算法。训练数据中的每个样本,并赋予其一个权重,这些权重构成向量D 。一开始,这些权重都初始化为相等值,首先

在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。再次训练分类器的过程中,将会重新调整每个样本的权重,其中上一次分对的样本权重会降低,而上一次分错的样本权重会提高。

图2 AdaBoost 算法示意图

给定一个二类分类的训练数据集1122{(,),(,),,(,)}N N T x y x y x y =,其中,每个样本点由实例

与标记组成,实例n i x R χ∈⊆,标记{1,1}i y Y ∈=-+,χ是实例空间,Y 是标记集合。损失函数可以表达为:

1,1

1

()exp[(()())]exp(())N N

m i m i i i m i i i i L y f x x w y x φβφβφ-===-+=-∑∑ (6-9)

其中,,1exp(())i m i m i w y f x --,{}1,1i y ∈-+,则可以有如下推导:

()

,,,,()

()

1

1

()(())i i i i N N

m i m i m i m i i i m

y x y x i i L e w e w e e w I y x e w β

β

ββ

βφ

φ

φφ---=≠===+=-≠+∑∑∑∑ (6-10)

其中,11

log

2m m m

err err β-=,,1,1(())

N

i m i m i i m N i m

i w I y x err w φ==≠=∑∑,m

err 称为分类误差率。则可以得到第

m 个分类器:

1()()()m m m f X f X X βφ-=+ (6-11)

计算第m+1个分类器的参数可以通过下式得到:

()(2(())1)2(()),1,,,m i m i m i m i m i m i m y x I y x I y x i m i m i m i m w w e w e w e e βφβφβφβ-≠-≠-+=== (6-12)

总结起来Adaboost 算法主要有以下7步。 1 1i w N = 2 for 1:m M =do

3 Fit a classifier ()m X φ to the training set using weights w

4 Compute ,11(())

N

i m i m i i m N i

i w I y x err w φ==≠=∑∑

5 Compute 1log (2)m

m m m m

err err ααβ-== 6 Set (())

m i m i I y x i i w w e α

φ≠←

相关文档
最新文档