第3回 Rでの実装|POSデータでマーケットバスケット分析の実践 with R

  • f
  • t
  • p
  • h
  • l
POS_market_basket_analysis_Title

POSデータでマーケットバスケット分析をした結果を公開していきます

本連載では、4回にわたり、ある書店の実際のPOSデータをもとに、マーケットバスケット分析の事例をRで実装しながら紹介します。マーケットバスケット分析について紹介した本やWebサイトは多くありますが、実データによる分析事例は、POSデータの性格上、あまり紹介がなされておらず、本連載はその貴重な事例となりますので、是非最後までお読みいただければ幸いです。

第3回目の今回は、使用したデータとRでの実装について、説明します。

使用データ

本稿では、小規模な書店の実際のPOSデータを利用します。データの概要は、下表の通りです。分析対象となるトランザクションは、約26,000件になります。

使用ツール

使用ツールとしては、オープンソースの統計解析言語である、「R」(アール)を使用します。Rでは、アプリオリアルゴリズムが{arules}というパッケージとして実装されており、そのパッケージをインストールして数行のコードを書くだけで、簡単にマーケットバスケット分析を行うことができます。Rとは何かや、Rのインストール方法や使い方の概略などにつきましては、Yuu.Kimy氏による連載がありますのでそちらをご参照ください。

”R”で実践する統計分析|序:R(アール)とは?【外部寄稿】

Rでのマーケットバスケット分析の実装

マーケットバスケット分析をRで実践するためには、まず、Rだけでなく{arules}という、Rの「パッケージ」をインストールする必要があります。インストール方法は、「Rのメニューバー→パッケージ→CRANミラーサイトの設定」でミラーサイトの設定を行ったうえで、「Rのメニューバー→パッケージ→パッケージのインストール」で、{arules}を選択すれば、インストールできます。あとは、apriori関数を実行するだけですが、具体的なコードについては、後述いたします。
Rには「データ形式」というものがいくつかありますが、最も一般的な形式は、下表のような、表頭にアイテム(ないしそのカテゴリ)、表側にトランザクションIDを持つようなテーブルといった形式になるかと思います。このような形式のデータを、Rでは、「data.frame」形式、あるいは、「list」形式と呼んでいます。

表 一般的な表形式

 しかしながら、Rの{arules}パッケージにおけるapriori関数は、「transaction」という形式にしか対応しておりません。これは、テキストで表記すると、

{おむつ,ビール}
{おむつ,酎ハイ,ビール}
{りんご,酎ハイ,ピーナッツ}

という形式になります。そのため、一般的な「data.frame」形式や、「list」形式でデータを持っている場合には、データの下処理が必要になります。具体的には、上記の形式を、「matrix」形式に変換した上で、「transaction」形式に変換するという処理を行います。言葉にすると難しく感じるかもしれませんが、下のソースコードを参照していただければわかるように、1行のコードで済みます。なお、apriori関数については、いくつかの引数がありますが、これについては、分析結果の部分で説明します。

#{arules}パッケージのロード
library(arules)
#データの読み込み
df <- read.csv(“xxxx.csv”)
#トランザクションデータに変換
data.tran<-as(as.matrix(df[2:(ncol(df)]),”transactions”)
#アイテム頻度の棒グラフを出力
itemFrequencyPlot(data.tran,type = “absolute”)
#アプリオリアルゴリズム
data.ap <-apriori(data.tran,parameter = list(supp =0.0001,maxlen=5,confidence=0.01))
print(data.ap)
inspect(head(SORT(data.ap, by = “lift”), n=300))

トランザクション数や、アイテムの種類が非常に多い場合、トランザクション数×アイテム数の行列がものすごく膨大な量になりますので、データの下処理をExcelで全て行うのは難しい場合が多いです。その場合、Excel以外のソフトで下処理を行うか、Rに生データを読み込ませて、R上で全ての処理を行うなど、分析環境に適した方法を選択していただければと思います。また、トランザクションデータの読み込みについては、下記のブログ記事も、併せてご参照ください。

前処理なしのトランザクションデータを{arules}パッケージで読み込む方法銀座で働くData Scientistのブログ

今回はマーケットバスケット分析のR言語のコードとデータ形式について紹介しました。次回は分析結果の考察と考えられる打ち手について紹介します。

第1回 マーケットバスケット分析とは?
第2回 マーケットバスケット分析の評価指標
第3回 マーケットバスケット分析のRでの実装(今回)
第4回 分析結果と考えられる「打ち手」

【当記事は、ギックス統計アドバイザーの中西規之が執筆しました。】

中西 規之(なかにし のりゆき)

ギックス統計アドバイザー。公益財団法人日本都市センター研究室主任研究員、フェリス女学院大学国際交流学部非常勤講師(社会統計学)などを歴任。東京工業大学大学院社会理工学研究科社会工学専攻修士課程修了。最近の関心は、市民、民間、行政の3者が「Win-Win-Win」になるような、公共サービスにおけるビッグデータ・オープンデータの活用のあり方について。

 

  • f
  • t
  • p
  • h
  • l