Covering Algorithms:Constructing Rules

覆盖算法:构建规则集合

              树和规则的区别     树:是通过自上而下的分治算法来实现的。在一个多重类案例中,决策树在分裂的时候,为了获得最大的分裂纯度,要考虑所有的类。   

                                           规则:是由覆盖算法实现, 规则生成的方法,每次只考虑一个类,忽视其他类的事件。一般树形都比相同的规则集合要大的多。(因为树形每次都是分裂一个属性,而规则可以对称表示)     

                                            divide-and-conquer algorithm :选择增益信息最大的属性来分裂;covering algorithm: 选择使想要的分类概率最大的那个属性的值对

                          从下面的图可以看到,空间中包含所有的实例,一个目前部分构建的规则和加入新的约束条件后的规则。(约束是多包含目的类实例,排除其他类的实例

                            假设新规则包含总的t个实例,而满足目的类的实例只有p个,那么约束条件就是找到p/t比例最大的属性值。                              

                                 

    
   覆盖算法构建规则的原理如图

                                        

                                                                                         For对于每一个类C循环

                                                   初始化实例集合为E

                                                    while如果实例集合E中有包含类C的实例

                                                           创建一个左侧条件为空的规则来预测类C(IF ? then C)

                                                           直到规则R已经完备啦(或者是没有更多的属性可以使用)

                                                                 For 对于每一个没有出现在规则集合R中属性A,和它的值进行循环

                                                                             考虑是否添加A=的条件到规则R的左端

                                                                              选择p/t的值最大的属性和属性值  

                                                                 把A=v加入到规则R中

                                                             从E中移除哪些被R所覆盖的实例

          具体例子(The Contact lens Data)

                      

     class 可以为 hard、soft、none值  先从hard开始,创建规则R

      

      对于所有不知道的项?,我们有九种选择(age=young时,总共有9个记录即t=8,而满足条件yes的只有两个即p=2,所以 2/8)

      

    从中可知astigmatism=yes最大,所以选择这个属性和属性值

               

 

       这个规则依然是不准确的,12个实例中只有4个正确的,所以我们重复定义如下

             

              对于可能的的项?,我们有7种选择

                  

                 

                      很明显是tear production rate=normal最大,但其实age=young也是2/4=3/6,只是因为3包含的数据更多,所以选择前者

                             

                              

                           我们应该停止吗?我们寻找的是最精确的规则,不管它有多复杂。Table4.9表示目前已经被覆盖的实例。 下一个可能的?项是?

                             

                            我们需要在第一个和第四个之间选择一个,但很明显应该选择第四个,因为3>1,由于已经精确到啦最后,所以最后的结果是

                           

                       由于依然存在class为hard的实例没有覆盖。把之前已经覆盖的数据移除掉,再假设  IF ? then recommendation=hard

                        

 

 

 

 

 

 

 

 

hard.

 

                                                                            

 

posted @ 2017-07-28 12:20  张秀杰  阅读(401)  评论(0编辑  收藏  举报