商品レコメンデーションシステムの分析 | JD Cloudテクニカルチーム

1。概要

この記事では、主に推奨システムを分析し、主に推奨システムの定義、推奨システムの基本フレームワークを紹介し、関連する設計推奨の手法とアーキテクチャを簡単に紹介します。推薦制度に興味がある学生や基礎を持っている学生向けですが、私のレベルは限られていますので、どなたでも添削していただければ幸いです。

2. 商品レコメンドシステム

2.1 推薦制度の定義

レコメンデーション システムは基本的に情報過多の問題を解決し、ユーザーが興味のあるアイテムを見つけられるようにし、ユーザーの潜在的な興味を深く引き出します。

2.2 推奨アーキテクチャ

実際、レコメンデーション システムの中核となるプロセスは、呼び出し、並べ替え、再配置だけです。

リクエストプロセス

ユーザーがページを開くと、フロントエンドはユーザー情報 (PIN や UUID など) を伝えてバックエンド インターフェイス (カラーを通じて間接的に呼び出されます) をリクエストします。バックエンドがリクエストを受信すると、一般に、最初にユーザー ID に従って関連するポリシー設定を分割して取得します (ab 戦略)。これらの戦略は、次に呼び出されるリコール モジュール、ソート モジュール、および再配置モジュールのインターフェイスを決定します。一般リコールモジュールは複数のリコールに分割されており、各リコールは複数の製品のリコールを担当し、並べ替えと並べ替えはこれらの製品の順序を調整する責任を負います。最後に、適切な製品が選択され、価格や画像などの関連情報が補足されてユーザーに表示されます。ユーザーは興味があるかどうかに応じてクリックするかしないか選択し、これらのユーザーの行動はログを通じてデータプラットフォームに報告され、その後のユーザーの行動を利用した効果分析や商品のレコメンドの基盤となります。

実際、話したい質問がいくつかあります。

なぜ想起、並べ替え、再配置というファネル階層を採用するのでしょうか?

(1) 性能面について

究極: 100万レベルの製品ライブラリからユーザーが興味のある一桁のアイテムを選別します。

複雑な仕分けモデルのオンライン推論には時間がかかり、仕分けモデルに入力される製品の数を厳密に制御する必要があります。分解する必要がある

(2) 対象の側面から

リコール モジュール: リコール モジュールのタスクは、ユーザーが好む可能性のあるアイテムを見逃さないことを目的として、多数のアイテムからいくつかの候補アイテムを迅速に選別することです。通常、リコール モジュールは、いくつかの簡略化された機能またはモデルを使用して、マルチウェイ リコールを採用します。

分類モジュール: 分類モジュールのタスクは、正確に分類し、ユーザーの過去の行動、興味、好み、およびその他の情報に従って、想起モジュールによって選別された候補アイテムを分類することです。並べ替えモジュールは通常、いくつかの複雑なモデルを使用します。

再ランキング モジュール: 再ランキング モジュールのタスクは、推奨事項の精度とパーソナライズをさらに向上させるために、ランキング モジュールの結果を再ランク付けまたは調整することです。再配置モジュールは通常、単純だが効果的なアルゴリズムを使用します。

腹筋実験とは何ですか?

参考论文:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation(google2010)

モデルの長所と短所を真に評価できるのはオンライン実験のみであり、ab 実験は実験の効果を迅速に検証し、モデルを迅速に反復できます。新しい機能をリリースするリスクを軽減します。

ab アルゴリズム: ハッシュ (uuid+実験 ID+作成タイムスタンプ)%100

特徴: シャント + 直交

2.3 リコール

リコール層の存在は、ユーザーが最初に膨大な製品プールから良品のバッチを選別するためだけに存在します。計算速度と再現率 (すべての陽性サンプルに対する陽性サンプルの割合) の間の矛盾のバランスをとるために、マルチパス再現戦略が採用され、各再現戦略は単一の特徴または戦略のみを考慮します。

2.3.1 マルチチャンネルリコールの長所と短所

マルチウェイリコール: さまざまな戦略、機能、または単純なモデルを使用して候補セットの一部をリコールし、並べ替えのために候補セットを混ぜ合わせます。再現率が高く、速度が速く、多方向の再現が相互に補完します。

マルチチャンネルリコールでは、各リコールの切り捨てられた数値 K はハイパーパラメータであり、手動によるパラメータ調整と高コストが必要であり、リコール チャネルには重複の問題と冗長性が存在します。

マルチチャンネルリコールに代わるリコールのようなものがあるのか​​どうか、ベクトルリコールのアプリケーションが誕生しますが、今のところはまだベクトルリコールと補助的なリコールのアーキテクチャに基づいています。

2.3.2 リコールの分類

それは主に、非個人化された想起と個人化された想起の 2 つのカテゴリに分類されます。非パーソナライズド リコールは主にホット プッシュであり、レコメンデーション分野でのマシュー効果は深刻で、製品の 20% がクリックの 80% に寄与しています。パーソナライズされたリコールは、主にユーザーが興味のある製品を発見し、各ユーザーの違いに対処することに重点を置き、製品の多様性を高め、ユーザーの執着度を維持することを目的としています。

非個人化された想起

(1) 一般的なリコール

過去 7 日間のクリック数、いいね数、売上の多い商品のリコール

(2) 新製品のリコール

最新アイテムのリコール

パーソナライズされたリコール

(1) ラベルリコール、地域リコール

ラベルリコール: ユーザーが興味のあるカテゴリ、ブランド、店舗リコールなど

地域別リコール: ユーザーの地域に応じて、高品質の製品をその地域でリコールします。

(2) リコールを参照

協調フィルタリング アルゴリズムは、ユーザーの行動データに基づいてユーザーの行動の好みをマイニングし、ユーザーとアイテムの行動行列 (共起行列) に基づくユーザーの行動の好みに応じてアイテムを推奨します。ユーザーの行動には通常、閲覧、いいね、追加購入、クリック、注目、共有などが含まれます。

協調フィルタリングは、ユーザーベースの協調フィルタリング (UCF)、アイテムベースの協調フィルタリング (ICF)、およびモデルベースの協調フィルタリング (隠れセマンティック モデル) の 3 つのカテゴリに分類されます。ユーザーにアイテムを推奨するかどうかは、最初にユーザーとアイテムを関連付ける必要があり、関連付けのポイントが別のアイテムであるか別のユーザーであるかによって、そのアイテムが属する協調フィルタリングのタイプが決まります。隠れたセマンティック モデルは、ユーザーの行動データに基づいて、ユーザーの潜在的な関心の特性を自動的にクラスタリングしてマイニングします。したがって、ユーザーとアイテムは、潜在的な関心の特徴を通じて関連付けられます。

アイテムベースの協調フィルタリング(ICF): ユーザーにアイテムを推奨するかどうかを決定するには、まず、ユーザーの履歴行動に記録されたアイテムとアイテムの間の類似性に基づいて、そのアイテムに対するユーザーの関心を推測します。アイテムをお勧めします。協調フィルタリングのプロセス全体は、主に項目間の類似性の計算、項目に対するユーザーの関心の計算、結果の並べ替えと傍受のステップに分かれています。

商品類似度の計算:

類似性を測定するには、主に角度余弦距離、Jaccard 式などの方法があります。ユーザーやアイテムの表現は多様であるため、これらの類似性の計算は非常に柔軟です。ユーザーとアイテムの行動マトリックスを使用して類似度を計算できます。また、ユーザーの行動、アイテムの属性、コンテキスト上の関係に基づいてユーザーとアイテムのベクトル表現を構築して類似度を計算することもできます。

夾角のコサイン距離公式: cos⁡θ=(x1*x2+y1*y2)/(√(x12+y12 )*√(x22+y22 ))

ジャカード式 J(A,B)=(|A⋂B|)/(|A⋃B|)

  商品a 商品b 商品c 商品d
ユーザーA 1 0 0 1
ユーザーB 0 1 1 0
ユーザーC 1 0 1 1
ユーザーD 1 1 0 0

夾角のコサイン距離式により、商品 a と b の類似度が計算されます。

Wab=(1*0+0*1+1*0+1*1)/(√(1^2+0^2+1^2+1^2 )*√(0^2+1^2+ 0^2+1^2 ))=1/√6

Spark は ICF を実装します: https://zhuanlan.zhihu.com/p/413159725

問題: コールド スタートの問題、ロングテール効果。

(3) ベクトルリコール

ベクトル化された再現: ユーザーとアイテムの低次元のベクトル化表現を学習することにより、再現はベクトル空間の近傍検索問題としてモデル化され、再現の汎化能力と多様性が効果的に向上します。これは、再現の中心的な再現チャネルです。レコメンデーションエンジン。

ベクトル: すべてをベクトル化できます。埋め込みとは、低次元の密ベクトルを使用してオブジェクト(単語または商品) を表現することです。主な機能は、スパース ベクトルを密ベクトルに変換することです (次元削減の効果)。ここには特定の深い意味が含まれているため、オブジェクトの特性の一部を表現することができ、ベクトル間の距離はオブジェクト間の類似性を反映します。

ベクトル呼び出しステップ: ベクトルを生成するためのオフライン トレーニング、オンライン ベクトル検索。

1. ベクトルを生成するためのオフライントレーニング

word2vec: ワードベクトルの発案者。入力層、隠れ層、出力層の 3 層のニューラル ネットワークで構成されます。隠れ層には活性化関数がなく、出力層はソフトマックスを使用して確率を計算します。

目的関数

ネットワーク構造:

一般に、入力は単語のシーケンスであり、各単語に対応するベクトルはモデルのトレーニング後に取得できます。レコメンデーション分野への応用では、入力はユーザーのクリックシーケンスであり、モデルのトレーニング後に各製品のベクトルが取得されます。

長所と短所: シンプルで効率的ですが、動作シーケンスのみが考慮され、他の機能は考慮されません。

ツインタワーモデル:

ネットワーク構造: それぞれユーザー タワーおよびアイテム タワーと呼ばれます。ユーザー タワーは、ユーザー ID、性別、年齢、関心のある第 3 レベルのカテゴリ、ユーザーのクリック シーケンス、ユーザー アドレスなどのユーザー側の機能を入力として受け取ります。アイテム タワーは受け入れます。製品 ID、カテゴリ ID、価格、過去 3 日間の注文量などの製品側の機能。データ トレーニング: (ポジティブ サンプル データ、1) (ネガティブ サンプル、0) ポジティブ サンプル: クリックされた製品、ネガティブ サンプル: グローバルでランダムな製品サンプル (または同じバッチ内の他のユーザーのクリック サンプル)

長所と短所: 効率的、リコール機能に完全に適合、ユーザー ベクトルを取得するためのオンライン リクエスト、アイテム ベクトルの検索とリコール、高度な一般化、ユーザー タワーとアイテム タワーは分離されており、最後にのみ対話します。

2. オンラインベクトル検索

ベクトル検索: ベクトル空間モデルに基づく情報検索方法であり、大規模なテキスト コレクション内のクエリ ベクトルに最も類似したドキュメント ベクトルを迅速に見つけるために使用されます。情報検索、推奨システム、テキスト分類などに広く使用されています。

ベクトル検索のプロセスでは、ベクトル間の類似度を計算し、最終的により類似度の高い TopK ベクトルを返します。ベクトルの類似度を計算する方法は数多くあります。ベクトルの類似度を計算する方法には、ユークリッド距離、内積、コサイン距離などがあります。正規化後の内積はコサイン類似度の計算式と等価になります。

ベクトル検索の本質は近傍検索 (ANNS) であり、クエリ ベクトルの検索範囲を可能な限り縮小し、クエリの速度を向上させます。

現在業界で大規模に使用されているベクトル検索アルゴリズムは、基本的に次の 3 つのカテゴリに分類できます。

  • 局所性を考慮したハッシュ (LSH)
  • グラフベース (HNSW)
  • 積ベースの量子化

LSH についての簡単な紹介

LSH アルゴリズムの中心的な考え方は次のとおりです。元のデータ空間内の 2 つの隣接するデータ ポイントを同じマッピングまたは投影を通じて変換した後、これら 2 つのデータ ポイントが新しいデータ空間でもまだ隣接している確率は非常に高く、それらのデータ ポイントは次のとおりです。隣接するデータ ポイントが同じバケットにマッピングされる確率は非常に小さいです。

データ セット内のすべての点を横断する総当り検索と比較し、ハッシュを使用すると、最初にクエリ サンプルがどのバケットに該当するかを見つけます。空間の分割が必要な類似性尺度に基づいて分割されている場合、クエリ サンプルの最近傍クエリ サンプルのバケットに含まれる可能性が高いため、すべてのデータ セットを走査するのではなく、現在のバケット内を走査して比較するだけで済みます。ハッシュ関数 H の数が多すぎると、クエリ サンプルとそれに対応する最近傍が同じバケットに分類される可能性が非常に低くなります。この問題を解決するには、このプロセスを L 回繰り返すことができます (毎回異なるハッシュ)関数)を使用して、最近傍の再現率を高めます。

ケース: word2vec に基づくベクトルリコール

2.4 並べ替え

レコメンダー システムの要点

ソート段階は粗ソートと詳細ソートに分けられ、一般に粗ソートは再現結果のデータ量が比較的大きい場合に行われます。

進化

Wide&Deep の簡単な紹介

背景: 手動による特徴の組み合わせの記憶効果は優れていますが、特徴エンジニアリングは多大な労力を要し、これまでに登場したことのない特徴の組み合わせは記憶できず、一般化することもできません。

目的: 一般化と記憶能力の両方を考慮したモデルを作成する(歴史情報の有効活用と高い表現力)

(1) 記憶能力モデルは、履歴データ中の項目や特徴の共起頻度の能力を直接学習して履歴データの分布特性を記憶するものであり、簡易モデルでは、データ内の特徴や組み合わせた特徴を簡単に見つけることができます。結果に大きな影響を与え、強力な特徴を記憶できるように重みを調整します。

(2) モデルの汎化機能により特徴の相関関係が伝達され、まばらな特徴や稀な特徴と最終的なラベルとの相関を探索する機能が備わっており、非常にまばらな特徴ベクトル入力であっても安定したスムーズな推奨確率を得ることができます。改善された一般化の例: 行列因数分解、ニューラル ネットワーク

メモリと一般化機能 (結果の精度とスケーラビリティ) の両方を考慮して、広い部分はモデルのメモリに焦点を当て、多数の過去の動作特徴を迅速に処理します。深い部分はモデルの一般化、新しい世界の探索、およびモデルの相関関係に焦点を当てます。特徴を転送し、まばらな特徴を探索し、最終ラベルまでの珍しい特徴の相関関係を明らかにする能力は、強力な表現力を持っています。最後に、広い部分と深い部分を組み合わせて、統一されたモデルを形成します。

幅広部分は基本的な線形モデルであり、y=W^T X+b で表されます。X 特徴部分には、基本特徴と交差特徴が含まれます。クロス フィーチャは広い部分で非常に重要であり、フィーチャ間の相互作用を捕捉し、非線形性を追加する役割を果たします。

深部は埋め込み層+3層ニューラルネットワーク(relu)、フィードフォワード式

合同訓練

長所と短所: 従来のアルゴリズムからディープラーニング アルゴリズムまで、マイルストーンとなる推奨/広告/検索ランキング アルゴリズムの開発に重要な基盤を築きました。メモリと汎化機能の両方を考慮しますが、ワイド側では依然として機能を手動で組み合わせる必要があります。

参考論文: レコメンダーシステムのためのワイド&ディープラーニング

2.5 再配置

定義: 微調整後に結果の順序を微調整することで、一方ではグローバルな最適化を実現し、他方ではビジネスの要求を満たし、ユーザー エクスペリエンスを向上させます。たとえば、分散戦略、強力な挿入戦略、露出の増加、高感度のフィルタリングなどです。

MMRアルゴリズム

製品の多様性に関する課題の解決

目的: 推奨結果の多様性と関連性のバランスをとるため、推奨結果の正確性を確保しながら、推奨結果の多様性を確保する

数式などのアルゴリズム原理

D: 製品コレクション、Q: ユーザー、S: 選択された製品コレクション、R\S: R 内の選択されていない製品コレクション

def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):
    #s 排序后列表 r 候选项
    s, r = [], list(itemScoreDict.keys())
    while len(r) > 0:
        score = 0
        selectOne = None
        # 遍历所有剩余项
        for i in r:
            firstPart = itemScoreDict[i]
            # 计算候选项与"已选项目"集合的最大相似度
            secondPart = 0
            for j in s:
                sim2 = similarityMatrix[i][j]
                if sim2 > second_part:
                    secondPart = sim2
            equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)
            if equationScore > score:
                score = equationScore
                selectOne = i
        if selectOne == None:
            selectOne = i
        # 添加新的候选项到结果集r,同时从s中删除
        r.remove(selectOne)
        s.append(selectOne)
    return (s, s[:topN])[topN > len(s)]




これは、ユーザーに最も関連性の高い項目と、選択した項目との関連性が最も低い項目を選択することを意味します。時間計算量 O(n2) は、選択肢の数を制限することで時間計算量を軽減できます。

エンジニアリング実装:ユーザーとアイテムの相関関係、アイテム間の類似度を入力として必要、ユーザーとアイテムの相関関係はソートモデルの結果に置き換え可能、アイテム間の類似度は協調フィルタリングなどのアルゴリズムで取得可能. コモディティ ベクトル、コサイン距離を計算します。また、同じ第 3 レベルのカテゴリ、同じストアなどで表されるかどうかという単純なものにすることもできます。

3. まとめ

簡単なおしゃべりはここまでですが、皆さんにレコメンデーション システムを理解していただき、レコメンデーション アーキテクチャ全体とレコメンデーション全体のモジュールを紹介したいと思います。私のレベルが限られているため、各モジュールは特に詳しく説明されていませんが、今後も仕事の中でこの分野を研究し、細部を掘り下げて、皆様により良いものを提供できればと思っています。ありがたい!

著者: Jingdong Retail 燕仙東

出典: JD Cloud 開発者コミュニティ

工業情報化省: 未登録のアプリにはネットワーク アクセス サービスを提供しない Go 1.21 が正式リリースRuan Yifeng が TypeScript チュートリアル」をリリース Vim の父 Bram Moolenaar 氏が病気で死去 自社開発カーネルLinus が個人的にコードをレビュー, Bcachefs ファイル システムによって引き起こされた「内紛」を鎮めることを望んでいます. ByteDance はパブリック DNS サービスを開始しました. 素晴らしい, 今月 Linux カーネル メインラインにコミットしました
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4090830/blog/10093996