2015-03-19 76 views
0

我有關於在使用R.先驗獲得規則問題ř修剪挖掘規則 - 先驗

後輸入的數據,轉換等等,我鍵入的命令

規則< - 先驗(訂單,參數=列表(supp = 0.01,conf = 0.5, maxlen = 2))

我得到了我的規則。例如:

lhs  rhs  support confidence  lift 
1 {16058} => {16059} 0.01218522 0.9375000 67.886029 
2 {16059} => {16058} 0.01218522 0.8823529 67.886029 
3 {10049} => {10021} 0.01462226 0.7826087 34.406832 
4 {10021} => {10049} 0.01462226 0.6428571 34.406832 

我的回答是:有沒有一種方法可以修剪對我來說不感興趣的規則? 在這種情況下,我只想看到第一條和第三條規則,以避免將兩項與兩條規則相連的「循環」規則。

謝謝!

回答

0

感謝rdatamining - rdatamining Titanic example 我發現這個解決方案恩修剪多餘的規則:

rules.sorted <- sort(rules, by="lift") 
subset.matrix <- is.subset(rules.sorted, rules.sorted) 
subset.matrix[lower.tri(subset.matrix, diag=T)] <- NA 
redundant <- colSums(subset.matrix, na.rm=T) >= 1 
which(redundant) 
rules.pruned <- rules.sorted[!redundant] 
inspect(rules.pruned) 
plot(rules.pruned, method="graph", control=list(type="items")) 
+0

這適用於小規則集。對於更大的集合,'is.subset'操作可能佔用太多內存(在我的情況下,它會使rstudio崩潰)。 – Anand 2016-11-07 18:34:57

0

我知道這是一個老的文章,但我發現它時,我就開始考慮同樣的問題。只是爲了讓人們看到一個比鏈接更完整的資源,CRAN Intro to arules解釋瞭如何在R中使用正常的子集功能來修剪不需要的規則(第26頁中間):「作爲關聯規則挖掘的典型代碼,發現的規則數量是爲了分析這些規則,例如,可以使用subset()爲每個項目生成不同的規則子集「,然後繼續解釋和給出示例。