Arulesを使う上で、つまったところ
やりたいこと
データに対して、連関規則を見つけたい。
いわゆる、「バスケット分析」や「アソシエーション分析」を行ないたい。
RではArulesパッケージが用意されているので、簡単に活用できる(はずなんだけどなあ)
つまりどころ
さて、使ってみて、apriori
関数を呼び出してみると、
asMethod(object) : column(s) 列名
という、なんとも??なエラーが出る。
一体こいつはなんなんだと思い、そこで、こんなものを見つけた。
簡単に要約すると、
「factorじゃない変数はもてないよ。そんなことも知らないの?」みたいなことが書いてる。
確かに離散値でないといけないのは当たり前であるが、すでに入力がカテゴリカルに分離していた「数字」だったので、油断していた。
実際、型は'numeric'だった。
なるほど!factorにしてみたら動いた。
動かない問題は解決したけど、でも・・・・
しかし、結局ぜんぜん終わらない!となっている
500 * 100程度の行列でもなかなか終わらない有様。
でかすぎる行列だと終わらないのかな??と思っていたら、「サポート値が大きすぎるアイテムがあるのでは?」と指摘された。
Aprioriアルゴリズムの性質から、サポート値が大きすぎるアイテムが混じっていると、そのアイテムを含む規則をずーっと探索しにいくので、収束が極めて遅くなるという。
なので、(今回に限って言えば)行列の大きさはあまり関係ない話だった。
対策としては、あらかじめサポート値だけを全アイテムに対して計算しておき、サポート値がでかいアイテムがあれば、そのアイテムをデータセットから除外してしまえばいい。