Mahoutで体感する機械学習の実践

第2回 「ある商品といっしょによく売れる商品は何か?」を見つけるには ~マーケット・バスケット分析の考え方

この記事を読むのに必要な時間:およそ 2.5 分

いっしょによく売れる商品は,マーケティング上重要

実店舗でもECサイトでもマーケティング上,「ある商品といっしょによく売れる商品は何か?」という発想はとても重要です。

実店舗であれば,次のように商品の配置を決めるのに役立てることが考えられます。

  • 「いっしょによく売れる商品をより近くに置くことで買われやすくする」
  • 「もしくは意図的に遠くに置くことで,店舗内の回遊を促す」

また,次のようにセール対象商品の選定にも利用できます。

  • 「セールの対象商品にはどちらか片方だけを含み,もう片方はセールに含まず通常価格で販売する」

一方,ECサイトであれば,次のようにレコメンデーションの機能につなげることができます。

  • 「この商品を買った人はこんなものも買っています」

このような「ある商品といっしょによく売れる商品を発見する」分析を「マーケット・バスケット分析」と呼びます。

今回は,実際に手を動かす前に理論編として,マーケット・バスケット分析,そして実際に利用する機械学習の手法について解説します。

どうすればマーケット・バスケット分析を実現できるのか

マーケット・バスケット分析は「ある商品といっしょによく売れる商品を発見する」分析です。これは捉え方を変えると,次のように言い換えることができます。

  • 「ある商品が含まれる購入パターンのうち,最も頻出する購入パターンを発見する」

そのような「頻出するパターンをデータの中から発見する」分析を「頻出パターンマイニング」と呼びます。与えられた分析対象のデータのパターンを元に分析するため,教師あり学習,教師なし学習の2つの分類で考えると「教師なし学習」に属する分析手法です。

ただし,頻出する購入パターンを探し出しても,単純に最も多い購入パターンが求めている答えとは限りません。たとえば,コンビニエンスストアにおけるジュースのように,よく売れる商品は,どんな商品から見ても「よくいっしょに売れる商品」になってしまうことがあるためです。

そのため,「よくいっしょに売れる商品は,商品間に関係性がある」と考え,関係性が強い商品を探していきます。

そのような複数の事象間における関係を「アソシエーションルール(または相関ルール)」と呼びます※1)。そして,アソシエーションルールを求める分析を「アソシエーション分析」と呼びます。マーケット・バスケット分析では,このアソシエーション分析が多く用いられます。

※1
アソシエーション分析で言う相関ルールの「相関(association)」は,統計学の「相関(correlation)」とは異なる定義で使われます。

なお,アソシエーション分析は,今回取り上げるマーケット・バスケット分析に限定される手法ではありません。事象間のアソシエーションを求める分析であれば,次のようにさまざまな状況で応用できます。

  • サイトの訪問履歴から,ユーザが一度のサイト内回遊で閲覧するページの組み合わせを探し出す
  • サイト内検索で同時に利用される単語を探し出す

アソシエーションルールはどのようにして求められるか

では,アソシエーションルールは具体的にどのようにして求められるのでしょうか。実際の手順を見て行く前に,基礎的な用語を把握しておきましょう。

まず,パンとミルクがいっしょに買われる場合,次のように表記するのが一般的です。

  • パン ⇒ ミルク

この場合の印(⇒)の左側を「条件」,右側を「結論(または帰結)」と呼びます。

また,アソシエーション分析では,今回の例における購入履歴のようなデータを「トランザクションデータ」と呼びます。

アソシエーション分析で計算する3つの値

まず,全トランザクション(全顧客による全購入履歴)を用いて,次の2つの値を計算します。

  • 信頼度(confidence)
  • 支持度(support)

信頼度は,「条件(パンを買う)が起きた場合に,結論(ミルクを買う)が起きる割合」を表します。これにより,条件(パンを買う)と結論(ミルクを買う)のアソシエーションの強さを表します。

信頼度の計算式は次のとおりです。

図1 信頼度の計算式

図1 信頼度の計算式

支持度は,条件(パンを買う)と結論(ミルクを買う)が同時に起こる場合が全トランザクションに占める割合を表します。

支持度が低い組み合わせは,あまり買う人がいない組み合わせであることを示します。そのため,たとえ信頼度が高くても,支持度が低い組み合わせは,アソシーエション分析では有用な答えではないと考えます。

支持度の計算式は次のとおりです。

図2 支持度の計算式

図2 支持度の計算式

次に,結論(ミルクを買う)が条件(パンを買う)と無関係に起こっていないかどうかを計算します。先ほどのコンビニエンスストアにおけるジュースのように,よく売れる商品はどの商品から見てもよくいっしょに売れる商品になってしまう可能性があるためです。

そういった現象が起こる度合いの低さを表すのが「リフト値」です。リフト値の計算式は次のとおりです。

図3 リフト値の計算式

図3 リフト値の計算式

有効なアソシエーションルールであるためには,一般的にリフト値が1より大きい必要があります。

このように,アソシエーション分析では,信頼度,支持度,リフト値の3つの値を求めます。そしてこれら3つの値でアソシエーションルールの強さと有効性を判断します。

著者プロフィール

やまかつ(山下勝司)

開発/インフラ/統計,機械学習/プロジェクトマネージメントをこなす器用貧乏。最近はビッグデータ,Hadoop,機械学習あたりに夢中。

株式会社マーズフラッグ 先端研究開発本部所属。

趣味は妻と子供と過ごすこと。

Twitter:@yamakatu
Facebook:http://www.facebook.com/katsushi.yamashita.9

コメント

  • Re:記事について質問

    太平洋 高気圧さん

    ご指摘有り難うございます。

    ご指摘の通り、
    「リフト値が1以上である必要があります。」
    は誤りであり、
    「リフト値が1より大きい必要があります。」
    が正となります。

    Commented : #2  やまかつ (2013/07/22, 14:18)

  • 記事について質問

    記事について質問をさせていただきます。

    「有効なアソシエーションルールであるためには,一般的にリフト値が1以上である必要があります。」とありますが、リフト値が1 の場合は「それぞれの商品の購買率」と「2つの商品の併売率」が等しい場合であると考えられると思います。そうすると先の記載は「有効なアソシエーションルールであるためには,一般的にリフト値が1より大きいである必要があります。」になるのではないでしょうか。

    質問の内容が誤りでしたら勉強中の身ゆえご容赦ください。

    Commented : #1  太平洋 高気圧 (2013/07/21, 21:01)

コメントの記入