决策树

第六章-逻辑回归与最大熵模型

孤人 提交于 2020-04-21 08:52:52
逻辑斯谛回归是统计学习中的经典分类方法,和最大熵模型相比,具有以下的共同点和区别: 共同点 都属于 概率模型 ,该模型要寻找的是给定一个x,得到输出变量Y的概率分布P(Y|x),如果是二分类,Y取值为0或1,如果是多分类,Y有K个不同的类别。 都属于 对数线性模型 ,对概率分布P(Y|x)取对数,可得lnP(Y|x)=w * x关于x的线性函数。 两个模型之前的区别是 Logistic回归属于判别模型 , 最大熵模型属于生成模型 。在最大熵模型中,不仅x有随机性,Y也具有随机性,是一个随机变量。 Logistic回归模型(Logistic Regression Model) 给定输入变量 ,输出变量为 ,将 的概率记作 ,我们已经知道该模型是一个线性模型,可以用 线性 函数来表示,由于 ,那么要如何将 与 对应起来呢?这就需要用到一个变换,该变换称为 Logit变换 。 Logit变换: ,这个就是Logistic回归模型的一个形式。 ,其中 就是给定 的条件下, 的概率。 所以可得下面两个公式:   有了这个模型之后,需要求解参数 ,一旦求出 ,那么任意给定一个输入变量 ,就可以得到 的概率,如果该概率值大于0.5,就将该类判定为1,如果小于0.5,将该类判定为0。   求解 使用的方法是 极大似然估计 ,给定参数 ,求样本的联合概率密度,最大化该联合概率,从而求出参数 。 已知

用决策树(CART)解决iris分类问题

孤者浪人 提交于 2020-04-20 18:10:07
首先先看Iris数据集 Sepal.Length——花萼长度 Sepal.Width——花萼宽度 Petal.Length——花瓣长度 Petal.Width——花瓣宽度 通过上述4中属性可以预测花卉属于Setosa,Versicolour,Virginica 三个种类中的哪一类 决策树 by CART 决策树有挺多种,这里讲下 CART CART 的执行过程是这样的: 用特征值k和下限tk二分子集 不断二分,直到到达最大深度或者划分不能再减少不纯度为止 这一下sklearn都会自动帮我们完成,我们调用就行了 如何避免过拟合问题 减小最大深度等等 一个tip: ​ min_* 的调大 ​ max_*的调小 ​ 就是DecisionTreeClassifier里面的参数,具体看文档_(:з」∠)_ 损失函数的比较 sklearn提供了两种损失函数gini和entropy gini是通过计算每个节点的不纯度,具体公式如下↓ $J(k,t_k) = \frac{m_{left}}{m}G_{left} + \frac{m_{right}}{m}G_{right}$ entropy在这里就不再赘述了 sklearn默认的是调用gini,因为gini的速度会快点,而且两者最后的效果是差不多的,真要比的话entropy产生的决策树会更平衡点 接下来我们来看代码 from sklearn

集成学习原理小结

有些话、适合烂在心里 提交于 2020-04-20 16:51:55
    集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本文就对集成学习的原理做一个总结。 1. 集成学习概述     从下图,我们可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。     也就是说,集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。 2. 集成学习之个体学习器     上一节我们讲到,集成学习的第一个问题就是如何得到若干个个体学习器。这里我们有两种选择。     第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。     目前来说

使用决策树和随机森林探究影响房产销售的因素

隐身守侯 提交于 2020-04-19 10:58:35
import pandas as pd import numpy as np data=pd.read_excel(r'/Users/fangluping/Desktop/望潮府.xlsx',encoding='utf_8_sig', usecols=['销售状态','产品类型','户型','户型配置','预测建筑面积','表价总价','建面表单价','价格方案名称','调价幅度(%)'], skipfooter=1) #数据清洗 data.销售状态[data.销售状态=='未售']=0 data.销售状态[data.销售状态 !=0]=1 data['业态']=[x.split('-')[1] for x in data.产品类型.dropna()] data.drop(['产品类型','价格方案名称'],axis=1,inplace=True) #哑变量处理 dummy=pd.get_dummies(data[['户型','户型配置','业态']]) #水平合并data和哑变量数据集 data=pd.concat([data,dummy],axis=1) data.drop(['户型','户型配置','业态'],axis=1,inplace=True) 数据清洗完毕,找出最佳参数组: #使用网格法找出最优越模型参数 from sklearn.model_selection

决策树随笔

独自空忆成欢 提交于 2020-04-18 11:15:59
决策树原理 决策树是一种多功能的机器学习算法,它可以实现分类和回归任务,甚至是多输出任务。它们功能强大,能够拟合 复杂的数据集。 -优点:简单直观,基本不需要预处理,不用会议华,处理缺失值,精度高、对异常值不敏感、无数据输入假定。可以处理离散或连续值,可以处理多维度输出的分类问题 缺点:计算复杂度高、容易过拟合,泛化能力不好,可能因为样本的一点点改动导致树的结构剧烈改变,空间复杂度高。 适用数据范围:数值型和标称型。 创建分支的伪代码函数createBranch()如下所示: 检测数据集中的每个子项是否属于同一分类: If so return 类标签; Else 寻找划分数据集的最好特征 划分数据集 创建分支节点 for 每个划分的子集 调用函数createBranch并增加返回结果到分支节点中 return 分支节点 上面的伪代码createBranch是一个递归函数,在倒数第二行直接调用了它自己。 其工作原理很简单如图所示的流程图就是一个决策树,长方形代表判断模块(decision block),椭圆形代表终止模块(terminating block),表示已经得出结论,可以终止运行。从判断模块引出的左右箭头称作分支(branch),它可以到达另一个判断模块或者终止模块。 k-近邻算法可以完成很多分类任务,但是它最大的缺点就是无法给出数据的内在含义

周志华:Boosting学习理论的探索——一个跨越30年的故事

谁说我不能喝 提交于 2020-04-17 19:57:25
      作者 | 周志华    编辑 | 丛末   本文作者为机器学习专家、南京大学人工智能学院院长周志华教授,他在这篇文章中尝试用通俗故事的方式讲述一个机器学习理论中重要问题的探索历程。读者或能从中感受到机器学习理论探索的曲折艰辛,体会到理论进展对算法设计的指引意义。    1    溯源   1989年,哈佛大学的莱斯利·维利昂特(Leslie Valiant,计算学习理论奠基人、2010年ACM图灵奖得主)和他的学生迈克尔·肯斯(Michael Kearns,后来担任贝尔实验室人工智能研究部主任)提出了一个公开问题:“弱可学习性是否等价于强可学习性?”   这个问题大致上是说:如果一个机器学习任务存在着比“随机猜测”略好一点的“弱学习算法”,那么是否就必然存在着准确率任意高(与该问题的理论上限任意接近)的“强学习算法”?   直觉上这个问题的答案大概是“否定”的,因为我们在现实任务中通常很容易找到比随机猜测稍好一点的算法(比方说准确率达到51%)、却很难找到准确率很高的算法(比方说达到95%)。   出人意料的是,1990年,麻省理工学院的罗伯特·夏柏尔(Robert Schapire)在著名期刊Machine Learning上发表论文,证明这个问题的答案是“YES”!更令人惊讶的是,他的证明是构造性的!   也就是说,夏柏尔给出了一个过程

scikit-learn随机森林调参小结

非 Y 不嫁゛ 提交于 2020-04-15 09:49:11
【推荐阅读】微服务还能火多久?>>>     在 Bagging与随机森林算法原理小结 中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结。本文就从实践的角度对RF做一个总结。重点讲述scikit-learn中RF的调参注意事项,以及和GBDT调参的异同点。 1. scikit-learn随机森林类库概述     在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是RandomForestRegressor。当然RF的变种Extra Trees也有, 分类类ExtraTreesClassifier,回归类ExtraTreesRegressor。由于RF和Extra Trees的区别较小,调参方法基本相同,本文只关注于RF的调参。     和GBDT的调参类似,RF需要调参的参数也包括两部分,第一部分是Bagging框架的参数,第二部分是CART决策树的参数。下面我们就对这些参数做一个介绍。 2. RF框架参数     首先我们关注于RF的Bagging框架的参数。这里可以和GBDT对比来学习。在 scikit-learn 梯度提升树(GBDT)调参小结 中我们对GBDT的框架参数做了介绍。GBDT的框架参数比较多,重要的有最大迭代器个数,步长和子采样比例,调参起来比较费力。但是RF则比较简单

《Python数据分析与机器学习实战-唐宇迪》读书笔记第7章--决策树

本秂侑毒 提交于 2020-04-13 20:18:34
【今日推荐】:为什么一到面试就懵逼!>>> python数据分析个人学习读书笔记-目录索引 第7章决策树   决策树算法是机器学习中最经典的算法之一。大家可能听过一些高深的算法,例如在竞赛中大杀四方的Xgboost、各种集成策略等,其实它们都是基于树模型来建立的,掌握基本的树模型后,再去理解集成算法就容易多了,本章介绍树模型的构造方法以及其中涉及的剪枝策略。 7.1决策树原理   先来看一下决策树能完成什么样的任务。假设一个家庭中有5名成员:爷爷、奶奶、妈妈、小男孩和小女孩。现在想做一个调查:这5个人中谁喜欢玩游戏,这里使用决策树演示这个过程,如图7-1所示。      图7-1 决策树分类方法   开始的时候,所有人都属于一个集合。第一步,依据年龄确定哪些人喜欢玩游戏,可以设定一个条件,如果年龄大于15岁,就不喜欢玩游戏;如果年龄小于15岁,则可能喜欢玩游戏。这样就把5个成员分成两部分,一部分是右边分支,包含爷爷、奶奶和妈妈;另一部分是左边分支,包含小男孩和小女孩。此时可以认为左边分支的人喜欢玩游戏,还有待挖掘。右边分支的人不喜欢玩游戏,已经淘汰出局。   对于左边这个分支,可以再进行细分,也就是进行第二步划分,这次划分的条件是性别。如果是男性,就喜欢玩游戏;如果是女性,则不喜欢玩游戏。这样就把小男孩和小女孩这个集合再次分成左右两部分。左边为喜欢玩游戏的小男孩

《Python数据分析与机器学习实战-唐宇迪》读书笔记第8章--集成算法

亡梦爱人 提交于 2020-04-13 14:34:42
【今日推荐】:为什么一到面试就懵逼!>>> python数据分析个人学习读书笔记-目录索引 第8章集成算法   集成学习(ensemble learning)是目前非常流行的机器学习策略,基本上所有问题都可以借用其思想来得到效果上的提升。基本出发点就是把算法和各种策略集中在一起,说白了就是一个搞不定大家一起上!集成学习既可以用于分类问题,也可以用于回归问题,在机器学习领域会经常看到它的身影,本章就来探讨一下几种经典的集成策略,并结合其应用进行通俗解读。 8.1Bagging算法   集成算法有3个核心的思想: bagging 、 boosting 和 stacking ,这几种集成策略还是非常好理解的,下面向大家逐一介绍。 8.1.1并行的集成   Bagging即boostrap aggregating,其中boostrap是一种有放回的抽样方法,抽样策略是简单的随机抽样。其原理很直接,把多个基础模型放到一起,最后再求平均值即可,这里可以把决策书当作基础模型,其实基本上所有集成策略都是以树模型为基础的,公式如下:   首先对数据集进行随机采样,分别训练多个树模型,最终将其结果整合在一起即可,思想还是非常容易理解的,其中最具代表性的算法就是随机森林。 8.1.2随机森林   随机森林是机器学习中十分常用的算法,也是bagging集成策略中最实用的算法之一

通俗讲解决策树:如何利用有效特征进行决策分类?

一世执手 提交于 2020-04-12 19:21:00
决策树 (Decision Tree) 是一种有监督学习方法,通过特征和标签构造一棵决策树,学习特征之间的规则,以解决分类和回归问题。 使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。 决策树由以下 3 种元素构成: 根节点:包含样本全集 内部节点:对应特征属性测试 叶节点:决策结果 (标签) 决策树如何辨别好瓜和坏瓜? (此图摘自周志华西瓜书,本人白板手绘版) 以上面的西瓜为例,我们要如何辨别一个瓜是好瓜。特点是:纹理清晰,根蒂稍蜷,触感青绿,恰好,你构建了一棵决策树,立马判断这是好瓜还是坏瓜? 判断步骤如下: 根据纹理清晰,已知是清晰,那么向左边走,看第一步 接着,由纹理清晰到达第 2 层,由决策树图,我们可以看到,根蒂是稍蜷 接着到第 3 层,色泽的特征的青绿,由此,我们可以得出结论,这是一个好瓜。 根据上面的示例,我们可以很直观的得到一个实例的类别判断,只要告诉各个特征的具体值,决策树的判定过程就相当于从树中从根节点到某一个叶子节点的遍历。每一步如何遍历是由数据各个特征的具体特征属性决定。 那么,基于上面的一棵树,我们又有如下疑问,为什么根节点是纹理,而不是根蒂或者别的特征呢? 决策树又是基于什么标准来选择特征的?如果构建决策树? 决策树学习的 3 个步骤 基于上面的问题