[Hands On ML] 6. 决策树
文章目录
- 1. 训练与可视化
- 2. 分类预测
- 3. 模型参数
- 4. 回归
- 5. 不稳定性
本文为《机器学习实战:基于Scikit-Learn和TensorFlow》的读书笔记。
中文翻译参考
《统计学习方法》决策树笔记
决策树可以分类,也可以回归,还有多输出任务
是随机森林的基础组成部分
1. 训练与可视化
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
iris = load_iris()
X = iris.data[:, 2:] # petal length and width
y = iris.target
tree_clf = DecisionTreeClassifier(max_depth=2)
tree_clf.fit(X, y)
from sklearn.tree import export_graphviz
export_graphviz(tree_clf,out_file="iris_tree.dot",feature_names=iris.feature_names[2:],class_names=iris.target_names,rounded=True,filled=True)
安装好Graphviz,在cmd下输入 dot -Tpng iris_tree.dot -o iris_tree.png # cmd
,生成决策树可视化图片
2. 分类预测
决策树特性:不需要太多的数据预处理,尤其是不需特征缩放或归一化
tree_clf.predict_proba([[5,1.5]])
# array([[0. , 0.90740741, 0.09259259]])
tree_clf.predict([[5,1.5]])
# array([1])
- 预测时间复杂度:O(log2m)O(\log_2m)O(log2m),与特征数量无关,m为样本数
- 训练时间复杂度:O(nmlogm)O(nm\log m)O(nmlogm) ,n 为特征数量
max_features
通常,算法使用 Gini
不纯度来进行检测,也可以设置为entropy
- 基尼指数计算稍微快一点,SKlearn默认值
- 基尼指数会趋于在树的分支中将最多的类隔离出来
- 熵指数趋向于产生略微平衡一些的决策树模型
3. 模型参数
决策树不需要事先设置参数,不添加约束的决策树模型,能很好的拟合数据,容易过拟合
min_samples_split
(节点在被分裂之前必须具有的最小样本数)min_samples_leaf
(叶节点必须具有的最小样本数)min_weight_fraction_leaf
(和min_samples_leaf
相同,但表示为加权总数的一小部分实例)max_leaf_nodes
(叶节点的最大数量)max_features
(在每个节点被评估是否分裂的时候,具有的最大特征数量)- 增加
min_* hyperparameters
或者减少max_* hyperparameters
会使模型正则化。
使用假设检验进行剪枝
上图左侧没有剪枝,模型过拟合了
4. 回归
同样需要设置合理的参数,左侧过拟合了
5. 不稳定性
- 决策树 对旋转很敏感,可以使用 PCA 主成分分析,缓解
- 决策树 对训练数据的微小变化非常敏感,随机森林可以通过多棵树的平均预测值限制这种不稳定性
[Hands On ML] 6. 决策树相关推荐
- 【ML】决策树(Decision tree)原理 + 实践 (基于sklearn)
[ML]决策树(Decision tree)原理 + 实践 (基于sklearn) 原理介绍 简要介绍 原理 得分函数(信息熵) 实战 数据集 数据处理 训练 预测+评估 绘制决策树 原理介绍 简要介 ...
- ML《决策树(三)CART》
上一篇我们学习的ID3和C4.5算法,今天我们来看看CART(classification and regression tree)算法. 从名字上也能看出来,它是分类和回归树. 本文参考以及采用了很 ...
- ML《决策树(二)C4.5》
上一篇我们学习的ID3算法呢,有一些缺点. 1:它只能处理离散值. 2:容易过拟合,因为我们拿到了样本,总是希望最后得到的样本是非常纯的,所以我那个我那个造成了过拟合,训练样本拟合很好,泛化能力降低. ...
- ML《决策树(一)ID3》
今天做个回顾和记录,简单做个学习,也是梳理下知识点,决策树的学习. 本文的学习,自己不想画图,因为觉得没有必要自己画图,所以文中一部分图片是截取其他人的分享,但是内容都会是自己写的. 当然了,这里是浅 ...
- 【ML】决策树--剪枝处理(预剪枝、后剪枝)
1. 剪枝(pruning)处理 首先,我们先说一下剪枝的目的--防止"过拟合". 在决策树的学习过程中,为了保证正确性,会不断的进行划分,这样可能会导致对于训练样本能够达到一个很 ...
- 基于逻辑回归/决策树/随机森林/多层感知分类器/xgboost/朴素贝叶斯分类的资讯多分类性能对比
在上一篇(https://blog.csdn.net/baymax_007/article/details/82748544)中,利用逻辑回归实现资讯多分类.本文在之前基础上,又引入决策树.随机森林. ...
- 写给人类的机器学习 2.3 监督学习 III
2.3 监督学习 III 原文:Machine Learning for Humans, Part 2.3: Supervised Learning III 作者:Vishal Maini 译者:飞龙 ...
- Opencv学习笔记 - OpenCV 4机器学习算法简介
在机器学习中,一些比较流行方法的包括:支持向量机(SVM).人工神经网络(ANN).聚类.k-最近邻.决策树和深度学习.OpenCV支持并实现几乎所有这些方法,并有详细的文档说明(包含在Main mo ...
- Spark Machine Learning(SparkML):机器学习(部分二)
目录 6.分类和回归 6.1分类(Classification) 逻辑回归(LR) 决策树分类器(DTC) 随机森林分类器(RFC) 梯度提升树分类器(GBTC) 多层感知器分类器(MLPC) 线性支 ...
最新文章
- ffmpeg连接超时与解码超时
- XNA 游戏 运行时编辑器
- android软件开发基础课程(一)
- CodeForces - 1537E2 Erase and Extend (Hard Version)(扩展KMP-比较两个前缀无限循环后的字典序大小)
- mysql isnull
- ThinkPHP6项目基操(14.实战部分 中间件处理登录流程)
- 【java】java 关键字: final详解
- Go语言学习Day05
- 对vue饿了么项目重构之后的一些理解
- 再见,2016,你好,2017
- 潘多拉 搭建 php服务器,OpenWrt/LEDE/潘多拉固件4G网卡上网之【HiLink模式上网教程】...
- poj 2387 最短路 spfa 实现
- Ubuntu安装Google Chrome浏览器
- php中可以给class添加click,jQuery addClass()方法添加class
- 计算机x线平扫对人健康有影响吗,X线检查-医学影像频道-家庭医生在线 第16页...
- 剑指offer中使用辅助栈方法的题目的整理(待更)
- 微信小程序-百度AI语音识别——(一)
- 非匿名方式访问远程的com+
- 计算机科学技术考研内容,计算机科学与技术考研考哪些科目?
- 关于斐讯K2路由器 j.s9w.cc 劫持的问题。
热门文章
- float数据在计算机内存中的存储方法
- docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...
- 火狐浏览器中打开java_将Firefox浏览器嵌入Java Swing中
- 字符串处理问题[2]:将一个数字型…
- Centos7:mysql5.6安装,配置及使用(RPM方式)
- 约瑟夫斯问题-java版数组解法和链表解法
- iOS 5.1.1 设备不能安装AdHoc问题版本号
- BP神经网络算法学习
- 【dll 返回字符串 】2
- NHibernate 异常及解决办法(长期添加中)