决策树算法梳理以及python实现
1.信息论基础
1.1 熵
熵:用通俗点的话来说就是一个衡量混乱程度的单位。例如一个杯子A里只倒了啤酒,而另
一个杯子B里倒了啤酒,白酒, 红酒,那么我们说杯子A的熵值比杯子B的熵值小
\
专业解释:假设随机变量X的可能取值有x1,x2,...,xnx1,x2,...,xn,对于每一个
可能的取值xi,其概率为P(X=xi)=pi,i=1,2...,n。随机变量的熵为
底数选取不影响
1.2 联合熵
联合熵:联合熵就是度量一个联合分布的随机系统的不确定度
1.3 条件熵
条件熵: H(Y|X) 表示在已知随机变量 X 的条件下随机变量 Y 的不确定性。条件熵 H(Y|X) 定义为 X 给定条件下 Y 的条件概率分布的熵对 X 的数学期望
1.4 信息增益 Information Gain
信息增益:通俗点说,就是决策树中父节点和子节点之间的信息熵之差专业解释:以某特征划分数据集前后的熵的差值。选择节点通常选取信息增益相对最大的那个点
举例:
14天中9天打球,5天不打球,熵值:
四个特征:天气/温度/湿度/风
选谁当根节点?
特征一:天气
(5/14) 5天晴天中2天打球,3天不打球
(4/14) 4天阴天都打球
(5/14) 5天雨天中3天打球,2天不打球
熵计算:
信息增益:
0.940−0.693=0.247
同理算出
特征二:gain(温度) = 0.029
特征三:gain(湿度) =0.152
特征四:gain(风) = 0.048
max (gain(特征一), gain(特征二), gain(特征三), gain(特征四)) = 0.247 →
→ 选择特征一:天气作为根节点。
下面的子节点需要再遍历算一遍找出max(gain(feature))
1.5 基尼不纯度(Gini)
Gini:和熵的作用类似,样本混乱程度越低,Gini的值越接近0,样本不确定性越小
2.决策树优缺点
优点:
- 易于理解和解释,因为树木可以画出来被看见
- 需要很少的数据准备。其他很多算法通常都需要数据规范化,需要创建虚拟变量并删除空值等。但请注意,sklearn中的决策树模块不支持对缺失值的处理。
- 使用树的成本(比如说,在预测数据的时候)是用于训练树的数据点的数量的对数,相比于其他算法,这是一个很低的成本。
- 能够同时处理数字和分类数据,既可以做回归又可以做分类。其他技术通常专门用于分析仅具有一种变量类型的数据集。
- 能够处理多输出问题,即含有多个标签的问题,注意与一个标签中含有多种标签分类的问题区别开
- 是一个白盒模型,结果很容易能够被解释。如果在模型中可以观察到给定的情况,则可以通过布尔逻辑轻松解释条件。相反,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。
- 可以使用统计测试验证模型,这让我们可以考虑模型的可靠性。
- 即使其假设在某种程度上违反了生成数据的真实模型,也能够表现良好
缺点:
- 决策树学习者可能创建过于复杂的树,这些树不能很好地推广数据。这称为过度拟合。修剪,设置叶节点所需的最小样本数或设置树的最大深度等机制是避免此问题所必需的,而这些参数的整合和调整对初学者来说会比较晦涩
- 决策树可能不稳定,数据中微小的变化可能导致生成完全不同的树,这个问题需要通过集成算法来解决。
- 决策树的学习是基于贪婪算法,它靠优化局部最优(每个节点的最优)来试图达到整体的最优,但这种做法不能保证返回全局最优决策树。这个问题也可以由集成算法来解决,在随机森林中,特征和样本会在分枝过程中被随机采样。
- 有些概念很难学习,因为决策树不容易表达它们,例如XOR,奇偶校验或多路复用器问题。
- 如果标签中的某些类占主导地位,决策树学习者会创建偏向主导类的树。因此,建议在拟合决策树之前平衡数据集。
3.决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景
决策树的原理:决策树是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,已解决分类和回归(回归树)问题。
决策树算法的核心是解决以下两个问题:
- 如何从数据表中找出最佳结点和最佳分支
- 如何让决策树停止生长,防止过拟合
3.1 ID3算法(使用信息增益选择特征)
3.2 C4.5算法(使用信息增益比)
3.3 CART分类树(使用基尼系数)
CART(Classification and Regression Tree)算法由两步组成:
- 决策树的生成:用训练数据生成尽可能大的决策树
- 决策树剪枝:用验证数据集基于损失函数最小化的标准,对已生成的树进行剪枝并选择最优子树。
4. 回归树原理
示例
第一步:选择最优切分变量j与最优切分点s
在本数据集中,只有一个变量,因此最优切分变量自然是x。
重复以上步骤
回归树总体流程,分枝时穷举每一个特征的每一个阈值,来寻找最优切分特征j和最优切分点s,衡量的方法是平方误差最小化。分枝直到达到预设的终止条件(如叶子个数上限)就停止。
针对单个回归树,利用boosting框架升级改良------>提升树(Boosting Decision Tree)------>梯度提升树(Gradient Boosting Decision Tree,GBDT)------>XGBoost
5.决策树防止过拟合手段
为了让决策树有更好的泛化性,我们要对决策树进行剪枝。剪枝策略对决策树的影响巨大,正确的剪枝策略是优化决策树算法的核心。
5.1预剪枝
预剪枝:在决策树生成过程中,在每个节点划分前先估计其划分后的泛化性能, 如果不能
提升,则停止划分,将当前节点标记为叶结点。
5.2 后剪枝
后剪枝:生成决策树以后,再自下而上对非叶结点进行考察, 若将此节点标记为叶结点可
以带来泛化性能提升,则修改之。
6. sklearn参数详解,Python绘制决策树
参数详解:
- criterion: 分类树 entropy(信息熵) / gini(基尼系数)
回归树 mse(均方误差) /friedman_mse(费尔德曼均方误差) / mae(绝对平方误差) - splitter: best(默认,优先选取最重要的特征) / random
- max_depth: 限制树的最大深度,建议从3开始
- min_sample_leaf & min_sample_split: 每个节点最少有几个样本,建议从5开始 / 每个节点中至少有X个样本才会继续分裂
- max_features:用来限制高维度数据的过拟合的剪枝参数
- class_weight:样本不均衡参数,默认问None,可填 balanced
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
wine = load_wine() # 载入数据
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']import graphviz
dot_data = tree.export_graphviz(clf, out_file="Tree.dot",feature_names = feature_name,class_names=["琴酒","雪莉","贝尔摩德"],filled=True # 结点是否填充,rounded=True # 结点是否有轮廓)
决策树算法梳理以及python实现相关推荐
- 任务三——决策树算法梳理
决策树算法梳理 信息论基础 熵(Entropy) 熵是随机变量的不确定性的度量.设 X 是一个离散的随机变量,其取值空间为 X ,概率密度函数p(x)=P(X=x),x∈X,则离散型随机变量 X ...
- 【机器学习】Decision Tree 决策树算法详解 + Python代码实战
文章目录 一.直观理解决策树 二.熵的作用 三.信息增益 四.决策树构造实例 4.1 问题描述 4.2 根节点构造 五.信息增益率和GINI系数 5.1 信息增益存在的问题 5.2 信息增益率 5.3 ...
- 决策树算法原理(python)
实验环境 python 3.6.5 jupyter 决策树是什么 决策论中,决策树(Decision tree)由一个决策图和可能的结果(包括资源成本和风险)组成, 用来创建到达目标的规划.决策树建立 ...
- python中id3决策树算法_ID3决策树算法实现(Python版)
1 #-*- coding:utf-8 -*- 2 3 from numpy import * 4 importnumpy as np5 importpandas as pd6 from math i ...
- 【机器学习】Java 代码实现 CART 决策树算法
文章目录 一.决策树算法 二.CART 决策树 三.Java 代码实现 3.1 TrainDataSet 3.2 DataType 3.3 PredictResult 3.4 CartDecision ...
- 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集
各位同学好,今天和大家分享一下python机器学习中的决策树算法,在上一节中我介绍了决策树算法的基本原理,这一节,我将通过实例应用带大家进一步认识这个算法.文末有完整代码和数据集,需要的自取.那我们开 ...
- Python机器学习(三)--决策树算法
Python机器学习(三)--决策树算法 原创 2014年07月14日 13:57:55
- python决策树算法_决策树算法及python实现
决策树算法是机器学习中的经典算法 1.决策树(decision tree) 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别. 假设小明去看 ...
- python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现
概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...
最新文章
- NLP这两年:15个预训练模型对比分析与剖析
- YEP共享平台释放宜人贷无限潜力
- 【Ubuntu 16】源码包安装Apache Httpd
- Javascript设计模式(四)-- 建造者模式
- WORD如何制作参考文献?
- mysql 通讯录的实现_mysql中文排序并实现仿手机通讯录
- DWG 、DXF格式互转、CAD版本转换,记住一个就能快速提高你的工作效率!
- ASP.NET Core 和 EF Core 系列教程——入门
- [FAQ06649] Latin输入法怎么默认勾选几种语言?
- 网络翻译-利用有道接口
- CodeForces - 999C Alphabetic Removals
- java的pdf转永中_永中pdf转word下载|
- Securecrt 配色方案
- w7文件加密提示没启用服务器,win7文件夹设置密码没有密钥提示
- Redhat8认证考试(第三题)
- 记第一次实战靶场的经验
- 揭露数据不一致的利器 —— 实时核对系统
- dos系统的界面字体设置
- 无损视频合并软件有哪些?如何合并视频
- 【jquery事件】
热门文章
- 999策略手机论坛_999策略手机论坛
- [生存志] 第53节 晏子春秋录纯臣
- 侯江亭的一些介绍,我是一个不怕苦不怕累的人
- 5分绩点转4分_张康阳重大利好,国米提前4轮进欧冠!只差尤文5分,争冠还有戏...
- minio存储类型 归档管理页面_软件定义存储,看这一篇就够了
- 苹果华为不送充电头后,这些人赚翻了
- python输入长和宽输出面积_请用C++编写 从键盘上输入长方形的长和宽,输出周长和面积...
- 数据结构初学之循环队列补充
- Tryhackme blue
- 教你如何一键下载汽车之家作者的所有无水印视频