决策树算法学习笔记(提升篇)
声明:本文虽有部分自己理解成分,但是大部分摘自以下链接。
决策树(decision tree)(三)——连续值处理
决策树参数讲解+实例
数据挖掘十大算法
C4.5算法的改进:
用信息增益率来选择属性。
在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致overfitting。
对非离散数据也能处理。
能够对不完整数据进行处理。
修剪枝叶
原因:避免产生过拟合
- 前剪枝叶:在构造决策树的同时进行剪枝。在决策树构建中,如果无法进一步降低信息墒的情况下就会停止创建分支。为了避免过拟合,可以设定一个阀值,信息墒见效的数量小于这个阀值,即是还可以继续降低熵也停止继续创建分支。这种方法就是前剪枝。构造树时,即限定增加该节点时增加的熵是否会低于阈值来判断是否增加这个节点
- 后剪枝:后剪枝是指决策树构造完成后进行剪枝。剪枝的过程是对拥有同样符节点的一组节点进行检查,判断如果将其合并,信息墒的增加量是否小于某一阀值。如果小于阀值即可合并分支。成功构建树后,通过检查,假设合并后的信息增量是否小于某阈值(其纯度应该是减小的,可以理解成不太乱)
- 后剪枝的算法有很多种,其中常见的一种称为减低错误率剪枝法(Reduced-Errorpruning)。其思路是自底向上,从已经构建好的完全决策树中找出一个子树,然后用子树的根节点代替这颗子树,作为新的叶子节点。叶子节点所表示的类别通过大多数原则确定,这样就构建出一个简化版决策树。然后使用交叉验证数据集来测试简化版本的决策树,看看其错误率是不是降低了。如果错误率降低了,则可以用这个简化版的决策树来代替完全决策树,否则还采用原来的决策树。通过遍历所有的子树,直到针对交叉验证数据集无法进一步降低错误率为止。
连续值处理
**连续值处理过程口述总结:(二分法,找分界点)
- 先通过迭代方式找到会使得分割后信息增益最大的分界点
- 之后以该点为节点后续和前面一样**
调参注意事项
当样本少数量但是样本特征非常多的时候,决策树很容易过拟合,一般来说,样本数比特征数多一些会比较容易建立健壮的模型
如果样本数量少但是样本特征非常多,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)或者独立成分分析(ICA)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。
推荐多用决策树的可视化,同时先限制决策树的深度(比如最多3层),这样可以先观察下生成的决策树里数据的初步拟合情况,然后再决定是否要增加深度。
在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。
决策树的数组使用的是numpy的float32类型,如果训练数据不是这样的格式,算法会先做copy再运行。
如果输入的样本矩阵是稀疏的,推荐在拟合前调用csc_matrix稀疏化,在预测前调用csr_matrix稀疏化。
决策树算法学习笔记(提升篇)相关推荐
- 决策树算法学习笔记(三)-预测隐形眼镜类型
#coding=utf-8 import matplotlib.pyplot as plt #定义文本框和箭头格式 decisionNode=dict(boxstyle="sawtooth& ...
- MySQL学习笔记-基础篇1
MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...
- 极客HTTP协议学习笔记破冰篇(1-7)
极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...
- MySQL学习笔记-基础篇2
MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...
- [mmu/cache]-ARM cache的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...
- Vue学习笔记进阶篇——Render函数
本文为转载,原文:Vue学习笔记进阶篇--Render函数 基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编 ...
- PHP学习笔记 - 进阶篇(7)
PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...
- Vue学习笔记入门篇——数据及DOM
本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...
最新文章
- 我国光纤速率创世界记录
- Spring Boot微信点餐——实战开发DAO层
- 因你不同,2021 阿里云开发者大会重磅开启 @ 所有开发者!
- yolo 标注转VOC格式(标注转换器)
- 微信小程序多选取值判断显示内容
- linux下C调用lua的第一个程序
- 小狗踢足球《即时通讯》
- linux shell学习四
- 互联网短平快下,DevCloud如何支撑软件开发的“转型”?
- python 三分类的哑编码_python数据挖掘实战 -数据预处理篇(数据可视化-空值填充-哑变量编码)...
- 基于amoeba实现mysql数据库的读写分离/负载均衡
- Android WebService
- CMU计算机学院院长Andrew Moore离职,下一任院长人选未定
- openCV无法打开源文件opencv2\opencv.hpp
- 遥感导论网课_优化遥感导论课程教学环境的思考|遥感导论期末考试
- matlab 距平,[转载]基于Matlab软件进行EOF分解、回归趋势分析,并
- Elasticsearch查询数据总条数1万条限制
- matlab画colormap
- 年后第一场面试,被阿里P8测试专家虐惨了....
- miui系统android os,color os对比miui 一加手机刷Color OS与MIUI系统体验对比评测