一、随机森林RF(代码获取:底部公众号或-点击此处跳转)
随机森林(Random Forest)是一种集成学习方法,用于分类和回归问题。它由多个决策树组成,通过对每棵决策树的预测结果进行投票或取平均值来确定最终的预测结果。
以下是随机森林分类模型的基本步骤:
1. 数据准备:收集和准备用于训练和测试的数据集,确保数据集包含输入特征和相应的目标变量。
2. 特征选择:根据问题的要求选择合适的特征。随机森林可以处理具有大量特征的数据集,并且可以自动评估特征的重要性。
3. 构建随机森林:使用训练数据集构建随机森林模型。这涉及到生成多个决策树,每棵树使用不同的数据样本和特征子集进行训练。
4. 决策树构建:对于每棵决策树,从训练数据集中随机选择一个样本子集,同时随机选择一部分特征子集。使用这些样本和特征子集来构建一棵决策树。
5. 预测结果:对于分类问题,随机森林中的每棵决策树都会给出一个类别预测结果。最终的预测结果可以是根据投票多数决定或者取所有决策树预测结果的平均值。
6. 模型评估:使用测试数据集评估随机森林模型的性能。常用的评估指标包括准确率、精确率、召回率和F1分数等。
随机森林模型具有以下优点:
- 能够处理高维数据和大规模数据集。
- 具有较好的准确性和鲁棒性。
- 可以评估特征的重要性。
- 可以处理缺失值和不平衡数据集。
二、MATLAB仿真结果
(1)决策树数量特征重要性分析
(2)分类结果
(3)混淆矩阵
三、关键代码展示(代码获取:下方公众号)
%% 得到训练集和测试样本个数
M = size(P_train, 2);
N = size(P_test , 2);
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input );
t_train = T_train;
t_test = T_test ;
%% 转置以适应模型
p_train = p_train'; p_test = p_test';
t_train = t_train'; t_test = t_test';
%% 训练模型
trees = 1000; % 决策树数目
leaf = 1; % 最小叶子数
OOBPrediction = 'on'; % 打开误差图
OOBPredictorImportance = 'on'; % 计算特征重要性
Method = 'classification'; % 分类还是回归
net = TreeBagger(trees, p_train, t_train, 'OOBPredictorImportance', OOBPredictorImportance, ...
'Method', Method, 'OOBPrediction', OOBPrediction, 'minleaf', leaf);
importance = net.OOBPermutedPredictorDeltaError; % 重要性
%% 仿真测试
t_sim1 = predict(net, p_train);
t_sim2 = predict(net, p_test );
%% 格式转换
T_sim1 = str2num(cell2mat(t_sim1));
T_sim2 = str2num(cell2mat(t_sim2));