机器学习案例-决策树实现鸢尾花分类

机器学习案例-决策树实现鸢尾花分类

目录

  • 机器学习案例-决策树实现鸢尾花分类
    • 1. 选题目的和意义
    • 2. 主要研究内容
      • 2.1 决策树算法分类(区别于树的结构和构造算法)
      • 2.2 决策树算法详解
      • 2.3 决策树的应用
    • 3. 算法设计
      • 3.1 数据分析
        • 3.1.1 Iris数据集基本介绍
        • 3.1.2 样本标签值分布
        • 3.1.3 样本特征值分布
        • 3.1.4 相关性热力图
      • 3.2 建立决策树
      • 3.3 模型调优
        • 3.3.1 决策树深度(预剪枝)
        • 3.3.2 选取部分特征进行训练
    • 4. 参考文献

1. 选题目的和意义

本实验旨在使用决策树算法实现鸢尾花的分类:在pycharm中sklearn中的iris数据集中,每组鸢尾花数据都有sepal length,sepal width,petal length,petal width四个特征属性,需要根据这四个特征值将鸢尾花分为Iris-Setosa,Iris-Versicolour,Iris-Virginica三类。

通过对该选题的研究,我们可以深入理解和掌握决策树算法的原理、构建过程以及分类机制,提升综合素养;同时,用机器学习实现鸢尾花分类对植物学和相关领域的研究也大有益处。

2. 主要研究内容

分类是机器学习中的一类重要问题;分类算法是利用训练样本集获得分类函数即分类模型(分类器),从而实现将数据集中的样本划分到各个类中;分类模型是学习训练样本中属性集与类别之间的潜在关系,并以此为依据对新样本属于哪一类进行预测。

决策树是一种基于规则的方法,它用一组嵌套的规则进行预测,可用于分类问题和回归问题。在树的每个决策节点处,根据判断结果进入一个分支,反复执行这种操作直到叶子节点,得到预测结果。

2.1 决策树算法分类(区别于树的结构和构造算法)

  • ID3
    由罗斯.昆布提出,用来从数据集中生成决策树;在每个节点处选取能获得最高信息增益的分支属性进行分裂

  • C4.5
    总体思路与ID3类似,其区别在于分支的处理(ID3使用信息增益作为度量,C4.5引入了信息增益率作为度量);与ID3算法相比,C4.5算法主要的改进是使用信息增益率作为分裂的度量标准;此外,针对ID3算法只能处理离散数据、容易出现过拟合等问题也提出了相应的改进

  • C5.0
    与C4.5相比具有以下优势:决策树构建时间要比C4.5算法快上数倍,同时生成的决策树规模也更小,拥有更少的叶子节点数;使用了提升法boosting,组合多个决策树来做出分类,使准确率大大提高;提供可选项由使用者视情况来定

  • CART
    二级循环分隔

2.2 决策树算法详解

建立决策树面临的问题:每个决策节点应该选择哪个分量做判定?选定特征后,判定的规则是什么?何时停止分裂?如何为叶节点赋予类别标签/回归值?

  • 寻找最佳分裂:
    对于分类问题,要保证分裂之后左右子树地样本尽可能纯(它们的样本尽可能属于不相交的某一类或者几类),为此我们定义不纯度的指标(样本都属于某一类时不纯度为0;当样本均匀地属于每一类时不纯度最大);可通过下面三个指标判定不纯度:
    熵(度量一组数据包含的信息量的大小。当样本只属于某一类时熵最小,当样本均匀地分布于所有类时熵最大,因此,熵最小的分裂就是最佳分裂):
    E ( D ) = − Σ p i l o g 2 p i E(D)=-\Sigma p_i log_2 p_i E(D)=−Σpi​log2​pi​ p i = N i N p_i=\frac {N_i}{N} pi​=NNi​​其中,N_i是第i类样本数,N为总样本数
    熵的缺陷:当分支属性取值非常多的时候,该分支属性的信息增益就会比较大,在ID3算法中,就会选择取值较多的分支属性,但是实际上,分支多的属性不一定是最优的,可能相比之下这种分支属性无法提供太多的可用信息。
    gini不纯度(当样本只属于某一类时gini不纯度的值最小,为0,当样本均匀地分布于所有类时gini不纯度的值最大): G ( D ) = 1 − Σ p i 2 = 1 − Σ N i 2 N 2 G(D)=1-\Sigma p_i^2=1-\frac {\Sigma N_i^2}{N^2} G(D)=1−Σpi2​=1−N2ΣNi2​