其他分享
首页 > 其他分享> > 统计学习方法学习笔记-05-决策树

统计学习方法学习笔记-05-决策树

作者:互联网

首先介绍决策树的基本概念,然后通过\(ID3\)和\(C4.5\)介绍特征的选择、决策树的生成以及决策树的修剪,最后介绍\(CART\)算法

决策树模型与学习

特征选择

如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的,特征选择在于选取对训练数据具有分类能力的特征,特征选择的准则一般是信息增益或信息增益比

信息增益

\[H(X) = -\sum_{i = 1}^np_i \log p_i \]

熵越大,随机变量的不确定性越大,\(0 \leq H(p) \leq \log n\)

\[H(Y|X) = \sum_{i = 1}^np_iH(Y|X = x_i) \]

这里\(p_i = P(X = x_i),i = 1,2,\cdots,n\)

\[g(D,A) = H(D) - H(D|A) \]

信息增益的算法

输入:训练数据集\(D\)和特征\(A\)
输出:特征\(A\)对训练数据集\(D\)的信息增益\(g(D,A)\)
设训练数据集为\(D\),\(|D|\)表示其样本容量,即样本个数,设有\(K\)个类\(C_k,k = 1,2,\cdots,K,|C_k|\)为属于类\(C_k\)的样本个数,\(\sum_{k = 1}^K|C_k| = |D|\),设特征\(A\)有\(n\)个不同的取值\(\{a_1,a_2,\cdots,a_n\}\),根据特征\(A\)的取值将\(D\)划分为\(n\)个子集\(D_1,D_2,\cdots,D_n\),\(|D_i|\)为\(D_i\)的样本个数,\(\sum_{i = 1}^n|D_i| = |D|\),记子集\(D_i\)中属于类\(C_k\)的样本的集合为\(D_{ik}\)即\(D_{ik} = D_i \bigcap C_k,|D_{ik}|\)为\(D_{ik}\)的样本个数

\[H(D) = -\sum_{k = 1}^K\frac{|C_k|}{|D|}\log_2 \frac{|C_k|}{|D|} \]

\[H(D|A) = \sum_{i = 1}^n\frac{|D_i|}{|D|}H(D_i) = -\sum_{i=1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|} \log_2\frac{|D_{ik}|}{|D_i|} \]

\[g(D,A) = H(D) - H(D|A) \]

信息增益比

目的:以信息增益作为划分训练数据集的特征,存在偏向于选择取值较多的特征的问题,使用信息增益比来校正

\[\begin{aligned} g_R(D,A) &= \frac{g(D,A)}{H_A(D)} \\ &= \frac{g(D,A)}{-\sum_{i = 1}^n\frac{|D_i|}{D} \log_2 \frac{|D_i|}{D}} \end{aligned} \]

决策树的生成

ID3算法

输入:训练数据集\(D\),特征集\(A\),阈值\(\varepsilon\)
输出:决策树\(T\)

C4.5生成算法

输入:训练数据集\(D\),特征集\(A\),阈值\(\varepsilon\)
输出:决策树\(T\)

决策树的剪枝

目的:解决过拟合问题

剪枝时的损失函数

设树\(T\)的叶结点个数为\(|T|\),\(t\)是树\(T\)的叶结点,该叶结点有\(N_t\)个样本点,其中\(k\)类的样本点有\(N_{tk}\)个,\(k = 1,2,\cdots,K\),\(H_t(T)\)为叶结点\(t\)上的经验熵,\(\alpha \geq 0\)为参数,则决策树学习的损失函数可以定义为:

\[C_\alpha(T) = \sum_{t = 1}^{|T|}N_tH_t(T) + \alpha|T| \]

其中经验熵为:

\[H_t(T) = -\sum_k\frac{N_{tk}}{N_t}\log \frac{N_{tk}}{N_t} \]

将式子左边记为:

\[C(T) = \sum_{t = 1}^{|T|}N_tH_t(T) = -\sum_{t = 1}^{|T|}\sum_{k = 1}^KN_{tk} \log \frac{N_{tk}}{N_t} \]

有:

\[C_\alpha(T) = C(T) + \alpha|T| \]

\(C(T)\)表示模型对训练数据的预测误差,即模型与训练数据的拟合程度,\(|T|\)表示模型复杂度,参数\(\alpha\)控制两者之间的影响,较大促使选择较简单的模型,较小促使选择较复杂的模型

树的剪枝算法

当\(\alpha\)确定时,选择损失函数最小的模型
输入:生成算法产生的整个树\(T\),参数\(\alpha\);
输出:修剪后的子树\(T_\alpha\)

CART算法

classification and regression tree分类与回归树模型

回归树的生成

假设输入\(X\)与\(Y\)分别为输入和输出变量,并且\(Y\)是连续变量,给定训练数据集\(D = \{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\)
输入:训练数据集\(D\);
输出:回归树\(f(x)\),对应着将特征空间划分为\(M\)个单元\(R_1,R_2,\cdots,R_M\),在每个单元上有一个固定的输出值\(c_m\);

\[\mathop{min}\limits_{j,s} \left[ \mathop{min}\limits_{c_1}\sum_{x_i \in R_1(j,s)}(y_i - c_1)^2 + \mathop{min}\limits_{c_2}\sum_{x_i \in R_2(j,s)}(y_i - c_2)^2 \right] \]

选择第\(j\)个变量\(x^{(j)}\)和它取的值\(s\)作为切分变量和切分点,定义两个区域\(R_1(j,s) = \{x|x^{(j)} \leq s\},R_2(j,s) = \{x|x^{(j)} \gt s\}\),遍历变量\(j\),对固定的切分变量\(j\)扫描切分点\(s\),选择使上式达到最小值的对\((j,s)\)

\[R_1(j,s) = \{x|x^{(j)} \leq s\},R_2(j,s) = \{x|x^{(j)} \gt s\} \\ \hat{c}_m = \frac{1}{N_m}\sum_{x_i \in R_m(j,s)}y_i,x \in R_m,m=1,2 \]

\[f(x) = \sum_{m = 1}^M\hat{c}_mI(x \in R_m) \]

分类树的生成

分类树使用基尼指数选择最优特征,同时决定该特征的最优二值切分点

基尼指数

分类问题中,假设有\(K\)个类,样本点属于第\(k\)类的概率为\(p_k\),则概率分布的基尼指数定义:

\[Gini(p) = \sum_{k = 1}^Kp_k(1-p_k) = 1 - \sum_{k = 1}^Kp_k^2 \]

对于给定的样本集合\(D\),其基尼指数为:

\[Gini(D) = 1 - \sum_{k = 1}^K\left(\frac{|C_k|}{|D|}\right)^2 \]

\(C_k\)是\(D\)中属于第\(k\)类的样本子集,\(K\)是类的个数。
如果样本集合\(D\)根据特征\(A\)是否取某一可能值\(a\)被分割成\(D_1\)和\(D_2\)两部分,即:

\[D_1 = \{(x,y) \in D|A(x) = a\},D_2 = D - D_1 \]

则在特征\(A\)的条件下,集合\(D\)的基尼指数定义为:

\[Gini(D,A) = \frac{|D_1|}{|D|}Gini(D_1) + \frac{|D_2|}{|D|}Gini(D_2) \]

基尼指数\(Gini(D)\)表示集合\(D\)的不确定性,基尼指数\(Gini(D,A)\)表示经\(A = a\)分割后集合\(D\)的不确定性,基尼指数值越大,样本集合的不确定性越大。

CART生成算法

输入:训练数据集\(D\),停止计算的条件;
输出:CART决策树;

CART剪枝

首先从生成算法产生的决策树\(T_0\)底端开始不断剪枝,直到\(T_0\)的根结点,形成一个子树序列\(\{T_0,T_1,\cdots,T_n\}\),之后通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树

剪枝,形成一个子树序列

\[C_\alpha(T) = C(T) + \alpha|T| \]

\[C_\alpha(t) = C(t) + \alpha \]

\[C_\alpha(T_t) = C(T_t) + \alpha|T_t| \]

\[C_\alpha(T_t) = C_\alpha(t) \]

\[g(t) = \frac{C(t) - C(T_t)}{|T_t| - 1} \]

在\(T_0\)中减去\(g(t)\)最小的子树\(T_t\),将得到的子树作为\(T_1\),同时将最小的\(g(t)\)设为\(\alpha_1\),\(T_1\)为区间\([\alpha_1,\alpha_2)\)的最优子树,如此剪枝下去,不断增加\(\alpha\)的值,产生了新的区间。

在剪枝得到的子树序列中通过交叉验证选取最优子树

CART剪枝算法

输入:CART算法生成的决策树\(T_0\)
输出:最优决策树\(T_\alpha\)

\[g(t) = \frac{C(t) - C(T_t)}{|T_t| - 1} \\ \alpha = min(\alpha,g(t)) \]

标签:结点,子树,frac,05,sum,学习,alpha,决策树
来源: https://www.cnblogs.com/eryoyo/p/16696571.html