Decision Tree
1. 什么是决策树
决策树是一个极其直观的算法(这也使得它的可解释性非常好),比如下面这个决策树
2. 基本决策树算法
从上面可以看出来这个形式非常的简单,那么如何生成一颗决策树?相信开始了nano degree并完成了P0的同学们都已经自己实现过一个决策树了,也就是大家做的Titanic的project,在第三个问题中,大家自己通过不断的选择特征,产看结果,最终得到了一个准确率超过80%的模型,这就是一个决策树。
可是这种方法明显是没有可扩展性可言的,大家可以体验到对于这么小的一个数据集大家都构建的很辛苦,并且准确率也不是太高。所以我们需要一个自动构建的算法。
其实这个算法也十分简单,对于我们的数据集来说我们关键是按照下面两步来完成决策树的构建:
- 选择一个最佳属性进行划分
- 对每一个子节点迭代进行划分,知道完全划分开
划分准则的选择
从上面关键的两步可以看出划分准则的选择是一个很重要的问题,因为理论上来说找到一个最佳的划分是一个NP-hard的问题,所以说我们不能够通过某一种算法得到最优划分,那么现在的做法就是通过一些启发式的指标来选择合适的划分准则,常用的有(下面我就不一一列公式了,大家可以从其他地方查一下):
- 信息增益(ID3使用这种)
计算划分前后信息熵的差值,增益大的划分好
- 信息增益率(C4.5使用这种)
信息增益存在的一个问题是,它对于可取值数目多的属性有偏好(极端情况,我把每一个值都作为一个划分将获得一个很大的信息增益)。所以定义了增益率(不过增益率会对取指少的有偏好,所以C4.5实际上对选择还有一个权衡,结合了增益和增益率考虑)。
- 基尼系数(CART使用这种)
暂时不了解它有什么明显缺陷,应该是现在相对最好的一个准则吧。
3. 常见决策树算法
常见的三个算法有:
- ID3
- CART
- C4.5
这三个算法都符合上面的简单形式,他们的不同点主要体现在1.如何选择最佳属性?2.对于各种不同属性的处理3.剪枝。大家可以学习下,我就不一一写出来了。
4. 决策树的剪枝
为什么需要剪枝?
上面没有太谈剪枝问题,那么首先看下为什么要剪枝?因为如果我们不对决策树剪枝的话,决策树会不断生长,这样就会出现我们熟悉的过拟合问题了。所以对决策树剪枝是十分必要的。
剪枝方式
- 前剪枝
所谓前剪枝就是我们可以在树还没有构建的情况下,选择一些先验的准则对树的生长做限制,比如:限制树最多生长多少层,限制树有多少节点等。这个部分大家如果用sklearn的话,实际上它后面的很多参数就是做了一个前剪枝的工作。
- 后剪枝
所谓后剪枝就是我们在树已经构建完成之后,我们对树进行修剪。这时候修剪当然就要考虑到生成的数和原始的数据集。所以一般的做法就是我们专门为决策树构建出一个剪枝测试集。然后对于树上的节点(可以一次考虑一个或者多个)我们都考虑保留这些节点和不保留这些节点,如果过测试出来不保留更佳的话我们就可以把这个剪掉。一般来说后剪枝的效果会更好,但是代价也会大很多所以是否采用也需要权衡。
5. 决策树的优缺点
我们也可以考虑一下决策树的优缺点,这里也能够帮助理解他的思想。这里简单列出几点:
优点
- 可解释性好
- 只需要很少的数据预处理工作。并且能够处理各种类型的特征
- 原生支持多分类
缺点
- 决策树容易过拟合
- 决策树不稳定,也就是说可能数据集的一个很小的变动就会导致树发生很大的改变。
- 构建一个最佳的决策树是一个NP-hard问题,现有的启发式算法不能够保证最优(也没有一个理论的上下界)。
- 简单的决策树模型比较简单,很难表示数据集中的复杂关系。
6. 建议学习方向
- 看一下具体的ID3(这个在Udacity提供的附加资料中就有)、C4.5、CART算法(其实这三个算法并不复杂,而且只是某个算法在某一方面做了一些优化)
- 自己实现一个决策树?(比如可以看《机器学习实战》,很简单)
- 看一下sklearn介绍1
7. 总结
决策树的关键在于如何自动构建和防止过拟合。
如果大家觉得还有一些知识是课程中提到或者是没提到但是十分重要的部分也欢迎补充。
相关推荐
决策树是一种监督学习方法,用于分类和回归任务。它通过递归地将数据集分割成子集来构建树结构,这个过程基于数据特征的最佳分割准则。随机森林是由多个决策树组成的集合,通过集成学习提高预测准确性和防止过拟合。...
决策树是一种非常直观且易于理解的监督学习方法,适用于分类与回归任务。它通过构建一棵树形结构来进行决策,其中每个内部节点表示一个特征上的判断条件,每个分支代表一个判断结果,而每个叶子节点则表示一个决策...
10. 机器学习算法:C4.5是一种著名的决策树算法,手册可能还涵盖了其他算法如K近邻(KNN)、朴素贝叶斯、AdaBoost、集成学习(如XGBoost和LightGBM)等,这些算法在各种任务中都有出色的表现。 总之,机器学习技术...
k-近邻(k-Nearest Neighbor,简称k-NN)是一种基础且直观的监督学习算法,广泛应用于分类和回归问题。它的核心思想是“物以类聚,人以群分”,即一个样本的类别可以根据其最接近的邻居来决定。在k-NN算法中,"k...
在本课程中,我们深入探讨了机器学习的三大主要领域:无监督学习、监督学习以及强化学习。让我们逐一详述这些领域的核心概念和关键算法。 无监督学习是机器学习的一个重要分支,它处理的是未标记的数据。无监督学习...
K近邻(K-Nearest Neighbors,简称KNN)算法是一种基于实例的学习方法,它属于监督学习的一种,主要用于分类和回归问题。KNN的思想是假设新样本会与训练集中最相似的K个样本(即K个最近邻)具有相同的类别或属性。...
分类器的构建方法多样,包括统计方法、机器学习算法(如决策树、支持向量机、神经网络等)和基于规则的方法。训练集是构建分类器的关键,它由一系列带标签的实例组成,每个实例是一个特征向量,标签是类别信息。分类...
常见的分类算法有决策树、朴素贝叶斯、支持向量机等。评价分类器性能的主要指标包括预测准确度、计算复杂度和模型的简洁度。预测准确度是衡量分类效果的常用标准,计算复杂度则涉及到算法的执行效率,特别是在大数据...
- **决策树**:一种易于理解和实现的监督学习算法,可用于分类和回归。 - **K近邻 (KNN)**:基于实例的学习方法,适用于分类和回归。 - **K均值 (k-means)** 和 **K-中心点 (k-medoids)**:两种常用的聚类算法。 - *...
乐远在Weka上对美国居民收入数据集进行了预测训练,这是实际应用机器学习模型的一个例子,可能是通过监督学习的分类算法,如决策树、随机森林或支持向量机等,尝试预测居民的收入水平。 在遇到的问题上,乐远提到...
模式分类PatternClassificationSecondEdition中译本-模式分类.part1.rar 计算机科学丛书——模式分类 Pattern Classification,Second Edition 中译本 ---------------------------------------------------------...
树模型包括决策树、随机森林、梯度提升决策树(GBDT)、XGBoost、LightGBM和CatBoost等,它们适用于分类和回归问题,并且能够处理非线性关系。 #### 3.6 KNN模型 KNN(K-最近邻)模型是一种基于距离的简单且有效的...
### 小结 遥感图像信息提取是遥感应用的重要组成部分,涵盖了从简单的图像分类到复杂的多源数据融合等多个方面。通过对不同方法的了解和掌握,可以有效地提高遥感图像分析的能力,更好地服务于环境监测、资源管理等...
1.6本章小结 全书各章概要 文献和历史评述 参考文献 ------------------------- 第二章贝叶斯决策论 2.1引言 2.2贝叶斯决策论连续特征 2.3最小误差率分类 2.4分类器判别函数及判定面 2.5正态函数 2.6正态...
- 分类算法:可能应用逻辑回归、决策树、随机森林等模型进行预测,使用ROC曲线评估性能。 - 非监督学习:可能进行聚类分析,识别相似的患者群体。 5. **结论与解释**:最后,基于上述分析,提供关于患者预后因素...