Python人工智能经典算法之决策树

2020-09-01 15:48:27 浏览数 (1)

代码语言:javascript复制
4.2 决策树分类原理【*****】
    1.信息增益
        信息增益 = entroy(前) - entroy(后)
        注意:信息增益越大,我们优先选择这个属性进行计算
        信息增益优先选择属性总类别比较多的进行划分
    2.信息增益率
        维持了一个分离信息度量,通过这个分离信息度量当分母,进行限制
    3.基尼增益
        1.基尼值:
            从数据集D中随机抽取两个样本,其类别标记不一致的概率
            Gini(D)值越小,数据集D的纯度越高。
        2.基尼指数:
            选择使划分后基尼系数最小的属性作为最优化分属性
        3.基尼增益:
            选择基尼增益最大的点,进行优化划分
        4.基尼增益构造过程:
            1.开始将所有记录看作一个节点
            2.遍历每个变量的每一种分割方式,找到最好的分割点
            3.分割成两个节点N1和N2
            4.对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止。
        5.决策树的变量可以有两种,分别对应的划分方式:
            1.数字型
                通过对数据取两个数字之间的中间值,进行划分
            2.名称型
                通过对属性的类别进行划分
        6.如何评估分割点的好坏?
            主要看分割的是否纯
    4.三种算法对比:【****】
        ID3 算法
            采用信息增益作为评价标准
            只能对描述属性为离散型属性的数据集构造决策树
            缺点是倾向于选择取值较多的属性
        C4.5算法
            用信息增益率来选择属性
            可以处理连续数值型属性
            采用了一种后剪枝方法
            对于缺失值的处理
            缺点是:C4.5只适合于能够驻留于内存的数据集
        CART算法
            C4.5不一定是二叉树,但CART一定是二叉树
            是信息增益的简化版本
4.3 cart剪枝
    1.剪枝原因
        噪声、样本冲突,即错误的样本数据
        特征即属性不能完全作为分类标准
        巧合的规律性,数据量不够大。
    2.常用剪枝方法
        预剪枝
            在构建树的过程中,同时剪枝
                eg:
                限制节点最小样本数
                指定数据高度
                指定熵值的最小值
        后剪枝
            把一棵树,构建完成之后,再进行从下往上的剪枝

4.4 特征工程-特征提取【***】
    1.特征提取
        将任意数据(如文本或图像)转换为可用于机器学习的数字特征
    2.特征提取分类:
        字典特征提取(特征离散化)
        文本特征提取
        图像特征提取(深度学习将介绍)
    3.api
        sklearn.feature_extraction
    4.字典特征提取
        字典特征提取就是对类别型数据进行转换
        api:
            sklearn.feature_extraction.DictVectorizer(sparse=True,…)
            aparse矩阵
                1.节省内容
                2.提高读取效率
            属性:
                DictVectorizer.get_feature_names() 返回类别名称
        注意:
            对于特征当中存在类别信息的我们都会做one-hot编码处理
    5.文本特征提取(英文)
        api:
            sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
                stop_words -- 停用词
                注意:没有sparse这个参数
                    单个字母,标点符号不做统计
    6.文本特征提取(中文)
        注意:
            1.在中文文本特征提取之前,需要对句子(文章)进行分词(jieba)
            2.里面依旧可以使用停用词,进行词语的限制
    7.tfidf
        1.主要思想:
            如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类
        2.tfidf
            tf -- 词频
            idf -- 逆向文档频率
        3.api
            sklearn.feature_extraction.text.TfidfVectorizer
        注意:
            分类机器学习算法进行文章分类中前期数据处理方式
4.5 决策树算法api【*】
    sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
        参数:
        criterion
            特征选择标准
        min_samples_split
            内部节点再划分所需最小样本数
        min_samples_leaf
            叶子节点最少样本数
        max_depth
            决策树最大深度
4.6 案例:泰坦尼克号乘客生存预测【***】
    1.流程分析
        1.获取数据
        2.数据基本处理
        2.1 确定特征值,目标值
        2.2 缺失值处理
        2.3 数据集划分
        3.特征工程(字典特征抽取)
        4.机器学习(决策树)
        5.模型评估
    2.可视化
        sklearn.tree.export_graphviz()
    3.小结
        优点:
            简单的理解和解释,树木可视化。
        缺点:
            决策树学习者可以创建不能很好地推广数据的过于复杂的树,容易发生过拟合。
        改进:
            减枝cart算法
            随机森林(集成学习的一种)

5. 集成学习
5.1 集成学习算法简介
    1.什么是集成学习
        超级个体和弱者联盟对比,后者更优
    2.复习:机器学习两个核心任务
        1.解决欠拟合问题
            弱弱组合变强
            boosting
        2.解决过拟合问题
            互相遏制变壮
            Bagging
5.2 Bagging【**】
    1.bagging集成过程
        1.采样
            从所有样本里面,采样一部分
        2.学习
            训练弱学习器
        3.集成
            使用平权投票
    2.随机森林介绍
        1.随机森林定义
            随机森林 = Bagging   决策树
        2.流程:
            1.随机选取m条数据
            2.随机选取k个特征
            3.训练决策树
            4.重复1-3
            5.对上面的若决策树进行平权投票
        3.注意:
            1.随机选取样本,且是有放回的抽取
            2.选取特征的时候吗,选择m<<M
                M是所有的特征数
        4.api
            sklearn.ensemble.RandomForestClassifier()
    3.bagging的优点
        Bagging   决策树/线性回归/逻辑回归/深度学习… = bagging集成学习方法
        1.均可在原有算法上提高约2%左右的泛化正确率
        2.简单, 方便, 通用

0 人点赞