Machine learning 如何计算逻辑规则之间的相似性

Machine learning 如何计算逻辑规则之间的相似性,machine-learning,similarity,Machine Learning,Similarity,我这里有一个相似性问题。我想使用历史数据(过去实施的规则流量)预测新规则的流量。这里的流量是指一条规则与一个人匹配的次数。以下是一个规则示例: Person.Age<20 and (Person.number_of_children==3 or Person.married==True) and Person.Work==student and Person.Car.isSportCar==False and Person.Car.Color in [blue,pink,red]

我这里有一个相似性问题。我想使用历史数据(过去实施的规则流量)预测新规则的流量。这里的流量是指一条规则与一个人匹配的次数。以下是一个规则示例:

Person.Age<20 and 
(Person.number_of_children==3 or Person.married==True) and 
Person.Work==student and 
Person.Car.isSportCar==False and 
Person.Car.Color in [blue,pink,red]

因此,我失去了“或”和“让我建议另一种方法:

根据两条规则得出相同结果的人的百分比计算相似性分数。当然,你需要一个庞大的、异质的群体


如果这两条规则对大多数人都有相似的结果(例如“false”)-你可以只根据至少一条规则的结果为“true”的测试用例来计算分数。

在这种情况下,我要做的是尝试将规则的规范转换为集合,以便将它们展平,然后计算Jaccard距离。Jaccard距离由集合并集上的交集定义。最后,对不同的属性进行加权(或不加权,并对所有属性使用单个集合)

例如,假设:


因为你的问题是关于理论,你应该把它发布在我投票结束这个问题,因为更高层次的统计问题属于我,很抱歉,我不知道堆栈上还有另一个平台可以发布统计问题。这确实是一个有趣的方法,但我会有同样的问题:我会丢失关于逻辑表达式的信息,如“和”、“或”。这就像将每一个逻辑表达式转换为一个逻辑表达式,这种方法很有趣!我以前考虑过,但遇到了一些麻烦,我放弃了。我再试试看
Person.Age : 20
Person.number_of_children:3
Person.married:True
Person.work:student
Person.Car.isSportCar:False
Person.Car.Color:[blue,pink,red]
Person.Age (5,5,5,5)
Person.Relatives (Child,Child,Child,Wife)
Person.CarColor (blue,pink,red)

Person.Age (5,5,5)
Person.Relatives (Child,Child)
Person.CarColor (pink,red,white)
Person.Age = 3/4
Person.Relatives = 2/4
Person.CarColor = 2/4