簡體   English   中英

R修剪挖掘規則-先驗

[英]R pruning mining rules - apriori

我有一個關於在 R 中使用 apriori 獲得的規則的問題。

數據輸入、轉換等后,我輸入命令

規則 <- 先驗(訂單,參數 = 列表(補充 = 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

我的回答是:有沒有辦法修剪我不感興趣的規則? 在這種情況下,我只想看到第一條和第三條規則,以避免將兩個項目與兩個規則連接起來的“循環”規則。

謝謝!

我將提供rdatamining Titanic 示例的替代解決方案,因為我發現這對於較大的規則庫效率非常低。 這個問題確實在CRAN Intro to arules p 中提到過。 14.

您可以使用is.redundant函數,而不是使用整個項集矩陣(可能非常大)。 這基本上會尋找所有更具體的規則(相同的結果/RHS,但 LHS/前因中的更多項目)具有相同或更低的提升/置信度/[其他指標]...

更正式地說,您尋找 X 的子集 X' 在提升或置信度方面有所改善(或至少沒有減少)。

正式的問題描述

然后,使用提升作為改進措施的代碼如下所示:

rules <- apriori(df, parameter = list(supp = 0.01, conf = 0.5, target = "rules"))
rules_lift <- sort(rules, by = 'lift')
rules_pruned <- rules_lift[!is.redundant(rules_lift, measure="lift")]
inspect(head(rules_pruned, 20))

我給出了這個解決方案,因為你提到了泰坦尼克號的例子來解決你的問題。 但是,這種方法並不能解決您在問題描述中提到的循環規則,因為對於這些規則,結果 Y 不相同。

多虧了 rdatamining - rdatamining Titanic 示例,我找到了這個解決方案 tu prune 冗余規則:

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"))

我知道這是一個舊帖子,但是當我開始研究同一個問題時我發現了它。 只是為了將人們指向比鏈接更完整的資源, CRAN Intro to arules解釋了如何使用 R 中的正常子集功能來修剪不需要的規則(第 26 頁中間):“作為關聯規則挖掘的典型,發現的規則是巨大的。為了分析這些規則,例如,可以使用 subset() 為每個項目生成單獨的規則子集”,然后繼續解釋並舉例說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM