老生常谈决策树。提到决策树,不得不说不纯度的概念。
回归不纯度
i(N)=∑j(yj−rj)2
其中, rj 为该结点的预测值输出值,通常此处设为该节点所有值的均值, yj 为真值。我们的目标是最小化该值。分类不纯度
熵不纯度: i(N)=∑jP(ωj)log(ωj)
Gini不纯度: i(N)=∑j≠iP(wi)P(wj)=∑jP(wj)(1−P(wj))=1−∑jP(wj)2
错分不纯度: i(N)=1−maxP(wj)
决策树是一个统称,其实它包含若干类,常见的种类有: ID3、C4.5 和CART,说说各自特点:
ID3: 1986 Ross Quinlan提出,采用 熵不纯度规则分裂节点,通常分支因子
Bj>2
,标准版本的ID3没有剪枝操作。
C4.5: 为ID3改进版本,特征值可以处理连续变量,采用信息熵增益比。
CART:分类回归树,与ID3和C4.5最重要的区别便是,其能处理回归问题,即数值预测。节点分裂准则采用Gini不纯度。(其实,现在的CART算法,不纯度模式是可选的)
由于CART的通用性,在一些机器学习库中实现的决策树绝大多数是CART树,如opencv 和sklearn中。有必要系统的学习一下。以下以opencv为原型学习。
根据特征属性和标签属性是数值型还是分类型,可将决策树分为四类:
- 特征为类别的分类树 :find_split_cat_class()
- 特征为数值的分类树:find_split_ord_class()
- 特征为类别的回归树:find_split_cat_reg()
- 特征为数值的回归树:find_split_ord_reg()
详细讲解请参照博文:opencv 决策树源码分析 http://blog.youkuaiyun.com/zhaocj/article/details/50503450