前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python人工智能经典算法之决策树

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

作者头像
海仔
发布2020-09-01 15:48:27
6220
发布2020-09-01 15:48:27
举报
文章被收录于专栏:海仔技术驿站海仔技术驿站
代码语言: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.简单, 方便, 通用
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档