决策树

决策树(R语言)

余生颓废 提交于 2020-11-23 22:48:05
决策树是有监督学习算法中的一种。基于属性做一系列的决策,每次决策要么进入下一级决策,要么生成最终结果。决策树可以作为集成算法中的基分类器,并且有最为广泛的应用。 决策树算法 要想理解决策树的工作原理,首先需要了解决策树的层次结构。决策树由结点与有向边组成,其中,结点分为如下三种: 根结点 :无入边,但有零条或多条出边 内部结点 :有一条入边和多条出边 叶节点 :有一条入边,无出边 每个叶节点都有一个类标号,根节点和内部结点包含属性测试条件,每个根节点和内部结点都对应一次条件判断,用来分开有不同特性的记录。对一条记录进行判断时,从根结点开始,根据判断进入相应分支,只到叶节点,叶节点的类别即为分类结果。比如,根据历史贷款记录预测贷款申请者是否会逾期,是否有房和婚姻状况作为属性,是否逾期作为类标号。历史数据如下: 序号 有房 婚姻状况 是否逾期 1 是 单身 否 2 否 已婚 否 3 否 单身 是 4 是 已婚 否 5 否 离异 是 6 否 已婚 否 7 是 离异 否 8 否 单身 是 9 否 已婚 否 根据历史贷款记录,可构造如下决策树: 当决策树构造好后,对未标记的记录进行分类就非常容易了。如使用以及构造好的决策树,对如下序号8这个人进行预测,可以知道,最终停在了未逾期这个节点。 序号 有房 婚姻状况 是否逾期 8 是 离异 ? Hunt算法 是常用的用来建立决策树的算法

决策树ID3原理及R语言python代码实现(西瓜书)

旧街凉风 提交于 2020-11-23 21:45:29
决策树ID3原理及R语言python代码实现(西瓜书) 摘要: 决策树是机器学习中一种非常常见的分类与回归方法,可以认为是if-else结构的规则。分类决策树是由节点和有向边组成的树形结构,节点表示特征或者属性, 而边表示的是属性值,边指向的叶节点为对应的分类。在对样本的分类过程中,由顶向下,根据特征或属性值选择分支,递归遍历直到叶节点,将实例分到叶节点对应的类别中。 决策树的学习过程就是构造出一个能正取分类(或者误差最小)训练数据集的且有较好泛化能力的树,核心是如何选择特征或属性作为节点, 通常的算法是利用启发式的算法如ID3,C4.5,CART等递归的选择最优特征。选择一个最优特征,然后按照此特征将数据集分割成多个子集,子集再选择最优特征, 直到所有训练数据都被正取分类,这就构造出了决策树。决策树有如下特点: 原理简单, 计算高效;使用基于信息熵相关的理论划分最优特征,原理清晰,计算效率高。 解释性强;决策树的属性结构以及if-else的判断逻辑,非常符合人的决策思维,使用训练数据集构造出一个决策树后,可视化决策树, 可以非常直观的理解决策树的判断逻辑,可读性强。 效果好,应用广泛;其拟合效果一般很好,分类速度快,但也容易过拟合,决策树拥有非常广泛的应用。 本文主要介绍基于ID3的算法构造决策树。 决策树原理 训练数据集有多个特征,如何递归选择最优特征呢

ython编程实现ID3算法,使用西瓜数据集产生结果

给你一囗甜甜゛ 提交于 2020-11-23 19:55:45
数据集和注意的地方,我已经发在BP算法第一篇,你们看一下吧。 具体代码,不分析了,网上太多,有问题请留言。 给我点个赞加个关注吧。 上代码: encoding:utf-8 import pandas as pd import numpy as np class DecisionTree: def init (self): self.model = None def calEntropy(self, y): # 计算熵 valRate = y.value_counts().apply(lambda x: x / y.size) # 频次汇总 得到各个特征对应的概率 valEntropy = np.inner(valRate, np.log2(valRate)) * -1 return valEntropy def fit(self, xTrain, yTrain=pd.Series()): if yTrain.size == 0: # 如果不传,自动选择最后一列作为分类标签 yTrain = xTrain.iloc[:, -1] xTrain = xTrain.iloc[:, :len(xTrain.columns) - 1] self.model = self.buildDecisionTree(xTrain, yTrain) return self.model def

2020 届计算机视觉算法工程师秋招进程

怎甘沉沦 提交于 2020-11-22 19:29:21
前言 经历过 春季实习生招聘 的洗礼,我已经意识到了秋招的严峻性,所以一边实习一边一直关注着秋招。虽然 6 月下旬已经投出了秋招的第一份简历,然后,事实却是,落花有意,流水无情。在提前批阶段,要么是简历都没通过,要么是笔试没过,要么是万幸过了笔试面试又遭打击,唯一的一家拼多多,远程面试整个流程持续了一个多月才算是得知通过。 八月底结束实习回到学校,花了一周时间集中复习,大概过了一遍《剑指 Offer》、概率论、线性代数、深度学习以及简历上相关的内容,然后就是为期半个多月的笔试面试。所幸多家企业到学校现场笔试的难度不高,得以面试了几家公司,斩获了几个 offer,而远程面试则是几无收获。 回顾整个秋招,一方面,作为自动化转到计算机的半吊子,在算法岗竞争这么激烈的情况下还能拿到几个不错的 offer,真是感到有太多不易但又有几分幸运。另一方面,丰富的面试经历也让我充分意识到了自己的不足,接下来,我还需要在代码能力和基础知识方面苦下功夫,及早未雨绸缪着眼未来。 概况 筛选未通过:作业帮、蘑菇街、图森未来、平安科技、图普科技、寒武纪、之江实验室 笔试未参加:滴滴、VIVO、小马智行、美图、大华、ZOOM、农行、招银网络科技、同花顺、虹软、欢聚时代、58 同城、格灵深瞳 笔试未通过:网易雷火、网易云音乐、贝壳、依图、京东、腾讯、360、美团、新浪、阿里、快手、度小满、第四范式、爱奇艺、携程

XGBoost的优点

江枫思渺然 提交于 2020-11-22 03:33:04
1. Gradient boosting(GB) Gradient boosting的思想是迭代生多个(M个)弱的模型,然后将每个弱模型的预测结果相加,后面的模型Fm+1(x)基于前面学习模型的Fm(x)的效果生成的,关系如下: 实际中往往是基于loss Function 在函数空间的的 负梯度学习 ,对于回归问题 残差和负梯度也是相同的。 中的f,不要理解为传统意义上的函数,而是一个函数向量 ,向量中元素的个数与训练样本的个数相同,因此基于Loss Function函数空间的 负梯度的学习 也称为“伪残差”。 2. Gradient boosting Decision Tree(GBDT) GBDT是GB和DT的结合。要注意的是这里的 决策树是回归树 , GBDT实际的核心问题变成怎么基于 使用CART回归树生成 ? 3. Xgboost xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear) (1). xgboost在目标函数中显示的加上了 正则化 项,基学习为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。 正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。 从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合

90 后美女独家秘籍:从小白到 AI 算法工程师

亡梦爱人 提交于 2020-11-21 13:35:43
这是一篇关于如何成为一名AI算法工程师的长文~ 经常有朋友私信问,如何学python呀,如何敲代码呀,如何进入AI行业呀? 正好回头看看自己这一年走过的路,进行一次经验总结。 来看看你距离成为一名AI工程师还有多远吧~ ⭐具体内容: 🔺 我是因为什么开始接触敲代码 🔺 人工智能/机器学习/深度学习 🔺 自学如何寻找学习资料 🔺 如何选择编程语言/框架 🔺 校招/社招/实习/面试经验 🔺 一碗鸡汤 ⭐声明: 🔼 本篇内容均属于个人观点,建议采纳对自己有用的经验,如有疏漏,欢迎指正,共同进步! 🔼 2017年5月开始第一份实习 / 2017年7月开始学敲代码 / 2017年11月硕士毕业 🔼 擅长的编程语言:R / Python 🔼 不花钱报班,全靠自学,最初是因为穷,后来发现“开源”的世界真是太美好了! ⚡我是因为什么开始接触敲代码? 我的第一个模型是什么 由于本科是数学,研究生是量化分析,第一份实习是一家金融科技公司,开始接触所谓的“Fintech”😝 第一个任务就是做客户的信用评分卡模型,目的给每个用户打一个信用分数,类似支付宝的芝麻信用分。这是银行标配的一个模型,最常见最传统的算法用的就是 逻辑回归 。 在课堂上使用的工具是SAS,SPSS,属于有操作界面的,菜单非常齐全,只需要鼠标点一点就能建模,很好上手。但是SAS这些要付钱的,年费还是相当的贵

Python实现CART决策树

强颜欢笑 提交于 2020-11-19 10:45:35
CART决策树 前言 一、CART决策树算法 二、Python代码实现 1.计算结点GINI值 2.分离数据集 3.选择最好的特征 4.生成决策树 5.测试决策树 6.决策树可视化 7.主程序部分 CART决策分类树所有代码 三、运行结果 总结 前言   CART算法的全称是Classification And Regression Tree,采用的是Gini指数(选Gini指数最小的特征s)作为分裂标准,是一种实用的分类算法。 一、CART决策树算法   主要思路是对一个数据集选择几个属性作为特征,对于每个特征提出一个划分条件,根据这个条件将结点分为两个子节点,对于子节点同样利用下一个特征进行划分,直到某结点的Gini值符合要求,我们认为这个结点的不纯性很小,该节点已成功分类。如此反复执行,最后可以得到由若干个结点组成的决策树,其中的每个叶节点都是分类的结果。   某结点的Gini值的计算公式如下:   如果要对某种划分计算Gini值,可以利用加权平均,即:   明确了Gini值的计算以及决策树的基本思路后,就可以继续向下看具体的代码实现了,本文没有使用sklearn库,如果读者只是需要使用该算法,而不想了解算法实际的实现思路的话,可以无需向下看了。 二、Python代码实现 主要分为6个步骤: 寻找到最佳属性 创建决策树 将上一结点分裂,分别计算左、右子节点的Gini值。

2019.1.22 文献阅读日记,内容理解篇 :用于无监督医疗检测的自动心电图噪声监测和分类系统《Automated ECG Noise Detection and Classification...

☆樱花仙子☆ 提交于 2020-11-19 07:46:00
以下是对文章内容的理解,在这里做个笔记,便于回顾,没有什么技术含量,就是一个学习日记笔记,嘻嘻。 文章内容的思路: 一、框架包括: 1.改进的集合经验模式分解 modified ensemble empirical mode decomposition (CEEMD),CEEMD全称为 complete ensemble empirical mode decomposition,完全集合经验模式分解。 2.短期时间特征提取 3.基于决策规则的噪声噪声监测和分类 二、框架的处理步骤: 1.首先使用修改的CEEMD算法分解ECG信号,区分ECG分量与噪声和伪像。 2.根据提取的高频HF和低频LF信号计算诸如最大绝对幅度,零交叉数,和自相关函数的局部最大峰值幅度的短期时间特征。 3.提出了一种基于决策规则的算法,用于检测噪声的存在,并将处理后的ECG信号分为六个信号组: (1)无噪声心电图 noise-free ECG, (2)基线漂移心电图 ECG+BW, (3)肌肉伪迹心电图 ECG+MA, (4)电力线干扰心电图 ECG+PLI (5)基线漂移电力线干扰心电图 ECG+BW+PLI (6)基线漂移 肌肉伪迹心电图ECG+BW+MA 该框架简化了单个和组合ECG噪声的检测和分类流程,如下图(文献原图): 上图说明了该框架的主要组成部分,用于检测和分类的单一和组合心电图的声音

掌握电商后台设计,这一篇足矣(转载)

夙愿已清 提交于 2020-11-18 18:48:28
阅读全文大约需要15分钟。本文为作者对平时工作的思考总结,包括商品中心的设计、订单拆单的实现、促销活动及优惠券的设计使用等,对相关从业者,有借鉴意义。欢迎留言交流讨论。 本文包括以下几个部分: 电商后台系统概述 电商后台产品设计:商品中心 电商后台产品设计:订单拆单 电商后台产品设计:促销活动解析 电商后台产品设计:优惠券的设计和妙用 一、电商后台系统到底是怎么回事儿 每年的“双十二”“双十一”人造购物节一来,电商群战就好不热闹,马云却预言纯电商时代已去,新零售时代已至。作为一名电商产品经理,身处如此时代,亦会觉得不负青春。 做产品以来,主要做后端支撑产品方向,目前对各模块系统都有所涉及。初次接触时,在网上找了很多资料,发现关于产品的相关文章,大部分都是关于产品体验、交互、APP等,提及后台的文章基本浅尝辄止,很少有文章来系统介绍后台各模块(商品、订单、营销、物流、支付、会员、评价、采购…),就计划写一系列关于后台各模块的产品设计文章,希望能够帮助在产品路上成长的PM。 后台系统,也不能叫做一个系统,很多公司将其拆分为很多子系统,阿里更将其发展成了中台事业群(搜索事业部、共享业务平台、数据技术)。后端一系列系统支撑着公司各种业务的进行和发展,前端展示、业务处理(订单、优惠券)、库存变动等进行时,后端各系统间互相调用接口进行数据更新。 由于商业性质决定了电商业务支撑系统必须具备稳定性

我的第一个 Kaggle 比赛学习

ぃ、小莉子 提交于 2020-11-18 04:58:32
背景 Titanic: Machine Learning from Disaster - Kaggle 2 年前就被推荐照着这个比赛做一下,结果我打开这个页面便蒙了,完全不知道该如何下手。 两年后,再次打开这个页面,看到清清楚楚的 Titanic Tutorial - Kaggle ,完全傻瓜式的照着做就能做下来。当年是什么蒙蔽了我的眼睛~ Target use machine learning to create a model that predicts which passengers survived the Titanic shipwreck Data Titanic: Machine Learning from Disaster - Kaggle train.csv Survived: 1=yes, 0=No test.csv gender_submission.csv: for prediction PassengerId: those from test.csv Survived: final result Guide to help start and follow Titanic Tutorial - Kaggle Join the Competition Here! Submit a initial result : NoteBook Learning