• 决策树算法


    if-then规则的集合,优点是模型具有可读性分类速度快

     

    决策树常用的算法:ID3算法、C4.5算法、CART算法

    1、熵(entropy,又称信息熵) 

     

     因此,熵只依赖于X的分布,与X的取值无关。

    • 熵越大,随机变量X的不确定性就越大。
    • 如果有0概率,令。单位为比特(bit)或纳特(Nat)

        相关代码实现:

    //根据具体属性和值来计算熵   
    double ComputeEntropy(vector <vector <string> > remain_state, string attribute, string value,bool ifparent){  
        vector<int> count (2,0);  
        unsigned int i,j;  
        bool done_flag = false;//哨兵值   
        for(j = 1; j < MAXLEN; j++){  
            if(done_flag) break;  
            if(!attribute_row[j].compare(attribute)){  
                for(i = 1; i < remain_state.size(); i++){  
                    if((!ifparent&&!remain_state[i][j].compare(value)) || ifparent){//ifparent记录是否算父节点   
                        if(!remain_state[i][MAXLEN - 1].compare(yes)){  
                            count[0]++;  
                        }  
                        else count[1]++;  
                    }  
                }  
                done_flag = true;  
            }  
        }  
        if(count[0] == 0 || count[1] == 0 ) return 0;//全部是正实例或者负实例   
        //具体计算熵 根据[+count[0],-count[1]],log2为底通过换底公式换成自然数底数   
        double sum = count[0] + count[1];  
        double entropy = -count[0]/sum*log(count[0]/sum)/log(2.0) - count[1]/sum*log(count[1]/sum)/log(2.0);  
        return entropy;  
    } 

    2、条件熵——表示在已知特征A的条件下,数据集D的不确定性

     

     

     

     

      

         条件概率公式: 

    3、信息增益(偏向于选择取值较多的特征)——ID3算法

    参考:http://www.cnblogs.com/mfrbuaa/p/4730248.html  Weka算法Classifier-tree-J48源代码分析(一个)基本数据结构和算

    4、信息增益比 ——C4.5算法

     

    CART算法  Classification and regression tree,分类回归树

     1、(最小二乘)回归树 —— 平方误差最小准则  

      步骤如下:

           

     2、分类树 —— 基尼指数(Gini Index)最小准则

    基尼指数(表示集合D的不确定性)

     

    步骤如下:

    1)        针对于数据集D的每一个特征,对其所有可能的取值a,计算在时的基尼指数

    2)        选择基尼指数最小的特征及其对应的切分点,作为最优特征和最优切分点。

    3)        将训练集依该特征及其切分点,分配到两个子结点中,对这两个子结点递归调用(1)(2),直至满足停止条件

    4)        生成CART决策树

    算法停止条件:

    •   结点中的样本个数小于预定阙值
    •   样本集的基尼指数小于预定阙值
    •   没有更多的特征。
  • 相关阅读:
    Android笔记之AsyncTask
    Android笔记之使用Glide加载网络图片、下载图片
    Android笔记之OnLongClickListener
    Android笔记之ViewModel的使用示例
    分享两款好玩的单机游戏^_^
    Android笔记之Retrofit与RxJava的组合
    15张扑克,让观众心选一张,然后分成3组,每组5张。通过询问观众心选的牌是否在于某组中,最后把选中的牌找出来。
    使用Retrofit发送POST请求提交JSON数据
    Android笔记之引用aar
    不可变类
  • 原文地址:https://www.cnblogs.com/sweetyu/p/5085242.html
Copyright © 2020-2023  润新知