决策树
来源:互联网 发布: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,图中画红圈的地方就不会再分割下去。
熵
熵主要是指控制决策树,确定在何处分割数据的方式和概念。
它是测量一系列样本中不纯度的方式
它有一个数学公式:
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
方差偏差的困境
高偏差机器学习算法实际上会忽略数据,它几乎没有任何能力学习数据,因此被称之为偏差。
所以如果如果是高偏差的算法,实际上他不能学习出任何结果。
另一个极端是机器学习模型对数据极端敏感,并且只能复制曾经见过的东西。这被称之为方差过高。他的问题在于对于之前从来没有见过的东西反应非常差。因为他没有适当的方差来泛华新的东西。
我们希望学习模型具有泛化能力,但是仍然对数据保持十分敏感。如何调控这两者之间的平衡,是机器学习的艺术。
决策树的优缺点
决策树存在的限制是他比较容易过拟合,特别是当数据中包含大量特征时。决策树过于复杂,很容易就发生过拟合现象。选择决策树参数时要小心,尽量防止这种现象发生。
决策树的优点是可以通过集成的方法,从决策树中构建更大的分类器。
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 最容易理解的莫比乌斯反演
- python下RSA加密解密以及跨平台问题
- QT工程文件的条件编译选择与额外的编译参数配置
- strlen函数的模拟实现
- 《招聘一个靠谱的 iOS》
- 决策树
- JQuery_插件ajaxfileupload
- 在MyEclipse-DFS管理中右键创建目录上传文件失效的问题
- Hive 表分区
- fabric1.0部署
- 剑指Offer面试题30(java版):最小的k个数
- linux下设置sudo
- java泛型中<?>和<T>有什么区别?
- 查看系统资源的命令(汇总二)