• MATLAB初学者入门(15)—— 随机森林


            随机森林是一种强大的机器学习方法,基于多个决策树的训练结果进行集成学习,以提高整体的预测准确性和稳定性。这种方法不仅适用于分类问题,也非常适合于回归问题。MATLAB中的Statistics and Machine Learning Toolbox提供了易于使用的随机森林实现,可以通过TreeBagger类来调用。

    案例分析:使用随机森林进行分类

            假设我们需要对生物物种进行分类,基于一系列生态特征来确定物种类别。我们将使用随机森林模型来完成这一任务。

    步骤 1: 准备数据

            首先,我们加载和准备数据。假设我们有一些生态数据,包括多个特征,如体重、长度和高度等,以及相应的物种标签。

    1. % 假设数据已经加载到以下变量中
    2. features = [5.1, 3.5, 1.4, 0.2; 4.9, 3.0, 1.4, 0.2; 6.7, 3.1, 4.4, 1.4; ...];
    3. labels = {'species1', 'species1', 'species2', ...}; % 类别标签
    4. % 将文本标签转换为分类变量
    5. labels = categorical(labels);
    步骤 2: 训练随机森林模型

            使用MATLAB的TreeBagger函数创建和训练随机森林模型。可以指定树的数量、样本用于训练的比例和其他参数。

    1. % 创建随机森林模型,100棵树
    2. rng(1); % For reproducibility
    3. model = TreeBagger(100, features, labels, 'OOBPrediction', 'On', 'Method', 'classification');
    4. % 查看OOB误差
    5. oobError = oobError(model);
    6. figure;
    7. plot(oobError);
    8. xlabel('Number of Grown Trees');
    9. ylabel('Out-of-Bag Classification Error');
    10. title('OOB Error Rate Across Trees');
    步骤 3: 预测新数据

            使用训练好的模型对新数据进行预测。

    1. % 新数据
    2. newData = [5.0, 3.6,1.4, 0.2; 6.0, 3.0, 4.5, 1.5];
    3. % 使用训练好的随机森林模型进行预测
    4. [predictedLabels, scores] = predict(model, newData);
    5. % 显示预测结果
    6. disp('Predicted class labels for the new data points:');
    7. disp(predictedLabels);

    步骤 4: 分析模型性能

            为了进一步验证模型的有效性和精确性,我们可以分析模型的特征重要性,这有助于了解哪些特征对于分类决策最为重要。

    1. % 计算并显示特征重要性
    2. featureImportance = model.OOBPermutedVarDeltaError;
    3. figure;
    4. bar(featureImportance);
    5. xlabel('Feature Number');
    6. ylabel('Out-of-Bag Feature Importance');
    7. title('Feature Importance Results');
    8. xticklabels({'Feature 1', 'Feature 2', 'Feature 3', 'Feature 4'});

    案例分析:使用随机森林进行回归

            假设我们需要预测基于房屋的各种特征(如面积、卧室数量、地理位置等)的房价。我们将使用随机森林回归模型来完成这一任务。

    步骤 1: 准备数据

            首先,我们加载并准备房屋数据。数据集中包含房屋的各种特征以及对应的房价。

    1. % 假设数据已经加载到以下变量中
    2. load('housingData.mat'); % 载入房屋数据集
    3. features = housingData(:,1:end-1); % 特征数据
    4. prices = housingData(:,end); % 房价数据,即目标变量
    步骤 2: 训练随机森林回归模型

            与分类相类似,我们使用TreeBagger函数创建和训练随机森林模型,不过这次指定方法为回归。

    1. % 创建随机森林回归模型,100棵树
    2. rng(1); % 为了结果可重复
    3. model = TreeBagger(100, features, prices, 'Method', 'regression', 'OOBPrediction', 'On', 'MinLeafSize', 5, 'OOBPredictorImportance', 'On');
    4. % 查看OOB误差
    5. oobError = oobError(model);
    6. figure;
    7. plot(oobError);
    8. xlabel('Number of Grown Trees');
    9. ylabel('Out-of-Bag Regression Error');
    10. title('OOB Error Rate Across Trees');
    步骤 3: 预测新数据

            使用训练好的模型对新数据进行预测,以验证模型的有效性。

    1. % 新数据
    2. newData = [2500, 4, 2, 1]; % 新房屋数据,假设这是面积、卧室数、浴室数和地理位置索引
    3. % 使用训练好的随机森林模型进行预测
    4. predictedPrice = predict(model, newData);
    5. % 显示预测结果
    6. disp(['Predicted price for the new house: $', num2str(predictedPrice)]);
    步骤 4: 分析模型性能

            利用模型的特征重要性图来分析哪些特征对房价预测影响最大。

    1. % 特征重要性
    2. featureImportance = model.OOBPermutedVarDeltaError;
    3. figure;
    4. bar(featureImportance);
    5. xlabel('Feature Number');
    6. ylabel('Out-of-Bag Feature Importance');
    7. title('Feature Importance Results');
    8. xticklabels({'Area', 'Bedrooms', 'Bathrooms', 'Location'});

    案例分析:使用随机森林预测物种分布

            假设我们需要预测某一特定物种的分布情况,这取决于多个环境因子,如气温、湿度、降雨量、海拔和植被类型等。

    步骤 1: 准备数据

            首先,我们准备包含物种观测记录和相应环境因子的数据集。

    1. % 假设数据已经加载到以下变量中
    2. load('speciesData.mat'); % 载入物种数据集
    3. features = speciesData(:, 1:end-1); % 环境因子数据
    4. presence = speciesData(:, end); % 物种存在记录(0或1)
    步骤 2: 训练随机森林模型

            使用TreeBagger函数创建和训练随机森林模型,这次用于分类物种存在与否。

    1. % 创建随机森林分类模型,使用100棵树
    2. rng(1); % 为了结果可重复
    3. model = TreeBagger(100, features, presence, 'Method', 'classification', 'OOBPrediction', 'On', 'MinLeafSize', 1, 'OOBPredictorImportance', 'On');
    4. % 查看OOB误差
    5. oobError = oobError(model);
    6. figure;
    7. plot(oobError);
    8. xlabel('Number of Grown Trees');
    9. ylabel('Out-of-Bag Classification Error');
    10. title('OOB Error Rate Across Trees');
    步骤 3: 预测新地区的物种分布

            使用训练好的模型对新地区的环境数据进行预测,以确定物种可能存在的地点。

    1. % 新环境数据
    2. newEnvironmentData = [23, 75, 110, 350, 3]; % 新数据点(假设这是温度、湿度、降雨、海拔和植被类型)
    3. % 使用训练好的随机森林模型进行预测
    4. predictedPresence = predict(model, newEnvironmentData);
    5. % 显示预测结果
    6. disp(['Predicted presence for the new area: ', num2str(predictedPresence)]);
    步骤 4: 分析模型性能和特征重要性

            利用模型的特征重要性图来分析哪些环境因子对物种分布影响最大。

    1. % 特征重要性
    2. featureImportance = model.OOBPermutedVarDeltaError;
    3. figure;
    4. bar(featureImportance);
    5. xlabel('Feature Number');
    6. ylabel('Out-of-Bag Feature Importance');
    7. title('Feature Importance Results');
    8. xticklabels({'Temperature', 'Humidity', 'Rainfall', 'Altitude', 'Vegetation Type'});

    结论

    (1)展示了如何使用MATLAB中的TreeBagger类来实现随机森林并应用于分类问题。随机森林通过构建多个决策树并结合它们的预测来改进预测的准确性和模型的鲁棒性,从而减少过拟合的风险。这种方法特别适合处理具有多个输入变量的复杂数据集,并且在特征选择和模型解释方面也表现出色。随机森林是一种非常灵活且功能强大的机器学习技术,广泛应用于生物信息学、金融分析、医疗诊断以及任何需要从大量数据中提取洞察的领域。通过合适的参数调整和彻底的模型评估,随机森林可以成为任何数据科学家工具箱中的宝贵资产。在实际应用中,根据具体问题的需求适当调整树的数量、深度和其他创建选项,可以进一步优化模型的性能和效率。

    (2)展示了如何使用随机森林进行回归分析,预测连续变量的值。随机森林回归模型通过构建多个决策树并集成其结果来提高预测的准确性和稳定性,特别适合于处理大规模且具有多个变量的数据集。通过合适的参数调整,如树的数量、叶节点的最小样本数和树的最大深度,可以进一步提高模型的性能和预测的准确度。此外,通过分析特征重要性,可以获得对数据集和房价影响因素的深入洞察,帮助决策者或分析师优化房产投资策略。随机森林因其强大的处理能力和良好的解释性,已成为数据科学中一个非常受欢迎的工具。

    (3)展示了如何使用随机森林进行生态学中的物种分布预测。通过构建多个决策树并集成其结果,随机森林能够提供准确的预测并评估各种环境因子的影响力。这不仅有助于科学家更好地理解物种如何与其环境相互作用,还可以为自然保护计划提供数据支持,特别是在全球气候变化对生态系统产生越来越大影响的当下。随机森林因其鲁棒性和易于实现的特性,已成为处理此类复杂数据分析任务的重要工具。通过适当的数据预处理和模型参数调整,可以进一步提升模型的预测能力和解释能力,为环境保护和生物多样性研究提供坚实的科学基础。

  • 相关阅读:
    【应用统计学】几种常见的概率
    Science:大脑中睡眠的相互关联原因和结果
    2022年11月19日(星期六):骑行甸尾
    二叉搜索树的详解及Map和Set的介绍
    Unity3D
    第五章:指令集
    K-Means(上):数据分析 | 数据挖掘 | 十大算法之一
    生成可信任的https证书-use
    微服务追踪SQL(支持Isto管控下的gorm查询追踪)
    48.排列问题求解
  • 原文地址:https://blog.csdn.net/qq_42912425/article/details/138202094