posts - 3,  comments - 0,  trackbacks - 0

分类器提升精确度主要就是通过组合,综合多个分类器结果,对最终结果进行分类。

 

组合方法主要有三种:装袋(bagging),提升(boosting)和随即森林。

装袋和提升方法的步骤:

1,基于学习数据集产生若干训练集

2,使用训练集产生若干分类器

3,每个分类器进行预测,通过简单选举(装袋)或复杂选举(提升),判定最终结果。

 

如上图所示,对数据集D,取得D1~Dk个子集,然后用M1~Mk个不同分类器进行分类训练,然后用测试集(新元组)得到预测结果,

最后对这k个结果使用少数服从多数原则判定。如用99种分类方法得到55个结果是1,44个结果是0,则判定最终结果为1。

 

 

在提升(boosting)算法中,可以看成是装袋的改进,即可以理解为加权投票。这里具体介绍adaptive boosting算法

该算法基本和袋装一致,就是新引入一个权重的概念,首先,在(1)初始化中,权重1/d,即每个元组(Di)权重一致,在地(9)~(11)步中,

对权重进行不断刷新,这里我们可以发现,被正确分类的元组的权重是一直乘以一个小于1的数,即被正确分类的元组,在被选为训练集Di的可能性降低,

分类器会关注“难以分类”的数据。我们是基于一个“某种分类器可能对某种特定的数据分类效果好”的信念上。

补充:元组概念:元组就是最小数据单位,比如人是一个元组,有身高,体重等属性。

 

在对数据进行训练后,就是用组合分类器。

 

这里我们看到,有出现一个权重,分类器的投票的权重,这个权重是依照分类器的准确率(错误率越低,权重越高)。

 

接下来是介绍决策树的提升算法:随机森林。

 随机森林实际非常直观,就是用上文提到的随机装袋方法,对每个Di构建决策数,这里用CART算法建树(只需要计算Gini指数),不剪枝。

然后对让森林里所有的树进行投票即可。

 

附上R语言的随机森林事例:

1
2
3
4
//如果没有安装randomForest包,要先install.packages("randomForest")<br>library(randomForest)
model.forest = randomForest(Species~.,data=iris)
pre.forest=predict(model.forest,iris)
table(pre.forest,iris$Species)

  

正确率高达100%

而用单一的决策树

library(rpart)
model.tree=rpart(Species~.,data=iris,method = "class")
pre.tree=predict(model.tree,data=iris,type="class")
table(pre.tree,iris$Species)

发现有一部分数据会被判错。

 

ps:组合分类器的算法摘自韩佳炜《数据挖掘概念与技术》。

0
0
(请您对文章做出评价)
« 上一篇:因子分析——主成份算法实现补充
posted on 2015-07-06 20:25 阿咯琉斯 阅读(7) 评论(0) 编辑 收藏
<2015年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

昵称:阿咯琉斯
园龄:9天
粉丝:0
关注:0
摘要: 1.获取WIFI的SSID 引入库 ![][1] 2.获取本机IP [1]:http://p1.bqimg.com/567571/f2c4c05b794661b5.png 阅读全文
posted @ 2016-11-29 14:26 大煜 阅读(1649) 评论(0) 推荐(0) 编辑
摘要: 信号量( "Semphore" ) 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待 阅读全文
posted @ 2016-11-29 14:35 大煜 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 自从iOS7以后中新增了二维码扫描功能。因此可以在不借助第三方类库的情况下简单的写出二维码的扫描功能;原生的二维码扫描功能在AVFoundation框架下,所以在使用原生的二维码扫描功能时要先导入AVFoundation框架;然后添加以下属性:<pre <code @property (stron... 阅读全文
posted @ 2015-11-12 15:19 大煜 阅读(420) 评论(0) 推荐(0) 编辑
摘要: #自从iOS7以后中新增了二维码扫描功能。因此可以在不借助第三方类库的情况下简单的写出二维码的扫描功能;原生的二维码扫描功能在AVFoundation框架下,所以在使用原生的二维码扫描功能时要先导入AVFoundation框架;然后添加以下属性:@property (strong,nonatomic... 阅读全文
posted @ 2015-10-20 13:48 大煜 阅读(397) 评论(0) 推荐(0) 编辑
摘要: GCD(Grand-Central-Dispatch)是iOS中实现多线程中最常用,最好用的一种实现方法,管理起来也比较方便,因为iOS系统已经为我们做了很多的内部处理。我再用GCD管理多线程问题就显得容易了很多。二、GCD是纯C语言的,因此我们在编写GCD相关代码的时候,面对的函数,而不是方法。在... 阅读全文
posted @ 2015-08-25 23:33 大煜 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1.#include与#import功能一样,都是导入头文件2.区别是#include是单纯导入头文件,如果重复导入头文件,头文件就被导入多分3.#import在导入头文件之前会检查之前是否导入过,如果导入过,就不在编译。防止重复编译4.#import只能在OC中使用,#include既能在OC中使... 阅读全文
posted @ 2015-07-08 10:09 大煜 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 在iOS开发中,给一些控件设置颜色的时候,设置完不能立马看到颜色。必须要运行程序之后才能看到设置的颜色,如果颜色有偏差再回代码改参数,然后再运行看颜色很是麻烦。令人高兴得是Xcode有很多功能强大插件,使用起来非常方便。ColorSense-for-Xcode-master 就是一个非常好用的设置完... 阅读全文
posted @ 2015-07-06 21:13 大煜 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 从事iOS开发也有一段时间了,有好多的知识需要梳理,整合一下。今天在博客园刚刚开了博客,以后有学习心得会整理到此博客上,希望能与大家一起交流学习 阅读全文
posted @ 2015-07-06 20:54 大煜 阅读(117) 评论(0) 推荐(0) 编辑