七月 上海 | 高性能计算之GPU CUDA培训

7月27-29日三天密集式学习  快速带你入门阅读全文>

正文共2165个字,25张图,预计阅读时间15分钟。

一个小故事

zenRRan二十出头了,到了婚配的年龄啦。又因为家是名门望族,所以一堆人抢着想来应聘配偶的职位。但是zenRRan比较挑剔,必须达到他的要求才能有机会成为他的另一半,要求为:

1. 性别女,非女性不要

于是刷刷刷走了一半人,剩下的全部为女性。

2.身高必须要在150-165cm

于是又走了一堆人,剩下的为160-165cm之间的女生。

3.性格要温柔贤惠

听到这些,又走了一些人,最后留下的极为最后的应聘候选人。

上述过程可以用树来表示:

像上面的这样的二叉树状决策在我们生活中很常见,而这样的选择方法就是决策树。机器学习的方法就是通过平时生活中的点点滴滴经验转化而来的。

建立决策树的逻辑

正如上述树状图所示,我们最终会通过特征:

性别,身高,性格

得到了4种分类结果,都存在于叶子节点。

非女生,身高不符合的女生,身高符合性格不符合的女生,都符合的最佳候选人。

现在我们来回想下上面的建立决策的流程:

首先在一群给定数据(应聘者)中,我们先通过一个特征(性别)来进行二分类。当然选取这个特征也是根据实际情况而定的,比如zenRRan选取第一个条件为性别的原因是,来的男的太多了,比例占的有点大,所以先给他分成类放到一边,剩下的更加好分类而已。

然后,对叶子节点(那些还想继续分类的节点们)继续进行上述的流程。

那么怎么选取特征作为当前的分类依据呢?有两种方法:

信息熵和基尼系数。

  信息熵

熵这个概念想必大家都不陌生,熵用来表示数据的确定性程度。研究一个词,就要从他的来源说起,熵,来自热动力学,表示原子或者一个事物的稳定程度,温度越高,原子越活跃,越不稳定;反而温度越低,就越稳定,越保持不动。所以慢慢的这个概念被用到各个方向,也就有了新的定义词汇,但是它的本意没变,就是稳定程度大小的表示。

那么在决策树里面,我们用的是一种熵,信息熵,来表示类别的稳定程度。

公式为:

注:p为一个类的占比

什么意思呢?具体用数字表示下:

比如一个分类结果由三个类组成,占比为1/3 1/3 1/3,那么它们的信息熵为:

如果占比为1/10 2/10 7/10,那么它的信息熵为:

那再举一个极端情况,也就是我们想要得到的类,只包含一种情况,其他的比例为0,那么比如占比情况为:1 0 0,那么它的信息熵为:

我们会发现一个分类结果里,里面的类别比例越是接近,信息熵也就越大,反之越是趋向于一个值,越是小,会达到0。

如果将所有的情况考虑在内的话,就能绘成一个图(为了好画,以该分好的类别里有两种事物为例):

我们会发现,当占比为0.5的时候,也就是另一个事物的占比也是0.5的时候信息熵最高,当倾向于一个事物的时候,信息熵最小,无限接近并达到0。

为什么都占比一样的时候信息熵最大呢?也就是说最不稳定呢?因为当每个事物都占比一样的时候,一个小事物进来,不清楚它到底属于哪一类;如果只有一类事物或者一类事物居多数,那么也就比较明确该属于哪类,也就稳定,确定了。

那么怎么用呢?

我们通过计算机分类,因为有很多种分类情况,不是每一次分类都是直接将同一类分到一个类别里,而是将该分好的两个类的信息熵总和最小为依据,不断地通过暴力寻找最佳选择。然后递归进行对分好类的数据进行再分类。

基尼系数

基尼系数和信息熵在这里具有同样的性质。先看看它的公式:

公式看不出什么特色之处,就继续用数字展示下:

比如依然是三分类,类别占比为1/3 1/3 1/3,基尼系数为:

类别占比为1/10 2/10 7/10,基尼系数为:

如果是极端情况下占比为1 0 0,那么基尼系数为;

我们根据公式其实就能看出来,平方的函数为凸函数,而该公式在都相等的时候值最大。

  代码实现

再重说下流程:

通过对每个特征进行尝试分类,记录当前分类最小的信息熵(或基尼系数)的特征为当前分类结果。

选取一些点,初始化数据:

X为二维平面的数据点,Y为类别。

数据点分布情况:

信息熵函数:

基尼系数函数:

二者使用一个即可。

下面是一个分类核心的流程:

文字描述为:

对数据点的特征0维进行尝试分类,先按照0维数据排序,然后取每相邻的中点值,然后以0维该值分界线,处于分界线两侧的数据分别求信息熵(或基尼系数),如果比之前的小,这就保存该值和当前维度。然后选取第1维进行相同操作,最终的最小信息熵(或基尼系数)最小对应的值为本次分类的结果。

但是这个仅仅是一层分类,如果还子节点还有要分类的数据,继续上述操作即可。

 分类代码

分类效果流程图:

决策树第一层分类结果为:

当前线为最佳值,1维的数据就是分过的,但是没有当前的值好,也就没显示。

现在已经分出了两类,左边的红色和右边的绿色+蓝色。那么还要对上述的右边进行分类,获取该数据,并且继续进行分类,分类流程图为:

最终得出的分类结果为上述两条线。其中粉色为第一层分类,紫色为第二层分类。

批判性思维看决策树

看到上述的分类结果,其实你心里也想到了决策树的缺点了,就是分类总是横平竖直的,不能是曲线。

比如

该四个数据的分类最佳理想条件下应该为上述紫色线条,但是决策树的结果为;

如果存在数据在:

明明应该属于蓝色点的,但是被划分到红色点里。

所以可以看出,决策树对数据的要求是是苛刻的。

另一个问题是,决策树的学习问题,从上述代码实现过程能够看出来,可以说是暴力求解了。

原文链接:https://www.jianshu.com/p/b1b6add0315c

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

机器学习 | 决策树的理论与实践相关推荐

  1. 【机器学习】决策树(理论)

    决策树(理论) 目录 一.何为决策树 1.决策树的组成 2.决策树的构建 二.熵 1.熵的作用 2.熵的定义 3.熵的计算 4.条件熵的引入 5.条件熵的计算 三.划分选择 1.信息增益( ID3 算 ...

  2. 【白话机器学习】算法理论+实战之LightGBM算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

  3. 决策树算法的理论和实践

    DataWhale基于决策树的分类预测 学习目标 理论知识 1.决策树(Decision Tree)的介绍 2.决策树的应用 3.决策树的原理 那么问题来了 熵 熵的公式 信息增益 剪枝 预剪枝 后剪 ...

  4. WAIC 2021 | 百度量子计算段润尧:从理论到实践谈量子人工智能

    在 WAIC 2021 AI 开发者论坛上,百度研究院量子计算研究所所长段润尧发表主题演讲<量子人工智能:从理论到实践>.在演讲中,段润尧讲述了量子计算的理论基础,对量子人工智能的发展现状 ...

  5. 【百家稷学】深度学习与计算机视觉核心理论与实践(中国地质大学实训)

    继续咱们百家稷学专题,本次是有三AI在中国地质大学进行的暑期课程教学.百家稷学专题的目标,是走进100所高校和企业进行学习与分享. 分享主题 本次分享是在中国地质大学机械与电子信息学院进行,主题是&l ...

  6. 【白话机器学习】算法理论+实战之Xgboost算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

  7. 【白话机器学习】算法理论+实战之PageRank算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  8. 【白话机器学习】算法理论+实战之关联规则

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  9. 【白话机器学习】算法理论+实战之EM聚类

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

最新文章

  1. Hadoop hdfs完全分布式搭建教程
  2. python+flask+vue开发(1)--虚拟环境创建
  3. Python3 系列之 编程规范篇
  4. Python 内建函数 max/min的高级用法
  5. wxWidgets:wxToggleButton类用法
  6. lvs-dr模式原理详解和可能存在的“假负载均衡”
  7. vba上传指定文件ftp服务器
  8. 爬虫-保存cookie到本地-利用MozillaCookieJar
  9. ARM入门笔记(7)
  10. ICONV for Windows
  11. 电子电路学习笔记(12)——稳压二极管
  12. java内部编译器错误,可能的Java编译器错误!程序不能与某些编译器一起编译
  13. ubuntu vmplayer安装vmtool
  14. 《算法导论》常见算法总结
  15. 关于private继承
  16. 互联网行业的HR怎么看待30岁以上的基础岗位求职者
  17. 叶史瓦大学计算机科学,福特汉姆大学研究生学院
  18. 鹅厂开源框架tars之基础组件
  19. 什么是框架,框架和设计模式的关系,为什么要用框架?(转)
  20. OLED QLED LED等发光器件, IVL测试软件

热门文章

  1. opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二
  2. 平板电脑连接投影仪_苹果电脑如何连接投影仪 苹果Mac连接投影仪方法【详解】...
  3. nacos enablediscoveryclient_Spring Cloud(五):注册中心nacos篇
  4. 【script】数据处理的瑞士军刀 pandas
  5. 【script】python实现多线程将doc、docx转pdf,doc转docx
  6. 计算机启动需输入两次密码,为什么我的电脑要2次启动才能启动我电脑设置了启动密码后就一定要2 爱问知识人...
  7. android 架构份额,Android 架构设计比较分析
  8. Unity2018.3全新Prefab预制件系统深入介绍视频教程+PPT+Demo源码
  9. POJ - 1251(最小生成树.krustal)
  10. JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean...