从零开始的机器学习2-决策树
对应西瓜书第4章内容。
一些问题
-
1、决策树学习算法包括哪几个部分?常用的算法有哪些?
-
决策树算法过程主要包括:
①划分选择;
②树的生成;
③剪枝处理。
常用方法:ID3,C4.5,CART。
2、 决策树的根节点、内部节点和叶节点分别表示什么?
-
一般来说,一颗决策树结构包含:
①一个根节点:对应属性测试;
②若干内部节点:对应属性测试;
③若干叶节点:对应决策结果。
3、 特征选择的准则有哪些(如何选择最优划分属性)?
-
通常希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的
纯度越高越好。
准则通常有:
①信息增益;
②增益率;
③基尼指数。
4、决策树如何防止过拟合?
-
通常通过
剪枝的方法防止过拟合。
在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将 不断重复,有时会造成决 策树分支过多,这时就可能因训练样本学得“太好”了,以致于 把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。
常用的两种剪枝策略:
①前置剪枝
在构建决策树的过程时,提前停止。那么,会将切分节点的条件设置的很苛刻,导致决策树很短小。结果就是决策树无法达到最优。实践证明这中策略无法得到较好的结果。
②后置剪枝
决策树构建好后,然后才开始裁剪。采用两种方法:
1)用单一叶节点代替整个子树,叶节点的分类采用子树中最主要的分类;
2)将一个字数完全替代另外一颗子树。后置裁剪有个问题就是计算效率,有些节点计算后就被裁剪了,导致有点浪费。
5、连续值和缺失值如何处理?
-
连续值
因为连续属性的可取值数目不再有限,因此不能像前面处理离散属性枚举离散属性取值来对结点进行划分。因此需要连续属性离散化,常用的离散化策略是二分法,这个技术也是C4.5中采用的策略。
给定样本D和连续属性a,假定a在D上出现了n个不同的取值,将这些值从小到大进行排序,记为 { a 1 , a 2 , . . . , a n } \{a^1,a^2,...,a^n\} {a1,a2,...,an}基于划分点t可将D分为子集 D t − D^-_t Dt−和 D t − D^-_t Dt−包含那些在属性a上取值不大于t的样本,而 D t − D^-_t Dt−则包含那些在属性a上取值大于t的样本。显然,对于相邻属性 a i a^i ai与 a i + 1 a^{i+1} ai+1来说, t在区间 [ a i , a i + 1 ] [a^i, a^{i+1}] [ai,ai+1]中取任意值所产生的划分结果相同. 因此,对连续属性a,我们可考察包含n-1个元素的候选划分集合:
T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 ∣ } T_a=\{\frac{a^i+a^{i+1}}{2}|1\leq i\leq n-1|\} Ta={2ai+ai+1∣1≤i≤n−1∣}
即把区间 [ a i , a i + 1 ] [a^i, a^{i+1}] [ai,ai+1]的中位点 a i + a i + 1 2 \frac{a^i+a^{i+1}}{2} 2ai+ai+1作为候选划分点。然后我们就可以像离散属性值一样来考察这些划分点,选取最优的划分点进行样本集合的划分。
缺失值
①如何在属性值确实的情况下进行划分属性选择?
ρ \rho ρ表示无缺失值样本所占比例,给定训练集D和属性a, D ^ \widehat{D} D 表示D中在属性a上没有缺失值的样本子集.
G a i n ( D , a ) = ρ × G a i n ( D ^ , a ) Gain(D,a)=\rho \times Gain(\widehat{D},a) Gain(D,a)=ρ×Gain(D ,a)
②给定划分属性,若样本在改属性上的值缺失,如何对样本进行划分?
若样本x在划分属性a上的取值已知,则将x划入与其取值对应的子节点,且样本权值在子节点中保持为 w x w_x wx; 若样本X在划分属性a上的取值未知,则将X同时划入所有子节点,且样本权值在于属性值 a v a^v av对应的子节点中调整为 r ^ v ∗ w x \hat r_v*w_x r^v∗wx, 其中 r ^ v \hat r_v r^v表示无缺失值样本中属性a上的取值 a v a^v av的样本所占的比例。