在机器学习的世界里,随机森林(Random Forests, RF)和决策树(Decision Trees, DT)是两种非常重要的算法。随机森林可以被看作是一个装有多个决策树的“袋子”,每个决策树都有不同的超参数集合,并且它们是在数据的不同子集上训练的。想象一下,如果有100个决策树,每个树都根据其训练数据集给出预测,最终的预测结果是通过多数投票得出的。这种方法在机器学习中也被称为集成学习或装袋方法(bagging)。
随机森林是一种监督学习算法,可以用于回归和分类任务。由于分类任务更直观且易于理解,本文将重点讨论随机森林在分类任务中的应用。随机森林因其简单性和稳定性而成为最常用的算法之一。在构建决策树的数据子集时,“随机”一词开始发挥作用。数据子集是通过从原始数据集中随机选择一定数量的特征(列)和实例(行)来制作的。
随机森林比单一决策树更稳定、更可靠。这就像是说,与其只接受总理的决定,不如听取所有内阁成员的意见。由于随机森林本质上是决策树的集合,了解决策树变得至关重要。让深入探讨决策树。
用非常简单的话来说,决策树是通过在数据集上学习创建的“一组规则”,这些规则可以用来对未来的数据进行预测。可以通过一个例子来理解这一点。这里展示了一个简单的小数据集。在这个数据集中,前四个特征是独立特征,最后一个是依赖特征。独立特征描述了某一天的天气状况,而依赖特征告诉那天是否能够打网球。
现在,将尝试使用独立特征来创建一些规则,以预测依赖特征。通过观察,可以看到,如果天气展望是阴天,那么无论其他特征如何,打球总是“是”。同样,可以创建所有规则来完全描述数据集。以下是所有规则:
R1: 如果(天气展望=晴朗)且(湿度=高)则打球=否
R2: 如果(天气展望=晴朗)且(湿度=正常)则打球=是
R3: 如果(天气展望=阴天)则打球=是
R4: 如果(天气展望=雨天)且(风力=强)则打球=否
R5: 如果(天气展望=雨天)且(风力=弱)则打球=是
可以很容易地将这些规则转换成树状图。通过观察数据、规则和树,会理解现在可以根据独立特征预测是否应该打网球。创建给定数据的规则的整个过程就是训练决策树模型。
由于数据集非常小,可以通过观察来制定规则和制作树。但是,如何训练更大的数据集上的决策树呢?为此,需要了解一些数学知识。现在,让尝试理解决策树背后的数学概念。
本节包含两个重要概念——熵和信息增益。
熵是衡量系统随机性的一个指标。样本空间S的熵是编码随机抽取的S成员类别所需的预期比特数。这里有14行数据,所以有14个成员。熵E(S)的计算公式如下,其中p(x)是从这14个成员中获得类别x的概率。这里有两个类别,一个是“是”,另一个是“否”。在数据集中,有9个“是”和5个“否”。因此,熵的计算如下:
E(S) = -[(9/14)*log2(9/14) + (5/14)*log2(5/14)] = 0.94
Gain(S, 天气展望) = 0.247
Gain(S, 湿度) = 0.151
Gain(S, 风力) = 0.048
Gain(S, 温度) = 0.029