推断基本规则

来源:互联网 发布:mac更改输入法快捷键 编辑:程序博客网 时间:2024/05/01 04:11
数据集:只有一个属性承担了所有工作,其它的都是无关或者冗余的属性。它适应于类目属性、缺省值和数值属性。
方法:1规则(1-rule,1R),是一个能从实例集里方便的找到非常简单的分类规则方法。
特点:它产生一层的决策树,用一个规则集的形式表示,只在某个特定的属性上进行测试。
想法:建立一个只对单个属性进行测试的规则,并应用于不同的分支,每个分支对应一个不同的属性值,分支的类就是训练数据在这个分支上出现最多的类。
算法实现(伪代码)
                                1:对于每一个属性
                                2:       对于该属性的每个属性值,产生一条规则:
                                3:                计算每个类别出现的次数
                                4:                找出最频繁的类别
                                5:                产生一条规则将该类别分配给该属性值
                                6:        计算规则的误差率
                                7: 选择误差最小的规则
算法说明:每一个属性都会产生一个不同的规则集,属性值的数目对应规则集的数目,即规则集中的每条规则对应一个属性值。
缺省值处理:把缺省值作为另外一个属性值,例如,如果天气数据在outlook属性中存在缺省值,数据集{sunny,overcast,rainy,?},那么将对应4个规则。
数值属性处理:下面介绍一个简单的数据离散化的方法,如下:
(1)将训练样本按照数值属性的值进行排序,产生一个类值序列。例如,天气数据在温度属性值上的排序:
64
65
68
69
70
71
72
72
75
75
80
81
83
85
yes
no
yes
yes
yes
no
no
yes
yes
yes
no
yes
yes
no
(2) 在类值发生变化处放置断点,产生8个区间:
      yes | no | yes yes yes | no no | yes yes yes | no | yes yes | no
(3) 将断点设置在两遍样本中间的位置,即64.5 , 66.5 , 70.5 , 72 , 77.5 , 80.5 , 84。
(4) 有些属性值却属于两个不同的类别,最简单的办法是将处于左右侧的属性值再向右移动一个位置,从而产生一个新的断点,即64.5 , 66.5 , 70.5 , 73.5 , 77.5 , 80.5 , 84。
(5) 1R算法将倾向于被分裂成很多区间的属性,例如标识码属性表示实例是唯一的,在训练上的错误率为0,。高分支属性在测试集上通常不能有很好的表现。为了避免过度拟合的现象,需要制定一条规则,这条规则规定每个区间上多数类样本必须达到最小值。本例设置最小的样本数目为3,实践中设置为6。新产生的分离结果如下:
      yes no yes yes yes | no no  yes yes yes | no  yes yes  no
(6) 如果两个相邻的区间拥有相同的多数类时,将他们合并之后并不会影响规则集的意义,最终结果如下:
     yes no yes yes yes  no no  yes yes yes | no  yes yes  no
(7) 产生的最后的规则如下:
     温度:<= 77.5  -> yes
                >   77.5  -> no
缺省值和数值属性如果一个数值属性存在缺省值,为缺省值简历一个额外的区间,并且只离散化属性值。
总结:尽管1R非常简单,但是它的表现却异常图书,甚至可以和景点的机器学习算法相媲美。在确定了性能基线的情况下,建议采用“简单优先”的方法,首先采用简答的、基本的技术,然后再将它发展成更加精细的方案。

0 0
原创粉丝点击