レコメンダー システム — 機械学習モデルの完全ガイド

Nov 25 2022
データを活用してユーザーが新しいコンテンツを発見できるようにする レコメンダー システム: なぜ、どのように? レコメンダー システムは、各ユーザーに最も関連性の高いアイテムのパーソナライズされた提案を提供するアルゴリズムです。利用可能なオンライン コンテンツの大幅な増加に伴い、ユーザーには選択肢が殺到しています。

データを活用してユーザーが新しいコンテンツを発見できるようにする

UnsplashのJavier Allegue Barrosによる写真

レコメンダー システム: なぜ、どのように?

レコメンダー システムは、各ユーザーに最も関連性の高いアイテムのパーソナライズされた提案を提供するアルゴリズムです。利用可能なオンライン コンテンツの大幅な増加に伴い、ユーザーには選択肢が殺到しています。したがって、ユーザーの満足度とエンゲージメントを高めるために、Web プラットフォームが各ユーザーにアイテムのレコメンデーションを提供することが重要です。

YouTube は、利用可能な膨大な数のコンテンツの中からユーザーに関連するコンテンツを見つけて視聴できるように、ユーザーに動画をおすすめします。(著者による画像)

次のリストは、膨大な数の利用可能なコンテンツを持つ有名な Web プラットフォームの例を示しています。これらのプラットフォームでは、ユーザーの関心を維持するために効率的なレコメンダー システムが必要です。

  1. ユーチューブ毎分、ユーザーは500 時間分の動画をアップロードしています。つまり、ユーザーが過去 1 時間にアップロードされたすべての動画を視聴するには 82 年かかります。
  2. スポティファイユーザーは8,000 万以上の曲やポッドキャストを聴くことができ。
  3. アマゾンユーザーは3 億 5000 万を超えるさまざまな製品を購入できます。

明示的なフィードバックと暗黙的なフィードバック

レコメンダー システムでは、機械学習モデルを使用して、アイテムiに対するユーザーuの評価rᵤᵢを予測します。推論時に、予測評価rᵤ が最も高いアイテムlを各ユーザーuに推奨します。

したがって、モデルのトレーニングと評価のためのグラウンド トゥルースを得ることができるように、ユーザー フィードバックを収集する必要があります。ここでは、明示的なフィードバック暗黙的なフィードバックを区別する必要があります。

レコメンダー システムの明示的なフィードバックと暗黙的なフィードバック。(著者による画像)

明示的なフィードバック とは、アイテムに対する満足度を表すためにユーザーが明示的に与える評価です。例: 製品を購入した後に与えられた 1 から 5 までの星の数、ビデオを見た後に与えられた高評価/低評価など。このフィードバックは、ユーザーがアイテムをどれだけ気に入ったかに関する詳細な情報提供しますが、ほとんどのユーザーは通常、購入した各アイテムに対してレビューを書いたり、明示的な評価を付けたりしないため、収集します。

一方、暗黙的なフィードバックは、ユーザーとアイテムの相互作用が好みの指標であると想定しています。例: ユーザーの購入/閲覧履歴、ユーザーが再生した曲のリストなど他の誰か)。ただし、この種の利用可能なデータの膨大なサイズと比較すると、このノイズは無視できるものになり、ほとんどの最新のレコメンダー システムは暗黙のフィードバックに依存する傾向があります

明示的なフィードバックと暗黙的なフィードバック データセットのユーザー アイテム評価マトリックス。(著者による画像)

明示的または暗黙的なフィードバックを収集したら、ユーザー アイテム評価マトリックスrᵤᵢを作成できます。明示的なフィードバックの場合、rᵤᵢの各エントリは数値です。たとえば、rᵤᵢ = 「 uが映画iに付けた星」または「?」です。ユーザーuがアイテムiを評価しなかった場合。暗黙的なフィードバックの場合、rᵤᵢの値は、相互作用の有無を表すブール値です (例: rᵤᵢ =「ユーザーは映画 i を見ましたか?」 )。行列rᵤᵢユーザーが利用可能なすべてのコンテンツの中でほとんどアイテムを操作せず、レビューするアイテムもさらに少ないため、非常にまばらです。

コンテンツベースと協調フィルタリングのアプローチ

レコメンダ システムは、ユーザーの好みを予測するために使用される情報の種類に応じて、コンテンツ ベースまたは協調フィルタリングとして分類できます。

レコメンダー システムのコンテンツ ベースと協調フィルタリングのアプローチ。(著者による画像)

コンテンツベースのアプローチ

コンテンツ ベースの方法では、既知のメタデータによってユーザーとアイテム が記述され。各アイテムiは、関連するタグのセットによって表されます。たとえば、 IMDb プラットフォームの映画は、 「アクション」、「コメディ」などとしてタグ付けできます。各ユーザーuは、既知のユーザー情報から作成できるユーザー プロファイルによって表されますたとえば、性別や年齢、またはユーザーの過去の活動から。

このアプローチで機械学習モデルをトレーニングするには、k-NN モデルを使用できます。たとえば、ユーザーuがアイテムiを購入したことがわかっている場合、 iに最も類似した機能を持つ利用可能なアイテムをuに推奨できます。

このアプローチの利点は、アイテムのメタデータが事前にわかっているため、新しいアイテムまたはユーザーがプラットフォームに追加され、モデルをトレーニングするためのユーザーとアイテムの相互作用がないコールド スタート シナリオにも適用できることです。 . 欠点は、既知のユーザーとアイテムの相互作用の完全なセットを使用しないこと (各ユーザーは個別に処理される) と、各アイテムとユーザーのメタデータ情報を知る必要があることです。

協調フィルタリング アプローチ

協調フィルタリング方法 は、アイテムまたはユーザーのメタデータを使用しませんが、観察されたアクティビティからユーザーとアイテムの間の相互依存性を推測することにより、特定のアイテムに対するユーザーの評価を予測するために、すべてのユーザーのフィードバックまたはアクティビティ履歴を活用しようとします。

このアプローチで機械学習モデルをトレーニングするには、通常、評価行列rᵤᵢをクラスタ化または因数分解して、観測されていないペア ( u,i )、つまりrᵤᵢ = “?” を予測します。この記事の以下では、このクラスの最も一般的な方法である行列因数分解アルゴリズムを紹介します。

このアプローチの利点は、ユーザーとアイテムの相互作用のセット全体 (つまり、行列rᵤᵢ ) が使用されることです。これにより、通常、コンテンツ ベースのモデルを使用するよりも高い精度を得ることができます。このアプローチの欠点は、モデルを適合させる前に、いくつかのユーザー操作が必要になることです。

ハイブリッドアプローチ

最後に、既知のメタデータと観察されたユーザーとアイテムの相互作用のセットの両方を使用しようとするハイブリッドな方法もあります。このアプローチは、コンテンツ ベースのフィルタリング方法と協調フィルタリング方法の両方の利点を組み合わせて、最良の結果を得ることができます。この記事の後半で、このクラスのメソッドの中で最も人気のあるアルゴリズムであるLightFMを紹介します。

協調フィルタリング: 行列因数分解

行列因数分解アルゴリズムは、レコメンデーション システムでおそらく最も一般的で効果的な協調フィルタリング手法です。行列因数分解は、各ユーザーuとアイテムiに対して潜在ベクトル表現pᵤ、qᵢ R ᶠ st rᵤᵢをpᵤqᵢに関して一意に表現できる、つまり「因数分解」できると仮定した潜在因子モデルです。Python ライブラリSurpriseは、これらのメソッドの優れた実装を提供します。

明示的なフィードバックのための行列分解

最も単純なアイデアは、線形モデルを通じてユーザーとアイテムの相互作用をモデル化することです。pᵤqᵢの値を知るために、rᵤᵢが既知であるペア ( u , i )のセットKで正則化されたMSE 損失を最小化できます。このようにして得られたアルゴリズムは、確率的行列分解 (PMF)と呼ばれます。

確率的行列分解: rᵤᵢ と損失関数のモデル。

損失関数は、2 つの異なる方法で最小化できます。最初のアプローチは、確率的勾配降下 (SGD)を使用することです。SGD は簡単に実装できますが、pᵤqᵢの両方が不明であり、損失関数が凸でないため、いくつかの問題が発生する可能性があります。この問題を解決するために、代わりに値pᵤqᵢを修正し、通常の最小二乗法 (OLS)で簡単に解決できる凸線形回帰問題を取得できます。この 2 番目の方法は、交互最小二乗法 (ALS)として知られており、大幅な並列化と高速化が可能です。

PMF アルゴリズムは、後に特異値分解 (SVD)アルゴリズムによって一般化され、モデルにバイアス項が導入されました。より具体的には、bᵤ bᵢは、それぞれユーザーuとアイテムiの観測された評価偏差を測定し、 μは全体の平均評価です。これらの用語は、多くの場合、観測された評価rᵤᵢのほとんどを説明します。一部のアイテムは、より良い/より悪い評価を受け、一部のユーザーは一貫して評価に寛容です.

確率行列分解の一般化である SVD アルゴリズム。

暗黙的なフィードバックのための行列因数分解

SVD メソッド は、暗黙的なフィードバック データセットに適用でき ます 。アイデアは、暗黙のフィードバックを信頼の間接的な尺度と見なすことです。暗黙的なフィードバックtᵤᵢが、ユーザーuが視聴した映画iのパーセンテージを測定すると仮定します。たとえば、 tᵤᵢ = 0 は、uがiを一度も視聴したことがないことを意味し、tᵤᵢ = 0.1 は、ユーザーがその 10% しか視聴しなかったことを意味し、tᵤᵢ = 2 は、視聴したことを意味します。それを2回。直感的に、ユーザーは一度も見たことのない映画よりも、2 回見た映画に興味を持つ可能性が高くなります。したがって、 信頼行列cᵤᵢ評価行列rᵤᵢ は次のようになります。

暗黙的なフィードバックの信頼行列と評価行列。

次に、観測されたrᵤᵢを、SVD に使用されるものと同じ線形モデルを使用してモデル化できますが、損失関数がわずかに異なります。最初に、すべての ( u , i ) ペアの損失を計算します— 明示的なケースとは異なり、ユーザーuがiと対話したことがない場合、 rᵤᵢ = “?”の代わりにrᵤᵢ = 0 になります。. 次に、 uがiを気に入っているという信頼度cᵤᵢによって各損失項を重み付けします。

暗黙的なフィードバックに対する SVD の損失関数。

最後に、SVD++ アルゴリズムは、明示的フィードバックと暗黙的フィードバックの両方にアクセスできる場合に使用できます。通常、ユーザーは多くのアイテムとやり取りしますが (= 暗黙的なフィードバック)、それらの小さなサブセットのみを評価します (= 明示的なフィードバック)。各ユーザーuについて、 uがやり取りしたアイテムのセットN(u)を示しましょう。次に、アイテムjとの暗黙の相互作用が新しい潜在ベクトルzⱼR に関連付けられていると仮定します。SVD++ アルゴリズムは、これらの潜在因子zⱼ の加重和をユーザー表現に含めることにより、SVD の線形モデルを変更します。

混合 (明示的 + 暗黙的) フィードバック用の SVD++

ハイブリッドアプローチ: LightFM

行列因数分解に基づく協調フィルタリング手法は、多くの場合優れた結果をもたらしますが、コールド スタート シナリオ(新しいアイテムやユーザーのインタラクション データがほとんどまたはまったくないシナリオ) では、潜在因子を推定するためのデータが不足しているため、適切な予測を行うことができません。ハイブリッド アプローチは、行列分解モデルを改善するために既知のアイテムまたはユーザー メタデータを活用することで、この問題を解決します。Python ライブラリLightFMは、最も一般的なハイブリッド アルゴリズムの 1 つを実装しています。

LightFM では、各ユーザーuに対して一連のタグ注釈Aᵁ(u)を収集したと仮定します。たとえば、 「男性」「年齢 < 30」、… — 同様に、各アイテムiには一連の注釈Aᴵ(i)があります。 — 例: “price > 100 $” , “book” , … 次に、潜在因子xᵁₐ R ᶠとバイアス項bᵁₐ Rによって各ユーザー タグをモデル化し、ユーザー ベクトル表現pᵤとそれに関連するバイアスを仮定します。 bᵤは、これらの項xᵁₐの合計として簡単に表すことができます。bᵁₐ、それぞれ。潜在因子xᴵₐ ∈ Rᶠ とバイアス項bᴵₐ ∈ Rを使用して、アイテム タグに対して同じアプローチを採用します。これらの式を使用してpᵤ、qᵢ、bᵤ、bᵢを定義したら、SVD の同じ線形モデルを使用して関係を記述できます。これらの用語とrᵤᵢの間。

LightFM: ユーザー/アイテムの埋め込みとバイアスは、各ユーザー/アイテムに関連付けられた潜在ベクトルの合計です。

この LightFM のハイブリッド アプローチには 3 つの興味深いケースがあることに注意してください。

  1. コールドスタート。既知のタグAᴵ(i)を持つ新しいアイテムiがある場合、潜在ベクトルxᴵₐ (以前のデータにモデルを適合させることによって取得) を使用して、その埋め込みqᵢを計算し、したがって、任意のユーザーuの評価rᵤᵢを推定できます。 .
  2. 利用可能なタグがありません。アイテムまたはユーザーの既知のメタデータがない場合、使用できる唯一の注釈はインジケーター関数です。つまり、各ユーザーおよび各アイテムに対して異なる注釈です。次に、ユーザーとアイテムの特徴行列は恒等行列であり、LightFM は SVD などの従来の協調フィルタリング方法に還元されます。
  3. コンテンツベースとハイブリッド。インジケーターの注釈を付けずにユーザー タグまたはアイテム タグのみを使用した場合、LightFM はほぼコンテンツ ベースのモデルになります。したがって、実際には、ユーザーとアイテムの相互作用を活用するために、既知のタグに、各ユーザーとアイテムと異なるインジケーター アノテーションも追加します。
  • レコメンダー システムは、機械学習アルゴリズムを活用して、ユーザーが関連するコンテンツを発見する際の選択肢が殺到するのを支援します。
  • 明示的なフィードバックと暗黙的なフィードバック: 前者の方が利用しやすいですが、後者の方がはるかに豊富です。
  • コンテンツ ベースのモデルは、コールド スタートのシナリオでうまく機能しますが、ユーザーとアイテムのメタデータを知る必要があります。
  • 協調フィルタリングモデルは通常、行列分解を使用します: PMF、SVD、暗黙的なフィードバック用の SVD、SVD++。
  • ハイブリッド モデルは、コンテンツ ベースの協調フィルタリングを最大限に活用します。LightFMは、このアプローチの好例です。
  • ウィキペディア、レコメンダー システム
  • 「サプライズ」、Python パッケージのドキュメント。
  • (S. Funk 2006)、Netflix の最新情報: 家で試してみてください。
  • (R. Salakhutdinov 2007)、確率的行列分解。
  • ( Y. Hu 2008)、暗黙的フィードバック データセットの協調フィルタリング
  • (Y. Koren 2009)、Recommender Systems の行列分解手法
  • (Y. Koren 2008)因数分解は近隣と出会う: 多面的な協調フィルタリング モデル。
  • ( M. Kula 2015)、ユーザーおよびアイテムのコールド スタート推奨事項のメタデータ埋め込み