10 Traditional Machine Learning Algorithms

CF ベースの推薦アルゴリズム

1.1 アルゴリズムの概要

CF(協調フィルタリング)は、類似した興味や関心の原理を利用して推薦を行う手法として簡単に説明できます。協調フィルタリングには主に 2 つのタイプがあり、1 つはアイテムベースの協調フィルタリングアルゴリズム、もう 1 つはユーザーベースの協調フィルタリングアルゴリズムです。ここでは主にアイテムベースの協調フィルタリングアルゴリズムを紹介します。

ユーザー集合とアイテム集合が与えられたとき、Vi を異なるユーザーのアイテムに対する評価ベクトルとすると、アイテム i とアイテム j の相関係数は以下のようになります。

上記の式ではコサイン類似度を用いて相関係数を計算しています。相関係数の計算方法には、ジャカード係数、ピアソン相関係数などもあります。

ユーザー u のあるアイテムに対する嗜好を計算します。ユーザー u のアイテム i に対するスコアを skor(u,i) とし、ユーザー u のアイテム i に対する協調フィルタリングスコアを rek(u,j) とします。

1.2 ビジネス実践

ショッピングカートを例にとり、ビジネス上の課題として、ユーザーの過去の購入記録に基づいて商品を推薦する方法を考えます。協調フィルタリングアルゴリズムの実装方法は以下の通りです。

pembeli はユーザーが購入した商品のベクトルを表し、全ユーザーの集合を表します。また、ユーザーの商品に対するスコアを表し、以下のように定義されます。

ステップ 1:アイテム間の相関係数の計算

pembelisi をユーザーが購入した商品のベクトルとし、pembelii=(...,bu,i,...) u∈U と表します。ここで U は全ユーザーの集合を表し、bu,i はユーザー u の商品 i に対するスコアを表し、以下のように定義されます。

すると、商品 i と商品 j の相関係数は以下のようになります。

上記の式ではコサイン類似度を用いて相関を計算しています。つまり、ユーザーの商品購入ベクトル間の角度が小さいほど類似度が高いことを意味します。また、ピアソン係数、ジャカード係数、その他の専用式を用いて相関を計算することも可能ですが、ここでは割愛します。

ステップ 2:ユーザーの商品に対する協調フィルタリングスコアの計算

ユーザー u が与えられたとき、ユーザーの購入履歴の商品ベクトルを historyu=(…,hu,i,…) i∈I とします。ここで I は全商品の集合を表します。

アイテム j に対する協調フィルタリングスコアは以下のように計算されます。

ステップ 3:ユーザーへの商品推薦

ステップ 2 を通じて、全データベースに対するユーザーの協調フィルタリングスコアを計算し、上位 10 件を取得してユーザーに表示します。

関連ルールベースの推薦アルゴリズム

2.1 アルゴリズムの概要

関連ルールベースの推薦は、履歴データに基づいて異なるルール間の関係を計算する手法です。たとえば X→Y というルールは、事象 X が発生した後に事象 Y が一定の確率で発生することを意味し、この確率は履歴データの統計から得られます。

ルール X→Y には、それを評価する 2 つの指標があります。1 つは支持度で、すべてのサンプルデータの中で X と Y が同時に含まれるサンプルの割合を表します。もう 1 つは確信度で、X を含むすべてのサンプルの中で Y を含むサンプルの割合を表します。

関連ルールの推薦アルゴリズムで最も重要なのは、最も頻繁に出現するアイテムをいかに見つけるかです。業界では主に Apriori アルゴリズムと FP tree の 2 つの方法がありますが、大量のインターネットユーザーの特性を扱う場合、これらのアルゴリズムを使用して頻出アイテム集合をマイニングする計算複雑度は非常に高くなります。ここでは、ビジネスで実用的なシンプルな関連ルールアルゴリズムを紹介します。

2.2 ビジネス実践

ショッピングカートを例にとり、ビジネスシナリオはユーザーの購入履歴に基づいて商品を推薦することです。以下では、シンプルな関連ルールの推薦アルゴリズムの構築方法を紹介します。

ステップ 1:データ準備

まず、ユーザーの閲覧購入記録を収集し、閲覧時のユーザー特徴データを紐付けます。サンプル総数を n とし、データフォーマットは以下のようになります。

ユーザー特徴は、ユーザーが過去に購入した商品 ID でも、ユーザーの属性特徴(年齢、性別、居住地など)でも構いません。

ステップ 2:特徴交差

上記の表で、同じサンプルについて、すべての特徴をペアで交差させて長さ 2 の特徴ルールを生成し、長さ 1 の元の特徴ルールと組み合わせて、関連ルールの入力データ表を以下の通り得ます。

上記の表では、長さ 1(元の特徴)と長さ 2(元の特徴のペア交差)のルールのみを、次のルールの候補集合として使用します。長さ 3 のルールを作成しない主な理由は、ルール空間の複雑さを抑えるためです。

ステップ 3:関連ルールの生成

まず、上記の表の特徴を展開して、各特徴が 1 つのレコードを持つようにします。以下の表に示します。

各ルールの支持度、確信度、リフト値を計算します。まず変数定義を行います。

f→i は、特徴 f を持つユーザーがアイテム i を購入する事象を表します。

sf,i はルール f→i の支持度を表します。

cf,i はルール f→i の確信度を表します。

sf,i の計算方法は以下の通りです。表 3 の統計表で、特徴=f、商品=i、ユーザー購入=0 を同時に満たすレコード数を notbuyersf,i と記録します。

ルールの選択は、以下の条件でフィルタリングできます。

条件 1:一定値以上であること。参考値は 20〜100 です。

条件 2:すべてのルールの支持度を降順に並べ替え、75 位を参考値とし、sf,i がこの値以上であること。

条件 3:すべてのルールの確信度を降順に並べ替え、75 位を参考値とし、cf,i がこの値以上であること。

ステップ 4:ユーザーへの商品推薦

ユーザー u と商品 i が与えられたとき、上記の方法で生成されたユーザー u の特徴集合を F とします。この特徴集合の下で、i に対して有効なすべての特徴の平均値を使用して、ユーザー u の購入確率 p(u,i) を測定します。

上記の式を使用して、ライブラリ内の上位 10 商品を計算してユーザーに推薦します。実際の計算では、ライブラリ全体の計算は行わず、特徴インデックス技術を使用して大量の冗長計算を削減します。

ベイズベースの推薦アルゴリズム

3.1 原理の概要

ベイズの定理は、ランダム事象 A と B の条件付き確率の相互変換に関する定理です。ベイズの式は以下の通りです。


上記の式で、P(Bi|u) は事象 u が発生したときに事象 Bi が発生する確率を表し、P(Bi) は事象 Bi が発生する確率を表し、P(u) は事象 u が発生する確率を表します。

上記の定理を使用してパーソナライズされた推薦を行う方法について、ビジネス実践の例を紹介します。

3.2 ビジネス実践

アプリストアでのアプリ推薦を例にとります。ビジネスシナリオは、ユーザーがアプリストアに入ったときに、ユーザーのインストール済みアプリリストに基づいてアプリを推薦することです。

ステップ 1:問題の分解

ユーザー u が与えられたとき、ユーザーにアプリ B を推薦します。ベイズの式によると、ユーザーがインストールする確率は以下のようになります。

ユーザーのインストールリストを {A1,…,An} とし、ユーザー u を事象 {A1,…,An} と見なします。問題を簡略化するため、Ak は互いに独立であると仮定すると、以下のようになります。

推薦シナリオでは、ユーザーに対して異なるアプリのスコアを計算し、降順で推薦します。同じユーザーに対して P(u) は変わらないため、以下の式をソートの基準として使用できます。

全ライブラリのアプリ集合を記録すると、ベイズ推薦モデルには主に 2 つのパラメータ集合があります。

ステップ 2:データ準備

まず、アプリストアでのユーザーのアプリ閲覧履歴を収集し、閲覧時のユーザーのインストールリストを紐付けます。データフォーマットは以下の通りです。

ステップ 3:モデルパラメータの計算

パラメータ集合 {P(B)|B∈I} の計算:アプリ B が与えられたとき、表 1 に基づいて、まず「表示アプリ=B」のサンプル数を showNumsB と記録し、次に「表示アプリ=B」かつ「ユーザーインストール済み=1」のサンプル数を installNumsB と記録して計算します。

パラメータ集合 {P(Ai|B)|B∈I,Ai∈I}:アプリ B と Ai が与えられたとき、表 1 に基づいて、まず「Ai∈インストールリスト」かつ「表示アプリ=B」のサンプル数を showNumsAi,B と記録します。次に「Ai∈インストールリスト」かつ「表示アプリ=B」かつ「ユーザーインストール済み=1」のサンプル数を installNumsAi,B として計算します。

P(Ai|B) の計算では、サンプル不足により外れ値が発生する可能性があります。この状況を回避するため、経験に基づいて最小インストール数を追加する必要があります。ここでは最小インストール数を 100 とします。

ここで、P(Ai) は全ユーザーの中でアプリ Ai をインストールしたユーザーの割合を表します。

ステップ 4:ユーザーへのアプリ推薦

ユーザー u と推薦候補アプリ集合が与えられたとき、上記の方法を使用して、候補集合内の各アプリに対するユーザー u のスコア sortScore(u,B) を計算し、この値に基づいて降順に並べ替え、上位 10 個のアプリをユーザーに推薦します。

KNN ベースの推薦アルゴリズム

4.1 アルゴリズムの概要

KNN(K 近傍法)は、機械学習の中で比較的シンプルなアルゴリズムです。その原理は以下の通りです。分類が必要なアイテム A について、何らかの方法でアイテム間の距離を定義し、そのアイテムの最近傍を見つけます。既知のカテゴリを持つ k 個のアイテムがあり、その k 個のアイテムの中で最も多く出現するカテゴリがアイテム A のカテゴリとなります。以下に示します。

KNN の計算において、重要なのはアイテム間の距離をどのように定義するかです。以下に、アイテム間の距離を計算するいくつかの方法を簡単に列挙します。ユークリッド距離、マンハッタン距離、チェビシェフ距離、ジャカード係数、コサイン類似度、ピアソン相関係数です。

以下では、実際のビジネスにおける KNN の応用を紹介します。

4.2 ビジネス実践

ビジネスシナリオ 1:アプリストアを例にとり、ユーザーがアプリのダウンロードを完了したときに「他のユーザーはこれもダウンロードしています」の推薦がトリガーされます。以下では、このシナリオでの推薦を KNN アルゴリズムで実装する方法を説明します。

まず、アプリの次元ベクトルを定義します。シンプルな方法は、すべての特徴を離散化し、One-Hot エンコーディングを行って、すべての次元で 0/1 の値を持つベクトル V を得ることです。たとえば、各ユーザーを 1 つの次元と見なすことができます。最初の n 人のユーザーがアプリ A をインストールしていれば、アプリ A は次元 n で値 1 を取り、そうでなければ 0 となります。ユークリッド距離を使用して、アプリ A とアプリ B の距離式を導出できます。

アプリ A が与えられたとき、上記の式を使用して距離が最も小さい 4 つのアプリを選択し、ユーザーがアプリ A をダウンロードした後にこれら 4 つのアプリを推薦します。

ビジネスシナリオ 2:オンラインショッピングで、「あなたが好きそうな商品」のシナリオでユーザーに商品を推薦します。ジャカード係数を使用して、ユーザーの購入履歴からユーザー間の相関係数を計算します。

商品 x を購入したユーザー集合を表すと、ユーザー u とユーザー v の間の距離は以下のように定義されます。

ユーザー u が与えられたとき、まずこのユーザーに最も近い k 人のユーザーを見つけ出し、その k 人のユーザー間での購入数に基づいてアイテムを降順にソートし、ユーザー u が既に購入したアイテムを除外し、上位 10 個のアイテムをユーザーに推薦します。

決定木アルゴリズム

5.1 アルゴリズムの概要

決定木は古典的な機械学習の分類アルゴリズムです。代表的なアルゴリズムには ID3、C4.5、CART があります。その原理は、データを要約して帰納的に一連の分類ルールを得るものと簡単に理解できます。以下に簡単な例を示します。

決定木において、葉ノードは決定ルールを表します(通常、葉ノードのカテゴリはそのノードで最も多くのサンプルを持つカテゴリと等しくなります)。決定木アルゴリズムの目標は高精度なルールを得ることであり、決定ルールの精度は葉ノードの複雑さで測定できます。

5.2 複雑さの計算

以下に、よく使用される 2 つの複雑さ計算方法を挙げます。サンプル集合 X があり、合計 n 個のカテゴリが存在し、pi が i 番目のカテゴリの割合を表すとします。

(1)情報エントロピー:

上記の式において、情報エントロピーの値が高いほど複雑さが高く、サンプルの不確実性が大きいことを示します。

(2)ジニ係数:

上記の式において、ジニ係数が大きいほど複雑さが高く、サンプルの不確実性が大きいことを示します。

5.3 分割指標

決定木の構築過程において、各ノードの分割では、システムの複雑さをさらに低減するためにどの属性の分割を選択するかを検討する必要があります。異なるアルゴリズムが選択する分割方法は異なります。

(1)ID3:情報利得

ここで、H(x) は分割前のシステムの複雑さを表し、分割後のシステムの複雑さを表します。値が大きいほど、その分割方法がシステムをより規則正しくします。

(2)C4.5:情報利得比

属性 A の i 番目の値の割合を示し、属性 A の複雑さを意味します。この式はシステムの純度向上に加えて、属性 A の複雑さも考慮に入れています。値が大きいほど、その分割方法がシステムをより規則正しくします(ID3 アルゴリズムでは、情報利得の計算によるシステムの純度向上のみを選択基準とするため、複雑度の高い属性が分割に選択されがちです。複雑度の高い属性は値のセグメントが多く、分割後のノードに少量のサンプルしか含まれず、予測に対する統計的有意性を持ちません。C4.5 はこの問題に対して改良されたものです)。

(3)CART:ジニ係数

CART アルゴリズムが生成する決定木は二分木です。各分割はノードを 2 つに分割するだけです。Gini(X|A) は分割後の複雑さを表します。値が高いほどサンプルの不規則性が大きいことを示します。X1、X2 は X を分割した後の 2 つのサンプル集合です(分割方法は、すべての可能な分割を走査して Gini(X|A) が最小になる点を見つけるものです)。値が小さいほど、その分割方法がシステムをより規則正しくします。

5.4 決定木の構築

入力:

分割指標:分割指標(情報利得、情報利得比、ジニ係数)を選択します。

ノード分割の停止条件:最小サンプル数と最大ノード深さを選択します。

ステップ 1:分割可能なノード Di を選択し、すべての属性の分割指標を一通り計算し、システムの属性を最も規則正しくする最適な指標を分割点として選択し、データ集合 Di+1、Di+2,…を得ます。

ステップ 2:すべての葉ノードが分割停止条件に達したかどうかを確認します。達していればステップ 3 を実行し、達していなければステップ 1 を実行します。

ステップ 3:枝刈り

ステップ 4:決定木 T を返します。

5.5 ビジネス実践

ビジネスシナリオ:アプリストアでのパーソナライズされたアプリ推薦を例にとります。

ステップ 1:ユーザープロファイルを作成します。ユーザーのアプリダウンロード履歴、インストール済みアプリの記録、およびユーザーのソーシャル属性(年齢、性別、学歴、都市)を収集します。

ステップ 2:アプリプロファイルを作成します。これにはアプリ ID、アプリカテゴリ、アプリラベル、アプリのインストールランキング、アプリの CTR などが含まれます。

ステップ 3:サンプル収集。ユーザーの履歴閲覧アプリのダウンロード記録(フィールド:ユーザー ID、アプリ ID、ダウンロード可否)を収集し、ユーザー ID とアプリ ID にユーザープロファイルとアプリプロファイルを紐付けてサンプルデータを得ます。サンプルデータ(ユーザー ID、アプリ ID、ユーザープロファイル、アプリプロファイル、ダウンロード可否)を取得します。

ステップ 4:モデルトレーニングサンプルを作成します。ユーザープロファイルとアプリプロファイルの異なる特徴タイプに対して交差ルールを定義してモデル特徴を生成し、定義された交差ルールを使用してすべてのサンプルのモデル特徴を生成し、モデルトレーニングサンプル(モデル特徴、ダウンロード可否)を得ます。

ステップ 5:モデルトレーニング。モデルトレーニングサンプルで CART アルゴリズムをトレーニングし、予測モデルを得ます。

ステップ 6:モデル使用。ユーザーとアプリが与えられたとき、上記の方法に従ってユーザーのユーザープロファイルとアプリのアプリプロファイルを生成し、定義された特徴交差ルールを使用してモデル特徴を生成し、モデル特徴をモデルに代入して予測値を得ます。

ランダムフォレストアルゴリズム

6.1 アルゴリズムの概要

ランダムフォレスト(RF)は、決定木とバギングを組み合わせた分類・回帰アルゴリズムです。複数の決定木で構成されるバギングベースの決定システムです。RF を使用して予測を行う場合、まず各決定木にサンプルデータを入力し、各木から葉ノードの結果を得ます。予測時に、回帰問題であればすべての木の葉ノード値の平均を計算し、分類問題であればすべての木の中で最も多くの葉ノードが属するクラスを探します。

各決定木は以下のように構築されます。

ステップ 1:M をデータの総特徴次元数、N をサンプル数、m を特徴サンプリングの次元数とします。

ステップ 2:復元抽出で N 個のサンプルをランダムに選択し、この木のトレーニングサンプルとします。

ステップ 3:トレーニングサンプルに対して決定木を構築します。各分割の前に m 個の特徴をランダムに抽出し、その m 個の特徴の中から最適な分割特徴を選択します。

ステップ 4:分割できなくなるまで枝刈りを行いません。

6.2 ビジネス実践

実際のビジネス応用では決定木と類似しており、RF アルゴリズムは前述の決定木のビジネス実践での決定木を直接置き換えて使用できます。RF ではサンプルサンプリングと特徴サンプリングを繰り返して複数の決定木を生成します。決定木の本数は分類精度とモデルの複雑さを組み合わせて評価する必要があります。

行列分解ベースの推薦アルゴリズム
7.1 アルゴリズムの概要

推薦アルゴリズムにおいて、解決すべき核心的な問題は、ユーザーのそのアイテムに対する嗜好スコアを見つけることです。行列分解アルゴリズムの基本的な考え方は、ユーザーのアイテムに対する嗜好は外部表現であり、内部的にはユーザーのトピックに対する嗜好で、トピックは異なるアイテムに対して異なる重みを持つというものです。ユーザー→トピック→アイテムのリンクを通じて、ユーザーのそのアイテムに対する嗜好を形成します。

行列分解の式:U=PQ

ここで、U は異なるアイテムに対するユーザーの嗜好行列を表し、P は異なるトピックに対するユーザーの嗜好行列を表し、Q は異なるトピックのアプリに対する重みを表します。

7.2 モデルの求解

実際のビジネス実践では、ユーザーのアイテムに対する嗜好スコアの一部が既知であり、未知のアイテムに対するユーザーの嗜好スコアを解きます。

アプリストアの広告シナリオを例にとります。ターミナルでのユーザーのアイテム閲覧記録とクリック記録から、異なる広告に対するユーザーの嗜好スコアを計算します。

ステップ 1:サンプルデータに基づいて行列 U を構築する

サンプルデータに基づき、ユーザーが閲覧したアイテムをクリックした場合は 1 と記録し、クリックがなければ 0 と記録し、閲覧されていないアイテムは値を割り当てません(- と記録します)。例は以下の通りです。

ステップ 2:行列 P と行列 Q を解く

行列 U のサイズを N×M とし、トピック数を K と定義すると、行列 P のサイズは N×K、行列 Q のサイズは K×M となり、損失関数は以下のように構築されます。

ここで、ui,j は行列 U の i 行 j 列の要素を表し、pi は行列 P の i 行目を表し、qj は行列 Q の j 列目を表します。

行列 P と行列 Q は勾配降下法で解くことができます。

ステップ 3:未閲覧アイテムに対するユーザーの嗜好スコアの予測

ユーザー i が与えられたとき、アイテム j に対するユーザーの嗜好スコアを予測する必要があり、式は以下の通りです。

ステップ 4:ユーザーへのアイテム推薦方法

ユーザーが与えられたとき、ステップ 3 の式を通じてすべてのアイテムに対するユーザーの嗜好スコアを計算し、ユーザーがまだ閲覧していない上位 10 個のアイテムを推薦します。

BP ベースの推薦アルゴリズム
8.1 アルゴリズムの概要

BP アルゴリズムはニューラルネットワークの一種のアルゴリズムです。BP アルゴリズムのネットワークは多層ネットワークで構成されています。信号の伝播はネットワークの最初の層から始まり、次のネットワーク層に伝達されます。3 層ニューラルネットワークを例にとると、ネットワーク構造の例は以下の通りです。

3 層ニューラルネットワークの関係は以下の通りです。

ベクトル X はモデルの入力変数ベクトル、wi は層 Li-1 と Li の接続重み行列、bi は Li のバイアスベクトルです。関数 f は活性化関数です。現在、業界でよく使用される活性化関数には relu、sigmoid、tanh があります。従来の BP ニューラルネットワークの関数は一般的に sigmoid 関数を使用します。この関数を使用する場合、以下のようになります。

8.2 モデルの求解

パーソナライズされた推薦シナリオでのクリック率推定を例にとります。上記のモデルパラメータには w1、w2、w3、b1、b2、b3 が含まれます。勾配降下法を使用してこれらのパラメータを解きます。まずサンプルを収集します。過去のユーザーの推薦データとユーザーの推薦フィードバックデータをサンプルとして使用します。変数は以下のように定義されます。

nums は収集したサンプル数を表します。

(Xi,yi) はユーザーのサンプルデータを表し、Xi はサンプルの特徴を表し、yi はクリック状況(0 はクリックなし、1 はクリックあり)を表します。

Yi は上記のモデル構築における出力値を表し、w1、w2、w3、b1、b2、b3 に関する変数です。

損失関数:一般的に使用される定義は 2 つあり、1 つは交差エントロピー、もう 1 つは平均二乗誤差です。平均二乗誤差を例にとります。

上記の損失関数を通じて、勾配降下法を使用してモデルパラメータ w1、w2、w3、b1、b2、b3 を解きます。

W2V ベースの推薦アルゴリズム
9.1 アルゴリズムの概要

W2V(Word2Vec)は、2013 年に Google がオープンソース化した単語ベクトル計算ツールです。このアルゴリズムが提案されたシナリオは、主に NLP における単語のベクトル化問題を解決するためです。従来の単語ベクトル化方法は One-Hot エンコーディングであり、One-Hot エンコーディングには主に 2 つの問題点があります。1 つ目は、次元が高すぎてモデルの入力変数として直接使用できないことです。2 つ目は、単語間に相関がないことです。W2V の登場はこれら 2 つの問題を解決しました。W2V はニューラルネットワークを通じて単語を低次元のベクトルに変換します。

W2V には 2 つのモデルがあり、1 つは CBOW モデル、もう 1 つは Skip-gram モデルです。両モデルとも単語をベクトル化しますが、その違いは以下の通りです。CBOW は単語を出力ターゲットとし、その単語に隣接する単語を入力とします。Skip-gram は単語を入力とし、その単語に隣接する単語を出力ターゲットとします。例は以下の通りです。

CBOW モデルを例にとると、モデルの構造図は以下の通りです。

各層の関係は以下の通りです。

入力層:単語を出力ターゲットとし、その単語に隣接する単語のベクトルを入力とします。

射影層:入力層のすべてのベクトルを配置して合計します。

出力層:まず、コーパス内のすべての単語にハフマン木エンコーディングを作成します(One-Hot エンコーディングは使用しません。One-Hot エンコーディングは疎すぎるためです)。次に、ハフマン木の各ノードに対してロジスティック回帰分類モデルを構築し、そのモデルの入力は射影層の出力です。

9.1 モデルのトレーニング

モデルパラメータには、すべての単語の単語ベクトルとハフマン木の各ノードのロジスティック回帰パラメータが含まれます。

ハフマン木の各ノードはロジスティック回帰関数であり、出力単語は葉ノードへのパス上の各ノードの分類ターゲットとして使用されます(パスの左分岐は 1、右分岐は 0 です)。例:上図の出力単語が「サッカー」であると仮定すると、パスは以下のようになります。

損失関数の構築。交差エントロピーによる構築で、サンプルを例にとると、サンプルの入力単語ベクトルの合計は XW、入力単語数は M、その単語に対応するハフマン木のパスは T(M) です。すると、サンプルの損失関数は以下のようになります。

上記の式に従ってすべてのサンプルの損失関数を計算し、合計してモデルの損失関数を得ます。


すべての単語の単語ベクトル vi は勾配降下法で解くことができます。

9.2 ビジネス実践

シナリオ:オンラインショッピングシナリオで、W2V+BP を使用したパーソナライズ推薦を行います。

ステップ 1:アイテムベクトルの作成

各ユーザーを 1 つの文章として扱い、ユーザーが購入したアイテムを時系列で並べ替え、それらのアイテムを単語として W2V モデルに入力し、そのアイテムのベクトルを得ます。

ステップ 2:サンプル収集

クライアント側で、ユーザーのアイテム閲覧記録と購入記録を収集します。ユーザーが過去に購入したアイテムリストをユーザープロファイルとして使用し、アイテムがユーザーに閲覧された後にユーザーがそのアイテムを購入したかどうかをターゲット変数とします。

ステップ 3:W2V+BP モデルの構築

モデルには 2 つの入力があります。1 つはユーザーが過去に購入したアイテムのベクトル平均値、もう 1 つは閲覧されたアイテムのベクトルです。モデルの出力は、ユーザーが閲覧したアイテムを購入したかどうかで、中間の接続には BP ネットワークを使用します。

ステップ 4:モデルのトレーニングと使用

モデルのトレーニング:現在、業界では一般的に TF を使用して実装しており、BP ネットワークのノード数と層数はトレーニング状況に応じて決定する必要があります。

モデルの使用:ユーザー u とアイテム i が与えられたとき、ユーザー u の購入アイテムのベクトル平均値とアイテム i のベクトルをモデルの入力として取り、アイテム i のモデルスコアを計算します。この操作を繰り返して、ユーザー u のすべての候補アイテムのモデルスコアを計算し、アイテムのモデルスコアに基づいて降順でユーザーに推薦します。

LR ベースの推薦アルゴリズム

10.1 原理の概要

LR(ロジスティック回帰)アルゴリズムの核心は線形回帰関数です。このアルゴリズムは主にクリック率予測などの二値分類シナリオに使用されます。アルゴリズムの式は以下の通りです。

ここで x はモデルへの入力です。

xi は各次元の入力を表します。

w はモデルの入力 x を表す係数ベクトルで、w=(w1, w2, …) であり、wi は次元 xi の重みを表します。

10.2 モデルの求解

勾配降下法でモデルを解きます。クリック率推定を例にとり、まずサンプルを収集します。変数は以下のように定義されます。

nums は収集したサンプル数を表します。

(Xi,yi) はユーザーのサンプルデータを表し、Xi はサンプルの特徴を表し、yi はクリック状況(0 はクリックなし、1 はクリックあり)を表します。

Yi はモデルの予測値を表し、w と b に関する変数です。

交差エントロピー損失関数を定義します。

勾配降下法で los(w,b) が最小化されるときの w と b を解きます。これが求めるモデルパラメータです。

10.3 ビジネス実践

現在の推薦システム業界で、LR アルゴリズムは特徴を大規模に離散化(One-Hot エンコーディング)して LR モデルに入力する人気の手法です。広告のクリック率モデルを例にとると、手順は以下の通りです。

ステップ 1:ユーザープロファイルの作成

特徴カテゴリごとにユーザープロファイルを作成し、カテゴリ配下のすべての特徴を離散化します。たとえば、ユーザーの履歴閲覧アイテム記録、ユーザーのソーシャル属性、モデルによってユーザーに付与されたタグなどです。

ステップ 2:アイテムプロファイルの作成

アイテムプロファイルを作成するには、アイテムの特徴カテゴリを分割し、カテゴリ配下の特徴を離散化する必要があります。たとえば、アイテム ID、アイテムラベル、アイテム人気度などです。

ステップ 3:シーンプロファイルの作成

実際のビジネス実践では、モデルは複数のシナリオを使用する必要があり、異なるシナリオでのアイテムの平均クリック率は大きく異なります。異なるシナリオでの平均クリック率の違いをより適切に処理するため、しばしばシーン特徴を追加する必要があります。シーンプロファイルは一般的にシーン ID のみを持ち、特定のシーン(検索リストなど)では位置情報を追加できます。

ステップ 4:サンプルデータの収集

過去の閲覧クリックデータを収集します。収集するデータ次元には、ユーザー ID、アイテム ID、シーン ID、クリック有無が含まれます。その後、ユーザープロファイルとアイテムプロファイルを紐付けて、モデルトレーニングサンプルデータを得ます。

ステップ 5:モデル特徴の構築

モデル入力は、サンプルデータからモデル特徴を構築することで得られます。モデル特徴は 2 つのカテゴリに分けられます。1 つは交差特徴、もう 1 つは元特徴です。

交差特徴:ユーザーカテゴリ特徴を選択し、アイテムカテゴリ特徴を選択し、シーン ID との 3 次元交差を行います。たとえば、ユーザーの履歴クリック記録が item1、item2 で、アイテム ID 特徴が I1、シーン特徴が scene1 の場合、生成される交差特徴は item1&I1&scene1、item2&I1&scene1 です。

元特徴:元特徴とは、プロファイル特徴を直接モデル入力特徴として使用することを指します。一般的には、アイテムのコールドスタート特徴やシーンのコールドスタート特徴として、汎化されたアイテム特徴が使用されます。たとえば、アイテムの RKPT、アイテムの人気度、アイテムラベルなどです。

ステップ 6:モデルのトレーニング

モデル内のすべての特徴に One-Hot エンコーディングを行います。モデル特徴数が N と仮定すると、まず各モデル特徴に 1〜N の一意のエンコーディングを付与し、各サンプルのモデル入力ベクトルは次元 N、値は 0/1 となります。0 はサンプルが対応する特徴番号を持つことを表し、1 は持たないことを表します。例:サンプル 1 が特徴番号 1 と特徴番号 3 を持つ場合、サンプル 1 のモデル入力ベクトルは (1,0,1,0,0,…) となり、一般的な LR トレーナーを通じてモデルパラメータをトレーニングします。

ステップ 7:モデルの使用

ユーザー u と候補アイテム集合が与えられたとき、ユーザー u にアイテムを推薦する方法です。上記の方法で候補集合内の各アイテムに対するユーザー u のモデルスコアを計算し、モデルスコアの降順でユーザーに推薦します。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.