Machine Learning--决策树(一)
决策树(decision tree):是机器学习常见的算法之一。是基于树形结构进行决策的。
讲决策树就要提到“信息熵”、“信息增益”、“增益率”和“基尼指数”的概念。
我们先来介绍一下这几个概念:(讲解针对离散型数据,连续型暂时不讲)
信息熵(information entropy):是度量样本集合纯度的一种指标。本文使用Ent表示。
其中,D表示样本集合(比如现有100个苹果的数据,D就表示这100个苹果),y表示标签可选择的个数(比如判断苹果的好坏,有“好”和“坏”两种结果,所以y=2),Pk表示第k类样本所占的比例(例如好苹果有80个,则p1=0.8,p2=0.2)。通过上式可以计算出信息熵的值。
信息熵的值越小,说明集合D的纯度越高,即属于同一类别的苹果就越多。当全部属于同一类别时,信息熵的值为0.
信息增益(information gain):
a表示样本众多属性中的一个(比如苹果的颜色,产地,体型等都是属性),v表示a这个属性可以取值的个数(比如,苹果体型这个属性可以去大、中、小三个值,v=3),Dv表示属性a取值为v的时候的样本空间(比如,全部体型大的苹果,或者全部体型小的苹果),D让然表示全部的样本空间(所有的苹果)。通过上式可以计算出信息增益。
信息增益的值越大,则意味着用属性a来划分,所获得的“纯度提升”越大。换句话说,就是把好坏苹果分的越清楚。
计算出所有的属性所对应的信息增益值,选择最大的那个属性,按该属性将苹果进行划分,判断苹果是好还是坏。之后再对划分后的子集合在利用相同的方法选择属性进行划分(已使用过的属性将不再使用),知道划分后的苹果属于同一类别(都是好的,或者都是坏的)。著名的ID3算法就是以信息增益为准则来选择划分属性的。
信息增益对可取值数目较多的属性有所偏好,当一个属性的可取值很多时,他的信息增益也就回变的很大。(不妨私下试一试)
假如某个属性是标号,那么有多少个样本,该属性就有多少个取值,该属性的信息增益肯定是最大的,但是我们在划分的时候是不会按样本编号来划分的。所以我们要消除这样属性给我们带来的错误。这就有了增益率。
增益率(gain ratio):
IV(a)称属性a的“固有值”,当属性a可取的值的个数越多时,IV(a)的值越大。增益率=信息增益/固有值。
因为,增益率对取值较少的的属性有所偏好。所以在选区划分属性的时候并不是单纯的选择增益了最高的那个,而是在信息增益高于平均水平的属性中,选择增益率最高的那个。
著名的C4.5算法就是以增益率为准则来选择划分属性的。
基尼指数:
数据集D的纯度可以用基尼值来度量。基尼值(Gini)反应了从数据集D中随机抽取两个样本,其类别标签不一样的概率。 基尼值越小,数据集D的纯度越高。
所以,我们会选择基尼指数最小的那个属性进行划分。
CART决策树(classification and regression tree)就是使用基尼指数来选取划分属性的。
参考书籍是 南京大学 周志华老师的 《机器学习》
Machine Learning--决策树(一)的更多相关文章
- 【Machine Learning】决策树案例:基于python的商品购买能力预测系统
决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...
- 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试
机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...
- 《Machine Learning in Action》—— Taoye给你讲讲决策树到底是支什么“鬼”
<Machine Learning in Action>-- Taoye给你讲讲决策树到底是支什么"鬼" 前面我们已经详细讲解了线性SVM以及SMO的初步优化过程,具体 ...
- 《Machine Learning in Action》—— 小朋友,快来玩啊,决策树呦
<Machine Learning in Action>-- 小朋友,快来玩啊,决策树呦 在上篇文章中,<Machine Learning in Action>-- Taoye ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【Machine Learning】Python开发工具:Anaconda+Sublime
Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
- [Machine Learning] 国外程序员整理的机器学习资源大全
本文汇编了一些机器学习领域的框架.库以及软件(按编程语言排序). 1. C++ 1.1 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 OpenCV—它提供C++, C ...
- Pattern Recognition And Machine Learning读书会前言
读书会成立属于偶然,一次群里无聊到极点,有人说Pattern Recognition And Machine Learning这本书不错,加之有好友之前推荐过,便发了封群邮件组织这个读书会,采用轮流讲 ...
随机推荐
- COGS 1710. [POJ2406]字符串的幂
★☆ 输入文件:powerstrings.in 输出文件:powerstrings.out 简单对比时间限制:3 s 内存限制:256 MB [题目描述] 对于给定的两个字符串a,b, ...
- 覆盖alert对话框-自制Jquery.alert插件
Javascript 代码: (function ($) { 'use strict'; window.alert = $.alert = function (msg) { var defaultOp ...
- Ubuntu 16.04下Java环境安装与配置
首先下载linux下的安装包 登陆网址https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...
- Sql Server 自动备份
1)启动代理服务 服务->Sql server 代理启动 2)设置维护计划 维护计划->设置维护计划向导->修改名称及说明 3)更改计划 4)选择维护任务 5)顺序调整不做解释 6) ...
- PAT (Advanced Level) Practise - 1096. Consecutive Factors (20)
http://www.patest.cn/contests/pat-a-practise/1096 Among all the factors of a positive integer N, the ...
- shell脚本,文件里面的英文大小写替换方法。
[root@localhost wyb]# cat daxiaoxie qweBNMacb eeeDFSmkl svdIOPtyu [root@localhost wyb]# cat daxiaoxi ...
- Python爬虫环境常用库安装
1:urllib urllib.request这两个库是python自带的库,不需要重新安装,在python中输入如下代码: import urllibimport urllib.requestres ...
- FIFO设计思考之一
不管同步FIFO还是异步FIFO,设计难点是full/empty状态flag的正确性. 要保证任何情况 FULL时NO WRITE,EMPTY时NO READ.overflow / underflow ...
- pycharm添加wordcloud模块时报错:error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
windows 7 32bit python3.6.3 32bit pycharm2018社区版 32bit 问题说明: 添加wordcloud模块时报错:error: Microsoft Visua ...
- Python9-day2 作业
下列结果是什么? 6 or 2 >1 6 3 or 2 > 1 3 0 or 5<4 false 5 < 4 or 3 3 2 >1 or 6 True 3 ...