レコメンド

LGBMRankerを使ってAmazonのレビューデータセットでランク学習してみる

最近会社で、ランク学習(Learing to Rank: LTR)について調べる機会がありました。 ランク学習はその名の通りランキング問題を解決するための教師あり学習、半教師あり学習、強化学習の1つです。 ランク学習は検索クエリ(情報検索なら検索ワード、レコメンドならユーザー)に対するアイテムのランク付けを目的としているため、情報検索やレコメンドにも活用されています。 ※ランク学習について知りたい […]

実装して理解するレコメンド手法〜協調フィルタリング

前回に引き続き、推薦システムで用いられるレコメンド手法を紹介していきます。 今回のテーマは協調フィルタリング(Collaborative Filtering)の実装方法です。 協調フィルタリングは、多くのユーザから嗜好データを収集することで、ユーザが好むであろうアイテムを予測する手法で、大きく以下の4つのタイプに分類できます。 メモリベース(Memory-based) モデルベース(Model-b […]

実装して理解するレコメンド手法〜コンテンツベースフィルタリング

以前、「推薦システムの手法のまとめ」という記事を書きました。 この記事では、推薦システムで用いられるレコメンドモデルの全体観をまとめたのですが、各モデルの実装方法までは紹介していませんでした。 ということで、今回から2回くらいに分けて推薦システムで用いられるレコメンドモデルの実装方法を紹介します。 まず1回目は、コンテンツベースフィルタリング(content base filtering)を取り上 […]

Word2Vecで特定のwordを除外してmost_similarする方法

レコメンドタスクでgensimのWord2Vecを利用する場合、特定のword(アイテム)を除外した上で類似度上位N件をmost_similarで出力したいことがあると思います。 しかし、現時点のgensimのWord2Vecではmost_similarに特定のwordの除外機能がないので以下の対応が必要です。 topNを増やしてmost_similar後に特定wordを除外する 学習データで特定 […]

推薦システムの手法のまとめ

長いこと業務でレコメンドアルゴリズムの開発を担当しているのですが、そういえば推薦システム(Recommender System)で用いられている手法の全体観をちゃんと抑えていなかったなぁと感じることが最近ありました。 ということで今回は一度基礎に立ち返って、推薦システムで用いられている手法をまとめることにします。 なお、紹介した手法の具体的な実装方法は紹介せず、推薦システムの全体像を捉えることを目 […]

よく使われる2つのスコアの集約関数と複比ユニノルムとの比較

最近、相互推薦システムについて調べていて、Latent Factor Models and Aggregation Operators forCollaborative Filtering in Reciprocal Recommender Systemsという論文を読んでいます。 その中で、2つの選好スコアの集約関数についての記載がありました。ここで、選好スコアとは、ユーザAがユーザBをどれくら […]

レコメンド結果にMMRを適用して多様性を考慮した順位の入れ替えをやってみた

最近、Gunosyの方が書いた『多様性の導入による推薦システムにおけるユーザ体験向上の試み』という論文を読み、多様性を考慮したレコメンド手法に興味を持ちました。 この論文によれば、多様性を導入したレコメンドによって、ユーザのサービス継続率や利用日数が向上するのだとか。 そこで、上記をきっかけに引用文献等をいろいろ調査していたところ、MMR(Maximal Marginal Relevance:周辺 […]

MPR(Mean Percentage Ranking)〜暗黙的にユーザの嗜好を得られるレコメンドシステムにおけるオフライン評価指標の紹介

レコメンドシステムにおけるオフライン評価指標の一つであるMPR(Mean Percentage Ranking)について書かれた論文を見つけました。 今回はその調べた結果をまとめます。 ちなみに、レコメンド文脈でのオフラインorオンライン評価とは以下を意味します。 分類 説明 オンライン評価 実際にユーザにレコメンドを実施し、ユーザがどれだけ反応したかを評価すること。 Ex. A/Bテスト オフラ […]

代表的なレコメンド評価指標の実装と可視化

最近、業務でレコメンドシステムの評価指標(メトリクス)の調査に取り組んでいます。 Precision@KやRecall@K、MAP@Kといったオフラインにおけるレコメンド指標の概要(簡単なsampleを使った説明)に関してはwebページの随所にみられますが、その実装コードや実際に指標を使って結果を比較している記事はなかなか見つかりません。 なので、今回は実際にテストデータをいくつか作成し、各指標を […]

行動履歴をもとに協調フィルタリングとWord2Vecでレコメンドしてモデルの精度を評価する

レコメンド関連の勉強のために使えるデータを探していたところ、Kaggleで丁度良いデータセットがあったので、今回はユーザの行動履歴をもとにアイテムをレコメンドする方法とそのレコメンドモデルを評価する方法を説明します。 使用するアルゴリズムは古典的なアイテムベース協調フィルタリングと、割と新しい手法であるWord2Vec(アイテムを分散表現するのでitem2vecとも呼ばれます)です。 Word2V […]