收藏本站

人工智能培训机构,上海涛德,算法工程师,数据科学家高端培训机构-上海涛德

查看: 3218|回复: 0

人工智能机器学习培训技术系列:集成学习,随机森林算法

[复制链接]

51

主题

0

好友

681

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-10 15:01:36 |显示全部楼层
集成学习、Bagging 、随机森林

作者:涛德人工智能培训原创

Bagging

Bagging(装袋法)也叫Bootstrap aggregation(自助法汇聚),是常见的多用于树学习的算法。Bagging是一种集成算法,它的思想是通过多个弱的算法模型的组合成一个新个模型,最终提升准确度的方法。



Bagging训练多轮每一轮得到一颗树,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列 f1,⋯ ⋯fk ,最终的预测函数F(bag)对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。



F(bag)=1/k * Sum(f1,⋯ ⋯fk)



OOB(out of bag)袋外

OOB是指由于Bagging训练的样本是随机采样,这样对于每一颗树总有一些样本没有用于这颗树的训练,这些样本就叫OOB样本,在训练树的时候,Bagging可以对OOB样本进行验证获得平均误差平方和(回归问题),或者分类错误率(分类问题)。





Bagging的改进随机森林

随机森林是和Bagging一样训练多颗树。它在Bagging的基础上主要的改进主要在于它和特征随机选择结合起来,它会对自变量做采样,它每次只采用部分自变量。默认每次取变量总数的平方根个变量。例如你有x1……X13个变量,取13的平方根,也就是4个变量来构造一颗树。



随机森林的思想在于如果采用传统的Bagging ,大部分树的顶部分裂自变量很可能是同一个变量,也就是Bagging的每颗树都很相似。



而随机森林每颗树的自变量可能都不一样,它强迫决策树在分裂时只考虑自变量的子集,好处是就是大幅度降低了过拟合,同时也在样本有很多维度时,可以降低维数灾难。

R语言实现随机森林预测手写光学字符

randomForest 主要参数包括训练数据和标签 X ,Y 。验证数据和标签 xtest  ytest。ntree树的颗数。mtry 为每颗树随机选择的特征数,默认为sqrt(p),p是特征总数。如果此模型未来用用于预测需要设置keep.forest=TRUE参数。



randomForest(x, y,  xtest, ytest, ntree, mtry)



library(randomForest)



letters <- read.csv("D:\\letterdata.csv")

str(letters)



# 拆分训练及测试数据

letters_train <- letters[1:16000, ]

letters_test  <- letters[16001:20000, ]



rfmodel<-randomForest(x=letters_train[,-1] ,y=letters_train[,1],xtest = letters_test[,-1],ytest = letters_test[,1],ntree = 100,mtry = 6, keep.forest=TRUE)





输出:可以看到随机森林在手写数字识别的OOB正确率达到惊人的95.6%,对于验证集正确率更是达到了 96.3%,机会没有看到过拟合问题。



> rfmodel

……

OOB estimate of  error rate: 4.37%

Test set error rate: 3.75%

…..







预测新的数据:

yy=predict(rfmodel,new_data)





您需要登录后才可以回帖 登录 | 立即注册

<点击:上海涛德Oracle OCM认证及BI商业智能课程>|人工智能培训-上海涛德 ( 沪ICP备14006824号 )|网站地图   My title page contents

GMT+8, 2018-11-13 07:30 , Processed in 0.178812 second(s), 23 queries , Gzip On.

回顶部