随机森林由多棵独立的决策树组成,每棵决策树在训练时从总体数据集中随机抽取一部分数据并使用部分特征进行训练。最终的输出结果是通过这些树的集成(多数投票或平均)来决定的。
数据采样(Bootstrap Sampling):
特征选择(Feature Selection):
决策树构建(Tree Construction):
集成预测(Ensemble Prediction):
假设我们有一个简单的数据集用于分类,只有两个特征:

数据采样:
生成多个子集,每个子集通过随机有放回地抽取原始数据集的样本。
例如,第一棵决策树的子集可能是:

特征选择:
在每个节点分裂时,随机选择一部分特征进行评估。
例如,根节点可能随机选择特征1和特征2中的一个来进行分裂。
决策树构建:
根据选择的特征和分裂点,构建决策树。
例如,根节点选择特征1,分裂点设为3:
特征1 <= 3: 左子节点
特征1 > 3: 右子节点
集成预测:
将新的样本输入所有决策树,收集每棵树的预测结果,通过多数投票或平均值决定最终结果。
假设有一个数据集 D 由N 个样本和 M 个特征组成,随机森林的构建和预测流程如下:
训练阶段:
预测阶段:
以下是使用Python的Scikit-Learn库实现随机森林分类器的简要示例:
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据
data = load_iris()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建随机森林分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)
# 训练模型
clf.fit(X_train, y_train)
# 预测
y_pred = clf.predict(X_test)
# 评估准确性
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.4f}')
随机森林是一种强大的集成学习方法,通过集成多棵决策树来提高预测准确性和泛化能力。它特别适合处理复杂、高维和非线性的数据问题,但需要注意其计算资源需求和训练时间。