添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
[第1の実施形態]
(情報処理システムの構成)
<概略構成>
図1は、第1の実施形態に係る情報処理システム1の概略構成を示す図である。情報処理システム1は、ユーザ端末10のユーザに推薦するアイテムに関する情報(以下、「推薦アイテム情報」)を出力する。ここで、アイテムとは、例えば、飲食店等の店舗、宿泊施設、レシピ、動画、コンテンツ、商品、サービス、情報等であるが、これに限られない。第1の実施形態におけるアイテムは、ユーザに対する推薦対象となるどのような物、サービス又は情報等であってもよい。
図1に示すように、情報処理システム1では、ユーザ端末10と、DBサーバ20と、推薦サーバ30と、バッチサーバ40とが、ネットワークN(例えば、インターネット及び/又はイントラネット等)を介して接続されている。
ユーザ端末10は、ユーザによる一つ又は複数のキーワードの入力を受け付ける端末であり、例えば、スマートフォン、パーソナルコンピュータ(PC)等である。なお、図1では、単一のユーザ端末10が示されるが、情報処理システム1が複数のユーザ端末10を含んでもよいことは勿論である。
DBサーバ20は、データベースを保持するサーバである。DBサーバ20は、所定のサービス(例えば、アイテムに関する情報の提供サービス)に登録(ログインともいう)する複数のユーザ(例えば、数百万〜数千万のユーザ)と、当該所定のサービスで提供される複数のアイテム(例えば、数十万〜数百万のアイテム)と、を管理する。当該所定のサービスに登録するユーザ及び/又は当該所定のサービスで提供されるアイテムは、随時更新されてもよい。すなわち、当該所定のサービスに登録するユーザ数K及び/又は当該所定のサービスで提供されるアイテム数Lは随時変化してもよい。
また、DBサーバ20は、当該所定のサービスに登録するユーザ毎に、当該所定のサービスで提供される各アイテムの推薦スコアを管理してもよい。具体的には、DBサーバ20は、ユーザ毎に、アイテムに関する情報(以下、「アイテム情報」という)と、当該アイテムの推薦スコアと、を関連付けたテーブル(以下、「推薦スコアテーブル」という)を記憶してもよい。
ここで、アイテム情報は、例えば、アイテムを識別する情報(例えば、アイテムID)、当該アイテムの属性を示す情報を含んでもよい。アイテムの属性は、例えば、アイテムが飲食店舗である場合、当該飲食店舗の名称、住所、地域、料理ジャンル(例えば、イタリアン、フレンチ等)、メニュー等の少なくとも一つである。
また、推薦スコアとは、当該アイテムの推薦の度合いを示す値である。当該推薦スコアの値が大きいほど、推薦の度合いが高いことを示してもよい。
図2は、第1の実施形態に係る推薦スコアテーブルの一例を示す図である。図2に示すように、Kユーザ(K≧1)それぞれに対応する推薦スコアテーブル2111〜211Kにおいて、各アイテム情報(例えば、アイテムID)と、各アイテムの推薦スコアとが関連付けられてもよい。当該推薦スコアテーブル2111〜211Kは、バッチサーバ40で所定期間(例えば、1ヶ月)毎に生成又は更新されてもよい。なお、以下、推薦スコアテーブル2111〜211Kを特に区別しない場合は、推薦スコアテーブル211と総称する。
推薦サーバ30は、DBサーバ20を参照して、ユーザ端末10のユーザに対する推薦アイテムを決定し、当該推薦アイテムに関する推薦アイテム情報を出力する。推薦サーバ30は、例えば、Webサーバである。具体的には、推薦サーバ30は、ユーザ端末10のユーザ#kの操作に基づく所定のトリガ(例えば、所定のWebページへのアクセス)を検出すると、DBサーバ20に記憶された当該ユーザ用の推薦スコアテーブル211を参照し、当該推薦スコアテーブル211内の推薦スコアに基づいて、当該ユーザに対する推薦アイテムを決定する。
バッチサーバ40は、バッチ処理を行うサーバである。バッチサーバ40は、所定期間(例えば、1ヶ月)毎に、各ユーザに対する各アイテムの推薦スコアを計算する。具体的には、バッチサーバ40は、所定期間毎に、DBサーバ20で記憶される推薦スコアテーブル211を生成又は更新する。
なお、図1は、情報処理システム1の概略構成を示すものであり、図示しない他の構成(例えば、ユーザ端末10による所定のサービスへのアクセスのログを収集及び/又は解析する解析サーバ等)を含んでもよいことは勿論である。また、DBサーバ20と、推薦サーバ30と、バッチサーバ40の少なくとも二つは、同一のサーバとして構成されてもよい。
<機能構成>
第1の実施形態に係る情報処理システム1の機能構成を説明する。図3は、第1の実施形態に係るバッチサーバの機能構成の一例を示す図である。図3に示すように、バッチサーバ40は、学習処理部41と、記憶部42と、推定処理部43と、出力処理部44とを備える。なお、学習処理部41と、記憶部42と、推定処理部43と、出力処理部44と少なくとも一つは、バッチサーバ40に含まれなくともよく、情報処理システム1内に設けられる他の一つ又は複数のサーバに含まれてもよい。
学習処理部41は、各ユーザに対する各アイテムの推薦スコアの計算に用いるモデルの機械学習を行う。なお、モデルは、アルゴリズム、分類器、分類モデル、又は、推定モデル等と呼ばれてもよい。記憶部42は、学習処理部41で機械学習されたモデルに基づいて生成される複数のモデルを記憶する。
推定処理部43は、上記複数のモデルを用いて、ユーザ又は当該ユーザが分類されるクラスタ(以下、「ユーザクラスタ」という)に対する、各アイテム又は各アイテムが分類される各クラスタ(以下、「アイテムクラスタ」という)の推薦スコアを計算する。また、推定処理部43は、計算された推薦スコアに基づいて、当該ユーザに対する各アイテムあたり一以上の推薦スコアを導出する。
出力処理部44は、ユーザに対する各アイテムあたり一以上の推薦スコアの信頼度に基づいて、該一以上の推薦スコアからユーザに対する各アイテムあたり一つの推薦スコアを選択する。出力処理部44は、ユーザに対する各アイテムあたり一つの推薦スコアをDBサーバ20に出力して、当該ユーザの推薦スコアテーブル211を更新する。
≪学習処理部≫
図4は、第1の実施形態に係るバッチサーバの学習処理部の機能構成の一例を示す図である。図4に示すように、学習処理部41は、閲覧データ取得部411、興味ありデータ取得部412、学習データ生成部413、学習部414を備える。なお、図4の記憶部42では、学習処理部41に関する記憶内容を示しており、記憶部42の記憶内容は図4に示すものに限られない。
閲覧データ取得部411は、ユーザに関する情報(以下、「ユーザ情報」という)と、当該ユーザによってユーザ端末10を用いて閲覧されたアイテムに関するアイテム情報とを関連付けたデータ(以下、「閲覧データ」という)を取得する。
ここで、ユーザ情報は、例えば、ユーザを識別する情報(例えば、ユーザID)、当該ユーザの属性を示す情報を含んでもよい。ユーザの属性は、例えば、氏名、性別、国籍、居住する地域、住所、好みの料理ジャンル、メニュー等の少なくとも一つであってもよい。アイテム情報については上記の通りである。以下、第1の実施形態では、ユーザ情報及びアイテム情報の一例として「ユーザID」及び「アイテムID」を記載するが、以下の「ユーザID」及び「アイテムID」がユーザ情報及びアイテム情報、又は、これらに含まれる情報に置き換えられてもよいことは勿論である。
具体的には、閲覧データ取得部411は、図5(a)に示すように、閲覧ログからユーザID及びアイテムIDの組を閲覧データとして抽出してもよい。閲覧ログは、ユーザがユーザ端末10を用いてどのアイテムをいつ閲覧したかを示す情報である。なお、上記閲覧データからは、他のレコードと重複するレコードが排除されてもよい。閲覧ログ内の各レコードは、各ユーザ端末10内にインストールされたアプリケーションによって取得され、所定のサーバで所定期間(例えば、1ヶ月)蓄積されたものであってもよい。
興味ありデータ取得部412は、ユーザIDと、当該ユーザIDのユーザが興味を持ったアイテムのアイテムIDとを関連付けたデータ(以下、「興味ありデータ」という)を取得する。具体的には、興味ありデータ取得部412は、図5(b)に示すように、所定のテーブルからユーザID及びアイテムIDの組を興味ありデータとして取得してもよい。
当該所定のテーブルは、例えば、ユーザIDと当該ユーザIDのユーザによる閲覧後にユーザによる所定の操作(例えば、保存等)が受け付けられたアイテムのアイテムIDとを関連付けるテーブルであってもよい。なお、上記興味ありデータからは、他のレコードと重複するレコードが排除されてもよい。
学習データ生成部413は、閲覧データ取得部411によって取得された閲覧データ及び興味ありデータ取得部412によって取得された興味ありデータに基づいて、機械学習用のデータ(以下、「学習データ」という)を生成する。学習データ生成部413は、生成した学習データ421を記憶部42に記憶させる。
具体的には、学習データ生成部413は、閲覧データ及び/又は興味ありデータに含まれるユーザID及びアイテムIDの各組と、機械学習用のラベルと、を対応付けた学習データ421を生成する。例えば、学習データ生成部413は、閲覧データ及び興味ありデータの双方に含まれるユーザID及びアイテムIDの各組には、ユーザが店舗に興味を持つことを示すラベル(すなわち、正解例(正例ともいう)のラベル)を付与してもよい。一方、学習データ生成部413は、閲覧データだけに含まれるユーザID及びアイテムIDの各組には、ユーザが店舗に興味を持たないことを示すラベル(すなわち、不正解例(負例ともいう)のラベル)を付与してもよい。
例えば、図5(c)に示すように、学習データ生成部413は、図5(a)の閲覧データ及び図5(b)の興味ありデータの双方に含まれる、ユーザID「1」とアイテムID「1」「2」の組に対して、正例のラベルを付与する。一方、ユーザID「2」及びアイテムID「2」の組は、図5(a)の閲覧データに含まれるが図5(b)の興味ありデータに含まれない。このため、学習データ生成部413は、ユーザID「2」及びアイテムID「2」の組には、負例のラベルを付与する。
学習部414は、学習データ生成部413で生成された学習データ421を用いて機械学習を行う。これにより、ユーザID及びアイテムIDを入力すると、ユーザに対するアイテムの推薦スコアを出力するモデル422が生成される。なお、当該推薦スコアは、当該ユーザが当該アイテムに興味を持つか否かの確率(すなわち、正例又は負例の確率)と言い換えることもできる。学習部414は、生成したモデル422を記憶部42に記憶させる。
なお、上記機械学習に用いられるアルゴリズムは、例えば、Matrix Factorization、Factorization Machines、Factorization-machine supported Neural Network(FNN)、Deep Crossing Network、Product-based Neural Network、DeepFM、xDeepFM等の埋め込み層(embedding layer)を有するアルゴリズムであるが、これらに限られない。
≪推定処理部≫
図6は、第1の実施形態に係るバッチサーバの推定処理部の機能構成の一例を示す図である。図6に示すように、推定処理部43は、抽出部431と、クラスタリング部(分類部)432と、計算部433と、を備える。なお、図6の記憶部42では、推定処理部43に関する記憶内容を示しており、記憶部42の記憶内容は図6に示すものに限られない。
抽出部431は、学習処理部41で生成されたモデル422から、各ユーザの特徴量を示すベクトル(以下、「ユーザベクトル」という)、及び/又は、各アイテムの特徴量を示すベクトル(以下、「アイテムベクトル」という)を抽出する。
具体的には、抽出部431は、モデル422の埋め込み層から各ユーザベクトル及び/又は各アイテムベクトルを抽出してもよい。また、各ユーザベクトル、各アイテムベクトルは、モデル422の埋め込み層から抽出されるので、埋め込みベクトル(embedding vector)と呼ばれてもよい。また、各ユーザベクトル、各アイテムベクトルは、一以上の次元を有する。
クラスタリング部432は、各ユーザのクラスタリング、及び/又は、各アイテムのクラスタリングを行う。ここで、クラスタリングとは、複数のクラスタの一つに各ユーザ又は各アイテムを分類すること、すなわち、複数のクラスタの中で各ユーザ又は各アイテムが属するクラスタを決定することである。同一のクラスタに分類される各ユーザ又は各アイテムは、所定の類似度を有してもよい。なお、クラスタは、グループと言い換えられてもよい。
具体的には、クラスタリング部432は、抽出部431によって抽出された各ユーザベクトルに基づいて各ユーザをクラスタに分類してもよい。以下、ユーザが分類されるクラスタを「ユーザクラスタ」という。また、アイテムが分類されるクラスタを「アイテムクラスタ」という。例えば、クラスタリング部432は、k−means、階層型クラスタリング等のアルゴリズムを用いて、各ユーザのクラスタリング、及び/又は、各アイテムのクラスタリングを行ってもよい。
ユーザクラスタの数は、例えば、100、1000又は10000等の所定数である。同様に、アイテムクラスタの数は、例えば、100、1000又は10000等の所定数である。ユーザクラスタ及び/又はアイテムクラスタの数を増加させるほど、クラスタの代表値とクラスタに属する要素との差が小さくなるので推薦スコアの精度が向上するが、計算量が増加するので処理速度は遅くなる。一方、ユーザクラスタ及び/又はアイテムクラスタの数を低下させるほど、性能は低下するが、計算量が減少するので処理速度は速くなる。
また、クラスタリング部432は、各ユーザクラスタの代表値としてのベクトル(以下、「ユーザクラスタベクトル」)を計算してもよい。例えば、クラスタリング部432は、各ユーザクラスタベクトルとして、各ユーザクラスタに分類された一以上のユーザのユーザベクトルの平均値を計算してもよい。
また、クラスタリング部432は、各ユーザクラスタと各ユーザクラスタに分類された各ユーザとの間の距離(以下、「ユーザ距離」という)を計算してもよい。具体的には、クラスタリング部432は、各ユーザクラスタベクトルと、各ユーザクラスタに分類された各ユーザのユーザベクトルとに基づいて、当該ユーザ距離を計算してもよい。例えば、クラスタリング部432は、当該ユーザ距離として、s(s≧1)次元のユーザベクトルとs(s≧1)次元のユーザクラスタベクトルとのユークリッド距離(2ノルム、L2距離等とも呼ばれる)、マンハッタン距離(1ノルム、L1距離等とも呼ばれる)、マハラノビス距離等を計算してもよい。
また、クラスタリング部432は、各ユーザと各ユーザクラスタが分類されるユーザクラスタとを関連付ける情報(以下、「ユーザ/ユーザクラスタ関連付け情報」という)を記憶部42に記憶させる。具体的には、クラスタリング部432は、ユーザ/ユーザクラスタ関連付け情報として、各ユーザIDと、当該各ユーザIDのユーザが分類されたユーザクラスタに関する情報(以下、「ユーザクラスタ情報」という)と、上記ユーザ距離と、を関連付けて、記憶部42に記憶させてもよい。
以下、第1の実施形態では、ユーザクラスタ情報の一例として、ユーザクラスタを識別する「ユーザクラスタ番号」を記載するが、以下の「ユーザクラスタ番号」がユーザクラスタ情報に置き換えられてもよいことは勿論である。例えば、クラスタリング部432は、図7(a)に示すように、ユーザIDとユーザクラスタ番号とユーザ距離とを関連付けるテーブル(以下、「ユーザクラスタテーブル」)423を、記憶部42に記憶させてもよい。また、図示しないが、ユーザクラスタ情報は、ユーザクラスタ番号に加えて、上記ユーザクラスタベクトルを示す情報を含んでもよい。この場合、ユーザクラスタテーブル423は、ユーザIDと、ユーザクラスタ番号と、当該ユーザクラスタベクトルを示す情報と、を関連付けてもよい。
また、クラスタリング部432は、ユーザクラスタの数が異なるN(N≧1)個のユーザクラスタセットのそれぞれを用いて、各ユーザのクラスタリングを行ってもよい。ここで、ユーザクラスタセットとは、複数のユーザクラスタの集合である。例えば、クラスタリング部432は、1000個のユーザクラスタを含むユーザクラスタセット#1及び10000個のユーザクラスタセット#2それぞれを用いて、各ユーザのクラスタリングを行ってもよい。この場合、クラスタリング部432は、N(N≧1)個のユーザクラスタセットそれぞれに対応するN個のユーザクラスタテーブル4231〜423Nを記憶部42に記憶させてもよい。
また、クラスタリング部432は、各アイテムクラスタの代表値としてのベクトル(以下、「アイテムクラスタベクトル」)を計算する。例えば、クラスタリング部432は、各アイテムクラスタベクトルとして、各アイテムクラスタに分類された一以上のアイテムのアイテムベクトルの平均値を計算してもよい。
また、クラスタリング部432は、各アイテムクラスタと各アイテムクラスタに分類された各アイテムとの間の距離(以下、「アイテム距離」という)を計算する。具体的には、クラスタリング部432は、各アイテムクラスタベクトルと、各アイテムクラスタに分類された各アイテムのアイテムベクトルとに基づいて、当該アイテム距離を計算してもよい。例えば、クラスタリング部432は、当該アイテム距離として、t(t≧1)次元のアイテムベクトルとt(t≧1)次元のアイテムクラスタベクトルとのユークリッド距離、マンハッタン距離、マハラノビス距離等を計算してもよい。
また、クラスタリング部432は、各アイテムと各アイテムが分類されるアイテムクラスタとを関連付ける情報(以下、「アイテム/アイテムクラスタ関連付け情報」という)を記憶部42に記憶させる。具体的には、クラスタリング部432は、アイテム/アイテムクラスタ関連付け情報として、各アイテムIDと、当該各アイテムIDのアイテムが分類されたアイテムクラスタに関する情報(以下、「アイテムクラスタ情報」という)と、上記アイテム距離と、を関連付けて、記憶部42に記憶させてもよい。
以下、第1の実施形態では、アイテムクラスタ情報の一例として、アイテムクラスタを識別する「アイテムクラスタ番号」を記載するが、以下の「アイテムクラスタ番号」がアイテムクラスタ情報に置き換えられてもよいことは勿論である。例えば、クラスタリング部432は、図7(b)に示すように、アイテムIDとアイテムクラスタ番号とアイテム距離とを関連付けるテーブル(以下、「アイテムクラスタテーブル」)424を、記憶部42に記憶させてもよい。また、図示しないが、アイテムクラスタ情報は、アイテムクラスタ番号に加えて、上記アイテムクラスタベクトルを示す情報を含んでもよい。この場合、アイテムクラスタテーブル424は、アイテムIDと、アイテムクラスタ番号と、当該アイテムクラスタベクトルを示す情報と、を関連付けてもよい。
また、クラスタリング部432は、アイテムクラスタの数が異なるM(M≧1)個のアイテムクラスタセットのそれぞれを用いて、各アイテムのクラスタリングを行ってもよい。ここで、アイテムクラスタセットとは、複数のアイテムクラスタの集合である。例えば、クラスタリング部432は、1000個のアイテムクラスタを含むアイテムクラスタセット#1及び10000個のアイテムクラスタセット#2それぞれを用いて、各アイテムのクラスタリングを行ってもよい。この場合、クラスタリング部432は、M(M≧1)個のアイテムクラスタセットそれぞれに対応するM個のアイテムクラスタテーブル4241〜424Mを記憶部42に記憶させてもよい。
計算部433は、学習処理部41で生成されたモデル422に基づく複数のモデル425をそれぞれ用いて、ユーザ又は当該ユーザが分類されるユーザクラスタに対する各アイテム又は各アイテムが分類されるアイテムクラスタの推薦スコアを計算する。具体的には、計算部433は、当該複数のモデル425にそれぞれ対応する計算部を含んでもよい。例えば、図6では、計算部433は、第1〜第4のモデル425a〜425dにそれぞれ対応する第1〜第4の計算部433a〜433dを含む。なお、第1〜第4の計算部433a〜433dの少なくとも一つは、複数であってもよい。
第1の計算部433aは、第1のモデル425aを用いて、各ユーザに対する各アイテムの推薦スコア(以下、「第1の推薦スコア」という)を計算する。当該第1のモデル425aは、学習処理部41で生成されたモデル422と同一であってもよい。
具体的には、第1の計算部433aは、ユーザ及びアイテムの各組(すなわち、ユーザID及びアイテムIDの各組)を第1のモデル425aに入力して、その出力として第1の推薦スコア(すなわち、ユーザがアイテムに興味を持つ正例となる確率)を計算する。
第1のモデル425aを用いた計算量を削減するために、第1の推薦スコアが計算されるユーザ及びアイテムの組は、所定のサービスに登録された全ユーザ及び全アイテムの組み合わせ(例えば、数百万〜数千万のユーザ及び数十万〜数百万のアイテムの組み合わせ)から一以上の抽出パターンを用いて抽出されたものであってもよい。例えば、当該ユーザ及びアイテムの組は、所定のフラグ(例えば、重要フラグ)が付与されたユーザ及び/又はアイテムに基づいて抽出されてもよい。また、第1の計算部433aによる計算時間が所定の閾値を超えないように、抽出される組の数が制限されてもよい。
また、第1の計算部433aは、ユーザID及びアイテムIDと、第1のモデル425aを用いて計算された第1の推薦スコアと、を関連付けて、記憶部42に記憶させてもよい。具体的には、第1の計算部433aは、図8(a)に示すように、ユーザIDとアイテムIDと第1の推薦スコアとを関連付けるテーブル(以下、「第1の推薦スコアテーブル」)426aを、記憶部42に記憶させてもよい。
第2の計算部433bは、第2のモデル425bを用いて、各ユーザクラスタに対する各アイテムの推薦スコア(以下、「第2の推薦スコア」という)を計算する。当該第2のモデル425bは、学習処理部41で生成されたモデル422の埋め込み層のユーザベクトルをユーザクラスタベクトルに置換したものであってもよい。すなわち、第2のモデル425bは、ユーザIDに対応する埋め込み層に直接ユーザクラスタベクトルを入力できるように、モデル422を調整したものであってもよい。
具体的には、第2の計算部433bは、ユーザクラスタ及びアイテムの各組(すなわち、ユーザクラスタベクトル及びアイテムIDの各組)を第2のモデル425bに入力して、その出力として第2の推薦スコア(すなわち、ユーザクラスタがアイテムに興味を持つ正解例となる確率)を計算する。
第2のモデル425bを用いた計算量を削減するために、第2の推薦スコアの計算にアイテムIDが用いられるアイテムは、全アイテムから一以上の抽出パターンを用いて抽出されたものであってもよい。例えば、当該アイテムは、所定のフラグ(例えば、重要フラグよりも重要度が低いがフラグが付与されていないアイテムよりも重要度が高い半重要フラグ)が付与されたアイテムに基づいて抽出されてもよい。また、第2の計算部433bによる計算時間が所定の閾値を超えないように、抽出されるアイテムの数が制限されてもよい。
また、第2の計算部433bは、入力したユーザクラスタベクトルに対応するユーザクラスタ番号及びアイテムIDと、第2のモデル425bを用いて計算された第2の推薦スコアと、を関連付けて、記憶部42に記憶させてもよい。具体的には、第2の計算部433bは、図8(b)に示すように、ユーザクラスタ番号とアイテムIDと第2の推薦スコアとを関連付けるテーブル(以下、「第2の推薦スコアテーブル」)426bを、記憶部42に記憶させてもよい。
第3の計算部433cは、第3のモデル425cを用いて、各ユーザに対する各アイテムクラスタの推薦スコア(以下、「第3の推薦スコア」という)を計算する。当該第3のモデル425cは、学習処理部41で生成されたモデル422の埋め込み層のアイテムベクトルをアイテムクラスタベクトルに置換したものであってもよい。すなわち、第3のモデル425cは、アイテムIDに対応する埋め込み層に直接アイテムクラスタベクトルを入力できるように、モデル422を調整したものであってもよい。
具体的には、第3の計算部433cは、ユーザ及びアイテムクラスタの各組(すなわち、ユーザID及びアイテムクラスタベクトルの各組)を第3のモデル425cに入力して、その出力として第3の推薦スコア(すなわち、ユーザがアイテムクラスタに興味を持つ正解例となる確率)を計算する。
第3のモデル425cを用いた計算量を削減するために、第3の推薦スコアの計算にユーザIDが用いられるユーザは、全ユーザから一以上の抽出パターンを用いて抽出されたものであってもよい。例えば、当該ユーザは、所定のフラグ(例えば、重要フラグよりも重要度が低いがフラグが付与されていないユーザよりも重要度が高い半重要フラグ)が付与されたユーザに基づいて抽出されてもよい。また、第3の計算部433cによる計算時間が所定の閾値を超えないように、抽出されるユーザの数が制限されてもよい。
また、第3の計算部433cは、ユーザIDと、入力したアイテムクラスタベクトルに対応するアイテムクラスタ番号と、第3のモデル425cを用いて計算された第3の推薦スコアと、を関連付けて、記憶部42に記憶させてもよい。具体的には、第3の計算部433cは、図8(c)に示すように、ユーザIDとアイテムクラスタ番号と第3の推薦スコアとを関連付けるテーブル(以下、「第3の推薦スコアテーブル」)426cを、記憶部42に記憶させてもよい。
第4の計算部433dは、第4のモデル425dを用いて、各ユーザクラスタに対する各アイテムクラスタの推薦スコア(以下、「第4の推薦スコア」という)を計算する。当該第4のモデル425dは、学習処理部41で生成されたモデル422の埋め込み層のユーザベクトル及びアイテムベクトルをユーザクラスタベクトル及びアイテムクラスタベクトルに置換したものであってもよい。すなわち、第4のモデル425dは、ユーザID及びアイテムIDにそれぞれ対応する埋め込み層に直接ユーザクラスタベクトル及びアイテムクラスタベクトルを入力できるように、モデル422を調整したものであってもよい。
第4の計算部433dは、ユーザクラスタセット及びアイテムクラスタセットの異なる組に対応するJ個の第4のモデルを用いて、第4の推薦スコアを計算してもよい。ここで、Jは、N個のユーザクラスタセット及びM個のアイテムクラスタセットのX(=N×M)個の組の中から予め抽出された組の数であり、1≦J≦Xである。
例えば、J=2の場合、1000個のユーザクラスタを含むユーザクラスタセット#1と10000個のアイテムクラスタを含むアイテムクラスタセット#2との組に対応する第4のモデル425d1と、10000個のユーザクラスタを含むユーザクラスタセット#2と1000個のアイテムクラスタを含むアイテムクラスタセット#1との組に対応する第4のモデル425d2とが、モデル422に基づいて生成されてもよい。計算時間が所定の閾値を超えないように、Jの値は制限されてもよい。
また、第4の計算部433dは、第4のモデルdj(1≦j≦J)に入力されたユーザクラスタベクトル及びアイテムクラスタベクトルに対応するユーザクラスタ番号及びアイテムクラスタ番号と、第4のモデル425dj(1≦j≦J)を用いて計算された第4の推薦スコアと、を関連付けて、記憶部42に記憶させてもよい。具体的には、第4の計算部433dは、図8(d)に示すように、ユーザクラスタ番号とアイテムクラスタ番号と第4のモデル425dj(1≦j≦J)で計算された第4の推薦スコアとを関連付けるテーブル(以下、「第4の推薦スコアテーブル」)426dj(1≦j≦J)を、記憶部42に記憶させてもよい。
≪出力処理部≫
図9は、第1の実施形態に係るバッチサーバの出力処理部の機能構成の一例を示す図である。図9に示すように、出力処理部44は、導出部441と、選択部442と、を備える。なお、図9の記憶部42では、出力処理部44に関する記憶内容を示しており、記憶部42の記憶内容は図9に示すものに限られない。
導出部441は、複数のモデル425を用いて計算された、各ユーザ又は各ユーザクラスタに対する各アイテム又は各アイテムクラスタの推薦スコアと、上記ユーザ/ユーザクラスタ関連付け情報及び/又はアイテム/アイテムクラスタ関連付け情報と、に基づいて、各ユーザに対する各アイテムあたり一以上の推薦スコアを導出する。
導出部441は、導出された各アイテムあたり一以上の推薦スコアと、当該一以上の推薦スコアの信頼度とをユーザ毎に関連付けてもよい。導出部441は、当該一以上のスコアと信頼度を関連付けた、ユーザ毎のテーブル(以下、「選択用テーブル」という)427を記憶部42に記憶させてもよい。ここで、信頼度は、上記ユーザ距離及び上記アイテム距離に基づいて定められてもよい。
具体的には、導出部441は、各ユーザに対する各アイテムの第1の推薦スコアから、各ユーザに対する各アイテムの推薦スコアを導出する。導出部441は、導出された各アイテムの推薦スコアとユーザ距離とアイテム距離とをユーザ毎に関連付ける。
例えば、図10(a)では、図8(a)の第1の推薦スコアテーブル426aのユーザID「1」のユーザ(以下、「ユーザ#1」という)の各アイテムの第1の推薦スコアから導出された、ユーザ#1に対する各アイテムの推薦スコアが示される。図10(a)に示すように、当該推薦スコアは、図8(a)に示すユーザ#1に対する各アイテムの推薦スコアと同一である。また、第1の推薦スコアは、ユーザ#1及び各クラスタに対するものであるので、ユーザ距離及びアイテム距離はともに「0」である。
また、導出部441は、各ユーザクラスタに対する各アイテムの第2の推薦スコアから、各ユーザクラスタに属する各ユーザに対する各アイテムの推薦スコアを導出する。導出部441は、導出された各アイテムの推薦スコアとユーザ距離とアイテム距離とをユーザ毎に関連付ける。
例えば、図10(b)では、図8(b)の第2の推薦スコアテーブル426bのユーザクラスタ番号「1」のユーザクラスタ(以下、「ユーザクラスタ#1」という)に対する各アイテムの第2の推薦スコアから導出された、ユーザクラスタ#1に属するユーザ#1の各アイテムの推薦スコアが示される。図10(b)に示すように、当該ユーザ#1に対する各アイテムの推薦スコアは、図8(b)に示すユーザクラスタ#1に対する各アイテムの第2の推薦スコアと同一である。また、第2の推薦スコアは、ユーザアイテム#1に対するものであるので、図10(b)のユーザ距離は、図7(a)のユーザクラスタテーブルに登録されたユーザ距離「0.4」となる。一方、第2の推薦スコアは、アイテムに対するものであるのでアイテム距離は「0」である。
また、導出部441は、各ユーザに対する各アイテムクラスタの第3の推薦スコアから、各ユーザに対する各アイテムクラスタに属する各アイテムの推薦スコアを導出する。導出部441は、導出された各アイテムの推薦スコアとユーザ距離とアイテム距離とをユーザ毎に関連付ける。
例えば、図10(c)では、図8(c)の第3の推薦スコアテーブル426cのユーザ#1に対する各アイテムクラスタの第3の推薦スコアから導出された、ユーザ#1の各アイテムクラスタ内の各アイテムの推薦スコアが示される。図10(c)に示すように、当該ユーザ#1に対するアイテムクラスタ番号「1」のアイテムクラスタ(以下、「アイテムクラスタ#1」という)に属するアイテム#1及び#2の推薦スコア「0.9」は、図8(c)に示すアイテムクラスタ#1の推薦スコア「0.9」と同一である。また、第3の推薦スコアは、各アイテムクラスタに対するものであるので、図10(c)の各アイテム距離は、図7(b)のアイテムクラスタテーブルに登録されたアイテム距離となる。一方、第3の推薦スコアは、ユーザに対するものであるのでユーザ距離は「0」である。
また、導出部441は、各ユーザクラスタに対する各アイテムクラスタの第4の推薦スコアから、各ユーザクラスタに属する各ユーザに対する各アイテムクラスタに属する各アイテムの推薦スコアを導出する。導出部441は、導出された各アイテムの推薦スコアとユーザ距離とアイテム距離とをユーザ毎に関連付ける。
例えば、図10(d)では、図8(d)の第4の推薦スコアテーブル426dのユーザクラスタ#1に対する各アイテムクラスタの第4の推薦スコアから導出された、ユーザクラスタ#1内の各ユーザに対する各アイテムクラスタ内の各アイテムの推薦スコアが示される。図10(d)に示すように、当該ユーザクラスタ#1に属するユーザ#1に対する、アイテムクラスタ#1に属するアイテム#1及び#2の推薦スコア「0.7」は、図8(d)に示すアイテムクラスタ#1の推薦スコア「0.7」と同一である。また、第4の推薦スコアは、ユーザクラスタ#1及び各アイテムクラスタに対するものであるので、図10(d)の各ユーザ距離及び各アイテム距離は、図7(a)のユーザクラスタテーブルに登録されたユーザ距離及び図7(b)のアイテムクラスタテーブルに登録されたアイテム距離となる。
なお、異なるユーザクラスタセット及びアイテムクラスタセットのJ個の組が存在する場合、導出部は、当該J個の組のそれぞれについて、各ユーザクラスタに属する各ユーザに対する各アイテムクラスタに属する各アイテムの推薦スコアを導出してもよい。
以上のように生成された図10(a)〜(d)に示すレコードは、ユーザ#1の選択用テーブル4271として記憶部42に記憶される。なお、図8(a)の第1の推薦スコアは抽出されたユーザ及びアイテムの組について計算されるため、第1の推薦スコアがないユーザ及びアイテムの組のレコードは、推薦スコアをnull又は0として選択用テーブル427に含められてもよい。当該レコードのユーザ距離及びアイテム距離は取り得る最大値に設定されてもよい。図8(b)で第2の推薦スコアがないアイテムのレコード、図8(c)で第3の推薦スコアがないユーザのレコードについても同様に、選択用テーブル427に含められてもよい。
選択部442は、導出部441で導出されたユーザに対する各アイテムあたり一以上の推薦スコアの信頼度に基づいて、当該一以上の推薦スコアの中から、ユーザに対する各アイテムあたり一つの推薦スコアを選択する。上記の通り、当該信頼度は、一以上の推薦スコアに関連付けられたユーザ距離及びアイテム距離に基づいて定められてもよい。例えば、ユーザ距離が大きいほどユーザクラスタベクトルを用いた場合に精度が低くなるとの考えに基づいてユーザ距離が大きいほど信頼度が低くなるように、信頼度が定められてもよい。同様に、アイテム距離が大きいほどアイテムクラスタベクトルを用いた場合に精度が低くなるとの考えに基づいてアイテム距離が大きいほど信頼度が低くなるように、信頼度が定められてもよい。
例えば、図10(a)〜(d)に示すレコードを含むユーザ#1の選択用テーブル4271では、ユーザ#1のアイテム#1について、複数の推薦スコア「0.9」、「0.8」、「0.9」、「0.7」が存在する。そこで、当該複数の推薦スコア「0.9」、「0.8」、「0.9」、「0.7」の一つを、当該複数の推薦スコアに関連付けられるユーザ距離及びアイテム距離に基づいて選択する。
例えば、ユーザ#1のアイテム#1に関連付けられるユーザ距離及びアイテム距離の各組において大きい方の値は、図10(a)〜(d)において「0」、「0.4」、「0.01」、「0.4」となる(図10(a)〜(d)の下線部参照)。選択部442は、「0」、「0.4」、「0.01」、「0.4」のうち「0」が最も小さいので、図10(a)のアイテム#1の推薦スコア「0.9」の信頼度が最も高いとして、当該推薦スコア「0.9」を選択してもよい。
また、アイテム#3は、第1のモデル425a及び第2のモデル425bに入力されるアイテムに含まれないので(上記抽出パターンで抽出されるアイテムに含まれないので)、図10(a)(b)に示すように、第1のモデル425a及び第2のモデル425bを用いては推薦スコアが計算されない。一方、第3のモデル425c及び第4のモデル425dを用いてアイテムクラスタ#2の推薦スコアが計算され、アイテム#3は、当該アイテムクラスタ#2に含まれる。このため、図10(c)(d)には、アイテム#3の推薦スコアとして第3のモデル425c及び第4のモデル425dを用いて計算されるアイテムクラスタ#2の推薦スコア「0.2」及び「0.3」が含まれる。選択部442は、図10(c)(d)のアイテム#3の推薦スコア「0.2」及び「0.3」の一つを、当該推薦スコアにそれぞれ関連付けられるユーザ距離及びアイテム距離に基づいて選択する。ここでは、アイテム#3の推薦スコア「0.2」に関連付けられるユーザ距離「0」及びアイテム距離「0.01」を比較すると、アイテム距離「0.01」が大きい。また、アイテム#3の推薦スコア「0.3」に関連付けられるユーザ距離「0.4」及びアイテム距離「0.01」を比較すると、ユーザ距離「0.4」が大きい。選択部442は、推薦スコア「0.2」に関連付けられるアイテム距離「0.01」及び推薦スコア「0.3」に関連付けられるユーザ距離「0.4」のうち、小さい方の「0.01」に関連付けられるアイテム#3の推薦スコア「0.2」の信頼が最も高いとして、当該推薦スコア「0.2」をアイテム#3の推薦スコアとして選択する。
なお、信頼度の判断および選択方法は上記に限られず、ユーザ距離及びアイテム距離に基づくどのような方法であってもよい。例えば、ユーザ距離及びアイテム距離の平均値を信頼度とし、当該平均値が最小となる推薦スコアを選択するなどしてもよい。
選択部442は、ユーザ毎に選択された各アイテムあたり一つの推薦スコアを出力する。ユーザ毎に出力された各アイテムあたり一つの推薦スコアは、DBサーバ20のユーザ毎の推薦スコアテーブル211に記憶される。
≪推薦サーバ≫
図11は、第1の実施形態に係る推薦サーバ、ユーザ端末及びDBサーバの機能構成の一例を示す図である。図11に示すように、推薦サーバ30は、検出部31と、決定部32と、推薦アイテム情報生成部33と、を具備する。推薦アイテム情報生成部33及び通信部10c及び/又は出力部10eは、本発明の「推薦部」を構成する。
検出部31は、ユーザ端末10のユーザにアイテムを推薦する所定のトリガを検出する。当該所定のトリガは、例えば、ユーザ端末10からの所定のサービスへのログイン要求又は所定のリクエストの受信であってもよい。
決定部32は、ユーザ端末10のユーザへのアイテムの推薦対象となる範囲を決定する。当該範囲は、例えば、ユーザ端末10のユーザが訪問可能なエリアに存在するアイテム、在庫が所定数以上であるアイテム、特定のカテゴリのアイテム等の少なくとも一つであってもよい。具体的には、決定部32は、ユーザ端末10の位置を示す情報(以下、「位置情報」という)に基づいて、当該ユーザへのアイテムの推薦対象となる範囲(例えば、エリア)を決定してもよい。当該位置情報は、例えば、ユーザ端末10においてGPS(Global Positioning System)から取得される情報であり、推薦サーバ30は、後述する通信部10cを介して、ユーザ端末10から当該位置情報を取得してもよい。これにより、ユーザ端末10の現在地から所定距離内のアイテム(例えば、店舗等)を推薦対象とすることができる。
決定部32は、ユーザ端末10による所定のサービスの利用履歴(例えば、アイテムの検索、閲覧又は購買等の履歴)に基づいて、当該ユーザへのアイテムの推薦対象となる範囲(例えば、エリア、アイテムのカテゴリ等)を決定してもよい。例えば、決定部32は、所定時間(例えば、10分)内において検索又は閲覧されたアイテムの所在地を含むエリアを決定してもよい。これにより、ユーザ端末10の現在地とは異なるエリアのアイテムをユーザに推薦できる。また、決定部32は、購買の履歴のあるアイテムのカテゴリを決定することにより、ユーザ端末10のユーザに購買履歴のあるカテゴリのアイテムを推薦することもできる。
また、決定部32は、ユーザ端末10のユーザによって指定された範囲を示す情報(以下、「指定範囲情報」という)に基づいて、当該範囲を決定してもよい。例えば、決定部32は、当該指定範囲情報が示すエリア、アイテムのカテゴリ等を決定してもよい。
推薦アイテム情報生成部33は、ユーザ端末10のユーザに対する推薦アイテムを決定し、決定した推薦アイテムに関する推薦アイテム情報を生成する。具体的には、推薦アイテム情報生成部33は、DBサーバ20の記憶部21で保持されるユーザの推薦スコアテーブル211を参照し、当該ユーザに対する各アイテムの推薦スコアに基づいて、当該推薦アイテムを決定する。例えば、推薦アイテム情報生成部33は、推薦スコアが高い順に所定数の推薦アイテムを決定してもよい。生成された推薦アイテム情報は、通信部10cを介してユーザ端末10に送信される。
また、推薦アイテム情報生成部33は、当該推薦スコアに加えて、決定部32で決定されたエリアに基づいて、当該推薦アイテムを決定してもよい。この場合、推薦スコアテーブル211の各アイテムには、所定のエリアが関連付けられていてもよい。
≪ユーザ端末≫
図11に示すように、ユーザ端末10は、入力受付部11と、ログイン処理部12と、表示制御部13と、を具備する。
入力受付部11は、ユーザによる入力部10d(例えば、タッチパネル等)の所定の操作を受け付ける。具体的には、入力受付部11は、ユーザによる入力部10d(例えば、タッチパネル等)の操作による所定のサービスへのログイン要求を受け付ける。
ログイン処理部12は、入力受付部11による所定の操作の受け付けに応じて、所定のサービスへのログイン、ログイン後の当該所定のサービスに関する種々の処理を推薦サーバ30との間で行う。具体的には、ログイン処理部12は、所定のサービスへのログイン要求を後述する通信部10cを介して推薦サーバ30に送信する。また、ログイン処理部12は、所定のタイミングで、ユーザ端末10の位置情報を、通信部10cを介して推薦サーバ30に送信してもよい。
ログイン処理部12は、推薦サーバ30から送信されたユーザ端末10のユーザに対する推薦アイテム情報を、通信部10cを介して取得(受信)する。
表示制御部13は、出力部10e(例えば、ディスプレイ等)に対する表示(出力ともいう)を制御する。具体的には、表示制御部13は、ログイン処理部12によって取得された推薦アイテム情報の出力部10eに対する表示を制御する。例えば、表示制御部13は、上記所定のサービスにログインしている場合に、当該所定のサービス用の画面において当該推薦アイテム情報を表示させてもよい。
図12は、第1の実施形態に係る推薦アイテム情報の表示画面の一例を示す図である。図12では、図3に示すユーザ#1用の推薦スコアテーブル2111に基づいて生成されたユーザ#1に対する推薦アイテム情報が示される。なお、図12では、アイテムが飲食店舗である一例を示すが、上記の通りアイテムは飲食店舗に限られない。また、図12では、ユーザ端末10で表示されるアイテムの数が3つであるが、表示されるアイテムの数はこれに限られない。
例えば、図12では、推薦サーバ30によって、ユーザ#1が訪問可能なエリア(こでは、ユーザ端末10の位置情報が示す現在地)と推薦スコアテーブル2111の推薦スコアとに基づいて決定された飲食店舗(図12では、店舗#1、#4及び#5)に関する情報がユーザ端末10の画面Dに表示される。具体的には、ユーザ#1用の推薦スコアテーブル2111の推薦スコアが所定の条件を満たす飲食店舗の所在地が、ユーザ端末10の位置情報から所定範囲内である場合に、ユーザ#1が当該飲食店舗に訪問可能であるとして、当該飲食店舗に関する情報を画面Dに表示させてもよい。
<ハードウェア構成>
次に、情報処理システム1内の各構成(例えば、ユーザ端末10、DBサーバ20、推薦サーバ30、バッチサーバ40等)のハードウェア構成を説明する。なお、バッチサーバ40内の学習処理部41、推定処理部43及び出力処理部44の少なくとも一つが一つ又は複数のサーバとして構成される場合、一つ又は複数のサーバは、図13に示すハードウェア構成を有する。また、学習処理部41、推定処理部43及び出力処理部44の少なくとも一つが一台のサーバで構成されてもよい。なお、サーバは、コンピュータと呼ばれてもよい。
図13に示すように、情報処理システム1内の各構成は、演算装置に相当するCPU(Central Processing Unit)等のプロセッサ10aと、記憶装置10bと、通信部10cと、入力部10dと、出力部10eとを有する。これらの各構成は、バスを介して相互にデータ送受信可能に接続される。
プロセッサ10aは、記憶装置10bに記憶されたプログラムの実行に関する制御やデータの演算、加工を行う制御部である。プロセッサ10aは、情報処理プログラムを実行する演算装置(演算部)であってもよい。プロセッサ10aは、入力部10d及び/又は通信部10cから種々の入力データを受け取り、入力データの演算結果を出力部10eに出力(例えば、表示)したり、記憶装置10bに格納したり、又は、通信部10cを介して送信したりする。
記憶装置10bは、メモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)、の少なくとも一つである。DBサーバ20の記憶装置10bは、記憶部21を構成してもよい。バッチサーバ40の記憶装置10bは、記憶部42を構成してもよい。ユーザ端末10、DBサーバ20、推薦サーバ30、バッチサーバ40のそれぞれは、プロセッサ10aが実行する情報処理プログラムを記憶してもよい。
通信部10cは、情報処理システム1内の各装置を外部機器に接続するインターフェースである。なお、DBサーバ20、推薦サーバ30、バッチサーバ40の少なくとも二つが一体の装置で構成される場合、通信部10cは、当該少なくとも二つの間でのプロセス間通信を実施してもよい。
入力部10dは、ユーザからデータの入力を受け付けるものであり、例えば、キーボード、マウス、タッチパネル、マイクの少なくとも一つを含んでよい。
出力部10eは、プロセッサ10aによる演算結果を出力するものであり、例えば、LCD(Liquid Crystal Display)等のディスプレイ及びスピーカの少なくとも一つにより構成されてよい。
情報処理プログラムは、記憶装置10b等のコンピュータによって読み取り可能な記憶媒体に記憶されて提供されてもよいし、通信部10cにより接続されるネットワークを介して提供されてもよい。当該判定プログラムを格納した記憶媒体は、コンピュータ読み取り可能な非一時的な記憶媒体(Non-transitory computer readable medium)であってもよい。非一時的な記憶媒体は特に限定されないが、例えば、USBメモリ、CD−ROM又はDVD等の記憶媒体であってもよい。
バッチサーバ40では、プロセッサ10aが情報処理プログラムを実行することにより、学習処理部41、推定処理部43、出力処理部44の動作が実現される。また、推薦サーバ30では、プロセッサ10aが情報処理プログラムを実行することにより、検出部31、決定部32、推薦アイテム情報生成部33の動作が実現される。また、ユーザ端末10では、プロセッサ10aが情報処理プログラムを実行することにより、入力受付部11、ログイン処理部12、表示制御部13の動作が実現される。
なお、これらの物理的な構成は例示であって、必ずしも独立した構成でなくてもよい。例えば、ユーザ端末10、DBサーバ20、推薦サーバ30、バッチサーバ40は、プロセッサ10aと記憶装置10bが一体化したLSI(Large-Scale Integration)を備えていてもよい。
(情報処理システムの動作)
<バッチ動作>
図14は、第1の実施形態に係るバッチ動作の一例を示すフローチャートである。図14に示すバッチ動作は、所定期間(例えば、28日)毎に行われる。
図14に示すように、ステップS101において、バッチサーバ40は、学習データ421を生成する(例えば、図5(c)参照)。ステップS102において、学習処理部41は、生成した学習データ421を用いた機械学習により、ユーザID及びアイテムIDを入力すると、ユーザに対するアイテムの推薦スコアを出力するモデル422を生成する。
ステップS103において、バッチサーバ40は、ユーザ及び/又はアイテムのクラスタリングを行う。具体的には、バッチサーバ40は、ステップS102で生成されたモデル422の埋め込み層から抽出されたユーザベクトル及び/又はアイテムベクトルを用いて、上記ユーザ及び/又はアイテムのクラスタリングを行ってもよい。
ステップS104において、バッチサーバ40は、ステップS102で生成されたモデル422に基づく複数のモデル425を用いて、ユーザ又はユーザクラスタに対するアイテム又はアイテムクラスタの推薦スコアをそれぞれ計算する(例えば、図8(a)〜(d)参照)。
ステップS105において、バッチサーバ40は、ステップS104で計算された推薦スコアと、上記ユーザ/ユーザクラスタ関連付け情報及び/又はアイテム/アイテムクラスタ関連付け情報と、に基づいて、各アイテムあたり一以上の推薦スコアをユーザ毎に導出する(図10(a)〜(d)参照)。
ステップS106において、バッチサーバ40は、ステップS105で導出された各アイテムあたり一以上の推薦スコアの信頼度に基づいて、当該一以上の推薦スコアの中から、各アイテムあたり一つの推薦スコアをユーザ毎に選択する。
ステップS107において、バッチサーバ40は、ステップS106で選択された各アイテムあたり一つの推薦スコアをユーザ毎にDBサーバ20に対して出力する。DBサーバ20では、ユーザ毎の推薦スコアテーブル211(例えば、図2参照)が生成される。
第1の実施形態に係るバッチ動作によれば、ステップS102で生成されたモデル422に基づく複数のモデル425を用いて、抽出されたユーザ又はユーザクラスタに対する、抽出されたアイテム又はアイテムクラスタの推薦スコアがそれぞれ計算されるので、モデル422を用いて全ユーザに対する全アイテムの推薦スコアを計算する場合と比較して計算量を削減できる。
第1の実施形態に係る推薦動作によれば、抽出されたユーザ又はユーザクラスタに対する抽出されたアイテム又はアイテムクラスタの推薦スコアに基づいてユーザ毎に各アイテムあたり一以上の推薦スコアが導出され、当該一以上の推薦スコアの信頼度に基づいて選択されたユーザ毎に各アイテムあたり一つの推薦スコアが推薦スコアテーブル211で所定期間毎に更新される。したがって、計算量を削減しても、推薦精度の劣化を防止できる。
<推薦動作>
図15は、第1の実施形態に係る推薦動作の一例を示すフローチャートである。図15に示す推薦動作は、任意のタイミングで行われる。
図15に示すように、ステップS201において、ユーザ端末10は、ユーザによる所定の操作を受け付ける。
ステップS202において、推薦サーバ30が所定のトリガ(例えば、ユーザ端末10からの所定の情報)を検出すると、DBサーバ20に記憶された当該ユーザ用の推薦スコアテーブル211の各アイテムの推薦スコアに基づいて、当該ユーザに対する推薦アイテムを決定する。推薦サーバ30は、当該推薦スコアに加えて、当該ユーザの訪問可能なエリアに基づいて、上記推薦アイテムを決定してもよい。
ステップS203において、推薦サーバ30は、ステップS202において決定された推薦アイテムに関する推薦アイテム情報をユーザ端末10に出力する。ステップS204において、ユーザ端末10は、推薦サーバ30からの推薦アイテム情報をユーザ端末10の出力部10eに表示させる。
第1の実施形態に係る推薦動作によれば、所定期間毎のバッチ動作で更新される推薦スコアテーブル211の推薦スコアに基づいて推薦アイテムが決定されるので、ステップS201におけるユーザの操作から妥当な待ち時間(例えば、1〜2秒)で、当該ユーザに対する推薦アイテムをユーザ端末10に表示させることができる。
以上のように、第1の実施形態に係る情報処理システムでは、機械学習に基づいて生成される複数のモデルを用いてユーザに対する各アイテムの推薦スコアが算出されるので、ユーザに対するアイテムの推薦に関する計算量を削減しながら、推薦精度の劣化を防止できる。
(変更例)
上記第1の実施形態では、複数のモデル(例えば、第1〜第4のモデル425a〜425dの少なくとも二つ、複数の第2のモデル425b、複数の第3のモデル425c、又は、複数の第4のモデル425d)を用いることを想定したが、単一のモデル(例えば、第2〜第4のモデル425b〜425dのいずれか)が用いられてもよい。以下では、単一のモデルとして、第2のモデル425bを用いる場合について説明するが、第3のモデル425c又は第4のモデル425dを用いる場合にも下記の内容を適宜変更して適用することが可能である。なお、以下では、上記第1の実施形態との相違点を中心に説明し、同様の点の説明は繰り返さない。
変更例において、図6の計算部433は、第2のモデル425bを用いて、ユーザクラスタに対する各アイテムの推薦スコアを計算する。また、計算部433は、入力したユーザクラスタベクトルに対応するユーザクラスタ番号及びアイテムIDと、第2のモデル425bを用いて計算された第2の推薦スコアと、を関連付けて、記憶部42に記憶させてもよい。具体的には、計算部433は、図8(b)に示す第2の推薦スコアテーブル426bを、記憶部42に記憶させてもよい。
図9の導出部441は、第2のモデル425bを用いて計算された各ユーザクラスタに対する各アイテムの推薦スコアと、上記ユーザ/ユーザクラスタ関連付け情報(例えば、図7(a)のユーザクラスタテーブル423)と、に基づいて、各ユーザに対する各アイテムの推薦スコアを導出する。変更例では、導出部441によって導出される推薦スコアが、各ユーザに対する各アイテムあたり一つの推薦スコアであるので、選択部442は設けられなくともよい。すなわち、変更例では、選択用テーブル427も生成されなくともよい。
導出部441は、ユーザ毎に導出された各アイテムの推薦スコアを出力する。ユーザ毎に出力された各アイテムの推薦スコアは、DBサーバ20のユーザ毎の推薦スコアテーブル211に記憶される。
図16は、第1の実施形態の変更例に係るバッチ動作の一例を示すフローチャートである。図16に示すバッチ動作は、所定期間(例えば、28日)毎に行われる。図16のステップS301及びS302は、図14のステップS101及びS102と同様である。
ステップS303において、バッチサーバ40は、ユーザのクラスタリングを行う。具体的には、バッチサーバ40は、ステップS302で生成されたモデル422の埋め込み層から抽出されたユーザベクトルを用いて、上記ユーザのクラスタリングを行ってもよい。
ステップS304において、バッチサーバ40は、ステップS302で生成されたモデル422に基づく第2のモデル425bを用いて、ユーザクラスタに対する各アイテムの推薦スコアを計算する(例えば、図8(b)参照)。
ステップS305において、バッチサーバ40は、ステップS104で計算された推薦スコアと、上記ユーザ/ユーザクラスタ関連付け情報(例えば、図7(a)のユーザクラスタテーブル423)に基づいて、ユーザ毎に各アイテムの推薦スコアを導出する。
ステップS306において、バッチサーバ40は、ステップS305で導出された各アイテムの推薦スコアをユーザ毎にDBサーバ20に対して出力する。DBサーバ20では、ユーザ毎の推薦スコアテーブル211(例えば、図2参照)が生成される。
第1の実施形態に係るバッチ動作によれば、ステップS102で生成されたモデル422に基づく第2のモデル425bを用いて、ユーザクラスタに対する各アイテムの推薦スコアが計算されるので、モデル422を用いて全ユーザに対する全アイテムの推薦スコアを計算する場合と比較して計算量を削減できる。
以上のように、第1の実施形態の変更例に係る情報処理システムでは、機械学習に基づいて生成される単一のモデル(例えば、第2〜第4のモデル425b〜425dのいずれか)を用いてユーザに対する各アイテムの推薦スコアが算出されるので、ユーザに対するアイテムの推薦に関する計算量を削減できる。
[第2の実施形態]
第1の実施形態では、バッチサーバ40が、機械学習に基づいて生成されるモデル425を用いて一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコアを計算し、前記計算された推薦スコアと、ユーザ/ユーザクラスタ関連付け情報、及び/又は、アイテム/アイテムクラスタ関連付け情報と、に基づいて、全ユーザに対する各アイテムの推薦スコアを所定期間毎に導出する。また、DBサーバ20は、バッチサーバ40で導出された全ユーザに対する全アイテムの推薦スコアを示す推薦スコアテーブル211(例えば、図2の推薦スコアテーブル2111〜211K)を予め記憶しておく。このように、第1の実施形態では、機械学習に基づくモデルを用いた推薦スコアの計算対象を一部のユーザ又は一部のアイテム又はユーザクラスタ又はアイテムクラスタに限定することにより、ユーザ#kに対するアイテムの推薦に関する計算量を削減しながら、ユーザ端末10のユーザ#kに対するアイテムの推薦のための時間(すなわち、ユーザ端末10に対する応答時間)を短縮できる。
一方、第1の実施形態のように、DBサーバ20が全ユーザについて全アイテムの推薦スコアを示す推薦スコアテーブル2111〜211Kを予め記憶するとDBサーバ20で必要とされる記憶容量が増大する恐れがある。このため、第2の実施形態では、バッチサーバ40は、一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコアを所定期間毎に導出し、DBサーバ20は、当該導出された推薦スコアを示す推薦スコアテーブル426(第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つ)を予め記憶する。推薦サーバ30は、ユーザ端末10のユーザ#kの操作に基づく所定のトリガ(例えば、所定のWebページへのアクセス)を検出すると、推薦スコアテーブル426(第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つ)を参照し、推薦スコアテーブル426の推薦スコアと、ユーザ/ユーザクラスタ関連付け情報、及び/又は、アイテム/アイテムクラスタ関連付け情報と、に基づいて、ユーザ#kに対する各アイテムの推薦スコアを示す推薦スコアテーブル211kを生成し、当該推薦スコアテーブル211k内の推薦スコアに基づいて、当該ユーザ#kに対する推薦アイテムを決定する。
このように、第2の実施形態では、一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコアを示す推薦スコアテーブル426(第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つ)を予め記憶しておくことにより、第1の実施形態のように推薦スコアテーブル2111〜211Kを記憶する場合と比較してDBサーバ20の記憶容量を削減できる。さらに、当該推薦スコアテーブル426を予め記憶しておくことにより、ユーザ端末10のユーザ#kからのリクエスト時にモデル422又は425を用いて推薦スコアを導出する場合と比較して、ユーザ#kに対するアイテムの推薦のための時間(すなわち、ユーザ端末10に対する応答時間)を短縮できる。すなわち、第2の実施形態では、DBサーバ20における記憶容量と、ユーザ端末10に対する応答時間とのバランスを図ることができる。
(情報処理システムの構成)
次に、第2の実施形態に係る情報処理システムの構成について、第1の実施形態に係る情報処理システムとの相違点を中心に説明する。
<概略構成>
第2の実施形態において、図1のDBサーバ20は、所定のサービスに登録するユーザ毎の当該所定のサービスで提供される各アイテムの推薦スコア(例えば、図2の推薦スコアテーブル2111〜211K)の代わりに、一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコア(例えば、図8(a)〜(d)の第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つ)を記憶してもよい。
また、図1の推薦サーバ30は、ユーザ端末10のユーザ#kの操作に基づく所定のトリガ(例えば、所定のWebページへのアクセス、ユーザ#kからのリクエスト等)を検出すると、DBサーバ20に記憶された一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコア(例えば、図8(a)〜(d)の第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つが示す推薦スコア)に基づいて、ユーザ#kに対する各アイテムの推薦スコア(例えば、図2の推薦スコアテーブル211k)を導出し、当該ユーザに対する推薦アイテムを決定する。
また、図1のバッチサーバ40は、所定期間毎に、一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコアを計算する。具体的には、バッチサーバ40は、所定期間毎に、DBサーバ20で記憶される図8(a)〜(d)の第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つを生成又は更新する。
<機能構成>
第2の実施形態において、図9のバッチサーバ40の出力処理部44は、推薦サーバ30に設けられてもよい。具体的には、推薦サーバ30が、出力処理部44内の導出部441及び選択部442を備えてもよい。
推薦サーバ30内の導出部441は、検出部31で検出されたユーザ#kについて各アイテムあたり一以上の推薦スコアを導出してもよい。具体的には、当該導出部441は、DBサーバ20の記憶部21に記憶された一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコア(例えば、第1〜第4の推薦スコアテーブル426a〜426dの少なくとも一つ)と、ユーザ/ユーザクラスタ関連付け情報、及び/又は、アイテム/アイテムクラスタ関連付け情報と、に基づいて、当該ユーザ#kについての各アイテムあたり一以上の推薦スコアを導出してもよい。すなわち、当該導出部441は、ユーザ#kについての選択用テーブル427k(例えば、図10(a)〜(d))を生成してもよい。
推薦サーバ30内の選択部442は、当該ユーザ#kについての各アイテムあたり一以上の推薦スコアの推薦度に基づいて、当該ユーザ#kについての各アイテムあたり一つの推薦スコアを選択してもよい。すなわち、選択部442は、ユーザ#kについての推薦スコアテーブル211kを出力してもよい。推薦アイテム情報生成部33は、選択部442の出力に基づいて、推薦アイテム情報を生成してもよい。この場合、ユーザ#kからのリクエストに応じてユーザ#kの推薦スコアテーブル211kが生成されるので、DBサーバ20は、第1の実施形態のように、全ユーザの推薦スコアテーブル211(例えば、図2の推薦スコアテーブル2111〜211Kの全て)を予め記憶しなくともよい。
また、推薦サーバ30内の選択部442は、決定部32によって決定されたユーザ#kに対するアイテムの推薦対象となる範囲に基づいて、ユーザ#kについての推薦スコアテーブル211kを出力してもよい。具体的には、選択部442は、当該範囲内の各アイテム(例えば、ユーザ#kが訪問可能なエリアに存在するアイテム、在庫が所定数以上であるアイテム、又は、特定のカテゴリのアイテム等)について、各アイテムあたり一つの推薦スコアを選択してもよい。これにより、ユーザ#kの推薦スコアテーブル211kに含めるアイテムの範囲を制限でき、ユーザ#kに対するアイテムの推薦を適切に行うことができる。
なお、推薦サーバ30内の導出部441が、決定部32によって決定された上記範囲に基づいて、ユーザ#kについての選択用テーブル427kを生成してもよい。具体的には、導出部441は、該範囲内の各アイテムについて、各アイテムあたり一以上の推薦スコア(例えば、図10(a)〜(d)のユーザ#k用の選択用テーブル427k)を上記の通り導出してもよい。これにより、選択部442により選択対象となるアイテムの範囲を制限できる。
(情報処理システムの動作)
次に、第2の実施形態に係る情報処理システムの動作について、第1の実施形態に係る情報処理システムとの相違点を中心に説明する。
第2の実施形態では、第1の実施形態に係るバッチ動作の一部のステップが、ユーザ端末10の所定の操作(例えば、リクエスト)を受け付けた場合に実施される推薦動作で実施されてもよい。例えば、図14のステップS105〜S107は、図14のバッチ動作においてバッチサーバ40で実施される代わりに、ユーザ#kによるユーザ端末10の所定の操作(例えば、リクエスト)を受け付けた場合に、図15の推薦動作において推薦サーバ30において行われてもよい。すなわち、図14のステップS105〜S107は、図15のステップS201の後、ステップS202の前に、ステップS201−1〜ステップS201−3として、推薦サーバ30で行われてもよい。
第2の実施形態に係る推薦動作では、推薦サーバ30の導出部441は、ステップS201においてユーザ#kのユーザ端末10の所定の操作が受け付けられた場合、当該ユーザ#kについて各アイテムあたり一以上の推薦スコア(例えば、図10(a)〜(d)の選択用テーブル427k)を導出する(ステップS201−1)。推薦サーバ30の選択部442は、ユーザ#kについて導出された各アイテムあたり一以上の推薦スコアの信頼度に基づいて、各アイテムあたり一つの推薦スコアを選択する(ステップS202−2)。推薦サーバ30の出力処理部44は、選択された各アイテムの推薦スコアを示すユーザ#k用の推薦スコアテーブル211kを推薦アイテム情報生成部33に出力する(ステップS202−3)。
なお、ユーザ#kについて各アイテムあたり一以上の推薦スコア(例えば、図10(a)〜(d)のユーザ#k用の選択用テーブル427k)、及び/又は、ユーザ#kについて各アイテムあたり一つの推薦スコア(例えば、図2のユーザ#k用の推薦スコアテーブル211k)は、決定部32によって決定されたユーザ#kに対するアイテムの推薦対象となる範囲内のアイテムについて生成されてもよい。
以上のように、第2の実施形態に係る情報処理システムでは、一部のユーザ又は全ユーザクラスタに対する一部のアイテム又は全アイテムクラスタの推薦スコア(例えば、図8の第1〜第4の推薦スコアテーブル426a〜dの少なくとも一つ)がバッチサーバ40において事前に計算され、DBサーバ20で記憶されるので、ユーザ#kに対するアイテムの推薦に関する計算量を削減でき、かつ、ユーザ#kに対するアイテムの推薦のための時間(すなわち、ユーザ端末10に対する応答時間)を短縮できる。また、第1の実施形態のように推薦スコアテーブル2111〜211Kを記憶する場合と比較してDBサーバ20の記憶容量を削減できる。このように、第2の実施形態では、DBサーバ20における記憶容量と、ユーザ端末10に対する応答時間とのバランスを図ることができる。
なお、第2の実施形態では、第1の実施形態の変更例と同様に、複数のモデルの代わりに単一のモデル(例えば、第2〜第4のモデル425b〜425dのいずれか)を用いる変更例を適用することもできる。具体的には、図16のステップS305〜S306は、図16のバッチ動作で行わずに、ユーザ#kによるユーザ端末10の所定の操作(例えば、リクエスト)を受け付けた場合に行われてもよい。すなわち、図16のステップS305〜S306は、図15のステップS201の後、ステップS202の前に、ステップS201−1’〜ステップS201−2’として、推薦サーバ30で行われてもよい。
この場合、推薦サーバ30の導出部441は、ステップS201においてユーザ#kのユーザ端末10の所定の操作が受け付けられた場合、当該ユーザ#kについて各アイテムの推薦スコア(例えば、図2のユーザ#kの推薦スコアテーブル211k)を導出する(ステップS201−1’)。推薦サーバ30の出力処理部44は、選択された各アイテムの推薦スコアを示すユーザ#k用の推薦スコアテーブル211kを推薦アイテム情報生成部33に出力する(ステップS202−2’)。なお、当該ユーザ#k用の推薦スコアテーブル211k)は、決定部32によって決定されたユーザ#kに対するアイテムの推薦対象となる範囲内のアイテムについて生成されてもよい。
[その他の実施形態]
上記実施形態では、ユーザのクラスタリングに、モデル422の埋め込み層から抽出されたユーザベクトルが使用されたがこれに限られない。ユーザのクラスタリングは、埋め込み層から抽出されたユーザベクトルに限られず、ユーザ情報の特徴量を示すどのようなベクトルが使用されてもよいし、又は、ユーザ情報そのものが使用されてもよい。アイテムのクラスタリングについても同様である。
また、上記実施形態では、アイテムは、所定のサービスへのログインしたユーザに推薦されるものとしたが、これに限られない。当該アイテムは、所定のWebページにアクセスしたユーザに対して、例えばCookieで同一ユーザであることを処理することによって、アイテムを推薦してもよい。
また、上記実施形態では、第2の計算部433bで用いられる第2のモデル425bは、単一のユーザクラスタセットが用いられるものとしたが、クラスタ数が異なる複数のユーザクラスタセットと一以上の抽出パターンで抽出されたアイテムに対応する複数の第2のモデル425bが用いられてもよい。第2の計算部433bは、当該複数の第2のモデル425bを用いて、第2の推薦スコアを計算してもよい。
また、上記実施形態では、第3の計算部433cで用いられる第3のモデル425cは、単一のユーザクラスタセットが用いられるものとしたが、クラスタ数が異なる複数のユーザクラスタセットと一以上の抽出パターンで抽出されたアイテムに対応する複数の第3のモデル425cが用いられてもよい。第3の計算部433cは、当該複数の第3のモデル425cを用いて、第3の推薦スコアを計算してもよい。
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。