1.CART算法与ID3算法对比
(1)CART算法解决了ID3算法的不足,既能用于分类问题,又能用于回归问题。
(2)实际上,CART算法的主体结构和ID3算法基本相同,只是在以下几点有所改变:
①选择划分特征时,ID3使用信息熵量化数据集的混乱程度;CART使用基尼指数(Gini Index)和均方误差(MSE)量化数据集的混乱程度。
【注】CART算法用于分类使用基尼指数,用于回归使用均方误差。
②选定某切分特征时,ID3算法使用该特征所有可能的取值进行切分,例如一个特征有k个取值,数据集则被切成k份,创建k个子树;CART算法使用某一阈值进行二元切分,即在特征值的取值范围区间内进行选择一个阈值t,将数据集切成两份,然后使用一个数据子集(大于t)构建左子树,使用另一个数据子集(小于等于t)构造右子树,因此CART算法构建的是二叉树。
③对于已用于创建内部节点的特征,在后续运算中(创建子树中的节点时),ID3算法不会再次使用它创建其它内部节点;CART算法可能会再次使用它创建其他内部节点。
(3)CART算法不仅可以处理离散值特征,也可以处理连续值特征。
处理连续值特征的思路为:把数据集中的每一个特征动态地转换成多个布尔值特征,形成新特征空间中的数据集。
实例:假设某数据集中有一个“温度”特征,该特征出现过的值有[10,-15,0,-9,5,22]
CART算法将做以下处理:
①先将“温度”特征出现的值排序,得到列表[-15,-9,0,5,10,22](6个值);
②依次取[-15,-9,0,5,10,22]中相邻两值得中点作为阈值点,将得到阈值列表[-12,-4.5,2.5,7.5,16](5个值);
③使用每一个阈值与原来特征的值进行比较,便得到了取值为0或1的布尔值特征,例如“温度是否大于-12”、“温度是否大于-4.5”(共5个)。
使用以上处理方法,在数据集中k个取值的“温度”特征就被转换成了k-1个布尔值特征。
2.CART算法详述
CART算法相关概念及功能【注】iris鸢尾花数据集和boston房价数据集都是sklearn库自带的数据集,编写程序时直接load进去就可以使用了。
(1)分类树案例:给iris数据集进行分类
CART分类树 模型拟合结果 iris数据集分类树(2)回归树案例:对boston房价进行回归预测
说明:cart回归树划分数据集的过程和分类树的过程是一样的,回归树得到的预测结果是连续值,评判不纯度的指标不同;分类树采用的是基尼系数,回归树需要根据样本的离散程度来评价不纯度,采用的是均方误差。
节点划分(即计算样本的离散程度)
①最小绝对偏差(LAD):样本值减去样本均值的绝对值,即
最小绝对偏差【注】此公式不是十分肯定,后续查找到相关资料再对其进行修改。
②最小二乘偏差(LSD):每个样本值减去样本均值的平方和除以样本数,即
最小二乘偏差(均方误差) CART回归树 模型拟合结果
网友评论