随机森林
随机森林(Random Forest)是一种强大的机器学习算法,广泛用于各种数据分析和预测任务。 随机森林是一种集成学习(ensemble learning)的方法,即通过将多个弱模型——决策树合并而得到强大的模型。 每棵决策树分析特征和目标变量之间的关系,生成预测结果。 通过多次训练决策树来实现提高准确率和减少过拟合问题。
在随机森林中,每棵决策树都具有以下特点:
- 随机树: 每棵决策树都是随机生成的,不同的计算方法。
- 互相抑制: 每棵决策树除了预测目标变量之外,还会预测出原始数据样本中所有变量的值。这些预测值与原始预测结果进行比较,进一步提高模型的准确率。
构建过程
- 数据集划分:将原始数据集划分为多个子集,每个子集称为一个 "bootstrap sample" 或 "bagged sample"。
- 特征随机选择:对于每个决策树,在构建过程中随机选择一定数量的特征进行分裂。这样可以增加决策树之间的差异性。
- 构建决策树:使用 bootstrap sample 和随机选择的特征来构建多个决策树。
- 投票决定结果:在分类任务中,对所有决策树的结果进行投票表决,选择出现次数最多的类别作为最终预测结果。在回归任务中,计算所有决策树预测值的平均值作为最终预测值。
决策树公式
决策树是通过一系列规则将输入空间划分为多个区域来实现分类或回归的。决策树的构建过程可以表示为:
其中, 是第 个规则,规则的形式可以表示为:
其中, 是输入特征向量, 是输出类别或回归值。
决策树的分裂节点选择通常基于信息增益(Information Gain)或基尼不纯度(Gini Impurity)。信息增益公式如下:
其中, 是数据集, 是特征, 是特征 的取值数目, 是特征 取值为 的子集, 是数据集 的熵。
基尼不纯度公式如下:
其中, 是类别 在数据集 中的频率。
代码实现
1 from sklearn.ensemble import RandomForestClassifier
2 # 定义分类问题中数据特征和目标变量
3 X = [[1, 2], [3, 4], [5, 6]]
4 y = ['a', 'b', 'c']
5 # 初始化随机森林算法
6 rf = RandomForestClassifier(n_estimators=100)
7 # 开始训练模型
8 rf.fit(X, y)