基于随机森林RF的碳排放预测,

目录
背影
摘要
随机森林的基本定义
随机森林实现的步骤
基于随机森林的碳排放量预测
代码下载链接: 基于随机森林的碳排放预测,基于RF的碳排放分析资源-CSDN文库 https://download.csdn.net/download/abc991835105/88138844
效果图
结果分析
展望
参考论文

背影

碳排放导致温室气体增加,气候变暖,预测碳排放量有利于指定排放政策,

摘要

随机森林原理,MATALB编程随机森林碳排放量预测。

随机森林的基本定义

在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。 而 “Random Forests” 是他们的商标。 这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 “Bootstrap aggregating” 想法和 Ho 的"random subspace method"以建造决策树的集合。

训练方法

根据下列算法而建造每棵树 [1] :
用N来表示训练用例(样本)的个数,M表示特征数目。
输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。
从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。
每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用)

随机森林的优缺点

随机森林的优点有 [2] :
1)对于很多种资料,它可以产生高准确度的分类器;
2)它可以处理大量的输入变数;
3)它可以在决定类别时,评估变数的重要性;
4)在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
5)它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
6)它提供一个实验方法,可以去侦测variable interactions;
7)对于不平衡的分类资料集来说,它可以平衡误差;
8)它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用;
9)使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
10)学习过程是很快速的。

决策树的构建过程

要说随机森林,必须先讲决策树。决策树是一种基本的分类器,一般是将特征分为两类(决策树也可以用来回归,不过本文中暂且不表)。构建好的决策树呈树形结构,可以认为是if-then规则的集合,主要优点是模型具有可读性,分类速度快。
我们用选择量化工具的过程形象的展示一下决策树的构建。假设要选择一个优秀的量化工具来帮助我们更好的炒股,怎么选呢?
第一步:看看工具提供的数据是不是非常全面,数据不全面就不用。
第二步:看看工具提供的API是不是好用,API不好用就不用。
第三步:看看工具的回测过程是不是靠谱,不靠谱的回测出来的策略也不敢用啊。
第四步:看看工具支不支持模拟交易,光回测只是能让你判断策略在历史上有用没有,正式运行前起码需要一个模拟盘吧。
这样,通过将“数据是否全面”,“API是否易用”,“回测是否靠谱”,“是否支持模拟交易”将市场上的量化工具贴上两个标签,“使用”和“不使用”。
上面就是一个决策树的构建,逻辑可以用图1表示:
在这里插入图片描述

​基于MATLAB编程的随机森林回归分析

clc
clear
close all
[a1 ,ax,ay]= xlsread(‘数据搜集.xlsx’);
num=a1(:,2:end);
rand(‘seed’,0)
%训练测试划分
n = randperm(size(num,1));
P_test=num(:,1:6);
P_train=num(n,1:6);
T_test=num(:,7);
T_train=num(n,7);
T_train0=T_train;
% 归一化
[p,ps]=mapminmax(P_train’,-1,1);
P_train=p’;
pt=mapminmax(‘apply’,P_test’,ps);
P_test=pt’;

[T,psT]=mapminmax(T_train’,-1,1);
T_train=T’;

%% 创建随机森林分类器
% model = classRF_train(P_train,T_train,1,‘criterion’,‘mse’);%,‘max_depth’,1,
% [T_sim,mx] = classRF_predict(P_train,model);

trees = 32; % 决策树数目
leaf = 3; % 最小叶子数
OOBPrediction = ‘on’; % 打开误差图
OOBPredictorImportance = ‘on’; % 计算特征重要性
Method = ‘regression’; % 分类还是回归
net = TreeBagger(trees, P_train, T_train, ‘OOBPredictorImportance’, OOBPredictorImportance,…
‘Method’, Method, ‘OOBPrediction’, OOBPrediction, ‘minleaf’, leaf);
importance = net.OOBPermutedPredictorDeltaError; % 重要性
figure
bar(importance)
ylabel(‘重要性’)
set(gca,‘XTick’,1:6)
set(gca,‘XTickLabel’,{‘年末总人口’,‘城镇化率’,‘人均生产总值’,‘产业升级指数’,‘外商投资’,‘能源强度’})

figure

plot(oobError(net))
xlabel(‘迭代次数’)
ylabel(‘误差’)

%% 仿真测试
t_sim1 = predict(net, P_train);
t_sim2 = predict(net, P_test );

%% 数据反归一化
T_sim = mapminmax(‘reverse’, t_sim1’, psT)';

figure
plot(T_sim,‘k-*’)
hold on
plot(T_train0,‘r-o’)
legend(‘实际输出’,‘期望输出’)
xlabel(‘样本编号’)
ylabel(‘输出标签’)
title(‘RF训练集’)

%% 仿真测试
% [T_sim,votes] = classRF_predict(P_test,model);

T_sim = mapminmax(‘reverse’, t_sim2’, psT)';

[MSE,RMSE,MBE,MAE,MAPE] =MSE_RMSE_MBE_MAE_MAPE(T_test,T_sim)
R = R_2(T_test,T_sim)

figure
plot(T_sim,‘k-*’)
hold on
plot(T_test,‘r-o’)
legend(‘实际输出’,‘期望输出’)
xlabel(‘样本编号’)
ylabel(‘输出标签’)
title(‘RF测试集’)
%% 结果统计

结果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果分析

从图中可以看出来,随机森林可以比较准确预测碳排放量预测

展望

随机森林是一种很好的分类算法,也能用于回归分析,并且可以扩展和各种启发式算法结合,提高算法的随机森林的分类和回归能力,需要扩展的可以扫描二维码联系我

参考论文

百科

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神经网络机器学习智能算法画图绘图

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值