一、最小二乘回归树
算法
输入:训练师数据集D=(x1,y1),(x2,y2),⋯,(xn,yn), y为连续变量
输出:回归树f(x)
在训练数据集所在输入空间中,递归的将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树
- 选在最优切分变量(特征)j与切分点s,求解
minj,s[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]
遍历变量j,对固定的切分变量j扫描且分点s,选择使上式达到最小值的(j,s)
用选定的(j,s)划分区域并决定相应的输出值:
R1(j,s)={x|x(j)≤s}R1(j,s)={x|x(j)≥s}cm^=1Nm∑xi∈Rm(j,s)yi
继续对两个子区域调用(1),(2),直到满足停止条件。
将输入空间划分为M个区域R1,R2,⋯,Rm,生成决策树:
f(x)=∑m=1Mcm^I(x∈Rm)
二、分类树的生成
假设有K个类,样本点属于K类的概率为pk,则概率分布的基尼指数定义为
Gini(p)=∑i=1Kpk(1−pk)=1−∑i=1Kp2k
对于给定的样本集合D,其基尼指数为
Gini(D)=1−∑i=1K(|Dk||D|)2
如果样本集合D根据特征A是否取某一可能的值a被分割成D1,D2两个部分,则在特征A的条件下集合D的基尼指数为:
Gini(D,A)=|D1||D2|Gini(D1)+|D2||d|Gini(D2)
算法:
输入:训练数据集D,停止计算条件
输出:CART决策树
根据训练数据集,从根节点开始,递归的对每个节点进行一下操作,构建二叉决策树
- 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数,此时,对每个特征A,对其可能取得每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1,D2两个部分,计算A=a时的基尼指数。
- 在所有的特征A以及他们所有可能的切分点a中,选择基尼指数最小的特征以及其对应的切分点。依最优特征与最优切分点,从现节点生成两个子节点,将训练数据集分配到连个子节点中去
- 对连个子节点递归的调用(1)、(2),直到满足停止条件。
- 生成CART树
算法停止条件是 结点中的样本个数小于预定阈值,或者样本的基尼指数小于预定阈值,或者没有更多特征。