随机森林回归matlab代码_随机森林RandomForest回归生物标记预测时间序列

本文介绍了如何在Matlab中使用随机森林进行回归分析,特别是应用于时间序列预测,如股票预测和死亡时间估计。通过示例展示了数据准备、随机森林的安装与加载、回归分类以及交叉验证的过程,强调了%IncMSE作为评估变量贡献度的重要指标。
摘要由CSDN通过智能技术生成

关于随机森林的简介和应用理论,请阅读之前分享的文章:

  • 一文读懂随机森林在微生态中的应用

关于随机森林进行分类的入门实战,请阅读之前分享的

  • 《RandomForest:随机森林预测生物标记biomarker——分类》,

大家可以学习此文,实现分组挖掘两组或多组的特异Features,也可以展示特征的贡献度,获得分类评估的准确度,以及使用新数据进行预测,无监督的随机森林等基础技能。

今天我们讲使用randomForest实现回归分析的实战代码。回归的应用主要包括时间序列预测模式,如预测股票、尸体死亡时间等。

本节不需要先验知识可也直接学习使用。

RandomForest安装与加载

# 安装

install.packages("randomForest")

# 加载

library(randomForest)

回归Classification

先了解一下输入数据格式,方便准备

使用R内置按天记录的空气质量数据

data(airquality)head(airquality)

数据包括157天中,臭氧、太阳强度、风和温度,部分有缺失。前4列属性数据,后2列时间月和日为分组数据。

Ozone Solar.R Wind Temp Month Day

1 41 190 7.4 67 5 1

2 36 118 8.0 72 5 2

3 12 149 12.6 74 5 3

4 18 313 11.5 62 5 4

5 NA NA 14.3 56 5 5

6 28 NA 14.9 66 5 6

设置随机数种子保证结果可重复

set.seed(315)

随机森林回归臭氧与其它所有属性

ozone.rf= randomForest(Ozone ~ ., data=airquality, mtry=3,

importance=TRUE, na.action=na.omit)

print(ozone.rf)

结果如下:包括分析的命令,分析类型,树数量,重要的变量(Feature)个数,平均残差平方,解析率。

Call:

randomForest(formula = Ozone ~ ., data = airquality, mtry = 3, importance = TRUE, na.action = na.omit)

Type of random forest: regression

Number of trees: 500

No. of variables tried at each split: 3

Mean of squared residuals: 304.4269

% Var explained: 72.26

查看每个变量的分类贡献度,显示仅保留两位小数可读性更好

round(importance(ozone.rf), 2)

%IncMSE IncNodePurity

Solar.R 10.40 10833.08

Wind 23.55 43838.66

Temp 47.13 53731.95

Month 2.04 1504.72

Day 0.91 6306.42

结果为每个相关变量对应两列值。%IncMSE是Increased in mean squared error (%),直译为增长的错误率平方均值,即去除该变量后,对目标预测的准确度下降的低,可理解为对目标变量预测准确的贡献度。IncNodePurity是Increased node purity,是另一种评估的方法。这里我们只关注%IncMSE就够了。

varImpPlot(ozone.rf)

728187a68caddd13cceb788cedb75bc0.png

交叉验证cross-validation

# 先清空NA的样本,验证不允许有NA

airquality = na.omit(airquality)

myairquality= cbind(airquality[1:6], matrix(runif(96 * nrow(airquality)), nrow(airquality), 96))

# 交驻验证添加了随机数的训练集,分组,交叉验证的次数

result= rfcv(myairquality, airquality$Ozone, cv.fold=3)

# 绘制错误率曲线,观查错误率与使用Markers数量的变化

with(result, plot(n.var, error.cv, log="x

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值