提示:
决策树算法起源于E.B.Hunt等人于1966年发表的论文“experiments in Induction”,但真正让决策树成为机器学习主流算法的还是Quinlan(罗斯.昆兰)大神(2011年获得了数据挖掘领域最高奖KDD创新奖),昆兰在1979年提出了ID3算法,掀起了决策树研究的高潮。
现在最常用的决策树算法是C4.5是昆兰在1993年提出的。(关于为什么叫C4.5,还有个轶事:因为昆兰提出ID3后,掀起了决策树研究的高潮,然后ID4,ID5等名字就被占用了,因此昆兰只好让讲自己对ID3的改进叫做C4.0,C4.5是C4.0的改进)。
现在有了商业应用新版本是C5.0link。
决策树(DT, decision tree)是一个树结构(可以是二叉树或非二叉树)。
其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。
使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。【咋感觉有点像条件分支结构哇】
决策数有两大优点:
(1)决策树模型可 读性好,具有描述性,有助于人工分析;【可解释性强】
(2)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。deepth?判别次数?
决策树涉及到节点(特征)的划分标准,有三种:
最大信息增益、最大信息增益率、基尼系数。
而这三种不同的划分标准就对应了三种典型决策树:
ID3(最大信息增益)、C4.5(最大信息增益率)、CART(基尼系数)。
(1)决策树易于理解和实现. 人们在通过解释后都有能力去理解决策树所表达的意义。
(2)对于决策树,数据的准备往往是简单或者是不必要的 . 其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。
(3)能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。
(4)在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
(5)对缺失值不敏感
(5)可以处理不相关特征数据
(6)效率高,决策树只需要一次构建,反复使用,每一次预测的最大计算次数不超过决策树的深度。
(1)对连续性的字段比较难预测。
(2)对有时间顺序的数据,需要很多预处理的工作。离散化呗
(3)当类别太多时,错误可能就会增加的比较快。
(4)在处理特征关联性比较强的数据时表现得不是太好
三种:**最大信息增益、最大信息增益率、基尼系数。**而这三种不同的划分标准就对应了三种典型决策树:ID3(最大信息增益)、C4.5(最大信息增益率)、CART(基尼系数)。
(1)信息增益:指的是使用某一个属性a进行划分后,所带来的纯度(信息熵用来度量样本集合的纯度)提高的大小。一般而言,信息增益越大,意味着使用属性a来进行划分所获得的“纯度提升”越大。但信息增益对可取值较多的属性有所偏好。
(2)而信息增益率则解决了特征偏好的问题。
(3)但是不论是信息增益还是信息增益率,存在的问题是涉及对数运算,计算量大,为了解决这个问题。可以采用基尼系数作为节点划分的标准。降低计算量
科研的改进,改进……
最大的区别是划分标准的不同:ID3采用信息增益,而C4.5采用的是信息增益率。
C4.5继承了ID3的优点,并在以下几个方面对ID3算法进行了改进:
解决偏好的问题!
(1)用信息增益率来选择属性,克服了用信息增益选择属性是偏向选择去多的属性的不足
(2)在树的构造过程中进行剪枝
(3)能够对连续的属性进行离散化处理
(4)能够对不完整的数据进行处理
树模型是要寻找最佳分裂点,
对于离散特征,树模型会评估每个离散值的信息增益,将信息增益最大的数值作为分裂点,
因此,树模型不需要对离散特征进行事先one-hot处理,否则会使特征维度增大且稀疏,不仅会增加模型的计算量,而且会损失数据的信息量造成模型的效果不佳,以及过拟合的风险。
也不需要进行归一化处理。
(1)在决策树构建的过程中,对决策树的生长没有进行合理的限制(剪枝);
(2)样本中有一些噪声数据,没有对噪声数据进行有效的剔除;
(1)选择合理的参数进行剪枝,可以分为预剪枝和后剪枝,我们一般采用后剪枝的方法;
(2)利用K-folds交叉验证,将训练集分为K份,然后进行K次交叉验证,每次使用K-1份作为训练样本数据集,另外一份作为测试集;
(3)减少特征,计算每一个特征和响应变量的相关性,常见得为皮尔逊相关系数,将相关性较小的变量剔除;
剪枝是防止决策树过拟合的方法。一棵完全生长的决策树很可能失去泛化能力,因此需要剪枝。
剪枝分为预剪枝和后剪枝两种,预剪枝是在构建决策树时抑制它的生长,后剪枝是决策树生长完全后再对叶子节点进行修剪。
(1)预剪枝–阈值不好设定
设置一个树的最大高度/深度或者为树设置一个最大节点数,达到这个值即停止生长
对每个叶子节点的样本数设置最小值,生长时叶子节点样本数不能小于这个值
判断每次生长对系统性能是否有增益
(2)后剪枝–防止欠拟合
错误率降低剪枝(Reduced-Error Pruning):
后剪枝错误率降低剪枝的方法比较直观,从下至上遍历所有非叶子节点的子树,
每次把子树剪枝(所有数据归到该节点,将数据中最多的类设为结果),与之前的树在验证集上的准确率进行比较,如果有提高,则剪枝,否则不剪,直到所有非叶子节点被遍历完。
悲观剪枝(Pessimistic Error Pruning)
代价复杂度剪枝(Cost-Complexity Pruning)
(3)预剪枝和后剪枝的优缺点比较
时间成本方面,预剪枝在训练过程中即进行剪枝,后剪枝要在决策树完全生长后自底向上逐一考察。显然,后剪枝训练时间更长。预剪枝更适合解决大规模问题。
剪枝的效果上,预剪枝的常用方法本质上是基于贪心的思想,但贪心法却可能导致欠拟合,后剪枝的欠拟合风险很小,泛化性能更高。【故经常是用后剪枝的方法】
另外,预剪枝的有些方法使用了阈值,如何设置一个合理的阈值也是一项挑战。
答:不需要
概率模型不需要归一化,因为他们不关心变量的值,而是关心变量的分布和变量之间的条件概率。
决策树是一种概率模型,数值缩放,不影响分裂点位置。
所以一般不对其进行归一化处理。
(1)对于拥有缺失值的数据,决策树可以应对,而逻辑回归需要挖掘人员预先对缺失数据进行处理;
(2)逻辑回归对数据整体结构的分析优于决策树,而决策树对局部结构的分析优于逻辑回归;
(3)逻辑回归擅长分析线性关系,而决策树对线性关系的把握较差。线性关系在实践中有很多优点:简洁,易理解,可以在一定程度上防止对数据的过度拟合。
(3)逻辑回归对极值比较敏感,容易受极端值的影响,而决策树在这方面表现较好。
(4)执行速度上:当数据量很大的时候,逻辑回归的执行速度非常慢,而决策树的运行速度明显快于逻辑回归。
公式中Ht(T)可以理解为这个叶子节点的熵。
如果把决策树一直划分下去,叶子节点的熵应该为0,只有一个类。
但是如果使用一些剪枝规则,每个节点中仍然可以有熵值,也就是可以继续划分。
Nt 是这个节点中的样本的个数,可以看做这个节点的权重。节点中样本数越多,权重越大。
所以,公式前面一项代表决策树所有叶子节点的熵值的加权和。每个节点的样本分类纯度越高,这个值就越小。
后面一项是对整棵决策树的复杂度的惩罚项,结点数越多,越复杂。
相当于一个正则项,也可以理解为先验概率:较小的树有较大的先验概率。
提示:重要经验:
1)决策树我之前了解得挺少的,基础概念,今天学了也还行
2)但是很多关于数学公式的东西,可能不太熟悉,需要多看多了解。