李宏毅机器学习-task10

学习Gini指数

学习回归、分类树

剪枝

 

1、学习Gini指数

基尼指数

分类问题中,假设有 K 个类,样本点属于第 k 类的概率为 p_{k},则概率分布的基尼指数为:
\operatorname{Gini}(p)=\sum_{k=1}^{K} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2}
对于给定样本集合 D,其基尼指数为:
\operatorname{Gini}(D)=1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2}
如果样本集合 D 根据特征 A 是否取一可能值 a 被分割成 D_{1}D_{2} 两部分,则在特征 A 的条件下,集合 D 的基尼指数为:
\operatorname{Gini}(D, A)=\frac{\left|D_{1}\right|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{\left|D_{2}\right|}{|D|} \operatorname{Gini}\left(D_{2}\right)
使用基尼指数的优点:计算快,因为熵会涉及到大量的对数运算

 

2、学习分类与回归树

分类与回归树(CART)同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。

 

回归树生成

假设使用平方误差来表示回归树对于训练数据的预测误差

通俗理解:每次遍历所有特征,然后遍历每个特征的所有可能取值,在遍历的过程中每次计算把每个值当做切分点(此时数据集会分成两部分)时总体的平方误差之和,找出使其最小的取值,进行划分,以此类推。

输入:训练数据集D

输出:回归树f(x)

  • 选择使下式达到最小值时的最优切分遍历 j 和切分值 s
    \min _{j, s}\left[\min _{c_{1}} \sum_{x_{i} \in R_{1}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{i} \in R_{2}(j, s)}\left(y_{i}-c_{2}\right)^{2}\right]

  • 用选定的 (j, s) ,划分数据集并决定其相应的输出值

\begin{aligned} R_{1}(j, s) &=\left\{x | x^{(j)} \leqslant s\right\}, \quad R_{2}(j, s)=\left\{x | x^{(j)}>s\right\} \\ \hat{c}_{m} &=\frac{1}{N_{m}} \sum_{x \in R_{m}(j, s)} y_{i}, \quad x \in R_{m}, \quad m=1,2 \end{aligned}

  • 对子集继续执行上述两个步骤,直到满足停止条件
  • 将输入空间划分为M个区域 R_{1},R_{2},R_{3},...R_{M},生成决策树:

f(x)=\sum_{m=1}^{M} \hat{c}_{m} I\left(x \in R_{m}\right)

CART剪枝

核心思想:首先从生成算法产生的决策树 T_{0} 低端开始不断剪枝,知道 T_{0} 的根节点,形成一个子树序列 \{T_{0},T_{1},...,T_{n}\} ;然后通过交叉验证法在独立的验证数据集上对子树序列进行预测从中选择最优子树

核心计算:

从整体树 T_{0} 开始剪枝,对 T_{0} 的任意内部节点 t, 以 t 为单结点树的损失函数为:
C_{\alpha}(t)=C(t)+\alpha
t 为根节点的子树 T_{t} 的损失函数为:
C_{\alpha}\left(T_{t}\right)=C\left(T_{t}\right)+\alpha\left|T_{t}\right|
\alpha = 0 及其充分小时,有不等式:
C_{\alpha}\left(T_{t}\right)<C_{\alpha}(t)
\alpha 增大时,在某一 \alpha 有:
C_{\alpha}\left(T_{t}\right)=C_{\alpha}(t)
\alpha 再增大时,上述不等式反向,只要\alpha=\frac{C(t)-C\left(T_{t}\right)}{\left|T_{t}\right|-1}, T_{t}t 有相同的损失函数值,而 t 的结点少,因此 tT_{t} 更可取,对 T_{t} 进行剪枝

输入:CART算法生成的决策树

输出:最优决策树

  • 自上而下地对各内部节点 t 计算下式,然后使 \alpha等于最小的 g(t)
    g(t)=\frac{C(t)-C\left(T_{t}\right)}{\left|T_{t}\right|-1}

  • 自上而下地遍历内部节点 t,如果有 g(t) = \alpha ,进行剪枝,并对叶节点 t 以多数表结法决定其类,得到树 T

  • 对树 T 重复上述操作,将得到一个子树序列

  • 采用交叉验证法在子树序列中选取最优子树


参考:
链接:1、https://www.jianshu.com/p/b22f119e3ab1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值