レコメンデーションの概要

レコメンデーション システムは、ビジネス向けの ML が最も成功し広く普及しているアプリケーションの一つです。レコメンデーション システムを使用すると、ユーザーは大量のコンテンツの中から魅力的なコンテンツを見つけやすくなります。たとえば、Google Play ストアには何百万ものアプリがあり、YouTube には数十億本もの動画が用意されており、さらに多くのアプリや動画が毎日追加されています。ユーザーは検索を使用して新しいコンテンツを見つけることができますが、それは検索キーワードによって限定されます。レコメンデーション システムは、ユーザーが自分で検索しようと考えなかったようなコンテンツを提示できます。詳細については、レコメンデーション システムの概要をご覧ください。

通常、レコメンデーション システムの ML アルゴリズムは、次のカテゴリに分類されます。

  • コンテンツ ベースのフィルタリング: アイテム間の類似度を使用して、レコメンデーションを提供します。たとえば、ユーザーが可愛い猫の動画を 2 本見ると、レコメンデーション システムはそのユーザーにさらに可愛い動物の動画を推奨します。
  • コラボレーション フィルタリング: ユーザー間の類似度(ユーザークエリに基づく)を使用して、レコメンデーションを提供します。たとえば、ユーザー A がユーザー B に類似した内容を検索し、ユーザー B が動画 1 を好む場合、ユーザー A が動画 1 に類似した動画を視聴していなくても、レコメンデーション システムはユーザー A に動画 1 をおすすめします。

行列分解モデル

行列分解モデルは、レコメンデーション システムのコラボレーション フィルタリング手法として広く利用されています。

行列分解モデルでは、ユーザー - アイテム ペアが 2 次元行列にマッピングされ、一意のユーザーが一方の軸に、一意のアイテムがもう一方の軸に配置されます。ユーザーがアイテムにつけた評価は、マトリックスのセルに格納されます。このマトリックスは完全に埋める必要はありません。ほとんどの場合、ユーザーは各項目に値を設定しません。行列分解モデルの目標は、2 つの小さな密集した重み行列を作成することです。これらの行列を乗算すると、元の行列セル値に近似し、空の行列セルの予測評価が得られます。

小さい行列の 1 つには、CREATE MODEL ステートメントの NUM_FACTORS オプションで指定されたように、一方の軸に一意のユーザーが、もう一方の軸に潜在的要因の数が入っています。もう一方の小さい行列には、一方の軸に固有の項目、もう一方の軸に潜在的要因の数を格納します。この行列では、入力行列のユーザーとアイテムの組み合わせに基づいて、モデルのトレーニングに使用されるアルゴリズムによって潜在的な因子の重みが生成されます。

詳細については、行列分解をご覧ください。

行列分解モデルを ML.RECOMMEND 関数とともに使用して、レコメンデーションを作成できます。

推奨事項のその他のモデル

コラボレーション フィルタリング ベースのレコメンデーション システムを、行列分解モデルで可能な範囲を超えて拡張するには、ディープ ニューラル ネットワーク(DNN)モデルとワイド&ディープ モデルを ML.PREDICT 関数とともに使用して、レコメンデーションを作成します。これらのモデルによって、クエリの特徴やアイテムの特徴を組み込んで、レコメンデーションの関連性を改善できます。詳しくは、次のリソースをご覧ください。

CREATE MODEL ステートメントと推論関数のデフォルト設定を使用すると、ML の知識がなくてもレコメンデーション モデルを作成して使用できます。ただし、ML 開発、特におすすめモデルに関する基本的な知識があると、データとモデルの両方を最適化してより良い結果を得ることができます。ML の手法とプロセスに慣れるために、次のリソースを使用することをおすすめします。