1. CART决策树
CART决策树(Classification and Regression Tree)又称为分类与回归树,该模型是由Breiman等人在1984年提出,是一种注明的的决策树学习算法。从名字就可知道,这个算法既能处理分类问题,又能解决回归问题。
CART决策树与之前文章讨论过的ID3算法、C4.5算法有着类似的逻辑,不过也有所不同。
1.1 基尼指数
CART决策树使用“基尼指数”(Gini Index)来选择最优的划分属性,其定义如下:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ Gini(D) &= \su…
由定义公式可知,Gini(D)反映了从数据集D中随机抽取的样本,其类别标记不一致的概率。因此,Gini(D)越小,则数据集D的纯度越高。
那么,在数据集D中,对于某一个属性a的基尼指数定义为:
G i n i _ I n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) . Gini\_Index(D,a) = \sum^{V}_{v=1} \frac{|D^v|}{|D|} Gini(D^v) \ \ . Gini_Index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv) .
根据这2个公式,我们就可以在属性集合中A一个一个计算,最后选择那个基尼指数最小的属性作为最优划分属性,即$a_*={arg}_{a\in A} min \ \ Gini_Index(D,a) \ $.
2. python实现
对于CART决策树,采用的是机器学习领域最有名的数据集之一——鸢尾花卉数据集(iris.csv)作为input data.
2.1 思路
输入: 训练集 D=(x1,y1),(x2,y2),…,(xm,ym);
属性集 A=a1,a2,a3,…,ad;
过程: 函数CreateTree(D,A)
1. 生成节点node;
- if D中样本全部属于同一类别C then
- 将node标记为C类叶节点; return
- end if
- if A=∅ OR D中的样本在A上取值都相同 then
- 将node标记为叶节点,其类别标记为D中样本数量最多的类; return
- end if
- 从A中选择最优的划分属性a∗;
- for a∗的每一个值av∗ do
10. 为node节点生成一个分支;令Dv表示D中在a∗上取值为av∗的样本子集;
11. if Dv为空 then
12. 将分支节点标记为叶节点,其类别标记为D中样本最多的类; return
13. else
14. 以CreateTree(Dv,a∗)为分支节点
15. end if
16. end for
输出:以node为根节点的一棵决策树
2.2 具体的代码
需要说明的是:

本文介绍了CART决策树的概念,包括基尼指数及其在选择最优划分属性中的应用。通过Python实现了CART算法,以鸢尾花卉数据集为例,详细阐述了算法的思路和具体代码。虽然与ID3和C4.5算法有相似之处,但CART使用基尼指数,且适用于分类和回归问题。
1676

被折叠的 条评论
为什么被折叠?



