zoukankan      html  css  js  c++  java
  • [数据挖掘课程笔记]基于规则的分类-顺序覆盖算法(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剪枝。

  • 相关阅读:
    读《人人都是产品经理》
    前端值得看的博客
    git 常用命令 创建查看删除分支,创建查看删除tag等
    看《如何令选择变得更加容易》
    读【失控】——众愚成智
    html5 postMessage
    下拉滚动加载更多数据
    html select用法总结
    分布式系统事务一致性解决方案
    nginx简易教程
  • 原文地址:https://www.cnblogs.com/leeshum/p/4876025.html
Copyright © 2011-2022 走看看