决策树是一种用于分类/回归的机器学习算法,基于树结构来进行决策。一棵决策树包含根结点、内部结点和叶结点。根结点包含样本全集,内部结点对应属性,叶结点对应决策结果。
伪代码
1 | # 输入:训练集:D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)} ,属性集:A={a_1,a_2,...,a_d} |
划分选择
信息增益(ID3决策树算法)
$$
Ent(D)=-\sum_{k=1}^{\left | \gamma \right |}p_klog_2p_k
$$$$
Gain(D,a) = Ent(D)-\sum_{v=1}^{V}\frac{\left | D^v \right |}{\left | D \right |}Ent(D^v)
$$$Ent(V)$ 表示信息熵,是度量样本集合纯度最常用的一种指标。信息熵越小,集合纯度越高。$Gain(D,a)$ 表示信息增益。信息增益越大,意味着使用属性$a$来进行划分所获得的集合纯度越高。
缺点:信息增益对可取值数目较多的属性有所偏好。
增益率(C4.5决策树算法)
$$
Gain_ratio(D,a) = \frac{Gain(D,a)}{-\sum_{v=1}^{V}\frac{\left | D^v \right |}{\left | D \right |}log_2\frac{\left | D^v \right |}{\left | D \right |}}
$$
$IV(a)={-\sum_{v=1}^{V}\frac{\left | D^v \right |}{\left | D \right |}log_2\frac{\left | D^v \right |}{\left | D \right |}}$称为$a$的固有值,$a$的取值数目越多,$IV(a)$越大。$Gain_ratio(D,a)$表示增益率,增益率越大,集合纯度越高。缺点:增益率对可取值数目较少的属性有所偏好。(C4.5算法没有直接使用增益率,而是先从候选属性中找出信息增益大于平均值的属性,再从中找出增益率最高的作为最优化分属性,这是一种折中)
基尼指数(CART决策树算法)
$$
Gini(D) = 1 - \sum_{k=1}^{\left | \gamma \right |}p_k^2
$$$$
Gini_index(D,a) = \sum_{v=1}^{V}\frac{\left | D^v \right |}{\left | D \right |}Gini(D^v)
$$$Gini(D)$表示基尼指数,$Gini_index(D,a)$表示属性$a$的基尼指数。基尼指数越小,集合纯度越高。
剪枝
剪枝是决策树算法处理过拟合问题的主要手段。分为预剪枝和后剪枝,预剪枝是在树的生成过程中进行剪枝,后剪枝是生成决策树之后再进行剪枝。剪枝的方法是判断剪枝前后模型的泛化能力是否有提升,泛化能力的度量即为性能评估方法,如准确率等。