美文网首页
ML 监督学习 分类 决策树

ML 监督学习 分类 决策树

作者: XinY_VV | 来源:发表于2020-03-10 00:00 被阅读0次
决策树(Decision Tree)

决策树利用特征的值将数据分解成具有相似类的较小的子集,这种递归划分的探索法称之为分而治之。


Decision Tree

如果一个节点停止,它可能有以下几种情况:
1.节点上所有(几乎所有)的案例都属于同一类
2.没有剩余的特征来分辨案例之间的区别
3.决策树已经到达预先定义的大小限制

划分选择

希望决策树的分支结点所包含的样本尽可能属于同一类别

1.信息熵(Information Entropy)
信息熵是度量样本集合纯度最常用的指标 / 可用于量化数字信息的价值。

熵的值越小,则样本集合纯度越高。
某随机事件结果的种类越多,则该事件的熵越大。某随机事件的各种可能发生的结果概率越均匀,则该事件的熵越大。


2.信息增益(Information Gain) ID3决策树学习算法

一般而言,信息增益越大,则意味着使用属性α来进行划分所获得的“纯度提升”越大。

3.增益率(Gain Ratio) C4.5决策树学习算法

C4.5先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率高的。

4..基尼指数(Gini Index) CART决策树学习算法

基尼指数值越小,数据集纯度越高。

剪枝处理

如果决策树增长过大,将会使许多决策树过于具体,模型将会过度拟合训练数据。
解决方法:剪枝

1.预剪枝

当决策树达到一定数量的决策,或者决策节点仅含有少量的案例,我们就停止树的增长。
(在决策树的生成过程中,对每个结点在划分前先进行估计,如果当前结点的划分不能带来决策树泛华性能提升,则停止划分并将当前结点标记为叶结点。)

2.后剪枝

如果一颗决策树生长得过大,就根据节点处的错误率使用修剪准则将决策树减小到合适的大小
(先从训练集生成一颗完整的决策树,然后自底而上地对非叶结点进行考察,如果将该结点对应的子树替换为叶结点能决策树泛华性能提升,则将该子树替换为叶结点)

C5.0算法优点之一就是它可以自动剪枝,即它关注许多决策,能自动使用相对合理的默认值。

max_depth:树的最大深度
min_samples_split:继续分裂一个结点最少需要的训练样本数min_samples_leaf:叶子结点最少含有的训练样本数max_leaf_nodes:叶子结点的最大总数
min_impurity_decrease:用于计算叶子结点的最小纯度
这些参数可如何控制分裂结点特征的选取和防止过度拟合的训练后剪枝。

例子
from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier(criterion="entropy")#初始化用熵模型
clf = clf.fit(X, Y)              #训练
print(clf.predict([[2, 2]]))     #预测
print(clf.feature_importances_)  #查看特征重要性

#用决策树对鸢尾花分类
from sklearn.datasets import load_iris
iris=load_iris()
iris_feature=iris.data          #特征数据
iris_target=iris.target         #分类数据
print(iris.target)              #被分为了3类,前50位0,中间50为1,后面为2
print(iris.data.shape)          #150个样本,每个样本4个特征

from sklearn.tree import DecisionTreeClassifier
dtc=DecisionTreeClassifier()    #所有参数为默认
dtc.fit(iris.data,iris.target)  #对训练集训练数据
predict=dtc.predict(iris.data)  #对测试集进行预测
print(predict)

#把分类好的数据集绘制散点图
X=iris.data
C1=[x[0] for x in X]
C2=[x[1] for x in X]
import matplotlib.pyplot as plt                                  
plt.scatter(C1,C2,c=predict,marker='x')
plt.title("Decision Tree Classifier")
plt.show()
树的可视化

需下载graphviz

总结
Conclusion

相关文章

  • ML 监督学习 分类 决策树

    决策树(Decision Tree) 决策树利用特征的值将数据分解成具有相似类的较小的子集,这种递归划分的探索法称...

  • 常用算法介绍

    常见算法分类 监督式学习 无监督学习 半监督学习 监督式学习 分类1.贝叶斯分类2.决策树算法3.神经网络算法4....

  • 决策树(Decision Tree)

    1.什么是决策树(Decision Tree) 决策树(Decision Tree)解决的是监督学习中的分类问题。...

  • 机器学习算法分类

    机器学习算法分类 监督学习(预测)分类:K-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络回归:线性回...

  • 数据挖掘干货总结(九)-- 决策树分类

    分类算法之决策树 一、原理 决策树是一种非参数的监督学习方法,它主要用于分类和回归。决策树的目的是构造一种模型,使...

  • 2.机器学习常用算法

    常见算法 监督学习:分类算法:决策树算法 Decision Tree: 银行信用评估系统临近取样 Nearest ...

  • 决策树

    Decision Tree (决策树/判定树)是监督学习中的分类算法, 通常预测和分类算法的评估主要体现在: 准确...

  • 算法工程师知识树 持续更新

    机器学习算法 监督学习分类模型LRSVM决策树NB回归模型线性回归 最小二乘融合模型baggingRFboosti...

  • Spark.GBDT学习-GBT总结

    Spark.ML中的GBT分类/回归算法的总结。分类和回归任务的区别在于损失函数和基学习器(决策树)不纯度计算准则...

  • 有监督学习 与 非监督学习 差异

    有监督学习:训练集由输入和输出组成。包括所有的回归算法和分类算法,例如线性回归、决策树、朴素贝叶斯等。 无监督学习...

网友评论

      本文标题:ML 监督学习 分类 决策树

      本文链接:https://www.haomeiwen.com/subject/wluydhtx.html