R数据分析之AdaBoost算法

Rattle实现AdaBoost算法算法

Boosting算法是简单有效、易使用的建模方法。AdaBoost(自适应提高算法)一般被称做世界上现成的最好分类器。函数

Boosting算法使用其余的弱学习算法创建多个模型,对数据集中对结果影响较大的对象增长权重,一系列的模型被建立,而后调整那些影响分类的模型的对象权重值,实际上,模型的权重值从一个模型到另外一个模型震荡。最后的模型由一系列的模型组合而成,每一个模型的输出都根据相应的成绩被赋予权重值。咱们注意到,若是数据失效或者弱分类器过于复杂都会致使boosting失败。工具

Boosting有些相似于随机森林,创建一个总体的模型,最后的模型比弱分类器任何的组合要好。区别于随机森林的,要建完一棵再建另外一棵,而后基于以前的模型再细化。内容是创建完一个模型以后,任何错分类的样本都被升高权重(boosted)了。一个提高的样本本质上在数据集中会给予突出,使得单样本观测过多。目的是使下一个模型能更有效的针对此样本正确分类,若是尚未正确分,样本会再次被升高。性能

相比于随机森林,boosting算法更趋于多元化,任何模型的方法均可以被看成学习算法,决策树是常用的算法。学习

1.boosting概述对象

Boosting算法一般由一组决策树做为知识表达的基础形式,知识表达关键的地方是咱们合并决策的方法。对于boosting,使用权重成绩(score),每个模型都对应一个权重。blog

2.算法it

做为元学习,boosting使用一些简单的学习算法组成多重模型,boosting常常依赖弱学习算法--一般任何弱分类器均可以被使用。一系列的弱分类模型能够组成一个强分类器。io

一个弱分类实际上就比随机猜想的错误率稍好一点。可是组合起来将会有可观的分类效果。class

算法开始基于训练数据创建一个弱的初始化模型,而后训练数据中的错分样本将会被提高(权重增长),开始时全部的样本都会被赋予一个权重值,好比权值1。权重经过一个公式被提高,因此被错分的样本的权值将会被提高(大于1)。

使用这些被提高的样本再去创建新的模型,咱们能够将其做为问题样本,以后的模型将会重视这些错分样本(权值大的样本)。

咱们能够经过一个简单的例子展现一下过程。假设有10个样本,每一个样本有初始权重,0.1,咱们创建一个决策树,有四个错分的样本(样本7,8,9,10),咱们能够计算错分样本的权重之和0.4(一般咱们用e表示)。这是模型准确率的测量。e被用做更新权重的测量值,变换后的值a=0.5*log((1-e)/e),错分样本新的权重值将会是ea,咱们的例子当中,a=0.2027,样本7,8,9,10新的权重值将会是0.1*ea,(0.1225)

新的模型好比还有错分样本,1和8,它们如今的权重是0.1和0.1225,新的e是0.2225,新的a值为0.6275,因此样本1的权重变为0.1*ea,(0.1869)。样本8的权重为0.1225*ea(0.229).咱们能够看到如今样本8的权重进一步增长了,程序继续执行直到单一树的错误率大于50%。

3.实验实例

使用rattle创建模型

在model工具栏中有Boost选项,单独的决策树创建使用rpart.创建一个模型的结果信息打印到文本视区。使用weather数据集(在数据栏data点击执行按钮能够自动加载)。

文本视区开始输出的是创建模型的一些函数:

文本视区的Call基本信息中:

模型预测变量是RainTomorrow,data表示是基本数据信息,contol=参数直接传参给rpart(),iter=是创建树的数量。loss是指数损失函数,Iteration是要求创建的树的数目。

性能评估

混淆矩阵显示了模型的性能,列出了训练数据的预测正确状况。

train error 是模型训练的错误率=1-(214+29)/(214+1+12+29)  预测正确的样本/总样本

out-of-bag 方法的错误率和相应的迭代次数。

train.err1 train.kap1 
48 48

Variables actually used in tree construction:
[1] "Cloud3pm" "Cloud9am" "Evaporation" "Humidity3pm" 
[5] "Humidity9am" "MaxTemp" "MinTemp" "Pressure3pm" 
[9] "Pressure9am" "Rainfall" "Sunshine" "Temp3pm" 
[13] "Temp9am" "WindDir3pm" "WindDir9am" "WindGustDir" 
[17] "WindGustSpeed" "WindSpeed3pm" "WindSpeed9am"

Frequency of variables actually used:

WindDir9am WindGustDir Sunshine WindDir3pm Pressure3pm 
36 26 25 25 23 
Cloud3pm MaxTemp MinTemp Temp9am WindSpeed3pm 
12 8 6 6 6 
Evaporation WindGustSpeed Cloud9am Humidity3pm Humidity9am 
5 5 3 3 2 
Pressure9am Rainfall Temp3pm WindSpeed9am 
2 2 2 1

Time taken: 0.70 secs

Variables actually used in tree construction 是模型的决策树构造实际使用的属性。

Frequency of variables actually used是模型属性使用到的频次,从大到小列出。

最后是花费的时间0.7秒,由于数据量较小,因此花费的时间是不多的。

一旦模型创建完成,工具栏的error按钮将会绘制以下图所示的错误率图,随着更多的树加入模型,错误率不断下降,开始降低比较迅速,后来慢慢趋于平坦。

importance按钮绘制了模型重要的属性:

右下角的continue按钮能够继续增长树的数目进行训练模型。

相关文章
相关标签/搜索