1.决策数和随机森林都是非线性有监督的分类模型
1.1 决策树是一种树形结构,树内部
每一个节点都表示一个属性上的测试,
每个分支代表一个测试输出,
每个叶子节点代表一个分类类别。
通过训练数据构建决策树,可以对未知数据进行分类
1.2 随机森林是由多颗决策树组成的,这些决策树之间没有联系。
在得到一个随机森林后,当有新的样本进入后,随机森林内的每棵决策树会独立对数据进行判断,分析数据属于哪一类,然后看哪一类被选择的多,那么该数据就属于哪一个分类
2.决策树
2.1 术语
根节点:最定层的分类条件
叶节点:代表每一个类别号
中间节点:中间分类条件
分支:代表每一个条件的输出
二叉树:每一个节点上有两个分支
多叉树:每一个节点上至少有两个分支
2.2 决策树分类原则
如下数据集
按照”天气“作为根节点,使用决策树预测,决策树如下:
以“温度”作为根节点,使用决策树预测,决策树如下:
以“湿度”作为根节点,使用预测树预测,决策树如下:
使用“风”作为根节点,使用预测树预测,决策树如下:
由上可以发现,只有使用天气作为根节点时,决策树的高度相对较低,而且树的两边能将数据分类的更彻底。其他列作为根节点时,都不能彻底分类,树的两侧都有天气
决策树的生成规则:数据不断分裂的递归过程,每一次分裂,尽可能让类别一样的数据分到树的同一侧,当树的叶子节点的数据都是一类的时候,则停止分类。这样分类的数据,每个节点两边的数据不同,将相同的数据分类到树的同一侧,这样分类更加纯粹。减少树的高度和训练决策树的迭代次数。
注意:训练决策树的数据集要离散化,不然有可能造成树的有些节点的分支特别多,容易造成过拟合
2.3 选择分类条件
下图
上图中箱子①中有100个红球。箱子②中有50个红球和50个黑球。箱子③中有10个红球和30个篮球,60个绿球。箱子④中各个颜色均有10中球。发现箱子①中球类单一,信息量少,比较纯粹,箱子④中,球的类别最多,相对①来说比较混乱,信息量大。
如何量化以上每个箱子中信息的纯粹和混乱(信息量的大小)指标,可以使用信息熵或者基尼系数。
2.3.1 信息熵
信息熵是香农在1948年提出来量化信息信息量的指标,熵的定义如下:
其中n代表当前类别中有多少类别,Pi指当前类别中每个类别的概率,如下图:
计算“是否购买电脑”这列的信息熵,当前类别“是否购买电脑”有两个类别,分别是“是”和“否”,9个购买电脑,5个没有购买电脑,购买电脑类别的概率:9/14,没有购买电脑的类别:5/14,那么“是否购买电脑”类别的熵如下:
通过以上计算可知,某个类别下的信息量越大,熵越大,信息量越少,熵越少。假设“购买电脑”这个类别下只有否,则“是否购买电脑”的熵如下:
如上图,如果按照“年龄”、“收入层次”、“学生”、“信用等级”列使用决策树来预测“是否购买电脑”。如何选择决策树的根节点分类条件,就是找某列作为分类条件时,使“是否购买电脑”这列分类的分类更彻底,也就是找到一某列作为分类条件时,比没有使用这列作为分类条件时,“是否购买电脑”信息熵下降的最多(下降最多,就是信息熵最小,分类最彻底)。这个条件就是分类节点的分类条件。这里要使用条件熵 和信息增益
条件熵:在某个条件下某个类别的信息熵叫做条件熵,类似于条件概率,在知道Y的条件下,X的不确定性。条件熵一般使用H(X|Y)表示,表示Y的条件下,X的信息熵。
在“年龄”的条件下“是否购买电脑”的信息熵:“年龄”列每个类别下对应的“是否购买电脑”信息熵的和。
H(是够购买电脑|年龄)=H(是够购买电脑|青少年)+H(是够购买电脑|中年)+H(是够购买电脑|老年)
则H(是够购买电脑|年龄)=0.347+0+0.347=0.694
信息增益:代表熵的变化程度。分类前的信息熵减去分类后的信息熵。如特征Y对训练集D的信息增益为g(D,Y)=H(X)-H(X|Y),在“年龄”的条件下,“是否购买电脑”的信息增益为:
g(是够购买电脑,年龄)=H(是够购买电脑)-H(是否购买电脑|年龄)==0.94-0.69=0.25
有以上可知,按照“记录ID”,“年龄”,“收入层次”,“学生”,“信用等级”列使用决策树来预测“是否购买电脑”,选择分类根分类条件时步骤:
a. 计算“是否购买电脑”的信息熵
b. 计算在已知各个列的条件熵
H(是够购买电脑|年龄),H(是够购买电脑|收入层次),H(是够购买电脑|是否学生),H(是够购买电脑|信用等级)
c. 求各个条件下的信息增益,选择信息增益大的作为作为分类条件。选择中间节点时,以次类推
在构建决策树时,选择信息增益大的属性作为分类节点的方法也叫ID3分类算法
2.3.2 基尼系数
基尼系数也可以表示样本的混乱程度。公式如下:
其中K表示当前类别的类别数,Pk表示当前类别中某一类别的概率,1-Pk表示不是当前这个类别的概率
上图公式,计算“是否购买电脑”的基尼系数:
基尼系数越小,代表信息越纯,类别越少
基尼系数越大,代表信息越混乱,类别越多
基尼系数的计算和增益系数相同。假设某列只有一类值,这列的基尼系数为0
2.4 信息增益率
如上图所示,如果将记录ID也作为分类条件的话,由于“记录ID”对“是否购买电脑”列的条件熵为0,可以得到“是否购买电脑”,在“记录ID”这个条件下的信息增益最大。如果“记录条件”作为分类条件会造成分支特别多,对已有的记录可以分出类别,但对新的记录有可能不能成功的分出类别
使用信息增益来筛选分类条件,更倾向于选择更混乱的属性,容易出现过拟合问题。可以使用信息增益来解决这个问题。信息增益公式:gr(D,A)=g(D,A)/H(A),在某个条件下信息增益除以这个条件的信息熵
例如:在“记录ID”条件下,“是否购买电脑”的信息增益最大,信息熵H(记录ID)也比较大,两者相除就是在“记录ID”条件下的信息增益率,结果比较小,消除了当某些属性比较混杂时,使用信息增益来选择分类条件的弊端。使用信息增益率来构建决策树的算法也叫C4.5算法。一般相对于信息增益来说,选择信息增益率选择分类条件比较合适。
如果决策树的最后一个条件依然没能将数据准确分类,那么在这个节点上就可以使用概率进行分类,那个情况出现的多,该情况就是该分类的结果
2.5 决策树预剪枝和后剪枝
决策树对训练集有很好的分类能力,但是对于未知的测试集未必有好的分类能力,导致模型的泛化能力弱,可能发生过拟合问题,为了防止过拟合问题的出现,可以对决策树进行剪枝。剪枝分为预剪枝和后剪枝。
预剪枝:就是在构建决策树的时候提前停止。比如指定树的深度最大为3,那么训练出来决策树的高度就是3,预剪枝主要是建立某些规则限制决策树的生长,降低了过拟合的风险,降低了建树的时间,但是有可能带来欠拟合问题。
后剪枝:后剪枝是一种全局的优化方法,在决策树构建好之后,然后才开始进行剪枝。后剪枝的过程就是删除一些子树,这个叶子节点的标识类别通过大多数原则来确定,即属于这个叶子节点下大多数样本所属的类别就是该叶子节点的标识。选择减掉哪些子树时,可以计算没有减掉子树之前的误差和减掉子树之后的误差,如果相差不大,可以将子树减掉。一般使用后剪枝得到的结果比较好。
剪枝可以降低过拟合问题,如下图:
当来一条数据年龄为中年,信用高,孩子个数是4个时,没有办法分类。可以通过剪枝,降低过拟合问题。
2.6 随机森林
随机森林是由多个决策树组成。是用随机的方式建立一个森林,里面由很多决策树组成。随机森林中每一棵决策树之间都是没有关联的。得到随机森林之后,对于一个样本输入时,森林中的每一棵决策树都进行判断,看看这个样本属于哪一类,最终哪一类得到的结果最多,该输入的预测值就是哪一类
随机森林中的决策树生成过程是对样本数据进行行采样和列采样,可以指定随机森林中的树的个数和属性个数,这样当训练集很大的时候,随机选取数据集的一部分,生成一棵树,重复上面过程,可以生成一堆形态各异的树,这些决策树构成随机森林。
随机森林中的每个决策树可以分布式的训练,解决了单棵决策树在数据量大的情况下预算量大的问题。当训练样本中出现异常数据时,决策树的抗干扰能力差,对于随机森林来说也解决了模型的抗干扰能力。