概述
一,基本流程
决策树学习基本算法:
决策树的生成是一个递归过程,有三种情形会导致递归返回:
1,当前结点包含的样本全属于同一类别,无需划分;
2,当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;(后验)
3,当前结点包含的样本集合为空,不能划分。(先验)
二,划分选择
决策树学习的关键是如何选择最优划分属性。
2.1 信息增益(ID3)
信息熵:假定当前样本集合D中第k类样本所占的比例为pk(k = 1,2,3,...|y|),则D的信息熵定义为:
Ent(D)的值越小,则D的纯度越高。
信息增益:假设离散属性a有V个可能的取值,若使用a来对样本集D进行划分,则会产生V个分支节点,其中第v个分支节点包含了D中所有在属性a上取值为av的样本,记为Dv。于是用属性a对样本集D进行划分所获得的信息增益为:
2.2 增益率(C4.5)
信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,增益率定义为:
其中IV(a)定义为:
IV(a)称为属性a的固有值,属性a的可能取值数目越多,IV(a)的值通常会越大。
增益率准则对可取数目较少的属性有所偏好。因此,C4.5算法使用先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的方法。
2.3 基尼系数(CART)
数据集D的基尼值定义为:
Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。Gini(D)越小,数据集D的纯度越高。
属性a的基尼指数定义为:
三,剪枝处理
剪枝是决策树学习算法对付过拟合的主要手段。
3.1 预剪枝
预剪枝是指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能(留出法等性能评估方法)的提高,则停止划分并将当前结点标记为叶节点。
预剪枝能降低过拟合的风险,显著减少决策树的训练时间和测试时间,但另一方面,基于贪心本质禁止某些分支展开给预剪枝决策树带来了欠拟合的风险。
3.2 后剪枝
后剪枝则是先从训练集生成一颗完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能的提升,则将该子树替换为叶节点。
后剪枝决策树通常比预剪枝决策树保留了更多的分支,欠拟合风险很小,泛化性能往往优于预剪枝决策树,但其训练时间大得多。
四,连续与缺失值
4.1 连续值处理
C4.5决策树算法使用二分法对连续属性进行处理。具体做法是:从划分点集合中选择信息增益最大的划分点。
已排序的连续属性值:{a1,a2,a3,...,an}
候选划分点集合:Ta = {(ai + ai+1)/2|1 <= i <= n-1}
基于划分点t二分后的信息增益:
需要注意:与离散属性不同,若当前节点划分属性为连续属性,该属性还可作为其后代节点的划分属性。
4.2 缺失值处理
(1) 如何在属性值缺失的情况下进行进行划分属性选择?
利用该属性的无缺失样本子集。对于某一特定属性,去除掉该属性缺失的样本,在得到的新样本集合中计算属性的信息增益。(得到的信息增益要乘上len(新样本集合)/len(原样本集合))。
(2) 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
让同一个样本以不同的概率划入到不同的子节点中去。(改变了样本的权重)
最后
以上就是老实柚子为你收集整理的机器学习笔记——决策树的全部内容,希望文章能够帮你解决机器学习笔记——决策树所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复