初勘数据处理之预测算法(随机森林random forest)附matlab源码

  1. 集成学习方法
    集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率。集成学习方法先用训练数据构建一组基分类器,再对所有基分类器的预测进行投票,从而决定分类结果。集成学习方法不是简单地用多个不同的分类器在同一数据集上重复训练,而是使数据集产生一定程度的扰动。分类器预测错误的部分原因是未知数据与所学习数据在分布上存在区别,通过设置一定程度的扰动,分类器能学习到更一般的模型,消除单个分类器产生的偏差,得到更加精准的模型。构建集成分类器的方法主要有装袋bagging、提升boosting等。
    基于数据的学习方法都面临数据的随机性这一问题。学习方法的任何一次实现都是基于某一个特定的数据集上,这个数据集只是众多可能数据中的一次随机抽样。这种随机性会影响学习方法的预测结果,并使学习到的分类器具有定的偶然性,尤其是在训练数据集较小时。决策树在每个节点处进行划分时,是根据节点下局部的划分准则进行的,易受样本随机性的影响,这就容形成过学习,使决策树不够稳定。装袋方法正好可以克服单个分类器的不稳定性,随机森林就是装袋方法(bagging)在决策树(decision tree)上的实现。

  2. 随机森林
    随机森林,是由很多决策树组成的“森林”,它通过多棵树的投票来进行决策。
    理论与实验研究表明,随机森林能够有效地提高分类器的推广能力。构建随机森林的方法包括三个基本步骤:
    1). 首先,从原来的个训练样本中有放回地随机抽取个样本(样本可能有重复),得到一个样本集。重复这个过程 n 次,得到 n 个样本集。
    2). 然后,用每个样本集作为训练样本构造决策树。在构造决策树的过程中,在每一个节点处,从候选特征中随机选择 m 个特征,作为决策的备选特征,再从这些特征中选择最好的特征进行划分。每棵决策树都会完整生长而不会剪枝。
    3). 最后,得到 n 棵决策树后,对这些树的输出进行投票,将得票最多的类作为最终的决策。
    随机森林方法既对训练样本采样,又对特征采样,保证了决策树之间的独立性,使得投票结果无偏。

  3. 预测效果评价
    常用评价系数及matlab实现:

% correlation coefficient, r:相关系数
R21=sum((dataObs -mean(dataObs)).*( dataSim - mean(dataSim)));
R22=sqrt(sumsqr(dataObs -mean(dataObs)).*sumsqr(dataSim - mean(dataSim)));
r = R21/R22;% Nash-Sutcliffe Efficiencyt, ENS:纳什系数
ENS = (1-(sumsqr(dataObs - dataSim)/sumsqr(dataObs - mean(dataObs))));% COEFFICIENT OF DETERMINATION(决定系数) d
d =(1-(sumsqr(dataObs - dataSim)/sumsqr(abs(dataSim - mean(dataObs) + abs(dataObs -mean(dataObs))))));% Peak Percentage Deviation, Pdv:峰值偏差百分比
Pdv = (1-max(dataSim)/max(dataObs))*100;% Root Mean Square Error, RMSE:均方根误差
RMSE = sqrt(sumsqr(dataObs - dataSim)/length(dataObs));% Mean Absolute Error, MAE:平均绝对误差
MAE = (sum(abs(dataSim - dataObs)))/length(dataObs);
  1. 随机森林预测算法(prediction based on random forest)应用案例
    应用背景:随着交通基础设置建设和智能运输系统的发展,交通规划和交通诱导巳成为交通领域研究的热点 对于交通规划和交通诱导来说,准确的交通流量预测是其实现的前提和关键通流量预测根据时间跨度可以分为长期交通流量预测和短期交通流量预测:长期交通流量预测以小时、天、月甚至年为时间单位,是宏观意义上的预测;短时交通流量预测一般的时间跨度不超过 15 分钟,是微观意义上的预测。短时交通流量预测是智能运输系统的核心内容,智能运输系统中多个子系统的功能实现都以其为基础。短时交通流量预测具有高度非线性和不确定性等特点,并且同时间相关性较强,可以看成是时间序列预测问题,比较常用的方法包括多元钱性回归预测、AR 模型预测、ARMA 模型预测、指数平滑预测等。
    数据集:traffic_flux 《MATLAB神经网络43个案例分析 chapter 32 小波神经网络预测交通流量》

matlab实现代码:

%% 清空数据缓存
clear
clc
close all%% 功能选项
%randomise parameters, ensure the results are reproducible.
%rand('twister', 123);
s = RandStream('mlfg6331_64');%% 数据集加载
load traffic_flux input output input_test output_test
trnIn=input;
trnOut=output;
chkIn=input_test;
chkOut=output_test;%% 查看可用GPU
% Use GPU if available
ngpus=gpuDeviceCount;
disp([num2str(ngpus) ' GPUs found'])
if ngpus>0lgpu=1;disp('GPU found')useGPU='yes';
elselgpu=0;disp('No GPU found')useGPU='no';
end
% Find number of cores
ncores=feature('numCores');
disp([num2str(ncores) ' cores found'])
% Find number of cpus
import java.lang.*;
r=Runtime.getRuntime;
ncpus=r.availableProcessors;
disp([num2str(ncpus) ' cpus found'])
if ncpus>1useParallel='yes';
elseuseParallel='no';
end
[archstr,maxsize,endian]=computer;
disp(['This is a ' archstr ' computer that can have up to ' num2str(maxsize) ' elements in a matlab array and uses ' endian ' byte ordering.'])% Set up the size of the parallel pool if necessary
npool=ncores;% Opening parallel pool
if ncpus>1ticdisp('Opening parallel pool')% first check if there is a current poolpoolobj=gcp('nocreate');% If there is no pool create oneif isempty(poolobj)command=['parpool(' num2str(npool) ');'];disp(command);eval(command);elsepoolsize=poolobj.NumWorkers;disp(['A pool of ' poolsize ' workers already exists.']);end% Set parallel options%paroptions = statset('UseParallel',true);%Set parrellel streams to have same seed value for repeated resultsparoptions = statset('UseParallel',true,'Streams', s, 'UseSubStreams',true);toc
end%% 回归预测算法总体
%Random Forest Model variables
tic % starts the timer.
leaf=5; % this number could be varied.
ntrees=800; % this number could be varied.
fboot=1; % this number could be varied.
surrogate='on'; % this could be set 鈥榦n鈥?or 鈥榦ff鈥?% leaf=1, 3, 5, 10, 20;
% ntrees=50, 200, 800, 1600;
% fboot=0, 0.4, 0.8, 1.0;
% surrogate='on';%Trainging Periods ------------------
%Build Model
In = trnIn;
Out = trnOut;
b = TreeBagger(ntrees,In,Out,'Method','regression','oobvarimp','on','surrogate',surrogate,'minleaf',leaf,'FBoot',fboot,'Options',paroptions);
reset(s);
toc;TrainY = oobPredict(b);
yTrain = predict(b,In);%Predict with traing ------------------
y = predict(b, In);
simulatedTrain = y;
dataObsTrain = Out;mseTrain = oobError(b,'mode','ensemble'); %single MSE for RF%Predict with testing ------------------
dataSim = predict(b,chkIn);
dataObs = chkOut;%% 结果分析
figure(1)
plot(dataSim,'r*:')
hold on
plot(dataObs,'bo--')
title('预测交通流量','fontsize',12)
legend({'预测交通流量', '实际交通流量'})
xlabel('时间点')
ylabel('交通流量')

预测效果图:

具体的评价系数大家可以实测一下!随机森林的工具包可以在我的资源中下载,实测可用!

初勘数据处理之预测算法(随机森林random forest)附matlab源码相关推荐

  1. 一种基于加密域的数字图像水印算法的设计与实现(附Matlab源码)

    一种基于加密域的数字图像水印算法的设计与实现 项目介绍 毕设项目 题目:一种基于加密域的数字图像水印算法的设计与实现 随着数字媒体技术的发展,数字媒体版权的保护得到了越来越多人的重视,数字水印技术作为 ...

  2. 【信号去噪】基于EMD、EEMD和CEEMDAN算法实现ECG信号去噪附matlab源码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  3. 机器学习方法(六):随机森林Random Forest,bagging

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 前面机器学习方法(四)决策树讲了经典 ...

  4. 随机森林Random Forest,bagging

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld.  技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 前面机器学习方法(四)决策树讲了经 ...

  5. 【ML】随机森林(Random Forest) 从入门到放弃再到掌握

    目录 集成学习 决策树 Boosting Adaboost GBDT 梯度提升决策树是属于boosting集成学习的一种方法,通过构建多颗CART回归树,每一轮利用上一轮学习器的残差进行树的创建.该残 ...

  6. 【机器学习】随机森林 – Random forest

    文章目录 一.随机森林是什么? 1. 随机森林是一种集成学习算法 2. 随机森林的基学习器是决策树 二.随机森林 – Random Forest | RF 三.构造随机森林的 4 个步骤 四.随机森林 ...

  7. 随机森林 – Random forest

    随机森林 – Random forest 随机森林是一种由决策树构成的集成算法,他在很多情况下都能有不错的表现. 本文将介绍随机森林的基本概念.4 个构造步骤.4 种方式的对比评测.10 个优缺点和 ...

  8. 通俗解读随机森林Random Forest

    通俗解读随机森林Random Forest 写在前面 1. 什么是集成学习 2. 什么是Bagging 3 随机森林 写在前面 声明:本文主要参考的是周志华老师的<机器学习>西瓜书,参杂了 ...

  9. 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?

    随机森林(Random Forest)和梯度提升树(GBDT)有什么区别? 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法. 随机森林是由很多 ...

最新文章

  1. 统计数列中是连续数的个数
  2. USACO / Stamps(DP)
  3. 2021云上架构与运维峰会将于12月4日在上海举办,五大精彩看点不容错过
  4. 鹏博士和阿里云数据库产品达成战略合作,共赢企业数智化创新市场
  5. app头像上传vue_当前GitHub上排名前十的热门Vue项目
  6. 发展前景好的互联网技术方面,你觉得比较适合女孩子的都有哪些啊?
  7. 系统字体服务器,把字体放到服务器
  8. 3D打印自动支撑算法
  9. java jxls导出excel
  10. 2021-2027全球与中国电子束加速器市场现状及未来发展趋势
  11. 医院计算机房相关制度,医院机房管理制度.docx
  12. Python金融大数据分析——第11章 统计学(2)投资组合优化 笔记
  13. 如何用防火墙禁止某个软件联网
  14. 文章-编程需要知道多少数学知识?
  15. 采用R/S分析法的Hurst指数估计算法——Python实现
  16. matlab生成指数分布,MATLAB如何使用exppdf函数计算指数分布的概率密度
  17. Unit 3-Lecture 5: The Pigeonhole Principle and Inclusion-Exclusion
  18. 《互联网时代》 第八集 忧虑
  19. dkp管理系统 php,RB!DKP v3.1.8 Build
  20. 网工学习 第十一章 网络管理 网络管理基础 网络管理协议五大标准 SNMP协议 RMON

热门文章

  1. 服务器上搭建MSSQL 服务器
  2. error Unnecessary escape character: \- no-useless-escape
  3. 教师管理平台-----servlet+html修改个人资料及更改头像
  4. 聚合支付之一个二维码同时支持微信和支付宝
  5. C#图片对比,支持图片局部和整体图片比对,FREAK算法,《FREAK: Fast Retina Keypoint》,特征匹配
  6. 小程序制作一个需要多少钱?小程序成本估算
  7. 网站制作, 从零开始, WordPress教学课程 (完整视频)
  8. 栋的周评 | 第一回合(定期更新、博客动态、亚马逊 AWS 云技术、其他技术、收听、哲学、书籍、影视、新奇、好歌推荐)
  9. 2、金融之关于BOLL
  10. 哈夫曼(huffman)压缩算法,非常易懂