决策树

来源:互联网 发布:act1.0凯撒贝利亚淘宝 编辑:程序博客网 时间:2024/05/14 16:19

支持向量机,可以采用核方法,将线性分类面转换为非线性的分类面。

而决策树可以通过线性分类面作出非线性的决定。

决策树模型

一个决策树模型就类似于如图所示的内容,所不同的是计算机自己去找分割边界。

这里写图片描述

决策树编码

编写代码类似如下:

from sklearn import treeclf = tree.DecisionTreeClassifier()clf = clf.fit(iris.data, iris.target)pred = clf.predict(features_test)accuracy = clf.score(features_test, labels_test)return accuracy

最小样本分割

训练决策树时可以设置一个参数,为min_samples_split,通过它可以设置一个样本最小分割到几就不再分割了。比如设置为2,图中画红圈的地方就不会再分割下去。

这里写图片描述

熵主要是指控制决策树,确定在何处分割数据的方式和概念。

它是测量一系列样本中不纯度的方式

它有一个数学公式:

entropy=Σi(Pilog2(Pi))

Pi是给定类,即类i中样本的分数。即不同类别的样本在总体中所占的比例。

从这个公式可以看出,熵是与纯度对立的。当所有样本都只有一个分类的时候,那么熵是0。即纯度最大的情况。当所有样本都均匀分散的时候,熵是1。即纯度最低的情况。

那么熵如何影响决策树绘制边界呢

这里涉及到一个新的词汇:信息增益

信息增益定义为:父项熵-加权平均值(分割父项熵后生成的子项熵)

决策树算法会最大程度的提高信息增益,他通过这种算法来选择进行分割的特征。如果特征有多个可获取的不同值,决策树会通过尽可能提高信息增益的办法决定在何处分割。

信息增益计算举例

这里写图片描述

如图所示,图中箭头所指进行分组。speed分组为父熵。

左侧分支的子项熵 =

-2/3*\log_2(2/3)-1/3*\log_2(1/3) = 0.9184

右侧分支的子项熵只有一个所以是0

根据图可见,steep分组占了3/4,flat分组占了1/4。现在计算子项熵的加权平均值:

3/4*0.9184 + 1/4*0 = 0.3112

故信息增益 = 1- 0.3112

方差偏差的困境

高偏差机器学习算法实际上会忽略数据,它几乎没有任何能力学习数据,因此被称之为偏差。
所以如果如果是高偏差的算法,实际上他不能学习出任何结果。

另一个极端是机器学习模型对数据极端敏感,并且只能复制曾经见过的东西。这被称之为方差过高。他的问题在于对于之前从来没有见过的东西反应非常差。因为他没有适当的方差来泛华新的东西。

我们希望学习模型具有泛化能力,但是仍然对数据保持十分敏感。如何调控这两者之间的平衡,是机器学习的艺术。

决策树的优缺点

决策树存在的限制是他比较容易过拟合,特别是当数据中包含大量特征时。决策树过于复杂,很容易就发生过拟合现象。选择决策树参数时要小心,尽量防止这种现象发生。

决策树的优点是可以通过集成的方法,从决策树中构建更大的分类器。