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

简介: 决策树(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).

预剪枝

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

后剪枝

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

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

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

目录
相关文章
|
20天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
25天前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
58 1
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
65 1
|
1天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
16 1
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
16 1
|
6天前
|
机器学习/深度学习 存储 算法
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
26 7
|
14天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】机器学习简单入门
【机器学习】机器学习简单入门
37 1
|
1月前
|
机器学习/深度学习 数据采集 算法
实现机器学习算法(如:决策树、随机森林等)。
实现机器学习算法(如:决策树、随机森林等)。
24 0
|
1月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。