4

バイナリ マトリックスで 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 の結果になりましたが、これは大きな違いです。

4

2 に答える 2

4

Nsfy、これを行う簡単な方法があります。default='lhs'のように、を追加する必要がありますappearance=list(rhs='X1=1',default='lhs')。これにより、rhs が のみに制限されX1=1ます。

于 2014-10-25T18:32:45.977 に答える