机器学习入门|决策树(一)

简介: 决策树(decesion tree)算法与其他机器学习算法最大的优势就是有很好的解释性,并可将分类结果进行可视化展示。但是决策树算法选择特征的方法众多,如何选择合适的方法是一个难点。

决策树(decesion tree)算法与其他机器学习算法最大的优势就是有很好的解释性,并可将分类结果进行可视化展示。但是决策树算法选择特征的方法众多,如何选择合适的方法是一个难点。

一、决策树一些概念

  • 决策树是一种树形结构,叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根节点包含样本全集。基本划分流程遵循简单而直观的“分而治之”(divide-and-conquer)策略
  • 决策树算法式基于启发式思想比如贪婪方法,逐步构建决策树,在每个节点采用局部最优策略。这种算法不能保证返回全局最优的决策树,但是在实践中效果也不错
  • 决策树学习是以实例为基础的归纳学习,在本质上是从训练数据集中归纳出一组分类规则,其学习的策略是以损失函数(损失函数通常是正则化的极大似然函数)为目标函数的极小化
  • 决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶子节点中的实例都属于一类
    注:正则化,知乎上看到一个很好的解释。英文为regularizer,顾名思义,规则化就是...向你的模型加入某些规则,加入先验,缩小解空间,减小求出错误解的可能性。你要把你的知识数学化告诉这个模型,对代价函数来说,就是加入对模型“长相”的惩罚。

二、划分选择

划分不断进行,我们希望树的分支节点所包含的样本尽可能属于同一类别,即节点的“纯度”(purity)越来越高。说白了,就是划分数据的原则就是是使无序的数据变得有序

1.信息增益

什么叫信息增益?
划分数据集之前之后信息发生的变化称为信息增益,计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
怎么计算?
首先,需要知道的是,信息肯定是由度量的,这个度量确实也有,就是香农提出来的“信息熵”(information entropy)。看一下字典对entropy的解释:(in data transmission and information theory) a measure of the loss of information in a transmitted signal or message.信息量的度量就等于不确定性的多少,而熵就是衡量这种不确定性(混杂度)的数学指标,被定义为信息的期望值。那么信息是什么?$x_{i}$的信息可定义为:$L(x_{i})=-log(p(x_{i}))$,其中$p(x_{i})$是选择该分类的概率。
假定当前样本集合$D$中的$k$类样本所占的比例为$p_{k}(k=1,2,....,|\gamma|)$,则$D$的信息熵被定义为

$$ Ent(D)=-\sum_{k=1}^{|\gamma|}p_{k}log_{2}p_{k}. $$

其中,$|\gamma|$表示分类的个数。$Ent(D)$的值越小,则$D$的纯度越高。
根据之前的解释,信息增益(information gain)表示得知属性(特征)$X$的信息而使得类$Y$的信息的不确定性减少的程度。
假定离散属性$a$有$V$个可能的取值$\left\{a^{1},a^{2},...,a^{V}\right\}$,若使用$a$来对样本集$D$进行划分,则会产生$V$个分支节点,其中第$v$个分支节点包含了$D$中所有在属性$a$上取值为$a^{v}$的结点,记为$D^{v}$。我们可以由上式计算出$D^{v}$信息熵,再考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重$\frac{|D^{v}|}{|D|}$,即样本数越多的分支结点的影响越大,于是可计算出用属性$a$对样本集$D$进行划分所获得的“信息增益”

$$ Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}Ent(D^{v}). $$

一般而言,信息增益越大,则意味着使用属性$a$来进行划分所获得的“纯度提升”越大。因此,我们可以用信息增益来进行决策树的划分属性选择。
ID3算法的核心是在决策树各个结点上应用信息增益准则来选择特征,递归地构建决策树。

2.增益率

信息增益准则对取值数目较多的属性有所偏好,举个例子,如果把样本的编号也作为一个属性来划分,那么显然将产生n个分支,每个分支结点仅包含一个样本,这些分支结点的纯度已达最大,然而这样的决策树不具备泛化能力,无法对新样本进行有效预测。所以在C4.5决策树算法中不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优划分属性:

$$ Gain-ratio(D,a)=\frac{Gain(D,a)}{IV(a)}, $$

其中

$$ IV(a)=-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}log_{2}\frac{|D^{v}|}{|D|} $$

称为a的“固有值”(intrinsic value).属性$a$的可能取值数目越多(即$V$越大),则$IV(a)$的值通常会越大.
需要注意的是,增益率准则对取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

3.基尼指数

CART(Classification and Regression Tree)决策树使用“基尼指数”(Gini index)来选择划分属性。数据集$D$的纯度可用基尼值来度量:

$$ Gini(D)=\sum_{k=1}^{|\gamma|}\sum_{k'\neq k}p_{k}p_{k'} $$

$$ =1-\sum_{k=1}^{|\gamma|}p_{k}^{2}. $$

直观来说,$Gini(D)$反映了从数据集$D$中随机抽取两个样本,其类别标记不一致的概率。因此,$Gini(D)$越小,则数据集$D$的纯度越高。属性$a$的基尼指数定义为

$$ Gini_index(D,a)=\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}Gini(D^{v}). $$

好了,总之不同的划分对应不同的决策树类型。

    ID3算法:信息增益
    C4.5算法:增益率
    CART算法:Gini指数

三、剪枝(pruning)

通过上述方法生成的决策树包含许多不必要的分支,这些分支可能是由于训练集合的噪音和异常值产生的。这导致了决策树算法可能过拟合,根据奥卡姆剃刀准则,为了防止结点划分过程不断重复,造成决策树分支过多,以至于因训练样本学的“太好”了把训练集自身的一些特点当作所有数据都具有的一般性质而导致过拟合,应该考虑对决策树进行适当简化。这就是剪枝了。
剪枝的策略有两种:预剪枝(prepruning)和后剪枝(postpruning).

预剪枝

在树完全构造出来之前提前停止树的构造。即在指决策树生成过程中,对每个结点在划分前后进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。

后剪枝

对已生成的树进行剪枝,这种策略效果好于预剪枝,打破了决策树生成时的不回溯限制。即对于从训练集中生成的一颗完整的决策树,自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

决策树就先搞到这里,虽然只是浅尝辄止,以后还会补充(~ ̄▽ ̄)~下一站——>支持向量机

参考:周志华《机器学习》

目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 算法
量子机器学习入门:三种数据编码方法对比与应用
在量子机器学习中,数据编码方式决定了量子模型如何理解和处理信息。本文详解角度编码、振幅编码与基础编码三种方法,分析其原理、实现及适用场景,帮助读者选择最适合的编码策略,提升量子模型性能。
311 8
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
710 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
12月前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
648 15
|
机器学习/深度学习 数据采集
机器学习入门——使用Scikit-Learn构建分类器
机器学习入门——使用Scikit-Learn构建分类器
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
809 1
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:机器学习入门指南
【10月更文挑战第30天】本篇文章是一份初学者友好的机器学习入门指南,旨在帮助读者理解并开始实践机器学习。我们将介绍机器学习的基本概念,包括监督学习、无监督学习和强化学习等。我们还将提供一些实用的代码示例,以帮助读者更好地理解和应用这些概念。无论你是编程新手,还是有一定经验的开发者,这篇文章都将为你提供一个清晰的机器学习入门路径。
276 2
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
132 1
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
149 1
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型选择与训练、模型评估及交叉验证等关键步骤。通过本文,初学者可以快速上手并掌握机器学习的基本技能。
256 2

热门文章

最新文章