三个参数对随机森林分类结果的影响(附代码)

本文研究了随机森林分类中集成规模n_estimators、树的最大深度max_depth以及特征数max_features对模型性能的影响。通过交叉验证发现,增加n_estimators能提高准确率且不易过拟合;max_depth对模型复杂度有显著影响,较强学习器不会损害泛化能力;特征数max_features的选择,约选取特征总数的1/8能取得较好效果。
摘要由CSDN通过智能技术生成

使用手写数据集研究集成规模,树的最大深度以及特征数对随机森林分类结果的影响。代码在末尾。
手写数据集

使用交叉验证,返回accuracy,折数为10

1. 集成规模n_estimators

集成规模即树的数量。为了观察其影响,分别对数量1~40进行交叉验证,返回得到准确率并绘图。
集成规模与准确度的关系
观察可得,集成规模的增加可以提高模型在训练集和测试集上的准确度,这是因为增加树的数量可以减少偏差和方差,还可以发现模型不会随着复杂度的增加而过度拟合训练数据。

2. 树的最大深度max_depth

树的最大深度反映了单个树的复杂度,将集成规模固定为20,max_depth为变量进行类似实验。
树的最大深度与准确度的关系
显而易见,在随机森林中,决策树越强,集成的模型就越强,并不会失去泛化性。而基于一组基本学习器的其他算法可能会对弱学习器或者表现不佳的学习器产生跟强学习器一样的偏爱,例如Boosting的一些情况,

3. 特征数max_features

随机森林算法为了减少相关性以及在集成中引入随机性,从每个内部决策树的所有可用输入特征中选择k特征的随机子集。

使用较少数量的输入特征会降低各个树之间的相似性,但也会导致树的复杂性降低从而导致树的强度降低。

反之,增加特征数量可以使每棵树更强大,但也增加了树之间相关性。

特征数与准确度的关系
实验结果证明了,在一共64个特征中,选取大约 k = n f e a t u r e s = 64 = 8 k=\sqrt{n_{features}}=\sqrt{64}=8 k=nfeatures =64

下面是一个简单的 MATLAB 代码示例,用遗传算法优化随机森林分类器。 ```matlab % 定义适应度函 function fitness = calc_fitness(x, y, numTrees, numFeatures, minLeafSize) % 训练随机森林模型 model = TreeBagger(numTrees, x, y, 'Method', 'classification', 'NumPredictorsToSample', numFeatures, 'MinLeafSize', minLeafSize); % 使用交叉验证评估模型性能 cvmodel = crossval(model, 'KFold', 5); fitness = 1 - kfoldLoss(cvmodel, 'LossFun', 'ClassifErr'); end % 遗传算法参数 numVars = 3; % 优化的变量个 lb = [10, 1, 1]; % 变量下界 ub = [100, 50, 5]; % 变量上界 options = gaoptimset('PopulationSize', 50, 'Generations', 100, 'StallGenLimit', 50); % 优化随机森林分类器 x = iris(:, 1:4); % 特征矩阵 y = iris(:, 5); % 标签 fitnessfcn = @(x)calc_fitness(x(1), x(2), x(3)); % 适应度函 [x_opt, fval] = ga(fitnessfcn, numVars, [], [], [], [], lb, ub, [], options); % 训练最优随机森林模型 model_opt = TreeBagger(x_opt(1), x, y, 'Method', 'classification', 'NumPredictorsToSample', x_opt(2), 'MinLeafSize', x_opt(3)); ``` 在这个例子中,我们使用 iris 据集进行演示。首先,我们定义一个适应度函 `calc_fitness`,该函接受三个参数随机森林中决策树的量 `numTrees`,每个决策树中使用的特征 `numFeatures`,以及叶子节点最小样本 `minLeafSize`。该函的作用是训练一个随机森林分类器,并使用交叉验证评估其性能,最终返回一个适应度值,用来评估该组参数的优劣程度。 然后,我们使用 MATLAB 自带的遗传算法函 `ga` 来优化随机森林分类器。在 `ga` 函中,我们需要指定优化的变量个、变量的上下界、遗传算法参数等。在每次迭代中,遗传算法会根据适应度函的评价结果,选出适应度高的个体,并交叉、变异产生新的个体,最终得到一个适应度最高的个体,即为最优解。 最后,我们使用最优解的参数训练一个随机森林分类器,并将其存储在 `model_opt` 变量中,以便后续使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值