决策树

手把手生成决策树(dicision tree)

1.什么是决策树

决策树是一种基本的分类和回归方法,本文主要讲解用于分类的决策树。决策树就是根据相关的条件进行分类的一种树形结构,比如某高端约会网站针对女客户约会对象见面的安排过程就是一个决策树:

根据给定的数据集创建一个决策树就是机器学习的课程,创建一个决策树可能会花费较多的时间,但是使用一个决策树却非常快。

创建决策树时最关键的问题就是选取哪一个特征作为分类特征,好的分类特征能够最大化的把数据集分开,将无序变为有序。这里就出现了一个问题,如何描述一个数据集有序的程度?在信息论和概率统计中,熵表示随机变量不确定性的度量,即有序的程度。

现给出一个集合D,本文所有的讨论都以该集合为例:

序号 不浮出水面是否可以生存

机器学习:决策树--python

今天,我们介绍机器学习里比较常用的一种分类算法,决策树。决策树是对人类认知识别的一种模拟,给你一堆看似杂乱无章的数据,如何用尽可能少的特征,对这些数据进行有效的分类。

决策树借助了一种层级分类的概念,每一次都选择一个区分性最好的特征进行分类,对于可以直接给出标签 label 的数据,可能最初选择的几个特征就能很好地进行区分,有些数据可能需要更多的特征,所以决策树的深度也就表示了你需要选择的几种特征。

在进行特征选择的时候,常常需要借助信息论的概念,利用最大熵原则。

决策树一般是用来对离散数据进行分类的,对于连续数据,可以事先对其离散化。

在介绍决策树之前,我们先简单的介绍一下信息熵,我们知道,熵的定义为:

我们先构造一些简单的数据:
from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt
import math
import operator

def Create_data():

机器学习算法实践-决策树(Decision Tree)

前言

最近打算系统学习下机器学习的基础算法,避免眼高手低,决定把常用的机器学习基础算法都实现一遍以便加深印象。本文为这系列博客的第一篇,关于决策树(Decision Tree)的算法实现,文中我将对决策树种涉及到的算法进行总结并附上自己相关的实现代码。所有算法代码以及用于相应模型的训练的数据都会放到GitHub上(https://github.com/PytLab/MLBox).

本文中我将一步步通过MLiA的隐形眼镜处方数集构建决策树并使用Graphviz将决策树可视化。

正文

决策树学习

决策树学习是根据数据的属性采用树状结构建立的一种决策模型,可以用此模型解决分类和回归问题。常见的算法包括 CART(Classification And Regression Tree), ID3, C4.5等。我们往往根据数据集来构建一棵决策树,他的一个重要任务就是为了数据中所蕴含的知识信息,并提取出一系列的规则,这些规则也就是树结构的创建过程就是机器学习的过程。

决策树的结构

机器学习工程师必知的10大算法

作者 James Le ,译者 尚剑 

毫无疑问,机器学习/人工智能的子领域在过去几年越来越受欢迎。目前大数据在科技行业已经炙手可热,而基于大量数据来进行预测或者得出建议的机器学习无疑是非常强大的。一些最常见的机器学习例子,比如Netflix的算法可以根据你以前看过的电影来进行电影推荐,而Amazon的算法则可以根据你以前买过的书来推荐书籍。

机器学习实战--决策树

K近邻可以完成很多分类任务,但其无法给出数据的内在含义。 这次来阐述下决策树的原理及Python实现,另有实例剖析。 决策树可以使用不熟悉的数据集合,从中提取一系列规则。

原理:在构造决策树时,需要找到当前数据集上哪个特征在划分数据分类时起决定作用。为了找到决定性的特征,划分出最好的结果,我们必须评估每个特征。找到最好的划分特征时,完成第一次分类,数据集被划分成几个数据子集,这些数据子集会分布在第一个决策点的所有分支上。如果某个分支下的数据属于同一类型,则无需再分割。若子集内的数据不属于同一类型,则要重新划分数据子集,直到在一个数据子集下的数据类型相同。

一般流程:收集数据后,因为树构造算法只适用于标称型数据,因此数值型数据必须离散化。构造树完成之后,应该检查图形是否符合预期。使用训练算法构造树的数据结构。使用经验树计算错误率用于测试算法。

一般决策树采用二分法,这里使用ID3算法划分数据集。以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。每次划分数据集时我们只选取一个特征属性。

决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。

人脸识别技术大总结1——Face Detection & Alignment

搞了一年人脸识别,寻思着记录点什么,于是想写这么个系列,介绍人脸识别的四大块:Face detection, alignment, verification and identification(recognization),本别代表从一张图中识别出人脸位置,把人脸上的特征点定位,人脸校验和人脸识别。(后两者的区别在于,人脸校验是要给你两张脸问你是不是同一个人,人脸识别是给你一张脸和一个库问你这张脸是库里的谁。

今天先介绍第一部分和第二部分。 主要说三篇顶会文章。

人脸检测(detection)在opencv中早就有直接能拿来用的haar分类器,基于Viola-Jones算法。但是毕竟是老掉牙的技术,Precision/Recall曲线渣到不行,在实际工程中根本没法给boss看,作为MSRA脑残粉,这里介绍一种MSRA在14年的最新技术:Joint Cascade Face Detection and Alignment(ECCV14)。这篇文章直接在30ms的时间里把detection和alignment都给做了,PR曲线彪到很高,时效性高,内存占用却非常低,在一些库上虐了Face++和Google Picasa,正好契合这篇想讲的东西。可以作为本节的主线。

同步内容