基于随机森林的分类与回归

       

点击上方蓝色字体,关注我们

15

作者简介

作者:吴健 中国科学院大学 R语言、统计学爱好者,尤其擅长R语言和Arcgis在生态领域的应用分享

个人公众号:统计与编程语言 



一、随机森林基本概念

  随机森林(Random forest) 是一种组成式的有监督学习方法。在随机森林中,我们同时生成多个预测模型,并将模型的结果汇总以提升预测模型的准确率。

随机森林算法(预测和回归)主要包括一下三个方面:
1.从原始数据随机有放回的抽取N个样本单元,生成决策或者回归树。

2.在每一个节点随机抽取m<M个变量,将其作为分割节点的候选变量。每一个节点处变量数应该一致。

3.最终对每一颗决策或者回归树的结果进行整合,生成预测值。


二、随机森林的优势

1.在没有验证数据集的时候,可以计算袋外预测误差(生成树时没有用到的样本点所对应的类别可由生成的树估计,与其真实类别比较即可得到袋外预测)。

2.随机森林可以计算变量的重要性。

3.计算不同数据点之间的距离,从而进行非监督分类。


三、随机森林R语言实例

  如果数据集的响应变量为类别型,则随机森林根据预测变量预测一个分类结果;如果数据集的响应变量为连续型,则随机森林根据预测变量进行回归。

1.利用随机森林预测一个分类结果

加载程序包

library(randomForest)
library(MASS)

加载数据

data(fgl)
str(fgl)

为保证结果大家运算结果一致 设定随机种子

set.seed(17)

构建随机森林模型 mtry参数表征默认在每个节点抽取的变量数

fgl.rf<- randomForest(type ~ .,data=fgl, mtry=2, importance=TRUE,
   do.trace=100)
fgl.rf

混淆矩阵结果可以看出随机森林对各类别的分类效果。

采用十折交叉验证对比随机森林与支持向量机的误差。十折交叉验证:用来测试精度。是常用的精度测试方法。将数据集分成十分,轮流将其中9份做训练1份做测试,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10倍交叉验证求均值,例如10次10倍交叉验证,更精确一点。

library(ipred)
set.seed(131)
error.RF<- numeric(10)
for(iin 1:10) error.RF[i] <-
   errorest(type ~ ., data = fgl,
   model = randomForest, mtry = 2)$error
summary(error.RF)

library(e1071)
set.seed(563)
error.SVM<- numeric(10)
for(i in 1:10) error.SVM[i] <-
   errorest(type ~ ., data = fgl,
   model = svm, cost = 10, gamma = 1.5)$error
summary(error.SVM)

从结果中可以看出随机森林的误差要小于支持向量机模型

查看变量重要性

imp<- as.data.frame(fgl.rf$importance)
head(imp)
attach(imp)
par(mfrow= c(2, 2))
for(i in 1:4){
   data <-imp[order(imp[,i],decreasing=T),]
   plot(data[,i],type = “h”, main =paste(“Measure”, i), ylab=””, xaxt=”n”)
  text(data[,i],rownames(data),cex=0.6,pos=4,col=”red”)
}

由上图可以看出不同变量在预测不同类别时的重要性


2.基于随机森林回归分析

首先,我们先注意一下随机森林回归和随机森林分类的差别:(1)默认mtry是p/3而不是p1/2,其中p表示预测变量数(2)默认节点大小为5而不是1(3)只有一个测量变量的重要性。

data(Boston)
set.seed(1341)
BH.rf<- randomForest(medv ~ ., Boston)
BH.rf


由上图可以看出随机森林回归模型结果的方差解释量

对比随机森林预测结果、多元回归预测结果和实际值的差异

forest.pred<- predict(BH.rf, Boston)
fit<- lm(medv ~ ., Boston)
lm.pred<-predict(fit,Boston)
data<- data.frame(Boston$medv, forest.pred1, lm.pred1)
head(data)
library(car)
png(filename= “lm.png”, width = 900, height = 500)
scatterplotMatrix(data)
dev.off()

由上图可以看出随机森林结果要优于多元回归模型。

3.随机森林中需要注意的地方:

3.1合理确定决策树的数量。

3.2合理确定每个节点随机抽取的变量数

3.3决策树数量越多,结果越稳定。




大家都在看

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

Visual Studio Code (VSCode) 是一个强大的集成开发环境,可以方便地用于Python数据分析。要使用五大机器学习模型(如线性回归、决策树、随机森林、支持向量机神经网络)对数据进行分析,你可以按照以下步骤操作: 1. 安装必要的插件: - 安装`Python`:确保已安装最新版本的Python,通常可以在VSCode设置中配置。 - `Jupyter Notebook`插件:提供交互式环境,推荐安装`Microsoft Jupyter Notebook`。 - 数据科学库:比如`pandas`用于处理数据,`numpy`做数值计算,`scikit-learn`包含各种模型。 2. 设置环境: - 创建一个`.vscode/settings.json`文件,配置Python路径以及pip包管理器(如`pipx`)。 3. 导入所需库: 在Jupyter Notebook内,运行`import pandas as pd`, `import numpy as np`, `from sklearn.model_selection import train_test_split`, `from sklearn.linear_model import LinearRegression`, `from sklearn.tree import DecisionTreeClassifier`, 等等,根据需要导入模型。 4. 加载预处理数据: 使用`pd.read_csv()`加载数据,进行清洗、缺失值处理、编码等工作。 5. 划分数据集: `train_test_split()`将数据分为训练集测试集。 6. 模型训练: 对于每个模型,创建实例并调用`fit()`函数进行训练。例如: ``` linear_regression = LinearRegression() linear_regression.fit(X_train, y_train) ``` 7. 预测及评估: 使用训练好的模型进行预测,并用`score()`或其他评估指标检查性能。 8. 可视化结果: 结果可视化通常使用`matplotlib`或`seaborn`库。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值