R 规则:如何从 lhs/rhs 中删除某些项集

R Arules: how to remove certain itemsets from lhs/rhs

我已经在 R 中加载了一个文件作为事务:

path = "my_file.csv"
t = read.transactions(path,format="single", sep=';',cols=c("ID","Products"))

#get the rules:
rules = apriori(t,parameter = list(supp=0.01, conf=0.33, minlen=2, maxlen=4))
#sort by confidence:
rules = sort(rules, by="confidence", decreasing=TRUE)
#inspect the first 10 rules:
inspect(rules[1:10])

哪个输出是:

     lhs      rhs  support  confidence        lift
[1]  {e,b} => {a}     0.01        0.97  some_value      
[2]  {a}   => {f}     0.04        0.92  some_value 
[3]  {t,f} => {a}     0.12        0.91  some_value 
[4]  {b,j} => {a}     0.09        0.82  some_value 
[5]  {e}   => {a}     0.25        0.77  some_value 
[6]  {g,h} => {a}     0.05        0.56  some_value 
[7]  {p}   => {a}     0.31        0.54  some_value 
[8]  {q,n} => {h}     0.18        0.49  some_value 
[9]  {s}   => {a}     0.07        0.46  some_value 
[10] {s,d} => {a}     0.20        0.42  some_value 

现在我的问题是项目集 {a} 太频繁了,我想以项目 {a} 或我不想考虑的任何其他项目的方式设置先验规则生成器,不会出现在生成的规则中。 我知道一个简单的方法是从上传的交易文件中删除项目 {a};无论如何,即使简单,它也不聪明和优雅,而且也很长,因为我正在处理数百个不同的交易文件。

在网上搜索我发现了这种指定lhs和rhs的设置方式:

rules = apriori(t,parameter = list(supp=0.01, conf=0.33, minlen=2, maxlen=4), appearance=list(default="lhs", rhs="b"))

检查的输出现在是:

      lhs     rhs         support    confidence          lift
[1]  {a,b} => {b}     other_value   other_value   other_value      
[2]  {a}   => {b}     other_value   other_value   other_value       
[3]  {a,f} => {b}     other_value   other_value   other_value       
[4]  {b,j} => {b}     other_value   other_value   other_value      
[5]  {a}   => {b}     other_value   other_value   other_value       
[6]  {a,h} => {b}     other_value   other_value   other_value       
[7]  {a}   => {b}     other_value   other_value   other_value       
[8]  {q,a} => {b}     other_value   other_value   other_value      
[9]  {a}   => {b}     other_value   other_value   other_value       
[10] {a,d} => {b}     other_value   other_value   other_value       

因此可以告诉 Apriori 我们想要 rhs(或 lhs)中的哪个项目;但是不可能告诉 Apriori 我们不想要哪个项目。或者不可能以这种方式告诉我已经尝试过(我不想要{a}):

    rules = apriori(t,parameter = list(supp=0.01, conf=0.33, minlen=2, maxlen=4), appearance=list(default="lhs", rhs!="a"))

这会出错。

有什么建议吗?谢谢

看看? APappearance

第一个示例展示了如何从项目集中排除单个项目。挖矿规则也可以这样做:

 data("Adult")

 ## find only frequent itemsets which do not contain small or large income
 is <- apriori(Adult, parameter = list(support= 0.1, target="frequent"), 
   appearance = list(none = c("income=small", "income=large"),
   default="both"))