推奨アルゴリズム集(補足) - 最近傍選択とアルゴリズム拡張

推奨アルゴリズム集(補足) - 最近傍選択とアルゴリズム拡張

【51CTO.comオリジナル記事】

1. はじめに

上記の記事を通じて、レコメンデーション アルゴリズムの種類、メリット、デメリットについて詳しく学ぶことができます。レコメンデーション アルゴリズムに関するコンテンツはまだまだたくさんあります。以前の記事には内容に一部欠落があり、これまで説明したアルゴリズム コンテンツの深さは、プロのレコメンデーション システム開発者のレベルにはまだ達していません。そのため、この記事では、前回の議論で抜けていた部分を補足し、レベルを上げてレコメンデーションシステムのアルゴリズムについてさらに深く掘り下げていきます。

2. 協調フィルタリング(CF)拡張

2.1 類似度測定の拡張

前回の協調フィルタリング アルゴリズムでは、ピアソン相関係数や調整コサイン ベクトル類似度など、近傍推奨で使用される類似度測定方法について説明しました。ピアソン相関係数は、ユーザー近隣推奨アルゴリズムでよく使用される測定式であり、最も優れた推奨効果があります。改良コサインベクトル類似度は、アイテム近傍推奨アルゴリズムで最もよく使用される類似度測定計算式であり、最も効果があります。さらに、あまり一般的に使用されていない測定式が 2 つあります。これらの測定式は、推奨される効果があまり良くないため、これまでのコンテンツでは紹介されておらず、実際のアプリケーションで使用することは推奨されていません。しかし、理解することは必要です。

(1)平均二乗差:同じアイテムに対するユーザーuとユーザーvの評価差の二乗和の平均の逆数を使用して、2人の類似性を表します。ただし、負の相関関係を表現できないという欠点があります。

(2)スピアマン順位相関係数。これは、ユーザーのアイテム評価の順位を使用して、2人のユーザー間の類似度を計算する。ただし、ランキングの計算に時間がかかることと、ユーザー評価のオプション値が少ない場合は、並列ランキングが大量に生成されてしまい、推奨効果が悪くなるというデメリットがあります。

2.2 2つの特別なケース?

最初のケースは、2 人のユーザーが最近傍推奨アルゴリズムを適用してアイテムを評価する場合です。評価されたアイテムが比較的少なく、評価されたアイテムのスコアが比較的一貫している場合、2 人のユーザーは似ていると自然に考えられます。アイテム近隣ベースの推奨アルゴリズムでも同様です。しかし、実際のところ、この時点では、2 人のユーザーの趣味はまったく異なる可能性があります。そこで、この問題を解決するために、類似度に重要度の重みを付加して類似度を変換する、類似度スケーリング法が考えられます。このように処理した後の類似度は、実際のユーザーの類似度に近づくことができます。次に、重要度権限と類似度スケーリングという 2 つの方法を拡張します。

(1)重要度の重み:2人のユーザーまたはアイテム間で共通の評価を持つアイテムとユーザーの数が所定の閾値未満の場合、類似度の重要度の重みが低減される。しきい値の選択は通常、クロス検証法によって行われます。実際のシナリオでは、しきい値が 25 以上の場合、より良い予測結果が得られることが多いです。

(2)類似度のスケーリング:ユーザーやアイテムの類似度を縮小するために縮小係数を与えると、最終的な共通評価の数が縮小係数よりはるかに大きい場合、アイテムの類似度はほとんど変化しません。実際のシナリオでは、縮小係数が100の場合、効果は良好です。

以下は、重要度の重みと類似度のスケーリングによって計算された類似度の式です。

もう 1 つの状況は、2 人のユーザーがアイテムに対して一貫した「好き」と「嫌い」の評価を付けた場合です。これは、異なる評価を付けた場合ほど有益で有用ではない可能性があります。このとき、類似度の計算式は逆ユーザー頻度を使用して変換できます。各項目には重みが割り当てられます。重みの式は次のとおりです。

類似度計算式を逆ユーザー頻度で変換すると、使用されるピアソン相関係数は頻度加重ピアソン相関係数(Frequencey-Weighted Pearson Correlation)となり、対応する式は次のようになります。

頻度加重ピアソン相関係数 2.3 最近傍を選択する問題?

前回の記事では、現在のユーザーの隣接ユーザー グループを選択することで、現在のユーザーに対する推奨を完了する協調フィルタリング アルゴリズムについて説明しました。しかし、読者は次のようなことを考えたことがあるだろうか。最近傍の選択は単にランダムなのか?最近傍を選択する方法はないのか?答えはイエスだ。しかし、関連する知識ポイントが多すぎて混乱しやすいため、これまでは深く掘り下げていませんでした。ここで、近傍選択の問題についてお話ししましょう。

近傍ベースの推奨アルゴリズムでは、近傍の数の選択と近傍選択のルールが、推奨システムの最終的な効果に重要な影響を及ぼします。実際のアプリケーション シナリオでは、近傍推奨アルゴリズムにおける近傍の選択方法は、一般的に次のようになります。

(1)まず、事前に選択された近傍をフィルタリングします。フィルタリング方法には、トップNフィルタリング、しきい値フィルタリング、ネガティブフィルタリングがあります。基本的に、これらのフィルターの名前からフィルタリング方法を知ることができます。トップ N フィルタリングは、上位 N 個のアイテムまたはユーザーを選択することであり、しきい値フィルタリングは、パラメータを設定することであり、このパラメータを超えるアイテムまたはこのパラメータを下回るアイテムはフィルタリングされます。負数フィルタリングは、負の数をフィルタリングすることであり、負の数をフィルタリングすることだけです。

(2)事前に選択された最近傍リストからk個の最近傍セットを取得する。選択されたkの数が少なすぎると、予測精度は非常に低くなります。 k が増加すると、予測精度はある程度向上しますが、多すぎるのも少なすぎるのも良くありません。特定のパラメータ値 (実際のシナリオでは通常 50) に達すると、一部の重要な関連性が重要でない関連性によって弱められ、予測精度が低下します。したがって、k の推奨値は 25 ~ 50 です。ただし、実際のアプリケーション シナリオでは、トレーニング セットとテスト セットのクロス検証を通じて最適な k 値を取得する必要があります。 k 近傍法 (KNN) の具体的な選択手順は、カテゴリ属性が不明なデータ セットの各ポイントに対して次の操作を実行することです。

(1)まず、既知のカテゴリデータセットの各点と現在の点の間の距離を計算し、

(2)距離の昇順で並べ替える。

(3)現在の点に最も近いk個の(予め設定された)点を選択する。

(4)最初のk点のカテゴリーの出現頻度を決定し、最も出現頻度の高いk点のカテゴリーを現在の点の予測カテゴリーとして使用する。

3. K平均法アルゴリズム

協調フィルタリング アルゴリズムの SVD 行列分解では、分解済みまたは分解されていない評価行列が多すぎる場合、つまり評価の数が多すぎる場合、アルゴリズムの時間計算量が高くなりすぎて、リアルタイム パフォーマンスに重大な影響を及ぼします。このとき、前述の K-means アルゴリズムが採用されますが、これは前回の原稿ではあまり説明されずに軽く触れられただけでした。そこで、ここではK-meansアルゴリズムを紹介します。

K-mans アルゴリズムの手順とアイデアは、データ セット内の各ポイントを分類して整理するというもので、実際には比較的理解しやすいものです。同じ属性カテゴリのポイントは 1 つのカテゴリにグループ化されます。このアルゴリズムは、ラベルのないデータ セットを入力として受け取り、クラスタリング アルゴリズムを使用してデータ セット内の各ポイントを異なるグループに分割します。これも教師なし学習アルゴリズムです。具体的な手順は、おおまかに以下の手順に分かれます。

(1)まず、クラスターの中心点としてk点(kの値は予め設定されており、一般的には小さい値の方がよい)をランダムに選択します。

(2)各点から選択されたk個のクラスター中心までの距離を計算し、各点を他の中心までの距離でソートし、距離が最も近いクラスターに点を割り当て、すべての点を順番に分類する。

(3)各クラスターの中心点を再計算する。

(4)クラスターの中心点の位置が変化しなくなるか、事前に設定された反復回数に達するまで、上記の手順2と3を繰り返します。

4. SGD 確率的勾配降下法

4.1 SGDの意味

SGD 確率的勾配降下アルゴリズムについては、前回の論文でも触れました。このアルゴリズムは、一般的に、関数や結果の損失やエラーを減らすためにパラメータを継続的に調整するために使用されます。つまり、損失関数が与えられた場合、勾配降下アルゴリズムを使用して損失関数を最小化します。いわゆる勾配降下法の理解は、まず第一に、各関数グラフ表面に対して、すべての方向に導関数、つまりすべての方向の関数の傾きがあるというものです。表面上の方向微分のうち、最大微分値の方向が勾配の方向を表します。したがって、勾配降下法は、勾配の反対方向に重みを更新し、それによってグローバルな最適解を効果的に見つけることです。

4.2 小さな理解ケース?

以下に、SGD 確率的勾配降下法を他の人に簡単に理解してもらうための例を示します。これは、山のどこにでも移動し、特定の方法によってできるだけ早く山の頂上または麓に到達できるようにするというものです。実際、この方法では SGD 確率的勾配降下法を使用できます。まず各方向の導関数、つまり傾きを求め、次に傾きまたは導関数、つまり勾配が最大となる方向を求めます。勾配の方向に 1 ステップ進み、勾配の方向を計算します。これを繰り返します。勾配降下法を使用すると、各ステップが現在の位置で最大のトレンドの方向に進むようにすることができ、できるだけ早く山の底まで降りたり、山の頂上まで登ったりすることができます。この原理により、損失関数の値またはエラーをできるだけ早く削減できます。

5. 推奨システムの拡張 - 攻撃

実際のアプリケーションでは、推奨システムの推奨は経済的利益をもたらす一方で、ユーザーの購買行動に多かれ少なかれ影響を与えるため、評価推奨に参加するすべてのユーザーが誠実かつ公正であるとは想定できません。つまり、森が広ければ、いろいろな種類の鳥がいるということです。推奨や評価の提案を提供する多くのユーザーの中から。推薦システムの推薦効果に影響を与える悪意のあるユーザーが確実に存在し、その結果、推薦システムの最終的な推薦リストには特定の種類の製品が頻繁に、またはまれにしか含まれなくなります。この問題は、推薦システム攻撃と呼ばれます。もちろん、すべての推奨システムはこの種の推奨攻撃に遭遇しますが、それに対応する解決策がいくつかあります。

(1)長期購入者や会員など、安定的または信頼できるユーザーの評価ウェイトを可能な限り高める。

(2)異常なデータが大量にあると推奨結果に悪影響を与えるため、前回の評価と次回の評価に大きな差があるデータなどの異常なデータを除外する。

6. 推薦システムの導入

6.1 推薦システム導入の意義

レコメンデーション システムの開発者にとって、理論的な知識について話すことは単なる基礎にすぎません。重要なのは、実際にコードを使用してレコメンデーション システムを実装することです。結局のところ、理論は実践から生まれます。実際に推奨システムを設計したり、推奨機能を完成させたりして初めて、推奨システムに関するこれまでの理論的知識を本当に理解できるようになります。理論的な知識をさらに昇華させ、実際の応用に移行することは、どの企業のプログラマーにとっても基本的なコーディング能力の要件です。

推奨システムを設計したり、推奨機能をシミュレートしたりするために利用できる方法やフレームワークは数多くあります。このフレームワークを使用すると、開発者は推奨機能モジュールを迅速に生成し、設計した推奨システムの全体的な機能をよりよく把握できるようになります。さらに、現在の開発状況から判断すると、フレームワークは大多数の開発者にとって必須の条件の 1 つです。なぜなら、開発分野の技術者のレベルに到達して初めて、フレームワークから真に脱却できるからです。しかし、フレームワークを使用することは「巨人の肩の上に立つ」ことでもあり、先人たちの経験やスキルを十分に応用し、学ぶことができるため、フレームワークから脱却する必要はありません。

6.2 フレームワークの分類

推奨システムで使用されるフレームワークのうち、より一般的なものは主に 2 つのカテゴリに分けられます。1 つは学術および科学研究の分野で広く使用されており、もう 1 つは企業開発の分野で一般的に使用されています。学術界で広く使用されているものとしては LibMF、SVDFeature などが挙げられますが、企業開発では一般的に Mahout、SparmMLib、Waffles などが使用されています。

開発言語の選択にも違いがあります。学術界では一般的に理論と開発を重視し、C、C++、Python を使用する傾向があります。企業開発では言語の人気と効率性を重視し、JAVA、Scala、Python を好みます。このことから、この分野では Python 言語がより人気が出ることがわかります。そのため、多くの大学ではPython言語を学ぶための新しい必修コースを導入しており、企業もPythonを使える学生や従業員を好んでいます。現在の開発の勢いは非常に強く、開発言語の人気チャンピオンである JAVA に追いついてトップの座を獲得することは可能だと多くの人が言っていますが、まだ実現していません。そのため、このシリーズが終了した後、高度な Python 言語シリーズを開始します。Python を習得すると、レコメンデーション システムの実装が容易になります。

7. まとめ

この時点で、レコメンデーションアルゴリズムの理論知識シリーズは終了です。Python 技術を理解して習得した後、レコメンデーションシステムまたはレコメンデーション機能の設計に関する実践的なシミュレーション演習を完了します。この一連の推奨アルゴリズムには多くのコンテンツが含まれています。読者がこれらのコンテンツを理解して初めて、推奨のより良い拡張と拡大を継続することができます。さらに、推奨システムの設計に関しては、この道は決して終わることはなく、継続的な改善が必要です。時代の発展に遅れを取らないために、推薦システムはますます注目されている人工知能分野と融合し、推薦の有効性と安定性をさらに高める傾向にあります。したがって、推薦システムとディープラーニングの出会いは止められず、これは推薦システムが将来的に新たなブレークスルーや変革を達成できる方向でもあります。将来的には、ディープラーニング技術がレコメンデーション システムの 2 対の翼として機能し、レコメンデーション システムがさらに発展していくことを期待しています。そのため、ディープラーニングや人工知能の分野での学習も不可欠です。今後は、ディープラーニングの知識についても簡単に概説し、読者がディープラーニング技術の基礎を身に付けられるよう支援します。

[51CTO オリジナル記事、パートナーサイトに転載する場合は、元の著者とソースを 51CTO.com として明記してください]

<<:  まだ気づいていないかもしれませんが、AIが人間を助けているアプリケーショントップ10

>>:  人工知能(AI)がビデオマーケティングを変える

ブログ    

推薦する

馬化騰と李延紅の対談:基礎技術は巨大産業の変革の基盤

11月8日、烏鎮で開催された世界インターネット大会で、馬化騰氏と李ロビン氏が首脳対談を行った。2人の...

自動化はウエスタン証券のデジタル従業員にとっての出発点

金融テクノロジーと伝統テクノロジーの相互支援は、徐々に証券業界の発展の中核的な原動力となってきました...

...

双子: 効率的な視覚的注意モデルの設計を再考する

著者 | 湘湘天志 張波 他Twins は Meituan とアデレード大学が提案した視覚的注意モデ...

...

「アバター」の脳-脳インターフェースの性能は2~3桁向上した

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

...

GPT-175Bを例にとった大規模言語モデルの分散トレーニングの定量分析とベストプラクティス

1. Transformer 大規模言語モデルのための SOTA トレーニング技術1. 大規模言語モ...

...

...

教育省:中国はAI教育政策の提供を増やす

12月7日から8日にかけて、中華人民共和国教育部、中国ユネスコ国家委員会、ユネスコの共催による「20...

この記事では、ニューラルネットワークBPアルゴリズムの原理とPythonでの実装について説明します。

私は最近、BP アルゴリズムを体系的に研究し、この研究ノートを書きました。私の能力が限られているため...

...