2015年2月11日水曜日

Rでアソシエーション分析してみる


Rは標準ではアソシエーション分析はできないので、アソシエーション分析用のライブラリ”arules”を用いる。

> install.packages("arules")

arulesライブラリを読み込む。

> library(arules)

arulesライブラリに付属している食品雑貨店の販売データ(Groceries)を利用する。
付属しているデータについては、data()コマンドで確認できる。

> data()

Groceriesデータを読み込む。

> data(Groceries)

Groceriesデータの属性(データ型、行数、列の名前)を確認する。

> class(Groceries)
[1] "transactions"
attr (, "package")
[1] "arules"
> nrow(Groceries)
[1] 9835
> colnames(Groceries)

colnames(Groceries)の結果は、品名の列になっている。購入した場合は”1”と入っている。




トランザクションデータを確認する場合は、inspect() 関数を使う。
表示を途中で止める場合はEscキーで抜ける。

> inspect(Groceries)



ここから、アソシエーション分析を行う。
アソシエーション分析をおこなうためには、apriori関数を実行する。
apriori関数では、信頼度と支持度の下限値を設定し、前提部と帰結部のMAX LENGTHを、
パラメータに指定する。(例:信頼度0.5、支持度0.01、ルールの最大長4)

> res <- apriori(Groceries, parameter = list(confidence=0.5, support=0.01, maxlen=4))

   confidence: 信頼度の下限値
   support:   支持度の下限値
   maxlen:    ルールの長さ
            (以下は全てmaxlen=4)
             A,B,C→D
             A→B,C,D
             A,B→C,D
            ※普通は前提部が長い

抽出されたルールの情報を、SORT関数を利用して、信頼度の高い順番に表示して確認する。

> inspect(SORT(res, by="confidence"))



信頼度を降順に見て、リフトも3あれば、相関はあるといえそう。
支持度は0.01だが、たくさんのものが購入される食品店では全体の1%くらいは妥当であろう。



0 件のコメント:

コメントを投稿