【R】aprioriアルゴリズムの使い方
統計ソフトRでapriori(アプリオリ)アルゴリズムを使ったコードとその使い方についてまとめてみました。
aprioriアルゴリズムの概要
アソシエーション分析(相関ルール分析)で人気のあるアルゴリズム。
日常よく扱うような数千種類程度のデータの組み合わせでも、その全てのパターンを計算するとなるとスーパーコンピューターでも計算するのに膨大な時間がかかります。
それを回避するために、支持度の低いデータをあらかじめ計算から省く優秀なアルゴリズムです。しかもコードが超シンプル。
参考リンクhttp://www.sist.ac.jp/~kanakubo/research/data_mining.html
※ちなみにアプリオリは「先天的」という意味
aprioriアルゴリズムのRのコード
aprioriアルゴリズムの使い方
read.transactions関数
まずは3行目にあるread.transactions関数。これは特定の区切り文字(デリミタ)で
りんご,みかん,バナナ おにぎり,りんご,牛乳,ポテトチップス,チョコレート ハンバーガー,コーラ,ソフトクリーム,チョコレート
という形式になっているtxtファイルをaprioriアルゴリズムで使える形式で格納してくれる便利な関数です。
apriori関数
read.transactions関数で格納したデータにこのapriori関数を使うことで、aprioriアルゴリズムの演算を行うことができます。
このapriori関数は
apriori(data, parameter = NULL, appearance = NULL, control = NULL)
という書式になっています。
prameterの引数の内容説明は以下の通り。この日本語資料がどこにもなくて苦労しました
maxlen 一つの連関規則に含まれる最大項目数
support 構築する規則のサポートの下限の値
confidence 構築する規則の信頼度の下限の値
ext=TRUE 前提確率をしめすlhs.supportも結果に表示
引用元:ベイズ決定則 3.5生成モデルに基づくパターン認識 第7項より
appearanceの引数の内容説明は以下の通り。
appearance=list() ルールを構築する時点でルール・ヘッドやルール・ボディにおかれる項目を指定するもの。
引用元:ベイズ決定則 3.5生成モデルに基づくパターン認識 第18項より
これらの引数は必ず指定する必要はなく、書かなくても実行されます。
※ただその場合はデフォルト値が適用されるので注意しましょう。特にパラメーターのデフォルト値はsupport =0.1, confidence=0.8, maxlen=5となっていてデータによっては使い物にならないくらい削ってしまう場合があります。
insepct関数、capture関数、write関数
insepect関数はsortと合わせて、演算結果を支持度順やリフト値順などで表示する関数。
あとはcapture関数で任意の範囲を切り取って、wirte関数でtxtファイルに保存する、みたいな感じでしょうか。
よくあるエラー、警告
Mining stopped (maxlen reached). Only patterns up to a length of N returned!
apriori関数の実行時に出るエラー。
これは「データマイニング中に検出した相関ルール(組み合わせ)が設定しているmaxlen(最大項目数)に達しちゃったからデータマイニングを中止したよ」ということです。
解決策としてはapriori関数のmaxlenを大きく設定して検出数がそれを超えないようにすればOK。
asMethod(object) で: removing duplicated items in transactions
read.transactions関数の実行時に出るエラー。
データ量が多くて、重複がある場合に出ます。記事のコードにあるようにrm.duplicate=Tを記述しましょう。
reached getOption(“max.print”) — N行を無視しました
write関数の実行時に出る警告。
Rコンソール上にはこの警告メッセージは出ませんが、出力テキストファイルに最終行に記述されます。
これは
old.op <- options(max.print=9999999)
という感じでmax.printの設定数を上げて対策しましょう。