机器学习系列(7)_决策树与随机森林概念

简介: 机器学习系列(7)_决策树与随机森林概念

决策树有三种算法:

4659be3053c74905935c1bc1e24317b0.png


一、熵与基尼系数



熵:一件事情的混乱程度

c0faa359b1914cdb89c74df3ef0cbb53.png


  1. 如果一个集合内部的属性很多,混乱程度就很大,则熵值也较大
  2. 如果一个集合内部的属性很少,混乱程度就很小,则熵值也较小


8ecf311075a34e33a6fa3cddf28e03c4.png

image.png

image.png

基尼系数和熵在公式上面不同,但是表达的结果是相同的。

  • 熵和基尼系数越大,说明当前分类效果越不好
  • 熵和基尼系数越小,说明当前分类效果越好


二、决策树构造实例



构造树的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到一棵高度最矮的决策树。

熵降低的速度越快越好:能有三步构造决策树,就不使用五步构造决策树。要使决策树的分类层次少。

以打球为例:

此时的熵是单纯根据以往是否打球来计算的概率,没有考虑天气等其他因素:

912ed858365146ddb83c30e0d856b1da.png9ea1e9bd81be467f9a0d7976eb6735c2.png

2075e9affcab488ca17aca59ad30287f.pngimage.png


三、信息增益(ID3算法)



ID3算法(信息增益):较为传统的算法,使用信息增益构建决策树。

信息增益就是将原始的熵减去用某个指标当根节点之后的熵。

在本例中就是如下所示的gain(outlook)

1db685da3eda47e7b993c5df2e811977.png

信息增益越大,那么决策树就会越简洁。这里信息增益的程度用信息熵的变化程度来衡量。

因此将四个参数的信息增益值计算出来,信息增益最大的就是根节点。

其余的节点也是一样的,类似于一个递归的操作,每次都选择同类型当中信息增益大的作为节点。

四、信息增益率(C4.5算法)

通常仅使用信息增益来绘制决策树是不靠谱的,如果某个特征存在的属性很多,但是属性对应样本的个数很少,这种情况下信息增益很大,但却无法得到我们想要的效果。

比如将ID也当成一个特征,那么每个样本的ID都是不同的,且每个样本分类当中只有自身,因此纯度很高,熵为0,信息增益最大。但这将导致每个样本都分成一类,不是我们期望的。

因此引入信息增益率。

信息增益率=信息增益 / 自身的熵值

如何衡量最终决策树的效果呢,可以使用评价函数:

image.png

这里使用H(t)表示每个叶子节点算出的基尼系数或者熵值,最终目的希望每个叶子节点的纯度很大,因此希望H(t)很小。


因此评价函数越小越好。


C4.5算法是ID3算法的扩展

能够处理连续型的属性。首先将连续型属性离散化,把连续型属性的值分成不同的区间,依据是比较各个分裂点Gian值的大小。

缺失数据的考虑:在构建决策树时,可以简单地忽略缺失数据,即在计算增益时,仅考虑具有属性值的记录。

image.png


image.png



五、二分选值



image.png


六、决策树减枝



即让决策树的层数较小,高度较矮。因为如果决策树很高的话,最终在训练集上都能达到100%的纯度,但是对于测试集,就可能造成误差,产生过拟合,因此需要让决策树的层数较小,高度较矮。

  1. 预剪枝:在构建决策树的过程时,提前停止。

即指定决策树的深度,比如指定为3,则分到第三层之后就停止继续分层了。

或者指定min_sample,就是当样本小于50个的时候,就停止继续分枝。

image.png


为什么要进行预减枝?为了防止过拟合的风险。

  1. 后剪枝:决策树构建好后,然后才开始裁剪。

image.png


因为叶子节点个数越多,越琐碎,则越容易造成过拟合。

最终要使得上图的公式值最小。

上面公式中的a值可以手工指定的:

如果a较大,则叶子节点个数要少

如果a较小,则叶子节点个数可以较多


七、随机森林



森林:多颗决策树就构造了一片森林。

随机森林:构造出来一片决策树,用一片决策树都完成决策的操作,每个决策树都单独执行决策的操作,最终的结果去所有决策树的众数。

随机: 由于样本可能有异常值,因此要进行随机的选择。一共有两重的随机性:

  1. 数据的选择随机性
    随机森去的样本是有放回的(就是可以有完全相同的样本),而且比例是随机的,都是在原始的训练集进行随机的选择。


  1. 特征选择的随机性
  2. Bootstraping有放回采样
  3. Bagging:有放回采样n个样本一共建立.分类器


决策树的参数:这些参数主要是觉得决策树怎么预减枝和后减枝的问题,防止过拟合的问题。

1、 criterion: 特征选取方法,可以是gini(基尼系数),entropy(信息增益),通常选择gini,即CART算法,如果选择后者,则是ID3和C4,.5


2、 splitter: 特征划分点选择方法,可以是best或random,前者是在特征的全部划分点中找到最优的划分点,后者是在随机选择的部分划分点找到局部最优的划分点,一般在样本量不大的时候,选择best,样本量过大,可以用random


3、 max_depth: 树的最大深度,默认可以不输入,那么不会限制子树的深度,一般在样本少特征也少的情况下,可以不做限制,但是样本过多或者特征过多的情况下,可以设定一个上限,一般取10~100


4、 min_samples_split:节点再划分所需最少样本数,如果节点上的样本树已经低于这个值,则不会再寻找最优的划分点进行划分,且以结点作为叶子节点,默认是2,如果样本过多的情况下,可以设定一个阈值,具体可根据业务需求和数据量来定


5、 min_samples_leaf: 叶子节点所需最少样本数,如果达不到这个阈值,则同一父节点的所有叶子节点均被剪枝,这是一个防止过拟合的参数,可以输入一个具体的值,或小于1的数(会根据样本量计算百分比)


6、 min_weight_fraction_leaf: 叶子节点所有样本权重和,如果低于阈值,则会和兄弟节点一起被剪枝,默认是0,就是不考虑权重问题。这个一般在样本类别偏差较大或有较多缺失值的情况下会考虑


7、 max_features: 划分考虑最大特征数,不输入则默认全部特征,可以选 log2N,sqrt(N),auto或者是小于1的浮点数(百分比)或整数(具体数量的特征)。如果特征特别多时如大于50,可以考虑选择auto来控制决策树的生成时间


8、 max_leaf_nodes:最大叶子节点数,防止过拟合,默认不限制,如果设定了阈值,那么会在阈值范围内得到最优的决策树,样本量过多时可以设定


9、min_impurity_decrease/min_impurity_split: 划分最需最小不纯度,前者是特征选择时低于就不考虑这个特征,后者是如果选取的最优特征划分后达不到这个阈值,则不再划分,节点变成叶子节点


10、class_weight: 类别权重,在样本有较大缺失值或类别偏差较大时可选,防止决策树向类别过大的样本倾斜。可设定或者balanced,后者会自动根据样本的数量分布计算权重,样本数少则权重高,与min_weight_fraction_leaf对应


11、presort: 是否排序,基本不用管


相关文章
|
2天前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
|
2天前
|
机器学习/深度学习 算法
理解并应用机器学习算法:决策树
【5月更文挑战第12天】决策树是直观的分类与回归机器学习算法,通过树状结构模拟决策过程。每个内部节点代表特征属性,分支代表属性取值,叶子节点代表类别。构建过程包括特征选择(如信息增益、基尼指数等)、决策树生成和剪枝(预剪枝和后剪枝)以防止过拟合。广泛应用在信贷风险评估、医疗诊断等领域。理解并掌握决策树有助于解决实际问题。
|
2天前
|
机器学习/深度学习 算法 图计算
图机器学习入门:基本概念介绍
图机器学习是机器学习的分支,专注于处理图形结构数据,其中节点代表实体,边表示实体间关系。本文介绍了图的基本概念,如无向图与有向图,以及图的性质,如节点度、邻接矩阵。此外,还讨论了加权图、自循环、多重图、双部图、异构图、平面图和循环图。图在描述数据关系和特征方面具有灵活性,为机器学习算法提供了丰富的结构信息。
7 0
|
2天前
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。
|
2天前
|
机器学习/深度学习 算法 数据可视化
【Python机器学习专栏】决策树算法的实现与解释
【4月更文挑战第30天】本文探讨了决策树算法,一种流行的监督学习方法,用于分类和回归。文章阐述了决策树的基本原理,其中内部节点代表特征判断,分支表示判断结果,叶节点代表类别。信息增益等标准用于衡量特征重要性。通过Python的scikit-learn库展示了构建鸢尾花数据集分类器的示例,包括训练、预测、评估和可视化决策树。最后,讨论了模型解释和特征重要性评估在优化中的作用。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。
|
2天前
|
机器学习/深度学习 人工智能 算法
【机器学习】探究Q-Learning通过学习最优策略来解决AI序列决策问题
【机器学习】探究Q-Learning通过学习最优策略来解决AI序列决策问题
|
2天前
|
机器学习/深度学习 算法 Python
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享(下)
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
2天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享(上)
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
|
2天前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。

热门文章

最新文章