レコメンドという言葉が流行りだしてから、数年が経ちます。
レコメンド機能を搭載したECパッケージもたくさん出てきて、最近ではlivedoorのレコメンドエンジンもオープンソースとして公開されたようです。
レコメンドはインフラとして「当たり前」のようになってきました。
当たり前になってくると、そもそもどういうものだっけ?と気になる方も多いはず。
今回はアイテムベースのレコメンドについて簡単に説明します。
アイテムベースのレコメンドはその名のとおり、アイテム(商品・コンテンツ・etc)の情報を軸として関連のあるアイテムを抽出・推薦する方法です。
手順は以下のようになります。
1.元となるデータを準備する
2.データの形式をアイテムを軸としたデータに適宜変換する
3.各アイテムごとの関連度(関連の強さ)を計算する
4.各アイテムについて、関連度の高いアイテムを抽出する
データソースとしてはどのサイトでも入手しやすいアクセスログを使用してみましょう。
アクセスログを元に解析する場合は、セッション毎のリクエストURLを元にします。
「アイテム=リクエストURL」ということですね。
セッション情報はログに含まれていることは少ないですが、IPアドレスを擬似的に使用すると良いでしょう。
セッションIDとリクエストURLをソートし、同一の行はユニークにしてカウント(=ページビュー)しておきます。
(出来上がるデータは「PV セッションID リクエストURL」のようなフォーマットです)
さらにこのデータから各URL毎のPVとセッションIDをまとめ、それぞれのURLについて関連度を計算します。
※O’reillyの書籍に同様の形式のデータから解析にかける手順が書かれています
実際にある特定の商品(カテゴリAに属する商品Aとする)の詳細ページと関連が高いとされたリクエストURLの結果上位5位を抽出しました。(左側の数字が大きいものが関連性が高いURLです)
1.00, カテゴリA-商品B詳細
1.00, カテゴリA-商品C詳細
1.00, カテゴリB-サブカテゴリX
1.00, カテゴリC-サブカテゴリY
1.00, 静的ページ(送料について)
これでは同じカテゴリの商品Bの詳細ページと「送料について」のページが同じ価値があることになります。
多くの人が目にするページや、購入の際に必ず通るページなどは単純に商品ごとの関連性を知りたい場合にはノイズとなってしまいます。
サイト全体のログデータからの解析結果は、目的にかなわない結果となってしまうことがあります。
そこで、元のデータソースを作成する際に、商品の詳細ページのみを抽出し、解析します。
1.00, カテゴリA-商品B詳細
1.00, カテゴリA-商品C詳細
0.76, カテゴリA-商品D詳細
0.71, カテゴリA-商品E詳細
0.17, カテゴリA-商品F詳細
みごと、目的にマッチする情報が得られました。
商品Aを見ているユーザには上記のような商品をお勧めすると良いようです。
さらに必要に応じて、購入データから購入している商品の重み付けなども加えると、より意味のあるものとなるでしょう。
以上、アイテムベースのレコメンドについての説明でした!
機会があればもっと詳しく紹介したいと思います!