【51CTO.comオリジナル記事】 1. はじめに 前回の記事でレコメンデーション システムの協調フィルタリング アルゴリズムを詳しく紹介し、シミュレーションによるレコメンデーション事例を紹介したので、読者は協調フィルタリング アルゴリズムの原理を基本的に理解し、レコメンデーション プロセスとレコメンデーション アルゴリズムを使用するシナリオと利点を基本的に把握できたと思います。前回の記事の最後で、協調フィルタリング アルゴリズムの欠点についての研究といういくつかの考察を残し、他の推奨アルゴリズムを紹介しました。したがって、この記事では、これらの側面から始めて、実際にこれらの疑問を解決し、協調フィルタリング アルゴリズムの欠点を徹底的に説明し、対応するソリューションと対応する推奨アルゴリズムを示します。 2. 「料理が上手い人は米なしでは料理ができない」 - 行列のスパース性問題 2.1 ご飯が足りない? まず、協調フィルタリング推奨アルゴリズムの場合、推奨計算プロセスに関係する重要な基本パラメータは評価行列であり、これが今日解決する必要がある最初の問題、つまり評価行列の密度につながります。評価マトリックスの密度は、対応する推奨アルゴリズムまたは処理方法を選択するための鍵となります。実際のアプリケーションでは、多くのユーザーは、生活の中で少数の製品のみを閲覧、購入、または評価し、ほとんどの製品には目をつぶって無視します。そのため、最終的な評価マトリックスは疎になりすぎます。推奨システムを設計する場合、比較的少ない、または不十分な有効な評価データを使用して、比較的正確な予測を行うという課題に直面します。このような問題は間違いなく「料理が上手い人は米なしでは料理ができない」というものであり、どの推奨アルゴリズムを選択しても結果に大きな違いは生じません。料理をしたいのに、お米が足りない、もしくは米が全くないときと同じです。鉄鍋、銅鍋、金鍋を使っても、家族が満足する料理は作れません。ここでの「米」はユーザーのアイテムに対する評価を指し、「鍋」は推薦システムのようなもので、鍋の材質は推薦アルゴリズムのようなものです。こうすることで、読者は意味を理解し、評価の重要性を認識するようになります。 評価マトリックスがまばらすぎるという問題に直面した場合、最も直接的な方法は、ユーザーまたはアイテムの追加属性データを使用し、これらのデータを分類および統合して、類似のユーザーまたはアイテムの対応するリストを解決することです。この方法をこのように説明すると、大多数の読者はその意味をうまく理解できず、この方法に対して深い印象を抱かないでしょう。そこで、料理の例を使って、ユーザーアイテム評価マトリックスがまばらすぎる場合(評価マトリックスが空の場合は考えない)、つまり、炊くための米が足りない場合に採用すべき方法は、米を分解する方法、つまり米を砕いて砕いた米を増やし、その砕いた米を使ってお粥を炊いて家族全員のニーズを満たすことであることを説明します。このメタファーは、上で述べたように、ユーザーやアイテムの追加的な特徴属性データを使用して分類や統合を行うというものです。 2.2 「米」はない? もちろん、コメがない、つまり評価がないユーザーや新規ユーザーという状況もあります。読者の皆さんは、これに親近感を感じているのでしょうか。はい、この状況はコールドスタート状況とも呼ばれます。推奨システムの詳細な説明には、パーソナライズされていない推奨を完了するという対応する解決策があります。それらのほとんどは、売れ筋商品やランキングデータを使用してプッシュを完了したり、ホームページにポップアップウィンドウを表示してユーザーの好みや興味について質問したり、ユーザーがクリックしたモジュールに基づいて推奨事項を作成したりします。具体的な操作方法については、私の原稿(レコメンデーションシステムの詳細解説 パーソナライズドレコメンデーションと非パーソナライズドレコメンデーション)を参照していただくとして、ここでは詳細には触れません。 2.3 最近傍アルゴリズムの欠点 先ほど述べた、ユーザーとアイテムの追加の特徴属性を使用してデータを分類および統合する方法に戻りましょう。この操作に対応するアルゴリズムは、SVD 行列分解と呼ばれます。これについては後で説明しますが、デフォルト投票を通じてアイテムの評価を完了することもできます。原則として、1 人または 2 人のユーザーによってのみ評価されたアイテムにデフォルト値を与えます。この方法は暗黙の評価計算に似ています。最後に、別の方法がありますが、もちろん無力な動きです。つまり、評価のないユーザーやアイテムの隣またはその近くにある評価のあるユーザーやアイテムを見つけ、それらの評価を使用して現在の評価を埋めるか、増分や平均化などの方法を使用して評価を取得し、現在のユーザーとアイテムの評価を完成させます。したがって、CF ベースの近隣推奨アルゴリズムのすべての欠点または欠陥は次のようになると結論付けることができます。 (1)限定的なカバレッジ:2人のユーザー間の類似性は、同じカテゴリのアイテムの評価に基づいて計算され、このカテゴリのアイテムを評価したユーザーのみが近隣ユーザー(ピアユーザーとも呼ばれる)とみなされます。ただし、実際のシナリオでは、多くのユーザーはアイテムをほとんど評価しないか、評価しませんが、同じ興味や趣味を持っているため、推奨アルゴリズムの範囲が制限され、影響を受けます。この問題を解決するために、SVD マトリックス因子分解推奨アルゴリズムが導入されました。このアルゴリズムは、既存ユーザーの評価に基づいて、各アイテムに対してユーザーが好む因子と、各アイテムにこれらの因子がどの程度含まれているかを分析します。最後に、最終分析結果に基づいて評価を予測します。たとえば、SVD 行列分解を行う前は、ユーザー A、ユーザー B、ユーザー C だけが映画を見るのが好きで、映画を見る頻度もそれほど変わりません。ただし、数本の映画しか見たことがない場合は、ユーザー評価のある映画は 2、3 本しかない可能性があります。この評価数は、評価マトリックスには明らかに不十分であり、評価マトリックスがまばらになります。しかし、SVD行列分解を行った後、映画ごとに追加の特徴的な属性因子(インスピレーション、面白さ、人間性、ロマンチックさなどの属性因子を含む)を抽出できるため、より多くの属性評価値を抽出できることがわかりました。この属性を通じて、ユーザー A はユーザー B と同じ好みを持ち、どちらも面白い映画やロマンチックな映画を見るのが好きである一方、ユーザー C はホラー映画や感動的な映画を見るのを好む可能性があることがわかります。このようにして、ユーザー B の行動に基づいてユーザー A の行動を予測することができます。 A に勧める映画を、A の好みに合うものにします。したがって、SVD マトリックス ファクター法を使用すると、スコアに影響を与えるより多くの要因を見つけ、より意味のある関連情報をマイニングして、ユーザーのニーズや希望を満たすアイテムを推奨することができます。 (2)スパースデータに対する感度:実際、この問題は、上述の限定されたカバレッジの問題と多少似ています。評価マトリックスのスパース性は、ほとんどの推奨システムで共通の問題であるためです。それは主に評価証拠のスパース性に依存します。前述のSVDマトリックス因子分解アルゴリズムを使用する場合、分解されたアイテム属性因子がまだ十分に密でない場合、形成された因子評価マトリックスはまだスパースですが、ユーザーは新規ユーザーではなく、一定の過去の購入または閲覧行動を持っています。このようなユーザーは、パーソナライズされていない推奨に頼ることはありません。結局のところ、推奨は人間的でインテリジェントなものでなければならないからです。リスト上の売れ筋商品のデータは万能ではありません。特定の過去の行動を持つユーザーは、過去の行動要因を考慮し、パーソナライズされた推奨を行うよう努める必要があります。現在、この種の問題を解決するために、コンテンツベースの推奨アルゴリズムを採用することができます。コンテンツベースの推奨アルゴリズムは、ユーザーの過去の嗜好に基づいて、ユーザーの過去の嗜好に関連するアイテムを直接推奨します。これにより、各ユーザーの固有の属性が考慮され、パーソナライズされた推奨が完成します。 上記の 2 つの問題に対応するために、SVD 行列分解アルゴリズムとコンテンツ ベースの推奨アルゴリズムという 2 つのアルゴリズムが導入されています。この記事では、この 2 つのアルゴリズムに焦点を当てます。この「プライマー」により、これら 2 つのアルゴリズムの「導火線」に点火が始まります。 3.SVD行列分解アルゴリズム 3.1 SVDアルゴリズム まず、SVD(特異値分解)の数学的定義を見てみましょう。与えられた評価行列Sを3つの行列の積に分解します。ここで、UとVは左特異ベクトルと右特異ベクトルと呼ばれ、この章ではユーザー行列とアイテム要因行列として理解できます。対角線の値は特異値と呼ばれます。Sはn*m行列、Uはn*n行列、Qはn*m行列、Vはm*m行列です。次の式では、k個の特異値を使用してR行列を近似的に置き換えることができます。これは、最初の1%の特異値の合計がすべての特異値の合計の99%以上を占め、中央の特異値を除いて、残りの特異値は基本的に0であるためです。式は次のとおりです。 次に、U 行列と V 行列を変換してユーザー係数行列 C とアイテム係数行列 P を取得し、特異行列 Q の平方根を取ってそれをそれぞれ U 行列と V 行列に乗算する必要があります。これは、平方根を取ってから特異行列 Q を乗算するのと同じです。ユーザー因子行列 C とアイテム因子行列 P は次のようにして得られます。 最後に、アイテム i に対するユーザー t の評価予測は、ユーザー因子行列の t 行目にアイテム因子行列の i 列目を掛けたもの(つまり、アイテム因子行列の i 行目の転置)となり、以下に示すようになります。 3.2 パラメータの最適化 ユーザー因子行列 C とアイテム因子行列 P を計算するときに、SGD 確率的勾配降下法を使用して、関連するパラメータを学習し、継続的に反復的に調整および更新することができます。スコアがない場合は、エラー値を計算する必要がなく、エラー値を直接 0 に設定できます。上で述べた SGD 確率的勾配降下法は、内容が膨大であるため理解しにくいですし、読者が SGD 確率的勾配降下法と SVD 行列分解を混同してしまうのではないかと心配しています。そのため、ここでは SGD 確率的勾配降下法の原理についてはこれ以上説明しません。 SGD 確率的勾配降下法は、人工知能ニューラル ネットワークの応用も含まれるため、特別なトピックとして分析および説明します。読者の皆さんが次の式をよくご存知であることを願っています。 3.3 SVDアルゴリズムの欠陥 SVD 行列分解は、オンラインでの計算が難しく、ユーザーのリアルタイムの行動フィードバックをうまく処理できず、リアルタイム処理能力がないため、実際の推奨システムではほとんど使用されません。また、大規模なレコメンデーション システムの場合、協調フィルタリングや SVD 行列分解を直接実行すると、計算量が多くなるという問題が発生する可能性があります。この場合、K 平均法クラスタリング アルゴリズムを使用して大量の評価データをグループ化し、各グループ内のすべてのデータを 1 つのカテゴリまたは 1 つの要素に分類してから、協調フィルタリングを実行することを検討できます。K 平均法アルゴリズムの原理と機能については、ここでは詳しく説明しません。これらの欠けているアルゴリズムの原則については、後ほど補足記事で具体的に説明します。 4.CB — コンテンツベースの推奨アルゴリズム 4.1 CBアルゴリズムとその特徴と応用 協調フィルタリングアルゴリズムと比較して、コンテンツベースの推奨アルゴリズムも業界やインターネット業界で広く使用されている推奨アルゴリズムです。これは、製品のユーザー評価のみに基づく評価行列が疎すぎる (そのため、行列分解後も理想的な豊富な評価行列の要件が満たされない) 協調フィルタリング推奨アルゴリズム用に提案された推奨アルゴリズムです。この推奨アルゴリズムは、コールド スタートの問題もある程度解決します (ただし、新しいユーザーは推奨されません)。コンテンツベースの推奨アルゴリズムは、アイテムの特性やユーザーの過去の行動、特別な好みに基づいて、より直感的な推奨を行うことができます。このアルゴリズムは推奨ユーザーのみを考慮し、他のユーザー グループや最も近いユーザーについては考慮しません。 CB アルゴリズムの特徴: CB コンテンツベースの推奨アルゴリズムは、アイテムやユーザーの好みに関する追加情報にも依存する必要がありますが、ピア ユーザー グループのユーザー評価や好み属性の記録をあまり必要としません。つまり、ユーザーが 1 人だけの場合、コンテンツベースの推奨アルゴリズムは推奨機能も完了し、推奨アイテム リストを生成することができます。これらは、協調フィルタリング アルゴリズムに基づく推奨では実現不可能です。 CB アルゴリズムの応用: コンテンツ ベースの推奨アルゴリズムは、もともとユーザーが興味を持っている、または興味深いと感じているテキスト ドキュメントを推奨するために設計されました。コンテンツ ベースの推奨アルゴリズムは、一部のテキスト ドキュメントの推奨でよく見られます。ただし、現在、このアルゴリズムを他の推奨領域に適用し始めています。コンテンツベースの推奨も今後さらに推進され、適用される予定です。 4.2 CBアルゴリズムと協調フィルタリングアルゴリズム CB (コンテンツベース) アルゴリズムと (協調フィルタリング) アルゴリズムの違いを見てみましょう。 CB の推奨システム (コンテンツベースの推奨アルゴリズム) は、ユーザーが過去に気に入ったアイテムに基づいて、ユーザーが過去に気に入ったアイテムの類似代替品を推奨しようとします。推奨されるアイテムは、ユーザーが過去に興味を持ったり購入したアイテムと同じカテゴリに属し、CB アルゴリズムはユーザーアイテム評価マトリックスに依存する必要がありません。 CF の推奨システム (協調フィルタリング推奨アルゴリズム) は、現在のユーザーと同じ興味や趣味を持つ他のユーザーを識別し、これらの他のユーザーが気に入ったアイテムを現在のユーザーに推奨します。 CF アルゴリズムは、ユーザーとアイテムの評価マトリックスに基づいて推奨事項を完成させる必要があります。 4.3 CBアルゴリズムの実装手順と構造 CB アルゴリズムの実装手順は次のとおりです。 (1)項目表現:各項目(オブジェクト)からいくつかの特徴的な属性を抽出することであり、項目を構造化する操作である。対応する処理プロセスは内容分析とも呼ばれる。 (2)プロファイル学習:現在のユーザーの過去の行動情報や、過去にユーザーが好んだ(嫌いだった)アイテムの特徴データ情報を用いて、現在のユーザーの嗜好特性(プロファイル)を学習する処理プロセスをプロファイル学習と呼ぶ。 (3)レコメンデーション生成:前のステップで取得したユーザープロファイルを分析し、関連性や類似性が最も高いアイテムのグループを現在のユーザーに推奨します。対応する処理プロセスはフィルタリングコンポーネントと呼ばれます。 BC 推奨アルゴリズムの実装手順から BC 推奨アルゴリズムの構造を導き出すことは難しくありません。BC 推奨の原則プロセスは、以下に示すように直感的な構造図に描かれています。 4.4 CB—アイテムの表現 BC推奨アルゴリズムの構造図を描いた後、もう1つ付け加えておきます。アイテムの特徴属性のマイニングと抽出、つまりアイテム表現プロセスには、主に数値データと非数値データの処理が含まれます。機械学習で使用される主な処理方法は次のとおりです。 (1)数値データの正規化:数値データをデータの合計で割り、各データの合計データに対する割合でデータを表すことで、各データの表現範囲が[0,1]の間になるようにする。これは数値データの正規化の最も簡単な方法でもある。 (2)数値データの2値化:各データ値に基づいてデフォルト値を設定し、次のような条件ルールを設定する。 データ値がデフォルト値以上の場合は 1 として表され、デフォルト値より小さい場合は -1 として表されます。このように、各データ値が 2 つの値のうちの 1 つだけを持つように制約を設定することを 2 値化と呼びます。 (3)非数値データを特徴ベクトルに変換する:各非数値データは対応するベクトル値で表されます。 (4)TF-IDF:情報検索やデータマイニングでよく使われる重み付け手法。 TF は用語頻度、IDF は逆文書頻度指数であり、通常は文書セット内の文書に対する単語の重要度を評価するために使用されます。 (5)Word2Vec:ニューラルネットワークのトレーニングを伴う、単語ベクトルを生成するために使用される関連モデルのグループ。 4.5 CB—プロファイル学習 ユーザーがすでに特定のアイテムに対する好みの判断を下しており、一部のアイテムは気に入っているが他のアイテムは気に入っていないと仮定すると、このプロセスは実際にはユーザーの過去の好みに基づいて判断を下し、判別モデルを構築し、最終的にこのモデルを使用してユーザーが新しいアイテムを気に入っているかどうかを判断します。これは典型的な教師あり学習の問題です。理論的には、必要な判別モデルは機械学習分類アルゴリズムを使用して解決できます。これは、将来のアルゴリズム最適化の研究方向も提供します。つまり、ディープラーニング技術を組み合わせて判別モデルを継続的に改善し、判別モデルがユーザーの関心とより一致するようにします。 このプロセスに関係する一般的なアルゴリズムには、最近傍法、決定木法、線形分類アルゴリズム、ナイーブベイズアルゴリズムなどがあります。これらのアルゴリズムは、人工知能やディープラーニングの分野でデータを処理する場合によく使用されます。この記事では推奨アルゴリズムについてのみ説明しているため、これらのディープラーニング分野に関係するアルゴリズムについては、ディープラーニングに関する今後の特集で説明します。最近傍法については、推奨システムで最も重要かつ最も一般的に使用されるアルゴリズムであるため、補足原稿の形で詳しく説明し、この推奨アルゴリズムシリーズのギャップをより適切に埋めていきます。機械学習に関連するこれらの知識を通じて、コンテンツベースの推奨が実際には主に機械学習アルゴリズムに基づいていることを知ることは難しくありません。 4.6 CBアルゴリズムの分析 上記の文章から、コンテンツベースの推奨アルゴリズム (CB) の長所と短所を知ることは難しくありません。詳しく見ていきましょう。 CB 推奨アルゴリズムの利点は主に次のとおりです。 (1)ユーザーの独立性:この特性は、他の近隣ユーザーの特性属性に依存する協調フィルタリングアルゴリズムの制限を打ち破り、1人のユーザーのみでパーソナライズされた推奨を完了することを可能にします。モデルを構築する過程で、CB アルゴリズムは現在の推奨ユーザーの情報のみを考慮する必要があり、これは非常に独立した推奨アルゴリズムです。 (2)透明性:CBアルゴリズムの動作構造は、CBアルゴリズムが、推奨リストにアイテムが表示されるコンテンツの特徴と説明情報を明示的にリストすることにより、推奨システムの動作を説明できることを示しています。 (3)新商品:評価のない商品向けの機能です。つまり、現在のユーザーがアイテムを評価していない場合や、アイテムに評価がない場合でも、BC アルゴリズムは、現在のユーザーの過去の行動に基づいて、アイテムに類似し、ユーザー評価のあるアイテムを見つけることができます。次に、CB 推奨アルゴリズムは、評価のないこのアイテムを現在のユーザーに推奨し、新しいアイテム (評価のないアイテム) の推奨を完了します。 もちろん、どの推奨アルゴリズムも、特定の種類の問題を解決したり、特定の種類の状況に対処したりするためにしか使用できません。したがって、CB アルゴリズムにも、克服するのが難しい独自の欠点があります。 (1)特徴抽出が難しい(分析できるコンテンツが限られている):現在のユーザー(アイテム)の閲覧履歴(特徴属性)が十分に豊富でない場合、抽出された特徴は適切な表現能力を持たないため、最終的な推奨効果に悪影響を及ぼします。この問題は、推奨されるオブジェクトに関連付けられた機能の数と種類が限られていることに関連しており、ドメイン知識、つまり機械学習アルゴリズムの品質に依存します。 (2)ロングテール効果を引き起こしやすい:ロングテール効果については、以前の記事で説明しました。CBアルゴリズムの推奨はロングテール効果を引き起こしやすく、ユーザーの潜在的な興味を発見することができず、ユーザーの興味が過度に特化されてしまいます。 CB 推奨アルゴリズムの推奨結果は、ユーザーが以前に気に入ったアイテムと常に類似しているため、CB アルゴリズムの推奨後、ユーザーは常に以前の関心領域に留まり、他の領域のアイテムを越えて「いいね!」することはできません。しかし、現実には、現在のユーザーは間違いなくこの分野以外にも興味を持っているため、CB 推奨アルゴリズムは、現在のユーザーが他の分野のコンテンツも好む可能性があることを発見できず、ユーザーの興味が過度に専門化され、ロングテール効果が発生します。 (3)コールドスタート問題:CBアルゴリズムは現在のユーザーの過去の行動データに依存しているため、新規登録ユーザーに対する推奨を生成することは不可能である。過去の行動データを持たない新規登録ユーザーに対しては、比較的信頼性の高い推奨結果を生成することは不可能である。この問題は、以前の協調フィルタリング アルゴリズムの問題でもあります。幸いなことに、以前の記事で解決されています。 この問題は、パーソナライズされていない推奨事項を使用する章で解決されたため、これ以上説明しません。 5. まとめ SVD アルゴリズムと CB アルゴリズムはどちらも、協調フィルタリング アルゴリズムのユーザー評価マトリックスがスパースすぎるという問題を解決するために開発された推奨アルゴリズムですが、異なるスパース レベルに対応するソリューションが存在します。ただし、SVD アルゴリズムと CB アルゴリズムと同様に、これら 2 つの推奨アルゴリズムには、克服するのが難しい独自の欠点がまだあります。次の記事では、残りの比較的ニッチな推奨アルゴリズムを紹介します。これにより、読者は自分の開発で遭遇するシナリオに応じて適切なアルゴリズムを選択できるようになり、推奨アルゴリズムの重要性をより明確に理解できるようになります。いくつかのニッチな推奨アルゴリズムを習得すると、設計する推奨システムにさらに磨きをかけることができます。 [51CTO オリジナル記事、パートナーサイトに転載する場合は、元の著者とソースを 51CTO.com として明記してください] |
<<: 推奨アルゴリズムコレクション(パート2) - 相関ルール推奨とKBアルゴリズム
>>: ドローンはどうやって夏の「蚊との戦い」に勝つのでしょうか?これら3つのポイントを達成する必要があります。
[[436311]]最近、Meta CEO マーク・ザッカーバーグ氏によるメタバースの推進が大きな...
2024年に向けて、AI分野ではどのような発展や変化があるでしょうか? Stability AIが...
「言葉の含意は心が繋がっている」という意味で、言葉がテレパシーのような共鳴を呼び起こし、人と人の間の...
これには、機械学習のサブフィールドの分類が含まれます。すべての分類において、最初に尋ねるべき質問は、...
推薦システムは早くから誕生していたが、本格的に注目されるようになったのは、「Facebook」に代表...
ChatGPT のコード インタープリターは、自分のコンピューター上で実行できます。ちょうど今、ある...
大規模な純粋テキストモデルが増加しており、マルチモーダル分野ではマルチモーダル対話の大規模モデルも登...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
Pythonは、コンパイル速度が超高速なオブジェクト指向プログラミング言語です。誕生から25年が経ち...
画像マッティングとは、画像内の正確な前景を抽出することを指します。現在の自動方法では、画像内のすべて...
ブロックチェーン技術の発展に伴い、Web3(分散型Webとも呼ばれる)が徐々にWeb2(集中型Web...