决策树算法总结
决策树算法总结
基本概念
决策树是一种基本的分类与回归方法,通过对特征空间进行划分构建树形结构以实现决策。它由节点和有向边构成,内部节点代表一个特征或属性,分支是该特征的不同取值,叶节点表示类别或值。其核心思想是依据特征的不同取值对数据集进行递归划分,直至满足停止条件。
信息论相关概念
熵(Entropy):用于衡量随机变量不确定性的指标。对于离散随机变量 \(X\),其取值为 \(x_1, x_2, \cdots, x_n\),概率分布为 \(P(X = x_i)=p_i\),\(i = 1, 2, \cdots, n\),则 \(X\) 的熵 \(H(X)\) 定义为:
\(H(X)=-\sum_{i = 1}^{n}p_i\log_2 p_i\)
条件熵(Conditional Entropy):在已知随机变量 \(X\) 的条件下,随机变量 \(Y\) 的不确定性。计算公式为:
\(H(Y|X)=\sum_{i = 1}^{n}p(x_i)H(Y|X = x_i)\)
其中 \(p(x_i)\) 是 \(X\) 取值为 \(x_i\) 的概率,\(H(Y|X = x_i)\) 是在 \(X = x_i\) 条件下 \(Y\) 的熵。
信息增益(Information Gain):得知特征 \(A\) 的信息使类 \(D\) 的信息不确定性减少的程度,计算公式为:
\(g(D, A)=H(D)-H(D|A)\)
其中,\(H(D)\) 代表数据集 \(D\) 的熵,它用于衡量不同分类类别所具有的不确定性,与所选取的特征无关,体现的是整体分类的不确定性。举例来说,若数据集中存在两类样本,数量分别为 6 和 9,那么样本总数为 15,计算得到 \(p_1 = \frac{6}{15}\),\(p_2 = \frac{9}{15}\),据此便可计算出相应的熵值。
\(H(D|A)\) 是在特征 \(A\) 给定条件下,数据集 \(D\) 的条件熵。仅考虑特征 \(A\),在 \(A\) 不同取值的分组下,计算各组内不同的分类带来的不确定性,随后将各组的不确定性加权求和,此即 “给定条件 \(A\) 下” 分类的不确定性。
信息增益比(Information Gain Ratio):为克服信息增益偏向选择取值较多特征的问题而提出,计算公式为:
\(gr(D, A)=\frac{g(D, A)}{H_A(D)}\)
其中 \(H_A(D)\) 是特征 \(A\) 本身的熵,不关心分类情况,只看特征的取值是否稳定,能表示特征 \(A\) 取值的不确定性,就像一个内核稳定的人,其行为和决策往往有着相对固定的模式,较少受到外界因素的干扰,使得其行为的不确定性较低 。
决策树算法
ID3 算法
原理:以信息增益为准则选择划分特征,每次选取信息增益最大的特征作为当前节点的划分特征,递归构建决策树。
步骤:
计算数据集 \(D\) 的熵 \(H(D)\)。
针对每个特征 \(A\),计算其条件熵 \(H(D|A)\) 和信息增益 \(g(D, A)\)。
挑选信息增益最大的特征作为当前节点的划分特征。
依据该特征的不同取值将数据集 \(D\) 划分为若干子集,对每个子集递归重复上述步骤,直到满足停止条件(如所有样本属于同一类、无特征可划分等)。
缺点:倾向于选择取值较多的特征,易导致过拟合。
C4.5 算法
原理:以信息增益比为准则选择划分特征,克服了 ID3 算法的缺点。
步骤:与 ID3 算法类似,只是选择划分特征时使用信息增益比而非信息增益。
优点:减少对取值较多特征的偏好,提升模型的泛化能力。
损失函数
决策树的损失函数一般是正则化的极大似然函数,形式为:
\(C_{\alpha}(T)=C(T)+\alpha|T|\)
其中:
\(C(T)\) 是决策树 \(T\) 对训练数据的预测误差,计算公式为:
\(C(T)=-\sum_{i = 1}^{L}\sum_{k = 1}^{K}\frac{N_{ik}}{N}\log_2\frac{N_{ik}}{N_i}\)
假设决策树 \(T\) 有 \(L\) 个叶节点,第 \(i\) 个叶节点包含 \(N_i\) 个样本,其中属于第 \(k\) 类的样本有 \(N_{ik}\) 个,总样本数为 \(N\),\(K\) 是类别总数。该公式先计算每个叶节点的熵,再用每个叶节点样本数占总样本数的比例作为权重,对所有叶节点的熵加权求和得到 \(C(T)\)。
从直观上看,\(C(T)\) 用于衡量结果树中各节点的不纯度。
\(\alpha\) 是正则化参数,用于控制模型复杂度。
\(|T|\) 是决策树 \(T\) 的叶节点个数,反映树的大小。树越大,模型越复杂,越易过拟合。通过调整 \(\alpha\) 的值,可在模型拟合能力和复杂度间权衡。\(\alpha\) 较小时,注重模型对训练数据的拟合,可能得到较复杂的树;\(\alpha\) 较大时,倾向选择简单的树以避免过拟合。
CART
CART算法(Classification and Regression Tree,分类与回归树)中回归树相关知识总结如下:
- 回归树模型表示:假设输入变量为X,输出变量为Y且Y是连续变量,给定训练数据集。一棵回归树对应输入空间(特征空间)的划分及划分单元上的输出值。若输入空间已划分为M个单元\(R_1, R_2, \cdots, R_M\),每个单元\(R_m\)上有固定输出值\(c_m\),则回归树模型可表示为\(\hat{f}(x)=\sum_{m = 1}^{M}c_mI(x \in R_m)\)。
- 预测误差衡量与最优输出值求解:当输入空间划分确定时,用平方误差\(\sum_{x_i \in R_m}(y_i - c_m)^2\)表示回归树对训练数据的预测误差。单元\(R_m\)上的\(c_m\)最优值\(\hat{c}_m\)是\(R_m\)上所有输入实例\(x_i\)对应的输出\(y_i\)的均值,即\(\hat{c}_m = \frac{1}{N_m}\sum_{x_i \in R_m}y_i\),其中\(N_m\)是\(R_m\)中样本的数量。
- 输入空间划分方法:采用启发式方法,选择第\(j\)个变量\(x^{(j)}\)和它取的值\(s\)作为切分变量和切分点,并定义两个区域\(R_1(j, s)=\{x|x^{(j)} \leq s\}\)和\(R_2(j, s)=\{x|x^{(j)} > s\}\)。然后寻找最优切分变量\(j\)和最优切分点\(s\),具体是求解\(\min_{j, s}[\min_{c_1}\sum_{x_i \in R_1(j, s)}(y_i - c_1)^2 + \min_{c_2}\sum_{x_i \in R_2(j, s)}(y_i - c_2)^2]\)。对于固定的输入变量\(j\)可以找到最优切分点\(s\),即\(\hat{s}_j = \arg\min_{s}[\min_{c_1}\sum_{x_i \in R_1(j, s)}(y_i - c_1)^2 + \min_{c_2}\sum_{x_i \in R_2(j, s)}(y_i - c_2)^2]\) ,再遍历所有输入变量,找到最优的切分变量\(j\),构成一个对\((j, s)\),依此将输入空间划分为两个区域。
- 回归树生成过程:对每个区域重复上述输入空间划分过程,直到满足停止条件为止,这样生成的回归树通常称为最小二乘回归树。
以下是整理后的最小二乘回归树生成算法:
算法名称:最小二乘回归树生成算法
输入:训练数据集 \(D = \{(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)\}\),其中 \(x_i\) 为输入特征向量,\(y_i\) 为连续型输出值。
输出:回归树 \(f(x)\)。
算法步骤:
- 选择最优切分变量和切分点:
- 在训练数据集所在的输入空间中,遍历所有的特征变量 \(j\)(假设特征变量共有 \(n\) 个,\(j = 1, 2, \cdots, n\))。
- 对于固定的切分变量 \(j\),扫描所有可能的切分点 \(s\)(可以是该特征变量取值范围内的所有值)。
- 计算并求解 \(\min_{j, s}[\min_{c_1}\sum_{x_i \in R_1(j, s)}(y_i - c_1)^2 + \min_{c_2}\sum_{x_i \in R_2(j, s)}(y_i - c_2)^2]\),其中 \(R_1(j, s)=\{x|x^{(j)} \leq s\}\),\(R_2(j, s)=\{x|x^{(j)} > s\}\),\(c_1\) 是区域 \(R_1(j, s)\) 上的输出值,\(c_2\) 是区域 \(R_2(j, s)\) 上的输出值。
- 选择使上述式子达到最小值的变量 \(j\) 和切分点 \(s\) 组成的对 \((j, s)\)。
- 划分区域并确定输出值:
- 根据选定的对 \((j, s)\),将当前区域划分为两个子区域 \(R_1(j, s)\) 和 \(R_2(j, s)\)。
- 计算区域 \(R_1(j, s)\) 上的输出值 \(c_1 = \frac{1}{N_1}\sum_{x_i \in R_1(j, s)}y_i\),其中 \(N_1\) 是区域 \(R_1(j, s)\) 中样本的数量;计算区域 \(R_2(j, s)\) 上的输出值 \(c_2 = \frac{1}{N_2}\sum_{x_i \in R_2(j, s)}y_i\),其中 \(N_2\) 是区域 \(R_2(j, s)\) 中样本的数量。
- 递归划分:
- 对步骤 2 中得到的两个子区域,分别递归调用步骤 1 和步骤 2,即继续在每个子区域内寻找最优切分变量和切分点,进行区域划分并确定输出值。
- 递归过程持续进行,直到满足预先设定的停止条件。停止条件可以是:达到预设的树的最大深度、子区域内样本数量小于某个阈值、子区域内的样本输出值方差小于某个阈值等。
- 生成回归树:
- 经过上述递归划分后,将输入空间划分为 \(M\) 个区域 \(R_1, R_2, \cdots, R_M\)。
- 生成决策树 \(f(x)=\sum_{m = 1}^{M}c_mI(x \in R_m)\),其中 \(c_m\) 是区域 \(R_m\) 上的输出值,\(I(x \in R_m)\) 是指示函数,当 \(x\) 属于区域 \(R_m\) 时,\(I(x \in R_m) = 1\),否则 \(I(x \in R_m) = 0\)。