はじめに
今回の話題は、レコメンデーションです。
本blogでは例として、社外向けのサービス紹介や社内向けメディアなどでレコメンデーションを活用することを想定します。ビジネスの問題や課題を整理し、実際にどの様なデータを準備できればレコメンデーションを実施できるかを順序立てて説明します。
レコメンデーションを利用した想定ビジネス例
ビジネスの現状と問題
例えば以下のような業務を遂行し、問題を抱えていると想定します。
現状
- 自社サービス紹介のWebページなどのオウンドメディアや社内SNS、社内報などのインナーブランディング向けの社内メディアといった何かしらのコンテンツ配信している
- 「いいね!」や星を並べた評価ボタンを配置して、その評価に応じたランキングを表示(レコメンデーション)している
- コンテンツをカテゴリ別に仕分けして最新のものをレコメンデーションしている
問題
- 「いいね!」や星による評価ボタンを配置してユーザーの反応を見ているが、ユニークユーザー数が多い割には評価を付けるのは大体同じユーザーであり、評価を付けないユーザーがほとんどで、どんなコンテンツをレコメンデーションすれば良いか判断が困難
- 担当者がカテゴリを仕分けするのに時間がかかる
仮説と課題
上記の問題1、2に対しここでは以下のような仮説を立て、それぞれの仮説をもとに問題に対処するための課題を設定しました。
仮説
- 評価がなくてもコンテンツの閲覧履歴があれば、閲覧したコンテンツの傾向が似ているユーザーをもとにレコメンデーションを行えるのでは?
- カテゴリはコンテンツのタイトルや文章から判断してカテゴリを分けているのでは?
課題
- 評価を付けないユーザーが存在しても過去のWebページ閲覧履歴に応じて他のユーザーの閲覧履歴からレコメンデーションのコンテンツを表示したい
- タイトルに応じて似たコンテンツを自動的にレコメンデーションできるようにしたい
レコメンデーションの手法
上記の課題に対し、これから紹介する以下2つのレコメンデーション手法を活用することにより問題へ対応します。
協調フィルタリング
課題1には「協調フィルタリング」を使用します。協調フィルタリングとは簡単にいうと、趣味趣向が似ているユーザーから口コミで良かったコンテンツをレコメンデーションしてもらうような手法です。今回の場合では、あるユーザーに対してコンテンツをレコメンデーションするとき、そのユーザーの閲覧履歴と似たような別のユーザーの閲覧履歴に基づいてまだ見ていないコンテンツをレコメンデーションします。
コンテンツベースフィルタリング
課題2に対しては、「コンテンツベースフィルタリング」を使用します。コンテンツベースフィルタリングとは簡単にいうと、閲覧したコンテンツと同じようなコンテンツをレコメンデーションします。
期待される効果
得られる効果は1、2それぞれ以下が想定されます。
- 趣味趣向が近しい人から推測するため、人気順ではレコメンデーションできないマイナーなコンテンツをレコメンデーションすることが期待できます。
- コンテンツ毎に似たコンテンツを計算してレコメンデーションするため、カテゴリ分け作業の時間削減が期待できます。
使用するデータの紹介
今回の課題を解決するために使用するデータは以下の2つです。
- ユーザーの行動履歴
課題1を解決するためにはユーザーがどのコンテンツを閲覧したかが分かる必要があります。 - 課題2を解決するためには、各コンテンツの情報が必要です。今回は情報としてコンテンツのタイトルを使用します。
なお、今回使用するデータはKaggleのMIND: Microsoft News Recommendation Dataset | Kaggleから取得しました。
- ユーザーの行動履歴(behaviors.tsv)
【データの意味】 - コンテンツの情報(news.tsv)
【データの意味】
簡易デモ
今回は上記のデータを使用して協調フィルタリングとコンテンツベースフィルタリングのモデルを作成しました。モデル実装の詳細については別のブログで書きたいと思いますので今回は簡易デモのため省略いたします。ここでは実際にテスト用データとモデルを使用してレコメンデーションを実施します。
まずテストユーザーが閲覧した記事がどのような記事か確認するため、データから10件を抽出します。
次に構築済みの協調フィルタリングとコンテンツベースフィルタリングのそれぞれのモデルでテストユーザーに対してレコメンデーションを行います。なお、テスト用ユーザーが閲覧したことがある記事をレコメンデーションした場合、newa_idを黄色で囲みました。
- 協調フィルタリング
- コンテンツベースフィルタリング
10件中、協調フィルタリングでは2件、コンテンツベースフィルタリングでは1件、テストデータとして抽出した中から閲覧したことのある記事をレコメンデーションすることができました。
他のビジネス活用例
今回紹介した記事のレコメンデーション以外に、普段のビジネスでレコメンデーションが活用できそうな例として以下が考えられます。
- 資料のレコメンデーション
資料を作成する際に、参考となる資料をベースにして資料を作成することがあるかと思います。このとき、協調フィルタリングを使用することで、似たような資料を閲覧した社員から閲覧情報をもとにレコメンデーションすることができるかと思います。 - ナレッジの共有
問い合わせナレッジの文書をもとに、その文書から情報を抽出します。その情報と今見ている問い合わせナレッジの情報と近いものをコンテンツベースフィルタリングでレコメンデーションすることができるかと思います。
まとめ
今回はビジネス編として、レコメンデーションがどのような課題を解決できるかについてblogを書きました。次は本blogで省略したモデルの実装と理論について書きたいと思います。
参考
- 推薦システムのアルゴリズム (kamishima.net)
- MIND: Microsoft News Recommendation Dataset | Kaggle
- Recommender Systems in Python 101 | Kaggle