随机森林算法

1、随机森林算法简介

随机森林算法(Random Forests)是LeoBreiman于2001年提出的,它是一种通过重采样办法从原始训练样本集中有放回地重复随机抽取若干个样本生成多个决策树,样本的最终预测值由这些决策树的结果投票决定的一种有监督集成学习模型。

其核心思想是通过随机的样本抽样和特征抽样生成众多决策树,形成一片"森林",以多数的表决结果作为预测值。

随机森林作为一种bagging集成学习,在决策树算法中有着重要的地位。

2、随机森林算法基本原理

2.1 样本的选择

随机森林的样本采样选择可以看作是行采样。随机森林每棵在构建过程中,这棵树的样本从总样本中随机抽样生成。完成抽样后将样本放回,以便下一棵树的抽样。假设总样本有N个,随机森林每棵树的随机抽样样本数为n,一般可取n为N的平方根。

2.2 特征的选择

随机森林的特征采样可以看作是列采样。每棵树都是从总体M个特征中随机选择m特征进行树的生成。列采样有两种形式,一种是全局列采样,即同一棵树的生成过程中均采用同一批特征;另一种是局部列采样,即每一次节点分裂的时候都单独随机挑选m个特征进行分裂。

2.3 分裂准则

在树的生成过程中,采用的分裂准则。在随机森林算法中,可以有多种分裂准则。在随机森林的分类算法中,比较常见的有信息增益、基尼不纯度;在随机森林的回归算法中,比较常见的有均方误差。

3、随机森林算法步骤

3.1 输入输出

(1)输入:给定训练样本;参数设置:森林里树的数量、分裂的准则、分裂终止条件等。

(2)输出:样本的分类或回归值。

3.2 算法步骤

(1)从训练样本N个中随机有放回地选择n个;

(2)从特征中随机不放回地选择k个特征;

(3)根据指定的分裂准则进行分裂,生成一棵决策树;叶子节点的输出值:当为分类问题时,叶子的取值为分类最多的值;当为回归问题时,叶子节点的取值为该节点所有样本的平均值;

(4)当森林中树的数量小于指定值时,继续步骤(1)到(3),最终成生指定数量的决策树;

(5)预测时,样本在每棵决策树下会有一个对应叶子的值。当为分类问题时,最终取值为所有树下该叶子值的数量最多的值(分类);当为回归问题时,最终取值为所有树下叶子值的平均值。

4、随机森林算法实例

这里以用scikit-learn自带的数据集进行演示。

python 复制代码
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
python 复制代码
#加载数据集
X, y = make_classification(n_samples=1000, n_features=4,n_informative=2, n_redundant=0,
                          random_state=0, shuffle=False)
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

#模型训练
clf = RandomForestClassifier(max_depth=2, random_state=0)
clf.fit(X_train,y_train)

# 预测测试集
y_pred = clf.predict(X_test)
 
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print("Model accuracy: %.2f"%accuracy)
复制代码
Model accuracy: 0.94

5、随机森林算法总结

(1)随机森林算法具有很高的准确性和鲁棒性。随机森林算法由众多决策树共同投票决策,其结果具有较好的准确性和鲁棒性。

(2)随机森林算法可以很好地防止过拟合。随机森林每棵树的训练都是在小部分样本及特征上训练而成,可以很好地防止过拟合。

(3)随机森林算法可以并行构建决策树,提高运算效率。

(4)随机森林算法可以很好地处理高维度数据。

(5)随机森林算法在小样本上的表现可能会不佳。

相关推荐
Mr. zhihao18 小时前
SDD(规范驱动开发):AI 编程时代的范式革命——因果链视角
人工智能·ai编程
大腾智能18 小时前
华为开发者大会2026观察:鸿蒙底座成型,大腾智能锚定工业AI路径
人工智能·华为·harmonyos
skywalk816318 小时前
继续推进心语项目6.15 @CodeArts
开发语言·算法·编程
2601_9618451518 小时前
花生十三图推思维导图|图形推理|技巧
数据结构·算法·链表·贪心算法·排序算法·线性回归·动态规划
rising start18 小时前
ReAct Agent:让 AI 学会思考与行动
人工智能·agent
奔袭的算法工程师18 小时前
论文解读--Sparse4D v3: Advancing End-to-End 3D Detection and Tracking
人工智能·目标检测·计算机视觉·自动驾驶·信号处理
SNSZR118 小时前
2026定制数字人平台选型:5大垂直行业解决方案对比
大数据·人工智能·安全
小二·18 小时前
端侧 AI 模型部署:从云端到移动端
人工智能
AI搅拌机18 小时前
ComfyUI Bernini导演台再升级:支持FPS设置及源视频输出,修复音画不同步BUG。
人工智能
qzhqbb18 小时前
论文精读|GEC-DCL——面向段落与学术文本的动态上下文语法纠错模型
人工智能