12wang3 / rrl

The code of NeurIPS 2021 paper "Scalable Rule-Based Representation Learning for Interpretable Classification" and TPAMI paper "Learning Interpretable Rules for Scalable Data Representation and Classification"
MIT License
106 stars 32 forks source link

请教一下一个初级的问题 #4

Closed weituo2002 closed 3 years ago

weituo2002 commented 3 years ago

rrl.text中的结果的每个字段是什么含义能够解释一下吗?RID我理解是规则ID,但他的取值是什么意思呢,这个标签特征的分类|class_negative(b=-2.1733) | class_positive(b=1.9689)括号中的b是代表平均值吗,每个标签的值是结果的概率吗?那个support又代表什么意思呢?

12wang3 commented 3 years ago

你好,rrl.txt的每一个列(字段)的含义如下:

weituo2002 commented 3 years ago

非常感谢您的回复,我是刚接触机器学习不久,望您包涵,那我是不是可以简单的将分类的weight和bias做如下计算得到各类别的分类概率呢? 例如在您的例子中第一个规则 类别1:class_negative(b=-2.1733) :weight:-5.8271 bias:-2.1733 类别2:class_positive(b=1.9689):weight:6.3045 bias:1.9689 那么就简单地计算一个数组array:A [-5.8271(类别1的weight) -2.1733(类别1的bias),6.3045 (类别2的weight)+1.9689(类别2的bias)] 然后计算softmax(A)得到:[8.55812101e-08, 9.99999914e-01] 这个就对应类每个分类的概率

那么又怎么看出rrl.txt中到底哪条规则对于分类更为有效呢,也就是说规则rule列有复杂也有简单的规则,而且所覆盖的数据集样本也不一样,那么到底那一条或者那几条规则更为准确呢,这个我认为就是可以让使用者去平衡规则复杂度和模型准确性的地方

12wang3 commented 3 years ago
有个地方你理解的有点问题。就是如果要分类一个实例,我们需要先找到所有激活的规则,然后按照类别求和所有激活的规则对应的weight,再加上bias,最后算softmax。举个例子: 实例为:x1=True, x2=False rrl为: RID class_negative(b=b1) class_positive(b=b2) Support Rule
r1 W11 W12 s1 x1
r2 W21 W22 s2 x1 & x2
r3 W31 W32 s3 x1 | x2

那么激活的是r1和r3,则数组A应该为[W11+W31+b1, W12+W32+b2],然后再计算softmax(A)即可。要记住分类是所有规则共同作用的结果。

另外如果你是已经训练好了模型,想找哪些规则比较重要,可以看weight的绝对值的大小,以及support值。 而如果你想在复杂度和准确性之间进行权衡,就需要在训练前设置参数的时候考虑。可以通过正则化项系数,以及调整网络的宽度和深度来权衡。具体细节可以参见我们论文的3.4和4.3章节。