1. 共通アルゴリズムルーチン 電子商取引業界では、ユーザーへの商品推奨は常に非常にホットで重要なトピックです。成熟した方法は数多くありますが、それぞれに長所と短所があり、おおよそ次のようになります。
メリット: コールドスタート。実際、製品データがあれば、ユーザーデータがあまりないビジネスの初期段階でもレコメンデーションを行うことができます。 デメリット: 前処理が複雑です。どの製品でも、寸法は少なくとも数百になることがあります。計算、設計、エンジニアリングに適切な寸法を選択する方法も非常に重要です。 典型例:Amazonの早期推奨システム
利点: シンプルで操作が簡単、すぐに開始でき、導入が非常に便利 デメリット: より多くのデータが必要であり、精度は平均的である 典型例: 初期のオペレーターからのパッケージの推奨
利点: 比較的正確で、結果の解釈性が高く、副産物を使用して製品の人気ランキングを導き出すことができます。 デメリット: 計算が複雑、データ保存のボトルネック、人気のないアイテムの推奨効果が低い 典型例: Yihaodian での早期製品推奨
利点: 正確で、人気のない商品に対して非常に優れた推奨効果があります 欠点:計算量が非常に大きく、行列分割の効率と容量のボトルネックは常に制約されている。 標準: HP コンピュータの推奨事項
利点: 推奨効果は非常に正確で、基本的なストレージリソースが少なくて済みます。 デメリット: エンジニアリングアプリケーションが未熟で、モデルのトレーニングとパラメータ調整の技術が難しい 典型例: Suning.com の会員向け製品推奨 2. item2vecプロジェクトの紹介 Suning は現在、約 4 億点の製品を扱っており、カテゴリは 10,000 を超え、主要カテゴリは 40 近くあります。従来の共同推奨とリアルタイム計算を使用すると、サーバーのコストと計算能力が非常に制限されます。これまでにも、推奨に基づくクロスセリングや、ユーザーの行動に基づく推奨の推定など、いくつかのアプリケーションが導入されています。メンバーのR&D部門は主な推奨アプリケーション部門ではないため、より効率的で高速で比較的正確な、よりシンプルなモデルを選択することが予想されます。そのため、word2vecの元のアルゴリズムに基づいてitemNvecメソッドを模倣しました。 まず、itemNvec を理論的に分解してみましょう。 パート1: n-gram 対象製品に対する前後の製品の影響度 これは、Yigoo における 2 人のユーザー、userA と userB の消費タイムラインです。灰色のボックスが観察対象です。灰色のボックス内の userA と userB の購入アイテムを変更すると、直感的にわかる可能性はどれくらいでしょうか。 直感的に、これは不可能、または決して一般的ではないことが分かるので、特定のカテゴリの一部のユーザーについては、その消費行動が継続的に影響を受けるという最初の仮定が立てられます。言い換えれば、私が何を購入するかは、以前に何を購入したかによって決まります。上記をアルゴリズム言語で説明するにはどうすればよいでしょうか? 思い出してみましょう。ナイーブベイズはどのようにスパムを分類したのでしょうか? 「弊社では請求書、武器販売、航空母艦整備等も承っております」という文章はスパムでしょうか?
同じ理由
p1 と p2 のサイズを比較するだけで、次のように直接記述できます。
しかし、「当社は請求書、武器販売、航空母艦整備などに対応できます」という文言の順序がどのように変わっても、最終結果には影響しません。ただし、需要の早い段階で購入したものは、後の項目に大きな影響を与えます。 冷蔵庫 => 洗濯機 => ワードローブ => テレビ => ソーダ、この注文プロセスは合理的です 冷蔵庫 => 洗濯機 => ソーダ => テレビ => ワードローブ、この順序付けのプロセスは比較的起こりにくい しかし、ナイーブベイズの場合、それらは一貫しています。 したがって、ここで検討する順序は、依然として前述のスパムの問題です。
ここでは、各単語は前の単語にのみ依存します。理論的には、1〜3 個の単語に依存することは通常許容されます。ベイズの順序に関する上記の考察は、有名なマルコフの仮定に基づいています。つまり、次の単語の出現は、その前の 1 つ以上の単語の結合確率のみに依存します。関連する詳細な理論的な数式はここでは示しませんが、これにはアイデアが含まれています。 パート2: ハフマン符号化 より大規模なデータストレージ 私たちがよく使用するユーザーとアイテムのマッピングは、ワンホットエンコーディングの形式で実装されていますが、これには、データストレージ係数と次元障害の可能性が非常に高いという大きな欠点があります。 元のデータセットに戻ります。現在、Suning には約 4 億の製品、10,000 を超える製品カテゴリ、約 40 の主要なカテゴリがあります。同時に、メンバー数は 3 億に達しています。ユーザーベースの共同推奨のために、ユーザー製品に対応する購入関係マトリックスを構築する必要がある場合、4 億 x 6 億の 1/0 マトリックスを作成する必要がありますが、これはほぼ不可能です。Huffman は、ストレージに近似バイナリ ツリーの形式を使用します。 Yiguo 製品の購入金額を例に、ワンホットエンコーディングストレージ方式をバイナリツリーに置き換える方法を説明します。 818 Suning プロモーション期間中、統計によると、冷蔵庫 => 洗濯機 => 乾燥機 => テレビ => ワードローブ => ダイヤモンド (購入アイテムの順序は上記のとおり) というユーザーの注文チェーンがあり、その中で冷蔵庫が 15 万台、洗濯機が 8 万台、乾燥機が 6 万台、テレビが 5 万台、ワードローブが 3 万台、ダイヤモンドが 1 万個販売されたと仮定します。 ハフマン木の構築プロセス 1. 二分木のノードとして{15,8,6,5,3,1}が与えられ、各木には1つのノードしかないので、6つの別々の木が存在する。 2. マージするノードの重み値が最小の2つのツリー、つまり{3}と{1}を選択します。マージ後、新しい重み3+1=4を計算します。 3. ノードリストから{3}、{1}ツリーを削除し、3+1=4の新しい結合ツリーを元のノードリストに戻します。 4. 木が1本だけ残るまで手順2~3を繰り返します。 各層の各分岐プロセスでは、重みの大きいノードを 1 と見なし、重みの小さいノードを 0 と見なすことができます。その逆も同様です。例えば、ダイヤモンドのコードは 1000 で、灰色のボックスの位置であり、洗濯機のコードは 111 であることを知る必要があります。このストレージは 0/1 ストレージ方式を使用し、組み合わせ位置の配置長さも考慮して、データ ストレージ スペースを節約します。 パート3: ノード確率 現在のデータの確率密度関数を最大化する ダイヤモンドの位置については、ハフマンコードは 1000 です。これは、各バイナリ選択で 1 を 1 回、0 を 3 回分割する必要があり、各分割プロセスで 1/0 のみを選択できることを意味します。これは、ロジスティック回帰の 0/1 分類に似ていますか? したがって、ここでも、lr のクロスエントロピーを損失関数として直接使用します。 実際、多くの機械学習アルゴリズムでは、まずモデルを想定し、次に損失関数を構築し、データを使用して損失関数をトレーニングして argmin (損失関数) のパラメータを見つけ、それを元のモデルに戻します。 このダイヤモンドの例を詳しく見てみましょう。 最初のステップ p(1|第1層の未知のパラメータ)=シグモイド(第1層の未知のパラメータ) ステップ2
同様に、3 番目と 4 番目のレイヤーは次のようになります。
次に、p(1|第1層の未知パラメータ)xp(0|第2層の未知パラメータ)xp(0|第3層の未知パラメータ)xp(0|第4層の未知パラメータ)の最大値に対応する各層の未知パラメータを見つけます。 解法はロジスティック解法に似ています。未知パラメータ分布の偏微分を使用し、後で勾配降下法を使用します(必要に応じて最大値、バッチ、ニュートン)。 パート4: 近似ニューラルネットワーク 製品の類似性 パート3では、p(1|第1層の未知のパラメータ)のロジックがあります。第1層の未知のパラメータの1つは、積ベクトルです。 例えば: 「ビール => スイカ => カミソリ => ペプシ」の順番で商品を購入したユーザーが 1,000 万人いる 10万人のユーザーが「ビール=>リンゴ=>カミソリ=>ペプシ」の順序で商品を購入しました。ネイビー・ベイズやn-gramなどの従来の確率モデルによれば、P(ビール=>スイカ=>カミソリ=>ペプシ)>>p(ビール=>リンゴ=>カミソリ=>ペプシ)となります。しかし、実際には、これら2つのグループは同じグループであり、属性特性も同じである必要があります。 各製品の特徴ベクトルをランダムに初期化し、パート 3 の確率モデルを通じてトレーニングし、最後に単語ベクトルのサイズを決定しました。さらに、これはニューラル ネットワーク アルゴリズムを通じて実行することもできます。 Bengio らは、2001 年に NIPS に発表された論文「A Neural Probabilistic Language Model」で詳細な手法を紹介しました。 ここで知っておく必要があるのは、最小次元の積について、0-1 点 (0、0、0、0、0、1、0、0、0、0、0...) を積ベクトル (0.8213、0.8232、0.6613、0.1234、...) に置き換えたということです。単一の積ベクトルは意味がありませんが、積ベクトルのペア間のコサイン類似度を比較して、カテゴリの類似度や積カテゴリの類似度を比較することができます。 3. Pythonコードの実装 1. データの読み取り
2. シンプルなデータ統合
3. モデルのトレーニング
次のステップは、モデルを使用して推奨製品をトレーニングすることです。ここでは、特定のビジネス ニーズと実際のデータ量に応じて選択できる 3 つのアイデアがあります。 3.1 類似製品マッピング表
ユーザーが最後の操作で注目したアイテム x を考慮し、ユーザーが購入したアイテムを除外します。残りのアイテムは、ユーザーがまだ興味を持っているが、適切なアイテムや安価なアイテムを見つけられていないアイテムを表します。アイテム ベクトル間の類似性を通じて、類似性の高いアイテムを直接計算し、ユーザーに推奨することができます。 3.2 商品の最大購入可能数 ユーザーが過去に購入したアイテムの順序に基づいて、現在のターゲット ユーザーが最近購入したアイテムに基づいて次に購入する可能性が高いものを特定します。 たとえば、過去のデータから、携帯電話とコンピュータを購入したユーザーは、今後 1 週間以内にバックパックを購入する可能性が最も高いことがわかります。この場合、最近コンピュータと携帯電話を購入したユーザーにコンピュータ バッグ製品をプッシュして、潜在的な日常的なニーズを刺激することができます。
3.3 連想記憶の推奨 3.2では、ユーザーの最近の購買行動に基づいて、過去のユーザーの購買行動データからパターンを発見し、推奨商品を提供しました。同様のロジックがもう 1 つあり、以下に示すように、過去のユーザーの単一の購入に関するデータを参照して、対象ユーザーの最新の商品購入に基づいて推論を行うというものです。 この実装も非常にシンプルです。自分でコードを書いたわけではないので、投稿しません。私はまだword2vecでpredict_output_word(context_words_list, topn=10)を使用しています。学習済みモデルへの入力としてコンテキスト単語が与えられた場合、中心単語の確率分布を報告します。 実際、詳細に行うのはかなり複雑です。ここでは単にいくつかのアイデアを投稿しただけです。理解できない場合は、私にプライベートメッセージを送ってください。以上です。最後に、読んでいただきありがとうございました。 |
<<: Raft アルゴリズムの原理と CMQ への応用 (パート 1)
>>: 効率的な多次元空間ポイントインデックスアルゴリズム - Geohash と Google S2
[[437239]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitA...
過去 10 年間の AI システムの進歩のスピードは驚くべきものでした。 2016年の囲碁対局でアル...
AIはここまでの発展を経て意識を獲得したのでしょうか?数日前、チューリング賞受賞者のベンジオ氏が参加...
今日は、go-openai を使用して chatGPT を呼び出すという興味深いトピックを皆さんと共...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[51CTO.com より引用] RSA カンファレンスは、世界の IT セキュリティ動向のバロメー...
過去数年間、教師なし学習と自己教師あり学習 (SSL) は大きな進歩を遂げてきました。SSL を通じ...
DNAの二重らせん構造やブラックホールの存在など、いくつかの科学的発見は何か新しいことを明らかにする...
特別なイベントの影響を受けて、非接触型の配達や食事が需要のトレンドになっています。その結果、業界にお...
[[187102]] Siri に道順を尋ねるたびに、複雑なコード列がアクティブ化され、「Siri」...
ビッグデータ、モノのインターネット、人工知能に代表される新世代の情報技術は大きな進歩を遂げ、産業化を...