本文主要介绍CART算法,包括CART分类树/回归树的详细步骤和在sklearn中的参数等。
0x01、CART算法简介
CART(Classification and Regression Tree,分类与回归树)算法是决策树的一种实现,既可用于分类也可用于回归。它是一种二分递归分割技术,即把当前样本划分为两个子样本(即使特征有多个取值,也把数据分为两部分,当前被划分进同一部分的特征在之后的分割过程中将有机会被划分开来),使得生成的每个非叶子结点都有两个分支,因此CART算法生成的决策树是结构简洁的二叉树。
CART算法的几个特点:
(1)由任务目标决定CART是分类树还是回归树。当CART是分类树时,采用基尼系数(gini)作为特征划分的度量;当CART是回归树时,采用均方误差(mse)作为特征划分的度量。
(2)CART算法不仅可以处理二分属性,可以用来处理标称属性和连续属性(回归),简单来说,就是如果特征值大于或等于给定值就将该记录划分到左子树,否则就划分到右子树。
(3)决策树生成只考虑了对训练数据进行更好的拟合,而决策树剪枝考虑了减小模型复杂度。决策树生成学习局部的模型,决策树剪枝学习 整体的模型。一般选择损失函数最小作为剪枝的标准。
0x02、CART算法架构
1、CART算法总体描述
(1)决策树生成
a. 依次遍历每个特征A的可能取值a,对每个切分点(A, a)计算其基尼系数(分类树)或均方误差(回归树);
b. 选择最优切分点,然后使用该切分点将当前的数据集切分成两个子集;
c. 对上述切出的两个子集分别递归调用(a)和(b),直至满足停止条件,生成CART决策树。
(2)剪枝
a. 从决策树底端开始不断剪枝,直到决策树的根结点,形成一个子树序列;
b. 通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树。
下面分别详细讨论特征选择过程和剪枝过程。
2、特征选择过程
(1)分类树
分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。
【定义:基尼指数】分类问题中,假设有 K 个类,样本点属于第 k 类的概率为, 则概率分布的基尼指数定义为:
对于二分类问题,若样本点属于第1个类的概率是 p,则概率分布的基尼指数为:
对于给定的样本集合 ,其基尼指数为:(
是
中属于第 k 类的样本子集,K 是类的个数。)
【特征选择过程】若样本集合 根据特征
是否取某一可能值
被分割成
和
两部分,即
,
则在特征 的条件下,集合
的基尼指数定义为:
基尼指数 表示集合
的不确定性,基尼指数
表示经
分割后集合
的不确定性。基尼指数越大,样本集合的不确定性也就越大。
(2)回归树(最小二乘回归树,least squares regression tree)
假设 X 与 Y 分别为输入和输出变量,并且 Y 是连续变量,给定训练数据集 。
一棵回归树对应着输入空间(即特征空间)的一个划分以及在划分的单元上的输出值。假设已将输入的空间划分为 M 个单元 ,并且每个单元
上有一个固定的输出值
,于是回归树模型可表示为:
当输入空间的划分确定时,可以用平方误差 来表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。易知单元
上的
的最优值
是
上的所有输入示例
对应的输出