决策树:
决策树:是一种树形结构,其中每个内部节点(圆形表示特征)表示一个属性上的判断,每个分支(箭头)代表一个判断结果的输出,最后每个叶节点(正方形表示分类的结果)代表一种分类情况,本质是一颗由多个判断节点组成的树。是通过训练数据并根据基尼系数的增益统计而来。
基尼系数表示数据集中样本的差异程度,基尼系数越大,表示数据集的种类越多样,即表示有多中的分类结果,表示数据集当前特征的越多样,即越不纯,即可能是一个多分类的问题。具体公式如下:
我们一般选择基尼系数最小的特征作为最初的根节点。在实际项目中根据我们定义的分类结果进行根节点的选择,通过统计训练样本的特征与类别(类别是我们根节点的分类结果),根据特征相对初始类别的基尼系数的增益决定之后每一步根节点的选择。
在计算基尼系数增益之前需要知道当对每个特征作为判断依据时的基尼指数,具体公式如下:
基尼增益为:
公式过于抽象,具体我们通过一个Demo来进行讲解,我们通过统计部分银行贷款数据进行讲解,类别为我们的分类结果,即判断每个样本(这里每个样本代表一个人),类别表示是否给予贷款。具体样本表示如下:
我们可以的统计结果如下图:
我们首先计算整体样本分类情况的基尼系数:
Gini(D)=1-(9/15)^2-(6/15)^2=0.8
当我们根据年龄段来划分就会有三种分类情况,是否青年,是否中年,是否老年的三种情况,对应否的情况又可以是一个对年龄的二分类情况,每一次分类都取基尼系数最大的结果作为一个内部的分类结点。第一次判别时需要计算是否青年,是否中年,是否老年,是否有工作,是否有房...等多种情况的基尼增益。这里我们只计算是否有工作的基尼增益。首先计算两个子结点的基尼系数,若基尼系数等于0就表示分类完毕。根据对应的类别判断结果。对不为0的结果继续按基尼增益进行分类
有工作:Gini(D^v)=1-(5/5)^2-(0/5)^2=0
无工作:Gini(D^~v)=1-(4/10)^2-(6/10)^2=0.48
因此,是否有工作的基尼指数如下:
Gini(D,a)=5/15 * 0 + 10/15 * 0.48 = 0.32
基尼增益=0.8-0.32=0.48. 在计算完所有分类情况后选择基尼增益最大的情况作为此时的分类结点,假设此时以有无工作作为分类结点,则该节点可有下图进行表示:
不断地对内部节点进行分类直至显示最终的分类结果为止(即我们判断是否可以贷款与否)。此时我们对样本训练完毕,当有新的样本来进行测试时我们根据当前模型进行预测。在实际工程中我们需要控制决策树的深度防止过拟合的情形,即我们在训练样本可以表现很好的性能,但是并不能保证测试样本的准确度,这在训练集很大的时候容易出现。因此我们通过随机森林算法进行优化。
随机森林
是一种集成学习的思想,即通过建立多个决策树,通过统计每个决策树分类的结果,选择类别数最多的结果作为最终的分类结果。