决策树
上图是一个决策树的图例,那么该决策树的数学表达为:
G ( x ) = ∑ t = 1 T q t ( x ) ⋅ g t ( x ) G(\mathbf{x})=\sum_{t=1}^{T} q_{t}(\mathbf{x}) \cdot g_{t}(\mathbf{x}) G(x)=t=1∑Tqt(x)⋅gt(x)
其中 g t ( x ) g_{t}(\mathbf{x}) gt(x)也是一个决策树, q ( x ) q(x) q(x)表示的是 x x x是否在 G G G的路径 t t t中。从递推树的角度看:
其中:
- G ( x ) G(x) G(x) : full-tree hypothesis(当前根节点的全树模型)
- b ( x ) b(x) b(x) : branching criteria(判断是哪个分支)
- G c ( x ) G_{c}(x) Gc(x): sub-tree hypothesis at the c-th branch(第c个分支的子树)
那么决策树的训练过程为:
从直观训练过程中,可以得知现在需要确认四个问题:
- number of branches(分支个数) C C C
- branching criteria(分支条件) b ( x ) b ( \mathbf { x } ) b(x)
- termination criteria(终止条件)
- base hypothesis(基假设函数)$ g_t( \mathbf { x } )$
由于有这么多可选条件,那么决策树模型有很多种实现方法,一个常用的决策树CART树(Classification and Regression Tree(C&RT))
C&RT
那么上面四个问题是怎么解决的呢:
- 使用二叉树。分支个数为 2(二叉树),使用 decision stump(即 $ b( \mathbf { x })$的实现方法)进行分段。
- 分支条件 b ( x ) b( \mathbf { x }) b(x) 也就是如何分支,最佳分支函数(模型)的选取,使用的是两部分数据是否 “纯” ,首先判断每段数据的纯度然后求平均值,作为本decision stump是否被选取的评价标准。
b ( x ) = argmin decision stumps h ( x ) ∑ c = 1 2 ∣ D c with h ∣ ⋅ impurity ( D c with h ) b(\mathbf{x})=\underset{\text { decision stumps } h(\mathbf{x})}{\operatorname{argmin}} \sum_{c=1}^{2} \mid \mathcal{D}_{c} \text { with } h \mid \cdot \text { impurity }\left(\mathcal{D}_{c} \text { with } h\right) b(x)= decision stumps h(x)argminc=1∑2∣D