决策树
1.决策树算法:在训练阶段,通过训练集数据构造出一个决策树模型。在分类阶段,即测试数据时,按照决策树的分类属性逐层往下划分,直到找到预测的结果
2.决策树的术语:根节点,叶节点,内部节点
3.熵:熵表示纯度\不纯度;即不确定性。熵值越大,说明不确定性越大,表示时间发生的概率越小。
4.基尼不纯度:表示一个随机选中的样本在子集中被分错的可能性。由公式看出,一个事件发生的概率越大,基尼系数越小。
5.ID3是基本决策树构建算法,作为决策树经典的构建算法,具有结构简单,清晰易懂的特点
ID3的缺点:①采用信息增益进行分裂,分裂的精确度可能没有采用信息增益率进行分裂高②不能处理连续性数据,只能通过离散化将连续化为离散型数据③不能处理缺省值④没有对决策树进行剪枝处理,很有可能会出现过拟合的问题。
6. C4.5和CART算法
1.连续值属性处理:
将属性取值进行排序,按大于1和小于1分为两个子集,划分点1由最大化信息增益来确定,需要注意的是,
2.缺省值属性处理
判断属性优劣(如计算信息增益)只考虑没有缺省值的样本,且相应的乘以除去缺省值所占的比例做权重,以保证缺省值不要过多;
对于含缺省值样本对于该属性的划分,则根据该属性各种取值的分布情况,以不同概率划分到不同的节点(划分后样本带权)。
7.三种划分属性选择指标:
(1)信息增益Gain(D,a):
信息增益越大,纯度提升越高,可以用最简信息增益选择属性
缺点:属性可取值越多,用其划分后信息增增益越简,故此方法对属性可取值更多的属性有所偏好。
(2)信息增益率Gain_ratio(Gain,a):
信息增益除以属性的固有值(以属性a做随机变量,由集合中a属性各个取值所占的比例计算的信息熵),a可取数值越多,固定值越大,在一定程度上抑制了上述偏好。
缺点:对可取数值较小的属性有偏好,故实际上,先采用找信息增益高于平均水平的属性,再从中找增益率高的。
(3)基尼指数Gain(D):
基尼指数表示一个随机选中的样本在子集中被分错的可能性。当一个节点中所有样本都是一个类时,基尼不纯度为零。
8.预防过拟合的方法----剪枝
(1)预剪枝:在构造决策树的同时进行剪枝。所有决策树的构建方法,都是在无法进行进一步降低熵的情况下才会停止创建分支的过程,为了避免过拟合,可以设定一个阈值,熵减小的数量小于这个阈值,即使还可以继续降低熵值,也停止继续创建分支。
优点:分支较少,减小过拟合风险,也减少了训练时间开销和测试时间开销和测试时间开销
缺点:带来了欠拟合的风险(当前划分虽不能提升泛化能力,但继续划分呢?)
(2)后剪枝:生成完整的决策树后自底向上对非叶节点的考察,若替换为叶节点能带来发话性能提升,则替换。
优点:比预剪枝分支多,欠拟合风险小,泛化性能往往优于预剪枝
缺点:训练时间开销大的多
9.决策树常用算法比较
算法 |
支持模型 |
树结构 |
特征选择 |
连续值处理 |
缺失值处理 |
ID3 |
分类 |
多叉树 |
信息增益 |
不支持 |
不支持 |
C4.5 |
分类 |
多叉树 |
信息增益率 |
支持 |
支持 |
CART |
分类,回归 |
二叉树 |
基尼系数,均方差 |
支持 |
支持 |
10.通过随机森林提高准确率
决策树是建立在已知的历史数据及概率上的,一棵决策树的预测可能会不太准确,提高准确率最好的方法是构建随机森林(Random Forest)
所谓随机森林就是通过随机抽样的方式从历史数据表中生成多张抽样的历史表,对每个抽样的历史表,对每个抽样的历史表生成一颗决策树。由于每次生成抽样表后数据都会放回到总表中,因此每一棵决策树之间都是独立的没有关联。将多棵决策树组成一个随机森林。当有一条新的数据产生时,让森林里的每一个据测算分别进行判断,以投票最多的结果作为最终的判断结果。一次来提高正确的概率。
11.决策树的优缺点:
决策树的优点:①简单直观,生成的决策树很直观。②既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者连续值。③可以处理多维度输出的分类问题。④相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释。⑤可以交叉验证的剪枝来选择模型,从而提高泛化能力。⑥对于异常点的容错能力好,健壮性高。
决策树的缺点:①决策树的算法很容易过拟合,通过设置节点最少样本数量,不纯度/熵阈值,限制 决策树深度来改进。②决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变:通过随机森林等算法。③寻找最优的决策树是一个NP难题,通过启发方法,容易陷入局部最优,通过随机森林等方法改善。④有些比较复杂的关系,决策树很难学习,比如异或;通过神经网络等方法解决。⑤如果某些特征的样本比例过大,生成决策树容易偏向这些特征:可通过调节样本权重来改善。
12.决策树算法python库实现