决策树

了解信息增益和决策树

对着背影说爱祢 提交于 2020-01-30 00:30:11
信息增益 ================ 一,特征选择中的信息增益: ================ 信息增益是什么,我们先从它的用处来了解它: 信息增益是特征选择中的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。 那么如何衡量一个特征为分类系统带来的信息多少呢: 对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量。所谓信息量,其实就是熵。 ================ 二,计算信息增益:利用熵 ================ 1. 信息论里的熵 因此先回忆一下信息论中有关信息量(就是“熵”)的定义。说有这么一个变量X,它可能的取值有n多种,分别是x 1 ,x 2 ,……,x n ,每一种取到的概率分别是P 1 ,P 2 ,……,P n ,那么X的熵就定义为: 意思就是一个变量可能的变化越多(反而跟变量具体的取值没有任何关系,只和值的种类多少以及发生概率有关),它携带的信息量就越大(因此我一直觉得我们的政策法规信息量非常大,因为它变化很多,基本朝令夕改,笑)。 2. 分类系统里的熵 对分类系统来说,类别C是变量,它可能的取值是C 1 ,C 2 ,……,C n ,而每一个类别出现的概率是P(C 1 ),P(C 2 ),……,P(C n ),因此n就是类别的总数

机器学习实战之决策树基础笔记

柔情痞子 提交于 2020-01-30 00:06:44
决策树的优缺点 优点 计算复杂度不高 输出结果容易理解 对中间值的缺失不敏感 可以处理不相关特征数据 缺点 可能会产生过度匹配问题 决策树原理 《机器学习实战》书中讲了二十个问题的游戏的一个例子:就是参与游戏的一方脑子里想着某个事物。其他参与者可以向他提29个问题,但是答案只能用对错来回答。比如最简单的猜数游戏。我心里想一个数是7.然后A说你心里想的数比100小。然后我说正确。然后B说你心里想的数比10大,我说回答错误。然后C、D、E等人继续提问,直到那个数的范围越来越小,直到猜中答案。决策树的工作原理就是这样,用户给出一系列数据,然后给出游戏的答案。 相比于书中给出的邮件的例子,我更喜欢Jack Cui的例子,便于理解。所以下文中所有的例子以Jack Cui的例子为主。 如下就是一个决策树的树状图。决策树的结构主要是由结点和有向边组成。结点分为内部结点和叶结点。内部节点用来表示一个特征或者一个属性。叶结点表示一个类。长方形和椭圆形都是结点。长方形属于内部结点,下面还有分支或者叶结点。椭圆形是叶结点,下面没有分支。是结束。 对上图中的一些元素进行解释: 长方形代表判断模块 椭圆形代表终止模块,用于得到结论 从长方形(判断模块)出来的箭头是分支,可以到达另一个模块或者终止模块 流程图解释 这是一个简单的岳母相亲的分类模型。就是岳母来了先问问你有没有房子车子啊,如果有的话

分类算法总结

依然范特西╮ 提交于 2020-01-27 22:24:48
目前看到的比较全面的分类算法,总结的还不错. 主要分类方法介绍解决分类问题的方法很多[40-42] ,单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类等;另外还有用于组合单一分类方法的集成学习算法,如Bagging和Boosting等。 (1)决策树 决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。 主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。 (2)贝叶斯 贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(Naive Bayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提

泰坦尼克-决策树实现

天涯浪子 提交于 2020-01-27 18:57:22
两个数据集, 你本地新建个 train.csv 和 test.csv, 下面的链接的内容粘贴进去就行了: train.csv: https://raw.githubusercontent.com/cystanford/Titanic_Data/master/train.csv test.csv: https://raw.githubusercontent.com/cystanford/Titanic_Data/master/test.csv 至于代码,还是那些流程, 跟着注释看就完全ok了 提醒一下: 源数据比如age字段有很多空的值(Nan), 数据清洗时我们就要先把它们给填充以下 #coding=UTF-8 import pandas as pd from sklearn . feature_extraction import DictVectorizer from sklearn . tree import DecisionTreeClassifier import numpy as np from sklearn . model_selection import cross_val_score from sklearn . tree import export_graphviz # 数据加载 train_data = pd . read_csv ( './train.csv

BTs in Robotics学习笔记(二)行为树是如何概括和联系早期的思想的

橙三吉。 提交于 2020-01-27 07:13:13
有限状态机 有限状态机是计算最基本的数学模型之一,由一组状态、过渡和事件组成。 有限状态机的缺点: 可维护性低:添加或删除状态需要重新评估大量的变化和FSM的内部状态。 可伸缩性低:FSMs具有许多状态和许多状态之间的转换,对于人和计算机来说都很难修改。 可重用性低:状态之间的转换可能依赖于内部变量,在多个项目中重用相同的子FSM是不现实的。 层次化状态机 层次化状态机 (HFSMs),也称为状态图。在HFSM中,一个状态可以包含一个或多个子状态,其中包含两个或多个状态的状态称为超状态。在HFSM中,广义跃迁是超态之间的转换,通过连接两个超状态来减少转换的数量,而不需要连接大量的子状态。每个超状态都有一个子状态标识为启动状态,每当发生超状态转换时就会执行。 举例说明:定点射击 (优点)层次化状态机增加了模块性(可以在子任务中分离任务),同时支持行为继承(行为继承允许子状态从超状态继承行为)。 (缺点)层次化状态机具有较低的可维护性,同时需要手动创建层次结构。 在HFSMs中,层次结构中的每一层都需要显式地添加,而在BTs中,每一个子树都可以看作是它自己的模块,具有与原子操作相同的接口。 FSM可以转换为BTs。假设FSM中有一个状态和三个转换(对应于这三个返回语句,)添加一个Tick源来收集返回转换并将执行转换回状态。 包容架构 包容体系结构的基本思想是让多个控制器并行运行

scala-MLlib官方文档---spark.mllib package--classification and regression

ⅰ亾dé卋堺 提交于 2020-01-26 07:55:42
三、Classification and regression Spark.mllib包为二分类、多分类和回归分析提供了多样的支持工具 linear models(线性模型) 1)Mathematical formulation(数学公式) 很多标准的机器学习方法都可以表述为凸优化问题,例如:找到依赖于变量向量w的凸函数f的极小值的任务(在代码中被称为权重),通常含有d个输入。形式上,我们可以将其写为优化问题minw∈ℝdf(w),,具有如下形式的目标方程 这里的向量 这里向量xi∈ℝd 是训练数据示例, 其中1≤i≤n, 并且 yi∈ℝ是他们相应的标签, 也是我们想要预测的。我们称方法是线性的如果L(w;x,y) 可以被表示称方程 wTx and y。spark.mllib的几种分类和回归算法都属于此类,在此进行讨论。 目标方程f具有两部分: The objective function f has two parts: 控制模型复杂度的正则化器,以及测量训练数据上模型误差的损失。损失函数L(w ;.)通常是w中的凸函数。固定的正则化参数λ≥0(代码中的regParam)定义了两个目标之间的权衡,这两个目标是最小化损失(即训练误差)和最小化模型复杂度(即避免过度拟合)。 (1)损失方程 下表总结了spark.mllib支持的方法的损失函数及其梯度或子梯度: 注意

决策树—回归

ぃ、小莉子 提交于 2020-01-26 01:02:20
核心:划分点选择 + 输出值确定。 一、概述 决策树是一种基本的分类与回归方法,本文叙述的是回归部分。回归决策树主要指CART(classification and regression tree)算法,内部结点特征的取值为“是”和“否”, 为二叉树结构。 所谓回归,就是根据特征向量来决定对应的输出值。回归树就是将特征空间划分成若干单元,每一个划分单元有一个特定的输出。因为每个结点都是“是”和“否”的判断,所以划分的边界是平行于坐标轴的。对于测试数据,我们只要按照特征将其归到某个单元,便得到对应的输出值。 【例】左边为对二维平面划分的决策树,右边为对应的划分示意图,其中c1,c2,c3,c4,c5是对应每个划分单元的输出。 如现在对一个新的向量(6,6)决定它对应的输出。第一维分量6介于5和8之间,第二维分量6小于8,根据此决策树很容易判断(6,6)所在的划分单元,其对应的输出值为c3. 划分的过程也就是建立树的过程,每划分一次,随即确定划分单元对应的输出,也就多了一个结点。当根据停止条件划分终止的时候,最终每个单元的输出也就确定了,也就是叶结点。 二、回归树建立 既然要划分,切分点怎么找?输出值又怎么确定?这两个问题也就是回归决策树的核心。 [切分点选择:最小二乘法]; [输出值:单元内均值]. 1.原理 假设X和Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集为 ,其中

攻城狮成长日志(五):远古人工智能,用博弈树实现的五子棋博弈系统(附原码)

不想你离开。 提交于 2020-01-25 21:09:57
远古人工智能,用博弈树实现的五子棋博弈系统 博弈树之我见 估值函数 如何择点下棋 决策树使用 Alpha-Beta剪枝 总结 博弈树之我见 想必各位都听说过人工智能,但未必听说过博弈树.其实博弈树属于比较传统的一种人工智能算法,其一般被运用到对弈的游戏中.通过对棋局作估值,采用极大极小搜索的办法,近似的搜索出最佳的棋局方式,进而模仿人类的下棋方式. 碰巧课设需要设计一个棋类的对弈系统,就刚好将这个算法稍稍了解并记录了下来. 估值函数 使用博弈树的前提是少不了设置估值函数,估值函数指的是,对应当前棋局,你觉得好不好?有多好?将这个设成一个具体的量值.那么就五子棋来说如何判断一个棋局好不好呢?方法如下: 首先是对棋型我们需要提供一个对应的 分值 .例如,在五子棋中,五个子相连称为“长连”,将其分值设为100000,对于四子相连且没有被封堵的,称为“活四”,对“活四”我们也赋予一个分值1000…当设定完以后,我们采用 遍历 的方式,搜集整个棋盘的 横竖正斜负斜 的所有的信息,组合成字符串.通过正则匹配的手段判断是否存在对应的棋型,将分值相加做到 评估局面 的效果 正则匹配对应的棋型: 如何择点下棋 在有了决策树以后,我们是可以开始下棋了,但是我们想一想,一个棋盘有15*15个点,我们如何去选择一些最佳的点呢?我采取的方法是用对已经下的点周围下的决策,来选取点.具体的策略如下图:

数据挖掘十大经典算法

萝らか妹 提交于 2020-01-25 03:52:34
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART. 不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。 1.C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足; 2) 在树构造过程中进行剪枝; 3) 能够完成对连续属性的离散化处理; 4) 能够对不完整数据进行处理。 C4.5算法有如下优点: 产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。 2. The k-means algorithm 即K-Means算法 k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n

从负无穷学习机器学习(四)决策树与随机森林

陌路散爱 提交于 2020-01-24 04:50:13
文章目录 一、决策树原理 二、查看决策树具体实现过程 三、随机森林 四、实战——这男/女朋友能不能要 一、决策树原理 决策树通过判断特征值是否满足某范围条件(通过if…else对一系列问题进行推导),并选择两条路径中的一条,不断重复这个过程直到最终实现决策。 #下面采用酒的数据进行决策树的建模 #导入numpy import numpy as np #导入画图工具 import matplotlib . pyplot as plt from matplotlib . colors import ListedColormap #导入tree模型和数据集加载工具 from sklearn import tree , datasets #导入数据集拆分工具 from sklearn . model_selection import train_test_split wine = datasets . load_wine ( ) #只选取数据集的前两个特征值 X = wine . data [ : , : 2 ] y = wine . target #将数据集拆分为训练集和测试集 X_train , X_test , y_train , y_test = train_test_split ( X , y ) #现在完成了数据集的拆分,接下来开始用决策树分类器进行分类