从这篇开始,我将介绍分类问题,主要介绍决策树算法、朴素贝叶斯、支持向量机、BP神经网络、懒惰学习算法、随机森林与自适应增强算法、分类模型选择和结果评价。总共7篇,欢迎关注和交流。 这篇先介绍分类问题的一些基本知识,然后主要讲述决策树算法的原理、实现,最后利用决策树算法做一个泰坦尼克号船员生存预测应用。 决策树算法有一个好处,那就是它可以产生人能直接理解的规则,这是贝叶斯、神经网络等算法没有的特性;决策树的准确率也比较高,而且不需要了解背景知识就可以进行分类,是一个非常有效的算法。 下面来看看决策树算法的基本思想: 算法:GenerateDecisionTree(D,attributeList)根据训练数据记录D生成一棵决策树. 在第6步中,对应构建多叉决策树时,离散的属性在结点N及其子树中只用一次,用过之后就从可用属性列表中删掉。
中文翻译参考 《统计学习方法》决策树笔记 决策树可以分类,也可以回归,还有多输出任务 是随机森林的基础组成部分 1. 分类预测 决策树特性:不需要太多的数据预处理,尤其是不需特征缩放或归一化 tree_clf.predict_proba([[5,1.5]]) # array([[0. tree_clf.predict([[5,1.5]]) # array([1]) 预测时间复杂度:O(\log_2m) ,与特征数量无关,m为样本数O(nmlogm) ,n 为特征数量max_features 通常,算法使用 模型参数 决策树不需要事先设置参数,不添加约束的决策树模型,能很好的拟合数据,容易过拟合 min_samples_split(节点在被分裂之前必须具有的最小样本数) min_samples_leaf(叶节点必须具有的最小样本数 不稳定性 决策树 对旋转很敏感,可以使用 PCA 主成分分析,缓解 ? 决策树 对训练数据的微小变化非常敏感,随机森林可以通过多棵树的平均预测值限制这种不稳定性
3)高方差和不稳定性:扰乱一点,改动一点值,决策树就会改变。改变树的根结点,从另一个变量开始,你可能会得到不同的树。 4)决策树学习算法是基于启发式算法,如贪婪算法,寻求在每个节点上的局部最优决策。 这样的算法不能保证返回全局最优决策树,比如对于NP完全问题无法给出很好的解决。 学习方法 决策树的生成算法有ID3, C4.5、CART算法等。 三种方法的主要区别在于对特征重要性排序所选择的指标有区别,ID3算法用的是信息增益,C4.5算法用信息增益率;CART算法使用基尼系数。 /article/details/52786820;http://blog.csdn.net/gamer_gyt/article/details/51226904 决策树剪枝算法原理 损失函数 正则化:
决策树 2. 构造决策树的基本算法 ? 3. 熵(entropy)概念 香农指出,一条信息的信息量和它的不确定性之间有着直接的关系。因此可以使用信息熵来描述信息量的多少。 决策树归纳算法 (ID3) 1970-1980, J.Ross. 其他算法: C4.5: Quinlan Classification and Regression Trees (CART): (L. Breiman, J. Friedman, R. Gain) 6. 决策树的优点: 直观,便于理解,小规模数据集有效 8.决策树的缺点: 处理连续变量不好 类别较多时,错误增加的比较快 可规模性一般 【注】:本文为麦子学院机器学习课程的学习笔记
决策树(Decision Tree) 它通过对训练样本的学习,并建立分类规则,然后依据分类规则,对新样本数据进行分类预测,属于有监督学习。 优点: 决策树有易于理解和实现; 决策树可处理数值型和非数值型数据; 基于条件的决策树在party包里 install.packages(“party”) ctree(formula,data 0.91242236 0.08757764 Plans to attend 0.32531646 0.67468354 可以看到,决策树准确率
一颗完全生长的决策树会面临一个严重的问题——过拟合,因此我们需要剪掉一些枝叶来提高决策树的泛化能力。 决策树算法生成的一颗完整的决策树会非常的庞大,每个变量都被详细地考虑过。在每一个叶节点上,只要继续分支就会有信息增益的情况,不管信息增益有多大,都会进行分支操作。 后剪枝 后剪枝的核心思想是让算法生成一颗完全生长的决策树,然后经过计算决定是否剪枝(自底向上:REP、CCP,自顶向下:PEP)。 该算法是自底向上依次遍历所有的子树,直至没有任何子树可以替换使得在验证集上的表现得以改进时,算法就可以终止。 ,T_M\} 中选出一个最好的决策树 参考文献 百面机器学习-hulu 决策树的剪枝:REP/PEP/CCP算法 决策树-剪枝算法(二)
决策树是机器学习中最基础且应用最广泛的算法模型。本文介绍了机器学习的相关概念、常见的算法分类和决策树模型及应用。 常见的强化学习算法有时间差学习。 算法类似性 1、决策树学习:根据数据的属性采用树状结构建立决策模型。决策树模型常常用来解决分类和回归问题。 图 6. 分裂后的基尼指数计算公式 其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。 对于特征选取,需要选择最小的分裂后的基尼指数。 6、绘制剪枝完后的决策树图。 该案例决策树的拟合结果与剪枝前后的树如下图所示: ? 图 12. 决策树案例拟合图 ? 图 13. 未剪枝的决策树图 ? 图 14. 知识无极限 6、回复“啤酒”查看数据挖掘关联注明案例-啤酒喝尿布 7、回复“栋察”查看大数据栋察——大数据时代的历史机遇连载 8、回复“数据咖”查看数据咖——PPV课数据爱好者俱乐部省分会会长招募 9、
在机器学习领域中有这样一类算法,它核心思想并不是非常复杂的数学公式而是简单的逻辑if-then分支,这也就造成了它较为容易理解但又不那么容易理解透的特性,它和它的一些tricks是一些大厂必问必推的重点 ,也是后续像随机森林,GBDT等算法的基础所在,它就是决策树算法。 本文主要讨论决策树用于分类的情况 一般决策树算法有几个步骤: 1、特征属性划分(节点分裂) 2、递归构建决策树 3、消除过拟合进行剪枝 一些前提和约定 决策树的每一个叶子节点代表了一个分类,而内部的有孩子的节点表示特定属性或特征的判断 ,有向边代表了满足某个属性范围的划分规则 树从根节点到叶子节点的有向边集合称为路径,所以每条路径都是互斥的即不存在交叉 在数据结构中谈到树就应该有递归的定性思维,所以决策树的层级节点划分也是依靠的递归 原理 一般决策树属于有监督学习(即训练集因变量已经标记好了属于哪些类或哪些可能取值),我们要做的就是训练出一个模型使得这个模型能在已知训练集数据上损失最小即正确分类的样本数最多,在未知训练数据上泛化最好
决策树 算法原理 决策树的原理 决策树: 从训练数据中学习得出一个树状结构的模型 决策树属于判别模型 决策树是一种树状结构,通过做出一系列决策 (选择) 来对数据进行划分,这类似于针对一系列问题进行选择 决策树算法是一种归纳分类算法它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测。 决策树算法属于监督学习方法 决策树归纳的基本算法是贪心算法自顶向下来构建决策树。 贪心算法:在每一步选择中都采取在当前状态下最好/优的选择 在决策树的生成过程中,分割方法即属性选择的度量是关键。 根据不同的目标函数,建立决策树主要有一下三种算法: ID3(lterativeDichotomiser)、C4.5CART(Classification And Regression Tree). 下次博客简述ID3算法、C4.5算法、CART算法
ID3算法: 自顶向下分裂属性 依据信息熵 entropy(D)=-\sum_{i=1}^kp(c_i)log_2p(c_i) 其中D为数据集,类别C=\{c_1,c D,A)=-\sum_{i=1}^k\frac{|D_i|}{|D|}entropy(D_i) 信息增益gain(D,A)=entropy(D)-entropy(D,A) 每次选择以最优的信息增益分裂决策树 ID3的改进,C4.5算法: 增加了信息增益比并取代了信息增益进行选择: gain_{ratio}(D_A)=\frac{gain(D,A)}{splitInfo(D,A)}=\frac{gain(D {i=1}^k\frac{|D_i|}{|D|}entropy(D_i)=-\frac{1}{1}log_2(\frac{1}{1})-\frac{0}{1}log_2{0}{1}-\frac{2}{6} log_2(\frac{2}{6})-\frac{4}{6}log_2(\frac{4}{6})=0.918 gain(D,颜色)=entropy(D)-entropy(D,颜色)=0.067 计算gain
,都是决策树生成的一种算法,同样也由特征选择、树的生成以及剪枝组成,既可以用于分类也可以用于回归。 CART算法由决策树的生成以及决策树剪枝两部分组成。 02|CART的生成: 决策树的生成就是递归地构建二叉决策树的过程。 2.2.2算法步骤 输入:训练数据集D,停止计算的条件 输出:CART决策树 根据训练数据集,从根节点开始,递归地对每个结点进行以下操作,构建二叉决策树: 设结点的训练数据集为D,计算现有特征对该数据集的基尼指数 生成CART决策树。 算法停止计算的条件是结点中的样本个数小于预定的阈值,或样本集的基尼指数小于预定的阈值(样本基本属于同一类),或者没有更多特征。 3.1算法步骤: 输入:CART算法生成的决策树T0 输出:最优决策树Tα 设k=0,T=T0 设α=+∞ 自上而下地对各内部节点t计算C(Tt),|Tt|以及g(t),这里,Tt表示以t为根节点的子树
prerequiste:决策树基本思想 决策树构建一个重要的步骤是选择最优划分属性,基于不同的判断标准可以衍生出不一样的方法。 这篇博文介绍常用的三种决策树算法:ID3、C4.5、Cart,这三种算法的区别在于选择特征作为判断结点时的标准(数据纯度函数)不同。 在构造决策树的过程中,计算所有属性的信息增益,并使用能产生最大信息增益的属性作为最优属性构造决策树的分类结点。 通过引入信息增益比,来对取值较多的特征进行一定程度的惩罚,提高决策树的泛化能力。 从样本类型的角度来看,ID3只能处理离散型变量,而C4.5和Cart都可以处理连续性变量。 参考文献 百面机器学习 - Hulu 分类算法 – 决策树ID3算法 分类算法 – 决策树C4.5算法 分类算法 – 决策数CART算法
决策树是机器学习中最基础且应用最广泛的算法模型。本文介绍了机器学习的相关概念、常见的算法分类和决策树模型及应用。 常见的强化学习算法有时间差学习。 算法类似性 1、决策树学习:根据数据的属性采用树状结构建立决策模型。决策树模型常常用来解决分类和回归问题。 图 6. 分裂后的基尼指数计算公式 其中 k 表示样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。 对于特征选取,需要选择最小的分裂后的基尼指数。 6、绘制剪枝完后的决策树图。 该案例决策树的拟合结果与剪枝前后的树如下图所示: ? 图 12. 决策树案例拟合图 ? 图 13. 未剪枝的决策树图 ? 图 14. 它可提供各种高级算法和技术 (包括文本分析、实体分析、决策管理与优化),帮助您选择可实现更佳成果的操作。 在 SPSS Modeler 中有很多应用实例,其中就包括一个决策树算法模型的案例。
本章主要涉及到的知识点有: 信息熵 决策树 决策树优化 树剪枝算法 决策树可视化 算法思想:从决策到决策树 本节首先通过我们做决策时候的经历引出决策树算法的基本思想,然后介绍决策树的基本概念。 4.决策树分割属性选择 决策树算法是一种“贪心"算法策略,只考虑在当前数据特征情况下的最好分割方式,不能进行回溯操作。 4.三种决策树算法 决策树一般有下列三种算法,其基本都是运用上面原理构建决策树的: q ID3 q C4.5 q CART ID3算法是决策树的一个经典的构造算法,内部使用信息熵以及信息增益来进行构建 4 重复上述操作,直到产生的剪枝决策树T只有1个节点 5 得到决策树T0T1T2…Tk 6 使用验证样本集选择最优子树Ta 问题来了,如何计算非叶子节点的剪枝系数呢? 决策树深度对模型的影响 分析:从图中可以看书,随着树的深度的加深,正确率会提高,达到临界值之后(树的深度为6),训练集正确率达到最高,而测试集正确率开始下降,多以决策树的深度越深就会出现过拟合。
数据挖掘算法之 决策树算法 机器学习中,决策树是一个预测模型;它代表的是对象属性值与对象值之间的一种映射关系。 决策树仅有单一输出;若需要多个输出,可以建立独立的决策树以处理不同输出。 从数据产生决策树的机器学习技术叫做决策树学习, 通俗说就是决策树。 决策树学习也是数据挖掘中一个普通的方法。 分类决策树算法: C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法。 分类决策树算法是从大量事例中进行提取分类规则的自上而下的决策树。 决策树的各部分是: 根:学习的事例集; 枝:分类的判定条件; 叶:分好的各个类。 1.3.1 C4.5对ID3算法的改进: 1) 熵的改进,加上了子树的信息。 3) 对已生成的决策树进行裁剪,减小生成树的规模。 后面还有贝叶斯、邻近算法、人工神经网络等等。
前言 这里以ID3算法做二分类为例介绍决策树算法的原理。所谓决策树就是由一个个"决策"组成的树。决策树中,结点分为两种,放“决策依据”的是非叶结点,放“决策结果”的是叶结点。那么决策是什么呢? ID3算法原理 ? ID3算法的局限性 (1)不支持连续特征 (2)采用信息增益大的特征优先建立决策树的节点。在相同条件下,取值比较多的特征比取值少的特征信息增益大。 (3)不支持缺失值处理 (4)没有应对过拟合的策略 这里只是讲了一下决策树算法最基础的入门ID3算法,关于更多的知识例如C4.5,CART决策树等请看《周志华机器学习》决策树那章。 def fun(): start = time() fn() ret = time() - start if ret < 1e-6: = "ns" ret *= 1e9 elif ret < 1e-3: unit = "us" ret *= 1e6
为了更好的理解决策树算法,我们先来看个小例子: 假设我们知道一个人特征「黑色皮肤,头发鬈曲,身高175cm」,现在需要去判断这个人是来自非洲还是亚洲。 这其实也就是决策树算法在训练过程中需要完成的,在多个特征中,我们需要找出最能区分结果的特征,区分结果差的直接丢掉。 决策树(ID3算法为例) 目前决策树算法中分为ID3,C4.5和CART三种,区别在于ID3在使用信息增益来选则分类属性,C4.5使用信息增益比,CART使用基尼系数,整体逻辑都一样,公式如下: 熵: 当然何为复杂,以二分类为例,当正负样本比为1:1的时候最复杂,这时候熵等于1; 条件熵:理解了熵之后条件熵就很好理解了,即在给定某个条件的情况下熵为多少; 信息增益:信息增益其实就是熵减去条件熵,整个决策树算法的目标就是找出信息增益最大的条件 最后 整个决策树的生成逻辑也就是这样,还是挺简单的,相对于其他算法,决策树计算简单,而且输出结果解释性很强,你可以很直观的看到这么一棵「树?」
例如在医疗辅助系统中,为了方便专业人员发现错误,常常将决策树算法用于辅助病症检测。 np.linspace(0.01,0.99,200) plt.plot(x,entropy(x)) plt.show() 信息增益 信息熵是一种衡量数据混乱程度的指标,信息熵越小,则数据的“纯度”越高 ID3算法步骤 如果某个特征的特征值种类较小,则其内在信息值就越小 C4.5算法优缺点 优点:分类规则利于理解,准确率高 缺点 在构造过程中,需要对数据集进行多次的顺序扫描和排序,导致算法的低效 C4.5只适合于能够驻留内存的数据集 ,当数据集非常大时,程序无法运行 无论是ID3还是C4.5最好在小数据集上使用,当特征取值很多时最好使用C4.5算法。 剪枝 剪枝是决策树学习算法对付过拟合的主要手段。
sklearn import tree # visualize code from sklearn.externals.six import StringIO import pydotplus # 决策树算法 [130,0]] features_names = ['重量','表皮光滑度'] labels = [0, 0, 1, 1, 0, 1] label_name = ['橘子','苹果'] #调用决策树算法的核心语句
Decision Tree (决策树算法) 与k-nearest neighbors相同,决策树算法及其变种是另一种将输入空间划分成区域,并且每个区域有单独参数的算法。 ? 如上图所示,决策树的每一个结点都和输入空间的一个区域相关联(通常使用一个坐标对齐的割)。空间就这样被分割成互不重叠的区域,叶子结点和输入区域存在一对一的联系。 该学习算法在被允许学习出一个任意大小树的条件下可以看作是无参数的,即使在实际中,经常会使用一些大小限制来正则化使得它们变成参数模型。 典型的实际使用的决策树,使用坐标对齐的划分和每一个结点内的常数输出,很难处理能被logistic regression轻松解决的一些问题。 我们可以通过思考复杂算法与基准线nearest neighbor predictors和decision trees的相似和不同之处,来获得一些直观的理解。