【挖掘篇】:决策树原理

通过对训练样本的学习,并建立分类规则,然后根据分类规则,对新样本数据进行分类预测,属于有监督学习

    # ID3算法
        # 其核心实在决策树的各级节点上,使用信息增益方法作为属性的选择标准,来帮助确定生成各个节点是所应采用的合适属性
            # 使得在每个非叶节点上进行测试时,都能获得最大类别分类增益,使分类后数据集的熵最小
        # 理论:用划分后样本集的不确定性作为衡量划分好坏的标准,用信息增益度量不确定性,信息增益值越大
        # 算法流程
            # 当前样本集合,计算所有属性的信息增益
            # 选择信息增益最大的属性作为测试属性,把测试属性取值相同的样本划分为一个同一个样本集
            # 若子样本集的类别属性只含有单个属性,则分枝为叶子节点
        # R语言中建模步骤
            # 建树
                # 选择最优解释力度的变量
                    # 在X和Y都是分类变量的基础上
                    # 计算X中的各个变量的熵
                    # 也就是说X1相对Y 的信息量
                    # 筛选出信息量最大的X1进行第一层 
                # 对每个变量选择最优分割点
                    # 在第一层的类别里面计算,该类里面的 重新循环计算排序 直到数据分类切割完毕
            # 剪树
                # 前向剪枝    控制生产树的规模
                # 后项剪枝    删除没有意义的分组
        # 缺点
            # 倾向于选择水平数量较多的变量
            # 输入变量必须是分类变量(连续变量必须离散化)
        # 重点
            #  对一个特征而言,系统有它和没它时信息量将发生变化,而前后信息量的差值就是这个特征给系统带来的信息量。所谓信息量,就是熵。
            # 在信息增益中,衡量标准是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要
            # 也就是说X可能的变化越多,X所携带的信息量越大,熵也就越大
            # 信息增益最大的问题在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上
            # 只适合用来做所谓“全局”的特征选择(指所有的类都使用相同的特征集合),而无法做“本地”的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)

    
    # C4.5算法
        
            # 相对于ID3算法重要改进是使用信息增益率来选择节点属性,克服了ID3算法只适用于离散的描述属性,而C4.5算法技能够处理离散的描述属性,也可以处理连续的表述属性
                # 单个分类或等级变量:决策树遍历搜索
                    # 对分类变量,假设该输入变量有4个水平,则依次遍历所有的组合形式,计算熵增益率最大的那个组合方式
                # 单个连续或者等级变量:决策树分割搜索
                    # 对连续变量,先等宽方式分为50组,依次取阈值分为两组,计算熵增益率变化的最大的那个分割方式
                # 不能处理等级变量,要么作为分类变量,要么作为连续变量,设因子类型为连续变量,否则为连续变量
            # 计算方式,比较多个变量的优先级
                # 假设都是连续变量,先做各自分割,并计算每个分割的熵增益率
                    # 先计算X1分割方式,然后X2分割方式...
                    # 比较每个变量所能达到的最大的熵增益率,取最大的那个作为本次分割的选择变量,该变量对应最大熵增益率的分割点作为分割依据
                        # 在X1 > W10组中,比较每个变量所能达到最大熵增益率,取最大的那个作为本次分割选择的变量,该变量对应最大熵增益率的分割点作为分割依据
                            # 对X1再进行遍历,计算熵增益率
                            # 对X2再进行遍历,计算熵增益率
                            # ... 
                        # 依次循环
        # C5.0算法
            # 建树 沿用C4.5的方法
            # 剪枝
                # 前剪枝
                # 后剪枝
            # 主要创新出   纳入了Boost的方法,可以做组合模型
        

    # CART算法
        # 基尼系数     判断分配平等程度的指标
            # A ---> 实际收入分配曲线和收入分配绝对平等之间的面积
            # B ---> 实际收入分配区间(右下方)的面积为B
            # 基尼系数/洛伦兹系数(不平等程度) = A / (A+B)
            # A 为 0 ,基尼系数为0 ,收入分配完全平等
            # B 为 0 ,基尼系数为1 , 收入分配绝对不平等
            # 洛伦兹曲线弧度大小和基尼系数成正比
        # CART决策树是一种十分有效的非参数分类和回归方法了,通过构建数,修剪树,评估树来构建一个二叉树,当终结点是连续变量,该树为回归树,当终结点是分类变量,该树为分类树
            # 建树
                # 选择最优解释力度的变量
                # 对每个变量选择最优分割点
            # 剪树
                # 决策树创建时,由于数据中的噪音和离群点,许多分枝反映的是训练数据中异常
                # 剪枝处理这种过分拟合的数据会影响模型的稳定性
                # 通常适用统计度量剪掉最不可靠的分枝
                # 剪枝后的树更小、更简单、更统一理解
                    # 前向剪枝(预修剪)    控制生产树的规模  控制决策树重复生长,可以事先指定一些控制参数
                        # 决策树最大深度   
                        # 树种父节点和子节点的最小样本量或比例
                            # 对于父节点,如果节点的样本量小于最小样本量或比例,则不再分组
                            # 对于子节点,如果分组后生产的子节点的样本量低于最小样本量或比例,则不必进行分组
                        # 树节点中输出变量的最小异质性减少量。如果分组产生的输出变量异质性变化量小于一个指定值,则不必再分组
                    # 后项剪枝    删除没有意义的分组  
                        # 允许决策树充分生长,然后在此基本上根据一定的规则,剪去决策树中那些不具有一般代表性的叶节点或者子树
                        # 一个边修剪边检验的过程。在修剪过程中,应不断计算当天决策子树对测试样本集的预测精度或者误差,判断应该是继续修剪还是停止修剪
                        # CART采用的后修剪技术称为最小代价复杂性修剪发--> MCCP
                        # MCCP的基本考虑(选择交叉验证中错误最小的):
                            # 首先,考虑的决策树虽然对训练样本有很好的预测进度
                            # 但在测试样本和未来新样本上不会仍有令人满意的预测结果
                            # 其次,理解和应用一颗复杂的决策树是一个复杂过程
                            # 因此,目标是得到一颗“恰当” 的树
                            # 首先具有一定的预测精度,同时复杂是恰当的
        # CART的决策树修剪方法——总结
            # 输入变量(自变量):为分类型变量或连续型变量
            # 输出变量(目标变量):为分类型变量(或连续型:回归分析)
            # 连续变量处理:N等分离散化
            # 树分支类型:二分枝
            # 分割指标:gini增益(分割后的目标变量取值变异较小,纯度高)
            # 先剪枝:决策树最大深度、最小样本分割输、叶节点包含的最小样本数、复杂度系数最小
            # 后剪枝:使用最小代价复杂度剪枝法

        # 决策树建树原理,计算每个首选变量对被解释变量的重要性指标,CART采用的指标为基尼系数
            # 第一步 从众多输入变量中选择当前最佳分组变量
                # 分类树:对于数值型输入变量,将数据按升序排序,
                # 然后,从小到大依次以相邻数值的中间值作为组限,将样本分为两组
                # 并计算两组样本输出变量值的差异性。也就是异质性
                # 理想的分组应该尽量使两组输出变量值的异质性总和达到最小,即纯度最大
                # 也就是使两组输出变量值的异质性随分组而快速下降,而“纯度”快速增加
            #  第二步  从分组变量的众多取值中,找到最佳分割点
                # 最佳分割点的确定方法与最佳分组变量的确定是同时进行的
                    # 单个分类或等级变量:决策树遍历搜索
                        # 对分类变量,假设该输入变量有4个水平,则依次遍历所有的组合形式,计算熵增益率最大的那个组合方式
                    # 单个连续或者等级变量:决策树分割搜索
                        # 对连续变量,先等宽方式分为50组,依次取阈值分为两组,计算熵增益率变化的最大的那个分割方式
                    # 不能处理等级变量,要么作为分类变量,要么作为连续变量,设因子类型为连续变量,否则为连续变量
                # 处理方法与C50一致
        # API 
            # 虚拟变量 sklearn包的算法,一般只支持连续值的变量,如果我们的数据中,包含离散值的变量,那么需要将离散值使用有限的连续值来表示,这种表示方法为虚拟变量,例如,男女性别,0或1
            # DictVectorizer.fit_transform(dict_字典)
            # 决策树生成方法
                # dtModel = DecisionTreeClassifier(max_leaf_nodes_最大叶子节点数 = None)
                # dtModel.fit(featureData_属性数据,targetData_目标数据)
                # dtModel.Predict(featureData_属性目标)
            # 决策树绘图方法
                # sklearn.tree.export_graphviz(dtModel_决策树模型,out_file_图形数据输出的路径)

参考资料:《Python数据分析与挖掘实战》和 CDA《信用风险建模》微专业

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容