電子商取引業界では、ユーザーに対する商品の推奨は常に非常にホットで重要なトピックです。比較的成熟した方法は数多くありますが、それぞれに長所と短所があります。
共通アルゴリズムルーチン 電子商取引の製品推奨によく使われるアルゴリズムは次のとおりです。 製品の類似性に基づく たとえば、食品 A と食品 B の類似性は、価格、味、賞味期限、ブランドなどの要素に基づいて計算できます。蒸しパンを買うときに、ついでに餃子も一箱買って帰ることも考えられます。 メリット:コールドスタート:製品データがあれば、ユーザーデータがあまりないビジネスの初期段階でもレコメンデーションを行うことができます。 デメリット:前処理が複雑です。どの製品でも、寸法は少なくとも数百になることがあります。計算に適切な寸法を選択するには、お金では買えないエンジニアリングの経験が必要です。 典型的な例: Amazon の早期推奨システム。 相関ルールに基づく 最も一般的な方法は、ユーザーの購買習慣を利用することです。典型的なケースは「ビールおむつ」のケースですが、この方法は実際の運用ではあまり使用されていません。 まず、相関ルールを作成する必要があります。データの量は十分でなければなりません。そうでないと、信頼度が低くなりすぎます。データ量が増えると、より優れた方法がありますが、ハイライトがないと言えます。業界のアルゴリズムには、apriori、ftgrowなどがあります。 利点:シンプルで操作が簡単で、すぐに開始でき、導入が非常に便利です。 欠点:より多くのデータが必要であり、精度は平均的です。 典型的:初期のオペレーターからのパッケージの推奨事項。 アイテムベースの共同推奨 商品 A は Xiao Zhang、Xiao Ming、Xiao Dong が購入し、商品 B は Xiao Hong、Xiao Li、Xiao Chen が購入し、商品 C は Xiao Zhang、Xiao Ming、Xiao Li が購入したとします。 直感的に、商品 A と商品 C の購入グループは (商品 B と比較して) より類似しています。これで、商品 C を Xiao Dong に、商品 A を Xiao Li に推奨できます。この推奨アルゴリズムは比較的成熟しており、多くの企業で使用されています。 利点:比較的正確で、結果の解釈性が高く、副産物を使用して製品の人気ランキングを導き出すことができます。 デメリット:計算が複雑、データ保存のボトルネック、人気のないアイテムの推奨効果が低い。 典型例: No.1 ストアでの早期製品推奨。 ユーザーベースの共同推奨 ユーザー A がコカコーラ、スプライト、鍋の素を購入し、ユーザー B がトイレットペーパー、衣服、靴を購入し、ユーザー C が鍋、ジュース、セブンアップを購入したとします。 直感的に、ユーザー A とユーザー C は (ユーザー B に比べて) より類似しています。これで、ユーザー C が購入した他のアイテムをユーザー A に推奨したり、ユーザー A が購入した他のアイテムをユーザー C に推奨したりすることができます。利点と欠点は、重複のないアイテムベースの共同推奨と同様です。 モデルベースの推奨 SVD+、固有値分解などにより、ユーザーの購買行動行列を 2 セットの重み行列の積に分割します。1 セットの行列はユーザーの行動特性を表し、もう 1 セットの行列は製品の重要度を表します。ユーザー推奨プロセスでは、ユーザーの過去のトレーニング マトリックスに基づいて各製品の可能性を計算して推奨します。 利点:正確で、人気のない商品に対する推奨効果が非常に優れています。 デメリット:計算量が非常に大きく、行列分割の効率と容量のボトルネックが常に制約されていました。 標準: HP コンピュータの推奨事項。 時間ベースの推奨事項 これはかなり特殊で、電子商取引ではほとんど使用されませんが、Twitter、Facebook、Doubanでよく使用されます。承認と不承認しかない場合にコメントを並べ替える方法に関するものです。 ディープラーニングに基づく推奨 上記で推奨した例では、現在普及している CNN (畳み込みニューラル ネットワーク)、RNN (再帰型ニューラル ネットワーク)、DNN (ディープ ニューラル ネットワーク) が使用されていますが、これらはまだ実験段階です。 word2vec をベースにした比較的成熟した方法があり、これも今日の紹介の焦点です。 利点:推奨効果は非常に正確で、必要な基本ストレージ リソースが少なくなります。 デメリット:エンジニアリングアプリケーションが未熟であり、モデルのトレーニングとパラメータ調整技術が困難です。 典型例: Suning.com のメンバー製品推奨事項。 item2vec プロジェクトの紹介 Suning は現在、約 4 億点の商品、10,000 以上のカテゴリ、約 40 の主要カテゴリを保有しています。従来の共同推奨とリアルタイム計算を使用すると、サーバーのコストと計算能力が大幅に制限されます。 メンバーのR&D部門は主な推奨アプリケーション部門ではないため、より効率的で高速で比較的正確な、よりシンプルなモデルを選択することが予想されます。そのため、元のword2vecアルゴリズムに基づいてitemNvecメソッドを模倣しました。 まず、itemNvec を理論的に分解してみましょう。 01.パート1: n-gram 対象製品に対する前後の製品の影響度 これは、Yigoo における 2 人のユーザー、userA と userB の消費タイムラインです。灰色のボックスが観察対象です。灰色のボックス内で userA と userB の購入アイテムを変更した場合、直感的にわかる可能性はどの程度でしょうか。 直感的な経験から、これは不可能であるか、または決して頻繁に起こることではないことがわかります。したがって、特定のカテゴリの特定のユーザーについては、その消費行動が継続的に影響を受けるという最初の仮定があります。 言い換えれば、私が何を買うかは、以前に何を買ったかによって決まります。上記をアルゴリズム言語で説明するにはどうすればよいでしょうか。ナイーブベイズがスパムメールをどのように分類したかを思い出してみましょう。 「弊社では請求書、武器販売、航空母艦整備等も承っております」という文章はスパムでしょうか?
同じ理由
p1 と p2 のサイズを比較するだけで、次のように直接記述できます。
しかし、「当社は請求書、武器販売、航空母艦整備などに対応できます」という文言の順序がどのように変わっても、最終結果には影響しません。ただし、需要の早い段階で購入したものは、後の項目に大きな影響を与えます。 冷蔵庫=>洗濯機=>ワードローブ=>テレビ=>ソーダ、この注文プロセスは合理的です。 冷蔵庫 => 洗濯機 => ソーダ => テレビ => ワードローブ、このような順序付けのプロセスは比較的起こりにくいです。 しかし、ナイーブベイズの場合、それらは一貫しています。したがって、ここで検討する順序は、依然として前述のスパムの問題です。
ここでは、各単語は前の単語にのみ依存します。理論的には、1〜3 個の単語に依存することは通常許容されます。 前述のシーケンシャル ベイズは、有名なマルコフ仮定に基づいています。つまり、次の単語の出現は、その前の 1 つ以上の単語の結合確率のみに依存します。関連する詳細な理論的な数式はここでは示しませんが、ここにはアイデアが含まれています。 02. パート2: ハフマン符号化 より大規模なデータストレージ 私たちがよく使用するユーザーとアイテムのマッピングは、ワンホットエンコーディングの形式で実装されていますが、これには、データストレージ係数と次元障害の可能性が非常に高いという大きな欠点があります。 元のデータに戻りましょう。現在、Suning には約 4 億点の製品、10,000 を超える製品カテゴリ、約 40 の主要カテゴリがあり、会員数は 3 億人に達しています。 ユーザーベースの共同推奨のために、ユーザー製品に対応する購入関係マトリックスを構築する必要がある場合、4 億 x 6 億の 1/0 マトリックスを作成する必要がありますが、これはほぼ不可能です。Huffman は、ストレージに近似バイナリ ツリーの形式を使用します。 Yiguo 製品の購入金額を例に、ワンホットエンコーディングストレージ方式をバイナリツリーに置き換える方法を説明します。 仮定 818蘇寧のプロモーション期間中、統計によると、冷蔵庫=>洗濯機=>乾燥機=>テレビ=>ワードローブ=>ダイヤモンド(購入順序は上記の通り)というユーザーの注文チェーンがあり、そのうち冷蔵庫が15万台、洗濯機が8万台、乾燥機が6万台、テレビが5万台、ワードローブが3万台、ダイヤモンドが1万個販売されました。 ハフマン木の構築プロセス:
各層の各分岐プロセスでは、重みの大きいノードを 1 と見なし、重みの小さいノードを 0 と見なすことができます。その逆も同様です。 たとえば、ダイヤモンドのコードは 1000 で、灰色のボックスの場所であり、洗濯機のコードは 111 であることを知っておく必要があります。 このタイプのストレージは、0/1 ストレージ方式を利用し、組み合わせ位置の配置長さも考慮して、データ ストレージ スペースを節約します。 03. パート3: ノード確率 現在のデータの確率密度関数を最大化する ダイヤモンドの位置の場合、ハフマン コードは 1000 です。つまり、各バイナリ選択で、1 に 1 回、0 に 3 回割り当てる必要があります。 さらに、各分類プロセスでは、1/0 のみを選択できます。これは、ロジスティック回帰の 0/1 分類に似ていますか? したがって、lr のクロスエントロピーを損失関数として直接使用します。 実際、多くの機械学習アルゴリズムでは、まずモデルを想定し、次に損失関数を構築し、データを使用して損失関数をトレーニングして argmin (損失関数) のパラメータを見つけ、それを元のモデルに戻します。 このダイヤモンドの例を詳しく見てみましょう。 ステップ1: p(1|第1層の未知のパラメータ)=シグモイド(第1層の未知のパラメータ) ステップ2: p(0|第2層の未知のパラメータ)=シグモイド(第2層の未知のパラメータ) 同様に、3 番目と 4 番目のレイヤーは次のようになります。
そして、p(1|第1層の未知のパラメータ)、xp(0|第2層の未知のパラメータ)、xp(0|第3層の未知のパラメータ)、およびxp(0|第4層の未知のパラメータ)が最大になるとき、各層の未知のパラメータを見つけることができます。 このソリューションは、未知のパラメータ分布の偏微分とそれに続く勾配降下法を伴うロジスティックソリューションに似ています。 (非常に大規模なバッチ、ニュートンをオンデマンドで使用) 04. パート4: 近似ニューラルネットワーク 製品の類似性 パート3では、p(1|第1層の未知のパラメータ)のロジックがあります。第1層の未知のパラメータの1つは、積ベクトルです。 例えば: 「ビール=>スイカ=>カミソリ=>ペプシ」の順番で商品を購入したユーザーが1000万人いる。 100,000 人のユーザーが「ビール => リンゴ => カミソリ => ペプシ」という順序で商品を購入しました。ネイビー ベイズや 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、...) に置き換えたということです。単一の積ベクトルは意味がありません。 しかし、対積ベクトルの場合は、コサイン類似度を比較したり、カテゴリの類似度を比較したり、さらにはカテゴリの類似度を比較したりすることもできます。 Pythonコードの実装 01. データの読み取り
02. シンプルなデータの結合と並べ替え
03. モデルのトレーニング
次のステップは、モデルを使用して推奨製品をトレーニングすることです。ここでは、特定のビジネス ニーズと実際のデータ量に基づいて選択できる 3 つのアプローチがあります。 類似製品マッピング表
ユーザーが最後の操作で注目したアイテム x を考慮し、ユーザーが購入したアイテムを除外します。残りのアイテムは、ユーザーがまだ興味を持っているが、適切なアイテムや安価なアイテムを見つけられていないアイテムを表します。アイテム ベクトル間の類似性を通じて、類似性の高いアイテムを直接計算し、ユーザーに推奨することができます。 最大購入可能額 ユーザーが過去に購入したアイテムの順序に基づいて、現在のターゲット ユーザーが最近購入したアイテムに基づいて次に購入する可能性が高いものを特定します。 たとえば、過去のデータから、携帯電話とコンピュータを購入したユーザーは、今後 1 週間以内にバックパックを購入する可能性が最も高いことがわかります。この場合、最近コンピュータと携帯電話を購入したユーザーにコンピュータ バッグ製品をプッシュして、潜在的なショッピング ニーズを刺激することができます。
Lenovo メモリの推奨事項 最も購入される可能性が高い商品の中から、ユーザーの最近の購入行動のパターンと過去のユーザーの購入行動データを特定し、おすすめの商品を提供します。 同様のロジックがもう 1 つあり、以下に示すように、過去のユーザーの単一の購入に関するデータを参照して、対象ユーザーの最新の商品購入に基づいて推論を行うというものです。 この実装も非常にシンプルです。自分でコードを書いたわけではないので、ここでは掲載しません。それでも、word2vec のpredict_output_word(context_words_list, topn=10)を使用し、コンテキスト単語をトレーニング済みモデルへの入力として与えられた中心単語の確率分布を報告します。 上記は詳細に実装するのは非常に複雑なので、参考と実践のためにいくつかのアイデアを掲載しました。 |
<<: 畳み込みニューラルネットワークによる画像認識の仕組み
>>: 今後10年間で、人工知能とロボットは雇用に7つの影響を与える
2022年2月4日、第24回冬季オリンピックが北京で正式に開幕しました。 2008年の「一つの夢」...
プログラミング言語は流行ったり廃れたりするものですが、Java と C/C++ は変わりません。 [...
生成型 AI が人間と機械のコミュニケーション方法を変えるため、今年は人工知能にとって極めて重要な年...
近年、人工知能の継続的な発展とインテリジェント時代の静かな到来に伴い、顔認識に代表される生体認証技術...
【51CTO.comオリジナル記事】 [[337243]]よくよく数えてみると、一般的に誰もが悩まさ...
現在、人工知能 (AI) に関する同様の規制が世界中の複数の地域で施行され始めており、GDPR に関...
ロボット界のインターネット有名人といえば、ボストン・ロボット・ドッグを挙げなければなりません。そして...
人工知能に必要な条件:ディープラーニングモデル、ビッグデータ、計算能力著者: マイケル・チャン201...
[[433235]]この記事はLeiphone.comから転載したものです。転載する場合は、Leip...
導入まず正直に言うと、しばらくの間、私はディープラーニングをあまり理解できませんでした。関連する研究...
序文ここ数年、ニューラルネットワークを中心とした人工知能技術は、さまざまな種類のデータを深く掘り下げ...
「私たちは物事をあるがままに見ているのではなく、私たちが見ているように見ているのです。」彼女は、私...