CART算法树前言
尽量用猫头鹰小盆友能理解的思维来解释和记录这一算法。概念和原理不一一再重复介绍了,很多好的链接已经说的很仔细了,此文是写给那些像我一样的小白,即使看了别人写的还是没法明白那西格玛公式以及各种算法,所以用了猫头鹰小盆友举例法来尝试白话文it,最后写的比较乱,毕竟还是自己的草稿,自己理解了就懒得继续往下写了,Impurity推理公式花的时间最多,因为当时自己不理解,后续会更新一个案例使用手写CART算法树来处理MNIST数据集,代码会更新在Github上。
决策树系列算法比较
决策树算法中,
- ID3使用信息增益(选大的)
- C4.5使用信息增益比(选大的)
- CART使用Gini(选小的)
原数据 + 需求 举例
按照AI处理主流流程,分三步:
- 原数据 + 模型 (此处我们采用CART)+ 需求(要解决的问题)
给出特征 和 最终Label ,使用CART实现最终分类。
-
原数据,特征是Color 和Diameter, 最终Label是结果
-
Cart模型解决问题的架构思路 (造一个树把原数据分类,最终叶子节点就是所有原数据)
-
思考:
- 有什么问题可以当做决策树的判断? (所有特征里distinct的值)
- 问题都有了,按照什么样的顺序问效率最好(Information Gain最大)
- Information Gain 是什么? (Information Gain= 上一层的Impurity - 下一层的Impurity的平均值)
大致Workflow
- 获取不同问题后下一层的Impurity的平均值
- 比较所有问题,使用Gain最大的一直作为决策条件
- 递归直至Impurity = 0
核心公式
对于任意一个含有 j j j 个不同类别 label 的集合, p i pi pi 表示第 i i i 种类别的元素占比(抽中概率), i ∈ { 1 , 2 , . . , j } i \in \{1, 2, .., j\} i∈{ 1,2,..,j} ,于是我们的基尼不纯度公式如下:
i m p u r i t y = 1 − ∑ i = 1 j p i 2 impurity = 1 - \sum_{i=1}^j p_i^2 impurity=1−i=1∑jpi2
或者写成 g i n i gini gini 代替 , i m p u r i t y impurity impurity 都是一个意思。
有的地方写的是 g i n i = ∑ i = 1 j p i ( 1 − p i ) gini = \sum_{i=1}^j p_i(1-p_i) gi