本篇文章给大家谈谈一种基于决策树特征权重优化方法,以及基于决策树的特征选择对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

决策树算法-原理篇

关于决策树算法一种基于决策树特征权重优化方法,我打算分两篇来讲,一篇讲思想原理,另一篇直接撸码来分析算法。本篇为原理篇。

通过阅读这篇文章,你可以学到:

1、决策树的本质

2、决策树的构造过程

3、决策树的优化方向

决策树根据使用目的分为:分类树和回归树,其本质上是一样的。本文只讲分类树。

决策树,根据名字来解释就是,使用树型结构来模拟决策。

用图形表示就是下面这样。

其中椭圆形代表:特征或属性。长方形代表:类别结果。

面对一堆数据(含有特征和类别),决策树就是根据这些特征(椭圆形)来给数据归类(长方形)

例如,信用贷款问题,我根据《神奇动物在哪里》的剧情给银行造了个决策树模型,如下图:

然而,决定是否贷款可以根据很多特征,然麻鸡银行选择了:(1)是否房产价值100w;(2)是否有其一种基于决策树特征权重优化方法他值钱的抵押物;(3)月收入10k;(4)是否结婚;这四个特征,来决定是否给予贷款。

先不管是否合理,但可以肯定的是,决策树做了特征选择工作,即选择出类别区分度高的特征。

由此可见, 决策树其实是一种特征选择方法。 (特征选择有多种,决策树属于嵌入型特征选择,以后或许会讲到,先给个图)即选择区分度高的特征子集。

那么, 从特征选择角度来看决策树,决策树就是嵌入型特征选择技术

同时,决策树也是机器学习中经典分类器算法,通过决策路径,最终能确定实例属于哪一类别。

那么, 从分类器角度来看决策树,决策树就是树型结构的分类模型

从人工智能知识表示法角度来看,决策树类似于if-then的产生式表示法。

那么, 从知识表示角度来看决策树,决策树就是if-then规则的集合

由上面的例子可知,麻鸡银行通过决策树模型来决定给哪些人贷款,这样决定贷款的流程就是固定的,而不由人的主观情感来决定。

那么, 从使用者角度来看决策树,决策树就是规范流程的方法

最后我们再来看看决策树的本质是什么已经不重要了。

决策树好像是一种思想,而通过应用在分类任务中从而成就了“决策树算法”。

下面内容还是继续讲解用于分类的“决策树算法”。

前面讲了决策树是一种 特征选择技术 。

既然决策树就是一种特征选择的方法,那么经典决策树算法其实就是使用了不同的特征选择方案。

如:

(1)ID3:使用信息增益作为特征选择

(2)C4.5:使用信息增益率作为特征选择

(3)CART:使用GINI系数作为特征选择

具体选择的方法网上一大把,在这里我提供几个链接,不细讲。

但,不仅仅如此。

决策树作为嵌入型特征选择技术结合了特征选择和分类算法,根据特征选择如何生成分类模型也是决策树的一部分。

其生成过程基本如下:

根据这三个步骤,可以确定决策树由:(1)特征选择;(2)生成方法;(3)剪枝,组成。

决策树中学习算法与特征选择的关系如下图所示:

原始特征集合T:就是包含收集到的原始数据所有的特征,例如:麻瓜银行收集到与是否具有偿还能力的所有特征,如:是否结婚、是否拥有100w的房产、是否拥有汽车、是否有小孩、月收入是否10k等等。

中间的虚线框就是特征选择过程,例如:ID3使用信息增益、C4.5使用信息增益率、CART使用GINI系数。

其中评价指标(如:信息增益)就是对特征的要求,特征需要满足这种条件(一般是某个阈值),才能被选择,而这一选择过程嵌入在学习算法中,最终被选择的特征子集也归到学习算法中去。

这就是抽象的决策树生成过程,不论哪种算法都是将这一抽象过程的具体化。

其具体算法我将留在下一篇文章来讲解。

而决策树的剪枝,其实用得不是很多,因为很多情况下随机森林能解决决策树带来的过拟合问题,因此在这里也不讲了。

决策树的优化主要也是围绕决策树生成过程的三个步骤来进行优化的。

树型结构,可想而知,算法效率决定于树的深度,优化这方面主要从特征选择方向上优化。

提高分类性能是最重要的优化目标,其主要也是特征选择。

面对过拟合问题,一般使用剪枝来优化,如:李国和基于决策树生成及剪枝的数据集优化及其应用。

同时,决策树有很多不足,如:多值偏向、计算效率低下、对数据空缺较为敏感等,这方面的优化也有很多,大部分也是特征选择方向,如:陈沛玲使用粗糙集进行特征降维。

由此,决策树的优化方向大多都是特征选择方向,像ID3、C4.5、CART都是基于特征选择进行优化。

参考文献

统计学习方法-李航

特征选择方法综述-李郅琴

决策树分类算法优化研究_陈沛玲

基于决策树生成及剪枝的数据集优化及其应用-李国和

一种基于决策树特征权重优化方法(基于决策树的特征选择)插图

用AdaBoost和GBDT模型处理信用卡违约问题

以决策树为基函数的提升方法称为提升树(boosting tree)一种基于决策树特征权重优化方法,包括GBDT,xgboost,adaboost。

Bootstrap是一种有放回的抽样方法思想。

该思想的应用有两方面:bagging和boosting

虽然都是有放回的抽样,但二者的区别在于:Bagging采用有放回的均匀取样,而Boosting根据错误率来取样(Boosting初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重),因此Boosting的分类精度要优于Bagging。Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的各轮训练集的选择与前面各轮的学习结果有关。

Bagging主要关注降低方差,Boosting关注的主要是降低偏差。

(Gradient Boosting Decision Tree梯度提升树) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。与其一种基于决策树特征权重优化方法他有监督算法一样,可用于分类问题的识别和预测问题的解决。

该集成算法体现一种基于决策树特征权重优化方法了3方面的优势,分别是提升Boosting,梯度Gradient,和决策树Decision Tree。提升是指将多个弱分类器通过线下组合实现强分类器的过程,梯度是指算法在提升过程中求解损失函数时增强了灵活性和便捷性,决策树是指算法所使用的弱分类器为CART回归树。

先讨论决策树,随机森林是利用Bootstrap抽样技术生成多个数据集,然后通过这些数据集构造多棵决策树,进而运用投票或平均的思想实现分类和预测问题的解决,但是这样的随机性会导致树与树之间并没有太多的相关性,往往会导致随机森林算法在拟合效果上不好,于是有了“提升”的概念,即通过改变样本点的权值和各个弱分类器的权重,将这些弱分类器组合,实现预测准确性的突破,然后又为了求解损失函数容易和方便,又提出了GBDT。

GBDT的核心在于累加所有树的结果作为最终结果,回归树(预测实数值)是可以累加的,而分类树(分类标签值)是没办法累加的,所以GBDT中的树都是回归树,不是分类树,尽管GBDT调整后也可用于分类但不代表GBDT的树是分类树。即GDBT调整之后可以用于分类问题,但是内部还是回归树。

这部分和决策树中的是一样的,无非就是特征选择。回归树用的是最小化均方误差,分类树是用的是最小化基尼指数(CART)

以年龄为例:

回归树在每个节点(不一定是叶子节点)都会得一个预测值,该预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差–即(每个人的年龄-预测年龄)^2 的总和 / N,或者说是每个人的预测误差平方和 除以 N。这很好理解,被预测出错的人数越多,错的越离谱,均方差就越大,通过最小化均方差能够找到最靠谱的分枝依据。分枝直到每个叶子节点上人的年龄都唯一或者达到预设的终止条件(如叶子个数上限),若最终叶子节点上人的年龄不唯一,则以该节点上所有人的平均年龄做为该叶子节点的预测年龄。

Boosting,迭代,即通过迭代多棵树来共同决策。他的思想来源是三个臭皮匠顶个诸葛亮,Boost是”提升”的意思,一般Boosting算法都是一个迭代的过程,每一次新的训练都是为了改进上一次的结果。 GBDT是把所有树的结论累加起来做最终结论的,每棵树的结论并不是年龄本身,而是年龄的一个累加量。GBDT的核心就在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。 比如A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里一种基于决策树特征权重优化方法我们把A的年龄设为6岁去学习,如果第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。

是boosting,但不是Adaboost。GBDT不是Adaboost Decistion Tree。就像提到决策树大家会想起C4.5,提到boost多数人也会想到Adaboost。Adaboost是另一种boost方法,它按分类对错,分配不同的weight,计算cost function时使用这些weight,从而让“错分的样本权重越来越大,使它们更被重视”。Bootstrap也有类似思想,它在每一步迭代时不改变模型本身,也不计算残差,而是从N个样本训练集中按一定概率重新抽取N个样本出来(单个样本可以被重复抽样),对这N个新的样本再训练一轮。由于数据集变了迭代模型训练结果也不一样,而一个样本被前面分错的越厉害,它的概率就被设的越高,这样就能同样达到逐步关注被分错的样本,逐步完善的效果。Adaboost的方法被实践证明是一种很好的防止过拟合的方法。Adaboost是一种最具代表的提升树。Adaboost也可以用于分类或者回归。

GBDT是提升算法的扩展板,在原始的提升算法中,如果损失函数为平方损失或指数损失,求解损失函数的最小值问题会很简单,但如果损失函数为更一般的函数(比如绝对值损失函数获Huber损失函数),目标值的求解会复杂,Freidman提出了梯度提升算法,即在第m轮基础模型中,利用损失函数的负梯度值作为该轮基础模型损失值的近似,并利用这个近似值构建下一轮基础模型。

Gradient体现在:无论前面一颗树的cost function是什么,是均方差还是均差,只要它以误差作为衡量标准,那么残差向量都是它的全局最优方向,这就是Gradient。

GBDT适用范围:

GBDT可以适用于回归问题(线性和非线性),相对于logistic regression仅能用于线性回归,GBDT适用面更广。

GBDT也可用于二分类问题(设定阈值,大于为正,否则为负)和多分类问题。

优点:

参数少,准确率高,运算时间少,对异常数据稳定。

GBDT和随机森林

GBDT和随机森林的相同点:

都是由多棵树组成

最终的结果都由多棵树共同决定

GBDT和随机森林的不同点:

组成随机森林的可以是分类树、回归树;组成GBDT只能是回归树

组成随机森林的树可以并行生成(Bagging);GBDT只能串行生成(Boosting)

对于最终的输出结果而言,随机森林使用多数投票或者简单平均;而GBDT则是将所有结果累加起来,或者加权累加起来

随机森林对异常值不敏感,GBDT对异常值非常敏感

随机森林对训练集一视同仁权值一样,GBDT是基于权值的弱分类器的集成

随机森林通过减小模型的方差提高性能,GBDT通过减少模型偏差提高性能

注:

GBDT相比于决策树有什么优点

泛化性能更好!GBDT的最大好处在于,每一步的残差计算其实变相的增大了分错样本的权重,而已经分对的样本则都趋向于0。这样后面就更加专注于那些分错的样本。

Gradient体现在哪里?

可以理解为残差是全局最优的绝对方向,类似于求梯度。

通过组合多个分类器(可以不同)的分类结果,获得了比简单的分类器更好的效果。选择不同的分类器可以缓解同一分类器可能放大的过拟合问题。

有三种集成方法:Bagging、Boosting 和 Random Forset。Bagging通过随机抽样 S 次(有放回的抽样),得到 S 个与原数据集大小相同的数据集,作用到 S 个分类器上,最后根据投票决定分到哪一个类;Boosting 在 Bagging 上更进一步,它在数据集上顺序应用了多个不同的分类器。

Boosting 中最流行的的一个算法是 AdaBoost,是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),以弱学习器作为基分类器,并且输入数据,使其通过权重向量进行加权。在第一次迭代中,所有数据等权重,在后续迭代中,前次迭代中分错的数据的权值增大,将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。这种针对错误的调节能力正是 AdaBoost 的长处。

AdaBoost的具体做法:

(1)提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的加大而受到后一轮弱分类器的关注。

(2)采用加权多数表决。具体的,加大分类错误率低的分类器的权值,使其在表决中起较大作用,减少分类误差率大的弱分类器的权值,使其在表决中起较小作用。

三部分组成:

(1)分类器权重更新公式

(2)样本分布(也就是样本权重)更新公式

(3)加性模型。 最小化指数损失函数

优点:

很好的利用了弱分类器进行级联;

可以将不同的分类算法作为弱分类器;

AdaBoost 具有很高的精度;

相对于 Bagging 算法和 Random Forest 算法,AdaBoost 充分考虑的每个分类器的权重;

不改变所给的训练数据,而不断改变训练数据的权值分布,使得训练数据在基本分类器的学习中起不同的作用。这是AdaBoost的一个特点;

利用基本分类器的加权线性组合构建最终分类器,是AdaBoost的另一个特点;

AdaBoost被实践证明是一种很好的防止过拟合的方法;

泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。

缺点:

AdaBoost 迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定;

数据不平衡导致分类精度下降;

训练比较耗时,每次重新选择当前分类器最好切分点;

AdaBoost只适用于二分类问题;

对离散点敏感。

应用领域:

模式识别、计算机视觉领域,用于二分类和多分类场景。

自变量包括客户的性别、受教育水平、年龄、婚姻状况、信用额度、6个月的历史还款状态、账单金额以及还款金额,因变量y表示用户在下个月的信用卡还款是否存在违约的情况(1表示违约,9表示不违约)

首先查看因变量中各类别的比例差异,通过饼图:

违约客户比例占比22.1%,不违约客户占比77.9%,总体来说,两个类别的比例不算失衡。

一般而言,如果两个类别比例为9:1,则认为失衡,为99:1,认为严重失衡。

拆分数据

使用模型默认参数,准确率为81.25%,预测客户违约(y=1)的精确率为68%,覆盖率为32%,绘制ROC曲线

面积AUC为0.78,不到0.8,通过调整参数,即交叉验证的方法来选择相对合理的参数值,并且可以进一步做特征筛选(按照重要因素)

取出重要性比较高的变量再利用交叉验证选择参数建模

先对基础模型决策树DecisionTreeClassifier的参数进行调优

经过5重交叉验证,最大的树深度选择为3

再对提升树AdaBoostClassifier模型的参数调优

经过5重交叉验证,AdaBoost算法的最佳基础模型个数为300,学习率为0..01

基于以上调参结果重新构造模型

准确率只提升了0.35%,可以考虑其他模型

与AdaBoost结果一致,说明GBDT采用一阶导函数的值近似残差是合理的

9.假设双龙公司现有A、B两个投资方案可供选择,A、B两项目的一次投资总额均为30万元,经济寿命均为十年,

显然选择了B项目,基本上不需要计算。

一.这个问题是要找出每个方案的现金流折现成当前现值的多少,折现率显然是银行贷款利率。显然,两种方案都可以回收40万元,但主要问题是现金流的回收,显然B项目前期资金回收较快。时间越长,贴现现值所占的比例就越小。A项目贴现现金流现值= 4 /(1 + 8%)+ 4 /(1 + 8%)^ 2 ++ 4 / (1 + 8%) ^ 10贴现现金流的现值项目B = 5 / (1 + 8%) + 5 / (1 + 8%) ^ 2 + 5 / (1 + 8%) ^ 3 + 5 / (1 + 8%) ^ 4 + 5 / (1 + 8%) ^ 5 + 3 / (1 + 8%) ^ 6 + 3 / (1 + 8%) ^ 7 + 3 / (1 + 8%) ^ 8 + 3 / (1 + 8%) ^ 9 + 3 / (1 + 8%) ^ 10显然,计算结果是B大于A。

拓展资料:

一.决策分析一般分为四个步骤:

1.形成决策问题,包括提出计划、确定目标;

2.自然状态及其概率判断;

3.制定多种可行方案;

4.评估方案并做出选择。常用的决策分析技术有:确定性决策分析、风险决策分析和不确定性决策分析。 (1)确定性案例的决策分析。确定性决策问题的主要特点是:一是只有一种状态;第二,有一个决策者想要实现的明确目标;第三,有两个或两个以上的方案供决策者选择;第四,这种状态下不同方案的收入价值是明确的。确定性决策分析技术包括用微分法求最大值和数学规划。

(2)风险案例的决策分析。这类决策问题与确定性决策只在第一个特征上有所不同:在基于风险的情况下,未来可能存在不止一种状态。我们不能提前确定,只能知道各种状态的可能性(如概率、频率、比例或权重等)。常用的风险决策分析方法有期望值法和决策树法。期望值法是根据每个可行方案在每个自然状态下的收益值的概率平均值来决定每个方案的选择。决策树方法有助于决策者将决策问题可视化。它可以简单地在一张图上画出各种可替换的方案、可能的状态、可能性和结果,用于计算、研究和分析。同时,可以随时进行补充和修正。

决策树法(一)

姓名:王映中 学号:20181214025 学院:广研院

转自

【嵌牛导读】决策树(decision tree)是一种基本的分类与回归方法。决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。

【嵌牛鼻子】决策树模型与学习

【嵌牛提问】如何建立决策树模型?

【嵌牛正文】

1 决策树模型与学习

决策树解决分类问题的一般方法

1.1 决策树模型

定义:分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。

1.2 决策树与if-then规则

可以将决策树看成一个if-then规则的集合。将决策树转换成if-then规则的过程是这样的:由决策树的根结点到叶结点的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。

    决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。

1.3 决策树与条件概率分布

1.4 决策树学习

决策树学习本质上是从训练数据集中归纳出一组分类规则,与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个也没有。从另一个角度看,决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。

    决策树的损失函数是正则化的极大似然函数。当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题。因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次最优(sub-optimal)的。

    决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。开始,构建根结点,将所有训练数据都放在根结点。选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶结点,并将这些子集分到所对应的叶结点中去;如果还有子集不能被基本正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的结点。如此递归地进行下去,直至所有训练数据子集被基本正确分类,或者没有合适的特征为止。最后每个子集都被分到叶结点上,即都有了明确的类。这就生成了一棵决策树。

    以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。我们需要对已生成的树自下而上进行剪枝,将树变得更简单,从而使它具有更好的泛化能力。具体地,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点。

决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。

    决策树学习常用的算法有ID3、C4.5与CART,下面结合这些算法分别叙述决策树学习的特征选择、决策树的生成和剪枝过程。

关于一种基于决策树特征权重优化方法和基于决策树的特征选择的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表一休教程网的观点和立场。