人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天咱们重点探讨一下CART算法。算法
咱们知道十大机器学习中决策树算法占有两席位置,即C4.5算法和CART算法,可见CART算法的重要性。下面重点介绍CART算法。机器学习
不一样于ID3与C4.5,CART为一种二分决策树,是满二叉树。CART算法由Breiman等人在1984年提出,它采用与传通通计学彻底不一样的方式构建预测准则,它是以二叉树的形式给出,易于理解、使用和解释。由CART模型构建的预测树在不少状况下比经常使用的统计方法构建的代数学预测准则更加准确,且数据越复杂、变量越多,算法的优越性就越显著。函数
CART算法既可用于分类也可用于回归。CART算法被称为数据挖掘领域内里程碑式的算法。学习
** CART算法概念:**优化
CART(Classification andRegression Tree)分类回归树是一种决策树构建算法。CART是在给定输入随机变量X条件下输出随机变量Y的条件几率分布的学习方法。CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策树等价于递归地二分每一个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上肯定预测的几率分布,也就是在输入给定的条件下输出的条件几率分布。人工智能
CART算法既能够处理离散型问题,也能够处理连续型问题。这种算法在处理连续型问题时,主要经过使用二元切分来处理连续型变量,即特征值大于某个给定的值就走左子树,或者就走右子树。blog
** CART算法组成:**递归
** CART算法组成以下:**get
1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽可能大;自上而下从根开始创建节点,在每一个节点处要选择一个最好(不一样算法使用不一样指标来定义"最好")的属性来分裂,使得子节点中的训练数据集尽可能的纯。数学
2)决策树剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树,这时损失函数最小做为剪枝的标准。这里用代价复杂度剪枝CCP(Cost-Complexity Pruning)。
决策树的生成就是经过递归地构建二叉决策树的过程,对回归树用平方偏差最小化准则,对分类树用基尼指数最小化准则,进行特征选择,生成二叉树。 CART决策树生成:
** 1)回归树生成**
回归树采用均方偏差做为损失函数,树生成时会递归的按最优特征与最优特征下的最优取值对空间进行划分,直到知足中止条件为止,中止条件能够人为设定,好比当切分后的损失减少值小于给定的阈值ε,则中止切分,生成叶节点。对于生成的回归树,每一个叶节点的类别为落到该叶节点数据的标签的均值。
回归树为一棵二叉树,每次都是按特征下的某个取值进行划分,每个内部节点都是作一个对应特征的判断,直至走到叶节点获得其类别,构建这棵树的难点在于如何选取最优的切分特征与切分特征对应的切分变量。
回归树与模型树既能够处理连续特征也能够处理离散特征。
回归树生成算法以下:
输入:训练数据集D={(x1,y1),(x2,y2),…,(xN,yN)}
输出:回归树T
1)求解选择切分特征j与切分特征取值s,j将训练集D划分为两部分,R1与R2,依照(j,s)切分后以下:
R1(j,s)={xi|xji≤s}R2(j,s)={xi|xji>s}
c1=1N1∑xi∈R1yi c2=1N2∑xi∈R2yi
2)遍历全部可能的解(j,s),找到最优的(j*,s*),最优的解使得对应损失最小,按照最优特征(j*,s*)来切分便可。
Min{∑(yi–c1)^2+∑(yi–c2)^2}
j,s xi∈R1 xi∈R2
3)递归调用1)和2),直到知足中止条件。
4)返回决策树T。
回归树主要采用了分治策略,对于没法用惟一的全局线性回归来优化的目标进行分而治之,进而取得比较准确的结果,但分段取均值并非一个明智的选择,能够考虑将叶节点设置为一个线性函数,这即是所谓的分段线性模型树。实验代表:模型树效果比回归树的效果要好一些。模型树只需在回归树的基础上稍加修改便可,对于分到叶节点的数据,采用线性回归的最小均方损失来计算该节点的损失。 2)分类树生成
分类树是CART中用来分类的,不一样于ID3与C4.5,CART分类树采用基尼指数来选择最优的切分特征,并且每次都是二分。
基尼指数是一个相似与熵的概念,对于一个有K种状态对应的几率为p1,p2,…,pK的随机变量X,其基尼指数Gini定义以下:
Gini(X)=∑pk(1?pk)=1?∑kp2k
k k
在已知特征A条件下集合D的基尼指数:
Gini(D,A)=(|D1|/|D|)*Gini(D1)+(|D2|/|D|)*Gini(D2)
Gini(D,A)取值越大,样本的不肯定性也越大,这一点与熵相似,因此选择特征A的标准是Gini(D,A)的取值越小越好。