决策树(Decision Tree)----matlab和python(1)
来源:互联网 发布:网络机顶盒儿 编辑:程序博客网 时间:2024/05/16 09:29
分类: 根据数据样本的特征或属性,将其类型确定为某一已有类别值中。常用:模糊分类法、神经网络、决策树、KNN、朴素贝叶斯分类法、SVM等
聚类:K均值聚类(通常而言,为降低使数据满足分类算法要求而所需的预处理代价,可以选择使用聚类算法)
这里先介绍决策树
决策树是一种代表对象属性和对象值之间的预测模型。(逼近离散值目标函数的方法)
表示法: 通过把实例从根节点排列到某个叶子节点来分类实例,叶子节点即为实例所属的分类。
1 基本的决策树算法(IDE3算法)
基本算法采取自顶向下的贪婪搜索遍历肯呢个的决策树空间。构造过程从:”哪一个属性将在数的根节点被测试?“ 开始的。显然,我们希望”分类能力最好的属性被选作为数的根节点的测试“。然后为根节点属性的每一个值产生一个分支,并把训练样例排列到适当的分支。然后重复该过程,用每个分支节点关联的训练样例来选取在该店被测试的最佳属性。
基本决策树算法的伪代码:
DTree(examples, attributes) // examples 为训练样例 attributes 训练样例中的属性列表 if 所有样例属于同一分类(都为正样本或都为负样本) then 返回标号为该分类的叶节点 //(a) else if 属性值为空 then 返回标号为最普遍分类的叶节点 //(b)else 选取一个属性值(属性中分类能力最好的属性)(如A),作为根节点for A的每一个属性值Vi 另examplesi为具有A=Vi的样本子集 从根节点增加分支(A=Vi) if examplesi为空 then 创建标号为最普遍分类的叶节点 else 递归创建子树DTree(examplesi, attributes-{A})
注
(a) 例如 对于学习布尔函数的ID3算法
如果训练样例都为正样例,则返回label=正 的单节点树,反之都为负样本,返回为负 的单节点树
(b)处理缺少属性值的训练样例
假设
一种策略是: 赋给它节点n的训练样例中该属性的常见值
另一种是:赋给它节点n的被分类为
哪个属性是最佳分类属性?
ID3算法的核心问题就是选取在树的每一个节点要测试的属性。而如何去衡量一个属性的好坏呢? 这里定义一个统计属性:“信息增益(information gain)“用来衡量给定的属性区分训练样例的能力。
1 用熵来精确的定义信息增益,度量样例均一性
熵可以刻画任意样本集的纯度(purity) 假设S是包含关于某个目标概念的正负样本的样
本集, 则:
其中
对于目标属性有m类的:
注:
若S的所有成员属于同一类,
2 信息增益的求解
已经有了熵作为衡量训练样例集合纯度的标准,现在可以定义属性分类训练数据的能力的度量标准, 即 “信息增益”,简单说:一个属性的信息增益就是由于是用这个属性分割样例而导致的期望熵的降低。
一个属性A相对于集合S的信息增益
其中,第一项就是S的熵,第二项就是用A分类S后熵的期望值,第二项描述的期望熵就是每个子集的熵的加权和,权值为属于
所以,
例子: 计算
数据:
计算过程:
ID3算法的改进算法 —- C4.5算法
已知决策树的构造方法的实质就是每次选择一个好的特征,并且选择好的分裂点作为当前节点的分类条件。
ID3 选择属性用的是子树的信息增益, 使用的是熵,也就是熵的变化值。
C4.5使用的是信息增益率
信息增益率:融合了“Gain(S, A)” 和分裂信息SplitInformation(S,A)来共同定义:
其中,
Matlab 和python 代码下一节分析。
- 决策树(Decision Tree)----matlab和python(1)
- 决策树(Decision Tree)----matlab和python(2)
- 决策树(Decision Tree)
- 决策树(Decision Tree)
- 决策树(Decision Tree)
- 决策树(Decision tree)
- 决策树(Decision Tree)
- Decision Tree(决策树)
- 决策树(Decision Tree)
- 决策树(decision tree )
- 二、决策树(Decision Tree)
- Decision Tree(决策树算法)
- 决策树(decision tree)(一)
- 决策树(decision tree)简介
- 决策树(Decision Tree)Demo
- 决策树(Decision Tree)--python实例代码分析(3)
- 机器学习之决策树 Decision Tree(二)Python实现
- 【机器学习算法-python实现】决策树-Decision tree(1) 信息熵划分数据集
- 如何解决Android 5.0中出现的警告:Service Intent must be explicit
- Linux下rsync命令用法
- NFC 高级
- Java四种引用
- js 导出文件
- 决策树(Decision Tree)----matlab和python(1)
- Java虚拟机学习(4):JDK可视化监控工具
- android App查看签名的两种方法
- ACM输入注意
- Android 特效库 - 实现滑动ViewPager渐变背景色
- 一直都没有好好的写博客,今天开始记录自己的点滴成长
- 2016年11月6日 关于工作和人生的一些感悟
- 42. Trapping Rain Water
- c的printf怎么输出枚举类型变量