バイナリ マトリックスで arules::apriori を使用しており、RHS に特定の 1 つの列を持つルールのみを作成したいと考えています。これはドキュメントで指定されていますが、機能していないようです。これを取得するために事後的にフィルタリングするのは簡単ですが、最初にすべてのルールを計算するために多くの計算時間を浪費します。
例:
library(arules)
data = data.frame(matrix(rbinom(10000,1, 0.6), nrow=1000))
for(i in 1:ncol(data)) data[,i] = as.factor(data[,i])
dsRules = as(data, "transactions")
rules = apriori(dsRules,
parameter=list(support = 0.1, minlen = 3, maxlen = 3, target= "rules", confidence = 0.7),
appearance = list(rhs = c("X1=1")))
rules には 3378 個のルールが含まれるようになりました
rules.sub = subset(rules, subset = (rhs %pin% "X1=1"))
rules.sub には 172 のルールが含まれています
私の実際のデータでは、数百万の結果から最大 4000 の結果になりましたが、これは大きな違いです。