Arulesを使う上で、つまったところ

やりたいこと

データに対して、連関規則を見つけたい。

いわゆる、「バスケット分析」や「アソシエーション分析」を行ないたい。

RではArulesパッケージが用意されているので、簡単に活用できる(はずなんだけどなあ)

arulesの使い方はここここなど、とっても参考になる。

つまりどころ

さて、使ってみて、apriori関数を呼び出してみると、

asMethod(object) :   column(s) 列名

という、なんとも??なエラーが出る。

一体こいつはなんなんだと思い、そこで、こんなものを見つけた。

簡単に要約すると、

「factorじゃない変数はもてないよ。そんなことも知らないの?」みたいなことが書いてる。

確かに離散値でないといけないのは当たり前であるが、すでに入力がカテゴリカルに分離していた「数字」だったので、油断していた。

実際、型は'numeric'だった。

なるほど!factorにしてみたら動いた。

動かない問題は解決したけど、でも・・・・

しかし、結局ぜんぜん終わらない!となっている

500 * 100程度の行列でもなかなか終わらない有様。

でかすぎる行列だと終わらないのかな??と思っていたら、「サポート値が大きすぎるアイテムがあるのでは?」と指摘された。

Aprioriアルゴリズムの性質から、サポート値が大きすぎるアイテムが混じっていると、そのアイテムを含む規則をずーっと探索しにいくので、収束が極めて遅くなるという。

なので、(今回に限って言えば)行列の大きさはあまり関係ない話だった。

対策としては、あらかじめサポート値だけを全アイテムに対して計算しておき、サポート値がでかいアイテムがあれば、そのアイテムをデータセットから除外してしまえばいい。