Closed weituo2002 closed 3 years ago
你好,rrl.txt的每一个列(字段)的含义如下:
首先是RID,即规则的ID,是一个二元组。第一个数是-1表示规则是在除了linear layer的倒数第一层,-2则表示来自skip connection(即倒数第二层)。第二个数是指规则所对应的节点在该层的位置。RID仅作区分用,可以忽略。
然后后面的M个列(M指类别总数)则是对应每一类的linear layer的权重weight,其中表头部分还标注出了bias(也就是你问的括号中的b)。具体来说,rrl.txt中的每一条规则都是最后一层logical layer(或由skip connection连接到linear layer的)中的一个节点。因此,每个节点,都与每个类别有weight相连。这M列就是展示了这些weights。而分析这些weight的正负以及大小,则可以知道该规则对各个类别的贡献。对于一个实例,先找出激活的规则,再按照类别将weight和bias求和,最后计算softmax,即可得到各个类别的概率。
再之后的一列是规则的支持度(support),指该条规则覆盖的实例的占比。支持度不用于分类,只用于让我们对规则有一个更好的认识。
最后一列则是规则的具体描述。其中"&"指"AND","|"指"OR"。
非常感谢您的回复,我是刚接触机器学习不久,望您包涵,那我是不是可以简单的将分类的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列有复杂也有简单的规则,而且所覆盖的数据集样本也不一样,那么到底那一条或者那几条规则更为准确呢,这个我认为就是可以让使用者去平衡规则复杂度和模型准确性的地方
有个地方你理解的有点问题。就是如果要分类一个实例,我们需要先找到所有激活的规则,然后按照类别求和所有激活的规则对应的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章节。
rrl.text中的结果的每个字段是什么含义能够解释一下吗?RID我理解是规则ID,但他的取值是什么意思呢,这个标签特征的分类|class_negative(b=-2.1733) | class_positive(b=1.9689)括号中的b是代表平均值吗,每个标签的值是结果的概率吗?那个support又代表什么意思呢?