• [数据挖掘课程笔记]基于规则的分类-顺序覆盖算法(sequential covering algorithm)


    Rule_set = {}; //学习的规则集初试为空
    
    for 每个类c do
         repeat
             Rule = Learn_One_Rule(D,Att-vals,c)
             从D中删除被Rule覆盖的元组;
          until终止条件被满足
          Rule_set = Rule_set +Rule
    end for
    返回Rule_set
    

      以上是顺序覆盖算法的基本过程

           Learn_One_Rule采用一种贪心的深度优先策略。每当面临添加一个新的属性测试到当前规则时,它根据训练样本选择最能提高规则质量属性的测试。

          而什么样的度量能被选择为规则质量,将是我们以下将解决的问题。

           有几个概念:

           准确率:当前规则覆盖的正确的元组/当前规则覆盖的全部元组

           覆盖率:当前规则覆盖的全部元组/当前全部元组

           正元组(pos):在顺序覆盖算法中,当前所关心的类

           负元组(neg):在顺序覆盖算法中,所有类-当前所关心的类  的集合

          直觉上,我们选择准确率作为规则质量标准,但是这有一个问题,如下图所示:

        

               虽然R2只覆盖两个元组,但是R2的准确率为100%,大于R1,在顺序覆盖算法中,将会选择R2而不是R1,这显然是不合理的。

               为了解决这个问题,采用Foil_Gain作为规则质量标准:

               FOIL_Gain = pos' x (log2((pos'/pos' +neg'))-log2((pos/pos +neg)))

              其中 pos' ,neg'为新增规则R'所覆盖的正元组和负元组,pos,neg是R'覆盖之前的R所覆盖的正元组和负元组

               FOIL_Gain越大越好。

              规则剪枝:

              FOIL_Prune(R) = (pos - neg)/(pos+neg)

              如果R剪枝后的FOIL_Prune值较高,则对R剪枝。

  • 相关阅读:
    js高级-闭包
    js作用域
    js执行上下文与执行上下文栈
    js原型及原型链
    去除数组中重复的元素值
    树[省选联考2020]
    GDOI2020 游记
    Problem b[HAOI2011]
    分零食[JSOI2012]
    移动金币「SDOI2019」
  • 原文地址:https://www.cnblogs.com/leeshum/p/4876025.html
Copyright © 2020-2023  润新知