决策树

使用PyCaret构建机器学习模型

柔情痞子 提交于 2020-08-19 17:14:06
作者|LAKSHAY ARORA 编译|VK 来源|Analytics Vidhya 概述 PyCaret是一个超级有用的Python库,用于在短时间内执行多个机器学习任务 学习如何依赖PyCaret在几行代码中构建复杂的机器学习模型 介绍 我建立的第一个机器学习模型是一个相当麻烦的代码块。我仍然记得构建一个集成模型,它需要许多行代码,它十分需要一个向导来解开这些混乱的代码! 当涉及到构建可解释的机器学习模型时,尤其是在行业中,编写高效的代码是成功的关键。所以我强烈建议使用PyCaret库。 我希望PyCaret在我的刚学习机器学习的日子里出现!这是一个非常灵活和有用的库,我在最近几个月已经相当依赖。我坚信任何有志成为数据科学或分析专业人士的人都会从使用PyCaret中受益匪浅。 我们将看到PyCaret到底是什么,包括如何在你的机器上安装它,然后我们将深入研究如何使用PyCaret来构建可解释的机器学习模型,包括集成模型。 目录 什么是PyCaret?为什么要使用它? 安装PyCaret 熟悉PyCaret 使用PyCaret训练我们的机器学习模型 使用PyCaret构建集成模型 分析模型 做出预测 保存并加载模型 什么是PyCaret?为什么要使用它? PyCaret是Python中一个开源的机器学习库,它可以帮助你从数据准备到模型部署。它很容易使用

深度学习在高德ETA应用的探索与实践

江枫思渺然 提交于 2020-08-18 04:55:31
1.导读 驾车导航是数字地图的核心用户场景,用户在进行导航规划时,高德地图会提供给用户3条路线选择,由用户根据自身情况来决定按照哪条路线行驶。 同时各路线的 ETA(estimated time of arrival,预估到达时间) 会直接显示给用户,这是用户关心的核心点之一。用户给定起点和终点后,我们的任务是预测起终点的ETA,ETA的准确率越高,给用户带来的出行体验越好。 2.基于深度学习模型的探索和实践 2.1模型选择 传统机器学习模型在ETA中,比较常用的有线性回归、RF(随机森林)、GBDT(梯度提升决策树)等回归预测类模型。线性模型表达能力较差,需要大量特征工程预先分析出有效的特征;RF通过样本随机和特征随机的方式引入更多的随机性,解决了决策树泛化能力弱的问题;GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到回归的算法。 传统机器学习模型相对简单易懂,也能达到不错的效果,但存在两个问题: 模型的表达能力跟选取的特征有关,需要人工事先分析出有效的特征。 没有考虑上游对下游路段的影响,产生了如丢失上下游关联信息、下游受上游影响导致的不确定性等问题。 第一个问题很好理解,深度学习模型能很好地弥补这方面。针对第二个问题,以历史速度信息选取存在的不确定性为例来说明一下,历史速度信息是一个区分周一到周日七个工作日、10分钟间隔的历史平均时间

特征工程之特征选择

雨燕双飞 提交于 2020-08-17 23:39:39
    特征工程是数据分析中最耗时间和精力的一部分工作,它不像算法和模型那样是确定的步骤,更多是工程上的经验和权衡。因此没有统一的方法。这里只是对一些常用的方法做一个总结。本文关注于特征选择部分。后面还有两篇会关注于特征表达和特征预处理。 1. 特征的来源     在做数据分析的时候,特征的来源一般有两块,一块是业务已经整理好各种特征数据,我们需要去找出适合我们问题需要的特征;另一块是我们从业务特征中自己去寻找高级数据特征。我们就针对这两部分来分别讨论。 2. 选择合适的特征     我们首先看当业务已经整理好各种特征数据时,我们如何去找出适合我们问题需要的特征,此时特征数可能成百上千,哪些才是我们需要的呢?     第一步是找到该领域懂业务的专家,让他们给一些建议。比如我们需要解决一个药品疗效的分类问题,那么先找到领域专家,向他们咨询哪些因素(特征)会对该药品的疗效产生影响,较大影响的和较小影响的都要。这些特征就是我们的特征的第一候选集。     这个特征集合有时候也可能很大,在尝试降维之前,我们有必要用特征工程的方法去选择出较重要的特征结合,这些方法不会用到领域知识,而仅仅是统计学的方法。     最简单的方法就是方差筛选。方差越大的特征,那么我们可以认为它是比较有用的。如果方差较小,比如小于1,那么这个特征可能对我们的算法作用没有那么大。最极端的,如果某个特征方差为0

深入了解机器学习决策树模型——C4.5算法

可紊 提交于 2020-08-17 18:26:58
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 之前介绍了一种最简单构造决策树的方法——ID3算法,也就是每次选择一个特征进行拆分数据。这个特征有多少个取值那么就划分出多少个分叉,整个建树的过程非常简单。 如果你还不会决策树,那你一定要进来看看 既然我们已经有了ID3算法可以实现决策树,那么为什么还需要新的算法?显然一定是做出了一些优化或者是进行了一些改进,不然新算法显然是没有意义的。所以在我们学习新的算法之前,需要先搞明白,究竟做出了什么改进,为什么要做出这些改进。 一般来说,改进都是基于缺点和不足的,所以我们先来看看ID3算法的一些问题。 其中最大的问题很明显,就是它无法处理连续性的特征。不能处理的原因也很简单,因为ID3在每次在切分数据的时候,选择的不是一个特征的取值,而是一个具体的特征。这个特征下有多少种取值就会产生多少个分叉,如果使用连续性特征的话,比如说我们把西瓜的直径作为特征的话。那么理论上来说每个西瓜的直径都是不同的,这样的数据丢进ID3算法当中就会产生和样本数量相同的分叉,这显然是没有意义的。 其实还有一个问题,藏得会比较深一点,是关于信息增益的。我们用划分前后的信息熵的差作为信息增益,然后我们选择带来最大信息增益的划分。这里就有一个问题了,这会导致模型在选择的时候,倾向于选择分叉比较多的特征。极端情况下

Python数据预处理:彻底理解标准化和归一化

旧城冷巷雨未停 提交于 2020-08-17 05:01:01
数据预处理 数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析。 常用的方法有两种: 最大 - 最小规范化:对原始数据进行线性变换,将数据映射到[0,1]区间 Z-Score标准化:将原始数据映射到均值为0、标准差为1的分布上 为什么要标准化/归一化? 提升模型精度:标准化/归一化后,不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。 加速模型收敛:标准化/归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。 如下图所示: 哪些机器学习算法需要标准化和归一化 1)需要使用梯度下降和计算距离的模型要做归一化,因为不做归一化会使收敛的路径程z字型下降,导致收敛路径太慢,而且不容易找到最优解,归一化之后加快了梯度下降求最优解的速度,并有可能提高精度。比如说线性回归、逻辑回归、adaboost、xgboost、GBDT、SVM、NeuralNetwork等。需要计算距离的模型需要做归一化,比如说KNN、KMeans等。 2)概率模型、树形结构模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、随机森林。 彻底理解标准化和归一化 示例数据集包含一个自变量(已购买)和三个因变量(国家,年龄和薪水)

Python --深入浅出Apriori关联分析算法(一)

半城伤御伤魂 提交于 2020-08-17 04:34:55
在美国有这样一家奇怪的超市, 它将啤酒与尿布这样两个奇怪的东西放在一起进行销售,并且最终让啤酒与尿布这两个看起来没有关联的东西的销量双双增加 。这家超市的名字叫做沃尔玛。 你会不会觉得有些不可思议?虽然事后证明这个案例确实有根据,美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。但这毕竟是事后分析, 我们更应该关注的,是在这样的场景下,如何找出物品之间的关联规则 。接下来就来介绍下如何使用Apriori算法,来找到物品之间的关联规则吧。 一. Apriori关联分析概述 选择物品间的关联规则也就是要寻找物品之间的潜在关系。要寻找这种关系,有两步,以超市为例 找出频繁一起出现的物品集的集合,我们称之为 频繁项集 。比如一个超市的频繁项集可能有{{啤酒,尿布},{鸡蛋,牛奶},{香蕉,苹果}} 在 频繁项集 的基础上,使用 关联规则 算法找出其中物品的 关联结果 。 简单点说,就是先找频繁项集,再根据关联规则找关联物品。 为什么要先找频繁项集呢?还是以超市为例,你想想啊,我们找物品关联规则的目的是什么,是为了提高物品的销售额。如果一个物品本身购买的人就不多,那么你再怎么提升,它也不会高到哪去。所以从效率和价值的角度来说,肯定是优先找出那些人们频繁购买的物品的关联物品。 既然要找出物品的关联规则有两步,那我们也一步一步来

《机器学习实战(基于scikit-learn和TensorFlow)》第六章内容学习心得

白昼怎懂夜的黑 提交于 2020-08-17 03:33:23
本章讲 决策树 决策树,一种多功能且强大的机器学习算法。它实现了分类和回归任务,甚至多输出任务。 决策树的组合就是随机森林。 本章的代码部分不做说明,具体请到我的GitHub上自行获取 。 决策树的每个节点都是一种属性的判断,每个分支是判断结果的输出,是一种监督学习的算法。 决策树的类别有很多,最广泛使用的决策树的生成算法是CART(Classification And Regression Tree)。 CART: 首先,使用单个特征k和阈值h将训练集分为两个子集。对于上述两个参数的选择,需要经过搜索算法确定。 然后,重复上述操作,继续分裂子集,直到达到最大深度。 正则化 决策树极少对训练数据做假设,但是不加限制,总会过拟合。我们需要对过拟合的决策树进行正则化处理。我们可以使用max_depth、min_samples_leaf、min_samples_split等一系列的超参数进行控制。还有一种方式可以控制,就是先不控制决策树的生长,最后进行剪枝作业。若一个节点的子节点全部为叶节点,则删除该节点,直到全部节点处理完毕。 回归 决策树可以进行回归任务。与分类任务相比,差别在于每个节点不是预测的类别,而是预测一个值。每个分支节点预测的值永远等于该节点内实力目标的平均值。算法的目标就是尽可能的将最多的实例接近预测值。同时CART算法分裂方式就是最小化MSE。 不稳定性

scikit-learn随机森林调参小结

半世苍凉 提交于 2020-08-16 14:06:26
    在 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则比较简单

决策树

久未见 提交于 2020-08-16 13:29:59
故事从一条小学数学题说起 "爸爸,熊猫为什么是3个不是11个" "宝贝,你还没学二进制好吗....." 以上故事纯属虚构,真实的对话其实是这样的 "爸爸, 为什么3比4小" "宝贝,数一下就知道啦。你看猪猪有1,2,3. 3个, 小鸟有1,2,3,4. 4个. 你看小鸟是不是比猪猪多? 所以3比4小" 为什么我们要用十进制? 我们当然明白十进制是为了把世界描述为在数学上大家统一使用的语言然后进行沟通, 如果你用十进制我用二进制,那没法沟通了是不? 决策树用多了, 习惯了用信息增益作为特征选择的指标, 而信息增益是由前熵后熵差值而来. 为什么用熵? 对不起,这个问题请问科学家,你用就是了 为什么说熵比较高就是比较混乱? 接下来我们算一算验证一下. 首先来个简单粗暴的: 给三个球分类, 显然一眼就可以看出把红球独自一组,黑球一组. 那么具体分类的信息增益怎样呢? 在Excel里算前熵 E(三个球) = - 1/3 * log(1/3, 2) - 2/3 * log(2/3,2) = 0.918 第一种分法是红黑球一组,黑球自己一组. 在红黑一组中有红球和黑球, 红黑球各自出现的概率是1/2. 在另一组只有 100%出现黑球, 红球的概率是0 所以 E(红黑|黑) = E(红黑) + E(黑) = - 1/2 * log( 1/2, 2) - 1/2 * log (1/2, 2) - 1

编程模型(MapReduce和Graph)

半腔热情 提交于 2020-08-16 08:22:08
MapReduce编程模型 MR基础 最大优点是充分利用了闲置资源,多任务并行,快速得到答案。 拆分-处理-合并 MR框架介绍 MR处理流程 MapReduce(最早由Google提出)是一种分布式数据处理模型;核心过程主要分成2个阶段:Map阶段和Reduce阶段;首先执行Map阶段,再执行Reduce阶段。Map和Reduce阶段的处理逻辑由用户自定义实现,即实现分布式计算。 MR模型的适用场景 搜索:网页爬取、倒排索引,PageRank Web访问日志分析:分析和挖掘用户在web上的访问、购物行为特征,实现个性化推荐;分析用户访问行为。 文本统计分析:例如小说的WordCount,词频TFIDF分析;学术论文、专利文献的饮用分析和统计;维基百科数据分析等。 海量数据挖掘:非结构数据、时空数据、图像数据的挖掘。 机器学习:监督学习、无监督学习、分类算法如决策树、SVM等。 自然语言处理:基于大数据的训练和预测;基于语料库构建单词同现矩阵,频繁项数据挖掘、重复文档检测等。 广告推荐:用户点击(CTR)和购买行为(CVR)预测 MR框架 用户视角看原理 用户视角谈实现 扩展MR MR开发使用流程 1、阿里云官网下载插件、配置开发环境 2、新建java项目,完成MR开发 增加mapper 增加Reducer 增加MR Driver 添加处理逻辑 3、本地测试 准备本地测试数据