説明

無限次元を用いた高速行列因子分解による推薦システム

無限次元の行列因子分解を用いて協調フィルタリングを行うこと、協調フィルタリングを用いて1つまたは2つ以上の推薦を生成すること、推薦をユーザに表示すること、により推薦を生成するシステムおよび方法が開示される。

【発明の詳細な説明】
【背景技術】
【0001】
推薦システムは、amazon.comおよびnetflix.comのようなサイトを通じて普及してきた。これらのシステムは、製品、例えば映画に対する多くのユーザの評価のデータベースを解析し、未見/未購入の製品に対するユーザの評価/嗜好に関する予測を行う。多くの最先端技術の推薦システムは、「協調フィルタリング」に依存してユーザの嗜好やパターンを見いだしている。該技術は、ユーザデータを、例えば行がユーザごとに指標を付けられ、次に列が製品ごとに指標を付けられた1次元の大きな行列として解釈する。行列の要素は製品に対するユーザの評価である。該行列は、ユーザおよび製品の数が多いので通常大きくなり、各ユーザが少数の製品に対する評価を与えていたものなので非常に疎な行列になる。次に、協調フィルタリングは、これらの製品について観測された評価のパターンを解析し、該製品の未観測の/欠損している評価に対する予測を行う。莫大で疎な評価行列の豊富な構造を見いだすために、実証的研究は要素の数が十分に大きくあるべきであることを示した。この意味で、協調フィルタリングは行列補完問題となる。
【0002】
従来の技術は、データがM×N(ここで、MはN個の製品に対するユーザの評価数を表す)の行列としてデータベースに保存される低階数行列因子分解法を含んでいる。行列の評価のほんの一部のみが観測されるので、該行列はかなり大きくて疎な行列になる。低階数因子分解法は、行列を、1つはユーザ固有の要素、もう1つは製品固有の要素を表す2つの行列の積に因子分解する。最適化手順を用いて、データについて最も良く説明することができる要素を見つける。ユーザ要素または製品要素のいずれか一方の数は有限である。製品に対するユーザの評価の予測は、ユーザの要素ベクトルおよび製品の要素ベクトルを検索し、次に結果を与えるそれらの内積を計算することによって行われる。オンラインユーザデータの完全な成長によって、正確でスケーラブルな学習アルゴリズムを開発することが大きな課題となっている。
【0003】
協調フィルタリングの最近の進歩が、低階数行列因子分解法の成長を刺激した。協調フィルタリングの低階数行列因子分解アルゴリズムは、概略非確率的手法と確率的手法とに分類することができる。最近のネットフリックス(Netflix)コンテストでは、行列因子分解法(matrix factorization techniqu)が参加者のランキングで非常に人気がある。行列因子分解がユーザ要素数と映画要素数との乗算によって適用される場合、要素の両面が行列因子分解によって見つかる。計算効率に関して、すべての技法は要素数が少ないと仮定している。したがって、行列の因子分解は低階数因子分解となる。しかしながら、多種多様なユーザパターンには説明すべき多くの要素が必要なので、システムの階数を制限することは、予測精度を低下させる場合が多い。
【発明の概要】
【0004】
無限次元の行列因子分解を用いて協調フィルタリングを行うこと、協調フィルタリングを用いて1つまたは2つ以上の推薦を発生させること、推薦をユーザに表示することによって、推薦を生成するシステムおよび方法が開示される。
【0005】
好ましい実施形態の利点は、次の1つまたは2つ以上のものを含んでいてもよい。推薦システムは、非常に大きな数の要素または無限の数の要素すら用いる協調フィルタリング技法を用いる。インスタントフィルタリング技術は、ユーザの評価/嗜好に対する正確な予測を行う高い精度を維持しながら、大量のデータを効率的に処理する拡張性および効率性を提供する。能力が増強されたことにより、システムはユーザの評価/嗜好をより正確に予測することができる。システムが非常に大規模なユーザの評価用データベースにスケーリングできるように、計算は効率的に行われる。システムは、ユーザの嗜好に関してよりよい理解を持つ必要があるオンラインストア、ニュースウェブサイト、オンライン広告を含む多くのオンラインサービスのパフォーマンスを改善することができる。ユーザ満足度および事業収益の両方を改善することができるように、システムを用いて、広範囲のユーザが示す嗜好を明示的な方法(例えば数的な評価)でまたは暗黙的な方法(例えばクリックスルー)でより効率的により正確に分析することができる。
【図面の簡単な説明】
【0006】
【図1】特に、ユーザの嗜好を予測する協調フィルタリングエンジンを用いた典型的な認識システムを示す図である。
【図2】無限次元の特異値分解(iSVD:infinite−dimensional Singular Value Decomposition)を行う典型的な処理を示す図である。
【図3】無限次元の確率的主成分分析(pPCA:infinite−dimensional probabilistic Principal Component Analysis)を行う典型的な処理を示す図である。
【図4】高速pPCAを行う典型的な処理を示す図である。
【発明を実施するための形態】
【0007】
図1は、1群の新製品/アイテムに対するアクティブなユーザの評価/関心/嗜好を予測する協調フィルタリングエンジンを用いた典型的な認識システムを示している。予測は、製品/アイテムの大きな群に対する多くのユーザの評価/関心/嗜好に関する過去のデータを包含したデータベースの解析に基づいている。
【0008】
図1のシステムはデータベース12からのデータを検索する。データベースはN個の製品に対するM個のユーザの評価を含んでいるので、情報はM×N行列になる。情報は推薦を生成するエンジン30に提供される。エンジン30は、無限次元の行列因子分解(infinite dimensional matrix factorization)を用いて協調フィルタリングを行う。エンジン30は現在アクティブなユーザからの情報20を収集し、協調フィルタリングを用いて1つまたは2つ以上の推薦または予測40を生成する。
【0009】
システムは、特異値分解(SVD:Singular Value Decomposition)および確率的主成分分析(pPCA:probabilistic Principal Component Analysis)のような無限次元の行列因子分解法を用いる。
【0010】
特異値分解および確率的主成分分析の2つの低階数行列因子分解法の次元を、無限大に近づかせることができる。無限次元を持つ学習は、ユーザの評価を予測する際に驚くほど優れた精度を得る。
【0011】
無限次元の極限では、上記2つの方法は、iSVDおよびiPCAと呼ばれる簡単で類似した定式化にそれぞれ収束する。データの疎性を活用しかつ慎重に計算を再編成することによって、そのような無限次元のモデルは大規模な疎行列の処理に対して効率的になる。テストでは、iPCAはその非確率的な相当方法iSVDと同じくらい速く動作する。

低階数行列因子分解
行列、ベクトル、およびガウス分布に関する以下の議論において、大文字は行列を表すのに用いられ、小文字はデフォルト列ベクトルによるベクトルを表すのに用いられる。例えば、Y∈RM×Nは1つの行列であり、その(i,j)番目の要素はYi,jであり、そのi番目の行はN×1ベクトルyiによって表される。Yの転置(transpose)、トレース(trace)、および、行列式(determinant)は、YT、tr(Y)、およびdet(Y)によってそれぞれ表される。Iは、適切な次元を持つ単位行列を表す。さらに、||y||はベクトルl2−ノルムであり、||y||Fは、フロベニウスノルム(Frobenius norm)を表し、||y||*は、Yの特異値の和に等しいトレースノルムを表す。平均値μおよび共分散行列Σを持つベクトルyの多変数ガウス分布は、N(y;μ,Σ)、またはy:N(μ,Σ)によって表すことができる。E(・)は
、E(y)=μおよびE[(y−μ)(y-μ)T]=Cov(y)=Σのような確率変数の
期待値を意味している。
【0012】
疎行列に関して、Yが欠損値を含んでいる場合、OはYの観測要素の指標を表し、|O|は観測要素数を表す。(i,j)∈O下で、Yi,jが観測された場合、(Y)O2=Σ
(j,j)Oi,j2は、すべての観測されたYの2乗の和である。Oiは、i番目の行yiの欠損していない要素の指標を表す。例えば、yiの要素の1番目および3番目の要素以外のすべての要素が欠損している場合、(i)Oi=[1,3]T、およびyoi=[Yi,1,Yi,3Tとなり、(ii)Kが正方行列の場合、K:,Oiは、Kの1番目の列および3番目の列によって構成された部分行列を表し、(iii)KOiは、Kの1番目および3番目の行と、1番目および3番目の列との間の共通部分によって構成された部分正方行列である。
【0013】
行列因子分解および協調フィルタリングでは、N個のアイテムに対するM個のユーザの数的な評価を記述するM×Nの評価行列Yに対して、低階数行列因子分解法は低階数要素の乗算によってYを近似しようとする。すなわち次式のように記述できる。
【0014】
【数1】

【0015】
ここで、UはM×L行列、VはN×L行列、ただし、L<min(M,N)である。一般性を喪失することなく、M>Nであることが仮定される。各ユーザはアイテムのほんの一部のみを評価しているので、Yは通常極めて疎である。協調フィルタリングは、観測要素から学習された低階数要素が、同じ行列の観測されていない要素を埋めるために用いられる、行列補完問題と見なすことができる。
【0016】
特異値分解では、||Y−UVT||を最小化することによって十分に観測された行列Yを近似する結果から、SVDを導き出すことができる。しかしながら、Yが多数の欠損値を含んでいる場合、修正化SVDが、Yのこれらの既知の要素を近似しようとする。
【0017】
【数2】

【0018】
ここで、γ1,γ2>0、2つの正則化項、||U||F2および||V||F2が過学習を回避するために付加される。最適化問題は非凸である。勾配に基づいた手法を適用して極小値を見つけることができ、該手法は協調フィルタリングに適用される最も普及した方法の1つである。
【0019】
確率的主成分分析では、pPCAは、Yの各要素が線形変換の雑音の多い結果であると仮定する。
【0020】
i,j=uiTj+ei,j(ただし、(i,j)∈O) (3)
ここで、U=[ui]∈RM×Lは、事前分布ui:N(0,I)(ただし、i=1,...,M)に従う潜在変数、ei,j:N(0,σ2)は、独立したガウス雑音である。学習は、E−ステップで、p(ui|V,σ2)、(ただし、i=1,...,M)の十分統計量を反復して算出し、次にM−ステップでVおよびσ2を更新する期待値最大化(EM)アルゴリズムを用いて観測値の過小評価された尤度を最大化することによって行うことができる。そのデータは簡潔化のために事前中心化されているので、元の定式化はyiの平均値を含んでいる。関連する確率的行列因子分解が協調フィルタリングに適用された。

「無限次元」を持つ行列因子分解
極限L→∞におけるSVD
「無限次元」(すなわちL→∞)の極限では、低階数行列因子分解問題(2)は凸最適化問題に収束する。L→∞で、UおよびVがいずれも最大階数である場合、該問題(2)は次式と等価になる。
【0021】
【数3】

【0022】
最適条件K=(γ1/γ21/2tr[(XXT1/2]を数式(4)に当てはめると、トレースノルム正則化を強いる凸学習問題と等価な式が次式として得られる。
【0023】
【数4】

【0024】
該等価性は数式(4)が凸であることを示唆している。したがって、その大域的最適解には、局所最適解を探索する任意のアルゴリズムによって到達することができる。
【0025】
等価性にかかわらず、数式(5)は小さな行列のみを処理することができる半定値計画法を用いているが、一方数式(4)は解を得るのがはるかに容易で、よりスケーラブルである。数式(5)はγ1とγ2とを区別する必要がないことを示唆しているので、γ=γ1=γ2となる。EMのようなアルゴリズムを、XおよびKを代わりに更新することにより用いることができる。良い特性は、両方の更新が解析的な解を有しているということである。
【0026】
・E−ステップ−Xの更新:現在のKが与えられると、標準のカーネル回帰問題、minxi[(yi−xiO2+γxiT-1i]を解くことによってXの各行を独立して更新し、次式が導かれる。
【0027】
i←K:,Oi(KOi+γI)-1Oi(ただし、i=1,...,M) (6)
ここで、K:Oi∈RN×|Oi|,KOi∈R|Oi|×|Oi|である。各ユーザは多くのアイテムを評価しないので、通常|Oi|は小さい数となる。
【0028】
・M−ステップ−Kの更新:現在のXが与えられると、次式が得られる。
【0029】
K←(XTX)1/2=QS1/2T (7)
ここで、QおよびSは標準の固有値分解XTX=QSQTの結果であり、S1/2は固有値の平方根によって構成された対角行列である。
【0030】
アルゴリズムの実施には基底行列計算が必要である。カーネル回帰問題(6)は、恐らく「無限次元」を使って処理するであろうが、いわゆる「カーネルトリック」を適用してデータの大きな疎性を活用できることを示唆している。しかしながら、より高い効率性を達成する大きな余地がなお存在し、それについて以下に説明する。
【0031】
極限L→∞におけるpPCA
無限次元の極限におけるpPCAモデル(3)に関して、uiまたはvjのいずれか一方を直接処理することは実行不可能なので、xi=[Xi,1,...,Xi,NTとおく。ここで、Xi,j=uiTjである。平均値E(xi)=VE(ui)=0および共分散E(xiiT)=VE(uiiT)VT=VVTを持つN次元のガウス分布に従うそのxiを理解するのは容易である。K=VVTとし、Kが正定値カーネル行列になるように階数制約を緩和すると、pPCA(3)は次式のような簡単な発生モデルに一般化される。
【0032】
i=xi+ei(ただし、i=1,...,M) (8)
ここで、ei=[ei,1,...,ei,N]であり、xi:N(0,K)およびei:N(0,σ2I)である。該モデルは、潜在的処理Xと観測的処理Yとを記述し、その周辺確率は次式で与えられる。
【0033】
【数5】

【0034】
pPCAは、Yの各行が共分散K+σ2Iを持つガウス分布から取り出された独立同分布サンプルであると仮定している。XおよびKに関して共有の尤度p(Y,X|K,σ2)を最大化するために、1つの解が次の最適化問題について得られる。
【0035】
【数6】

【0036】
上述の問題をSVD問題(4)と比較すると、2つの定式化は非常に類似している。1つの大きな違いは、数式(10)が、トレースノルムを使用する代わりに、低複雑性罰則として対数行列式を適用しているということである。しかしながら、数式(10)は不確実性および欠損データに対処する確率的な方法ではない。理に適った手法はすべての欠損/潜在変数の完全化を必要とし、過小評価された尤度(9)を最大化することを目標とする。これは正準期待値最大化(EM)アルゴリズムによってなされる。
【0037】
・E−ステップ:p(xi|yoi,K,σ2)(ただし、i=1...、M)の十分統計量を算出する
E(xi)=K:Oi(KOi+σ2I)-1Oi (11)
Cov(xi)=K−K:Oi(KOi+σ2I)-1Oi (12)
・M−ステップ:最後のE−ステップの結果に基づいてパラメータを更新する
【0038】
【数7】

【0039】
【数8】

【0040】
ここで、Ci,jは、Cov(xi)のj番目の対角線要素、すなわちXi,jの事後分散である。
【0041】
EMアルゴリズムおよびセクション3.1に示したアルゴリズムは、E−ステップでカーネル回帰手順(6)および(11)を含んでいるので、両アルゴリズムは同じように見える。最適化は非凸であるので、上述のアルゴリズムは局所最適解を見つける。

大規模な実施
記法上の便宜のために、2つのアルゴリズムをiSVD(無限次元のSVD)およびpPCA(無限次元のpPCA)と呼ぶ。2つのアルゴリズムの大規模な実施を次に説明する。2つのEMアルゴリズムは、次のようないくつかの共通の計算上の側面を共有している。(1)潜在的要素UおよびVを評価する代わりに、上記アルゴリズムは近似行列Xを処理する、(2)主な計算の負担はE−ステップである、(3)いずれの場合においても、E−ステップはxi(ただし、i=1,...,M)の独立した更新に分解される、(4)xiの各更新に対して、カーネルトリックがYの疎性を活用するのに適用される。最後の2つの特性は若干の望みをもたらすが、稚拙な実施は大規模なデータにはなお高価すぎる。例えば、Netflix問題では、たった1つのE−ステップが、3.0GHzのCPUおよび3.0Gメモリを持つPC上でiSVDにより40時間以上消費する。さらに悪いことに、pPCAはXの分布を考慮に入れて、数式(12)によりその2次統計量を算出するので、該計算は単一のE−ステップでさらに4,000時間かかる。以下では、数式(6)または(11)の計算コストを著しく低減することができ、数式(12)によってもたらされるオーバーヘッドをほぼ完全に回避することができる。その結果、iSVDは低階数行列因子分解法と同じくらい高速になるが、一方pPCAはその非確率的な相当iSVDと同じくらい高速になる。

iSVD
iSVDのボトルネックである数式(6)の計算コストは、計算を次式のように書き換えることによって低減される。
【0042】
i=Kzi
ここで、KはN×Nの完全なカーネル行列であり、zi∈RNは、位置Oiでゼロの要素を除いたゼロのベクトルであり、その値は次式によって割り当てられる。
【0043】
Oi=(KOi+γI)-1Oi
次の数式(15)から、数式(6)の再定式化は、明示的にXを算出することなく数式(7)を実現できることを示唆している。
【0044】
【数9】

【0045】
上述の解析は、すべての行iに対して、システムが長さ|Oi|のベクトルzOiを持つN×|Oi|行列K:Oiの乗算と、N2の乗算xiiT(すなわち、より小さな|Oi2の乗算zOiOiTと置き換えられた)とを回避できることを示唆している。全体として、システムは、
【0046】
【数10】

【0047】
の乗算演算の減少を得る。Netflixデータについて、このことは、1つのE−ステップについて40時間以上の減少を意味しており、結果として発生する計算は4時間未満となる。
【0048】
次の計算は数式(7)によって必要とされる固有値分解である。トレースノルム正規化は階数最小化ヒューリスティックであるので、いくつかのステップの後でKが階数Rの場合、次のKは、数式(15)に基づいてRより小さい階数を持つ。したがって、システムは各反復でKの階数Rをチェックし、次の反復でKの先行の階層Rの固有値のみを算出する。
【0049】
擬似コードがアルゴリズム1によって記述される。記述をコンパクトに維持するために、(1)予測がバリデーション要素の小さな集合について低下した場合、該低下が起こったらプログラムを中止する、(2)QおよびSを用いて、ステップ1をKBK=QS(QBQ)SQTによって算出し、結果として発生した行列はK用のメモリに格納される、ということを含んだ重要でない詳細については省略する。最大のメモリ消費は、システムが全体としてN(N−1)のメモリコストがかかる2つのN×N行列BおよびKを格納する内側ループ中に生じる。OΣi=1M|Oi3である主要な計算も内側ループであり、こ
こで、|Oi|=Nである。Kを得た後、(i,j)の欠損要素に対する予測は、Xi,j=Kj,Oi(KOi+σ2I)-1Oiによる。
【0050】
【表1】

【0051】
上述の処理について、
1.Y:疎なM×Νの評価行列、M個のユーザ、Ν個のアイテム
2.ガンマ(γ):正則化パラメータ
3.itermax:アルゴリズムの最大反復回数
4.K:N×Nのカーネル行列、このアルゴリズムが最後に最適化して出力するパラメータ
5.B:N×N行列、これはステップ9でいくつかの中間結果を格納するのに用いられる
6.t:N×1ベクトル、これはステップ8でいくつかの中間結果を格納するのに用いられる。
7.R:ステップ11での固有値行列因子分解の階数
8.iter:現在の反復回数
9.i:アルゴリズムによって現在処理されているユーザの指標
10.Q、S:行列KBKの固有値分解QSQ’の結果、ここで、Q’はQの転置、QはNxRの行列、SはN×N対角行列である。
【0052】
図2は典型的なiSVD処理を示している。b0で、該処理は必要な入力を受け取る。次にb1で、処理は、対称なn×n行列KおよびBを格納するメモリを事前に割り当てる。b2で、処理は複数のパラメータを初期化し、その結果、iterは0にリセットされ、Kは単位行列になり、およびRはアイテム数Nに等しくなる。次に、b3からb8で、処理は現在の反復回数を示すカウンタiterでループする。b4で、iは現在処理されているユーザの指標である。b5で、処理は、Kの現在の値が与えられると、ユーザIの局所統計量および更新Bを収集する。b6で、処理は、M個のユーザがすべて処理されているかどうかをチェックする。処理されていない場合、b4にジャンプすることによって次のユーザを処理する。b7は、アルゴリズム1のステップ11〜15を実行してKを更新する。b8で、処理は最大反復回数に達しているかどうかをチェックする。達していない場合、さらなる反復のためにb3へジャンプする。b9で、達している場合、処理は計算を終了し、結果としてKを返す。

iPCA
非確率的なiSVDと比較して、iPCAのE−ステップは、すべてのi=1,...,Mに対してN×Nの事後共分散行列を算出する1つの追加ステップ(12)を持っている。しかしながら、オーバーヘッドはほぼ回避可能である。Bを、要素がゼロとして初期化され、次に次式によって局所情報を収集するのに用いられる、N×N行列としよう。
【0053】
Oi←BOi−Gi+zOiOiT(ただし、i=1,...,M) (16)
ここで、Gi=(KOi+σ2I)-1、およびzoi=Gi*yOiである。上式が与えられると、M−ステップ(13)は次式によって実現することができる。
【0054】
K←K+(1/M)KBK. (17)
それ故、すべてのiに対してN×Nの事後共分散行列を算出する数式(12)を明示的に行う必要性はなく、このことは、NΣi=1M|Oi2+N2Σi=1M|Oi|回の乗算
を不要にする。Νetflix問題において、これは1つのE−ステップについて4,000時間以上短縮することになる。擬似コードがアルゴリズム2で与えられる。
【0055】
【表2】

【0056】
【表3】

【0057】
図3を説明する際に、次の表記を用いている。
1.Y:疎なM×Νの評価行列、M個のユーザ、Ν個のアイテム
2.itermax:アルゴリズムの最大反復回数
3.K:N×Nのカーネル行列、このアルゴリズムが最後に最適化して出力するパラメータ
4.B:N×N行列、これはステップ13でいくつかの中間結果を格納するのに用いられる
5.G:行列、これはステップ9で中間結果を格納するのに用いられる
6.t:ベクトル、これはステップ10で中間結果を格納するのに用いられる
7.Er:スカラー、これはステップ11および12で中間結果を格納するのに用いられる
8.iter:現在の反復回数
9.i:アルゴリズムによって現在処理されているユーザの指標
10.シグマ(σ):雑音の標準偏差、σ2は雑音の分散である。
【0058】
図3は典型的なiPCA処理を示している。この処理で、c0は必要な入力を受け取る。c1で、処理は、対称なN×N行列KおよびBを格納するメモリを事前に割り当てる。次にc2で、処理はいくつかのパラメータを初期化し、その結果、iterは0にリセットされ、Kは単位行列になる。c3で、現在の反復回数がインクリメントされ、B、Er、およびiがリセットされる。c4で、現在処理されているユーザの指標iがインクリメントされる。c5で、各ユーザの局所統計量が収集され、BおよびErが更新される。c6で、処理は、M個のユーザがすべて処理されているかどうかをチェックする。処理されていない場合、c4にジャンプすることによって次のユーザを処理する。c7で、Kおよびシグマ(σ)が更新される。次にc8で、処理は最大反復回数に達しているかどうかをチェックする。達していない場合、さらなる反復のためにc3へジャンプする。処理は、計算を終了し結果としてKおよびシグマ(σ)を返すc9で終わる。
【0059】
図4は典型的な高速iPCA処理を示している。次の表記が図4の処理に適用される。
1.Y:疎なM×Νの評価行列、M個のユーザ、Ν個のアイテム
2.itermax:アルゴリズムの最大反復回数
3.K:N×Nのカーネル行列、このアルゴリズムが最後に最適化して出力するパラメータ
4.B:N×N行列、これはステップ11でいくつかの中間結果を格納するのに用いられる
5.b:N×1ベクトル、これはステップ10で中間結果を格納するのに用いられる
6.ミュー(μ):N×1ベクトル、このアルゴリズムが最後に最適化して出力する他のパラメータ
7.G:行列、これはステップ8で中間結果を格納するのに用いられる
8.t:ベクトル、これはステップ9で中間結果を格納するのに用いられる
9.iter:現在の反復回数
10.i:アルゴリズムによって現在処理されているユーザの指標。
【0060】
ここで、図4を参照して、d0で、該処理は必要な入力を受け取る。d1で、処理は、対称なN×N行列KおよびB、およびN×1ベクトルbおよびミュー(μ)を格納するメモリを事前に割り当てる。d2で、処理はパラメータを初期化し、その結果、iterは0にリセットされ、Kは単位行列になる。d3で現在の反復回数がインクリメントされ、d4で次のユーザが選択される。d5で、現在のユーザの局所統計量が収集され、Bおよびbが更新される。d6で、処理は、M個のユーザがすべて処理されているかどうかをチェックする。処理されていない場合、d4にジャンプすることによって次のユーザを処理する。d7で、処理は、アルゴリズム3のステップ13および14に従ってKおよびミュー(μ)を更新する。d8で、処理は最大反復回数に達しているかどうかをチェックする。達していない場合、処理はさらなる反復のためにd3へジャンプする。d9で、処理は計算を終了し、結果としてKおよびミュー(μ)を返す。
【0061】
アルゴリズム2をアルゴリズム1と比較すると、確率的な手法の残りの計算のオーバーヘッドは、雑音の分散σ2の更新を準備して、局所的な不確実性情報を収集するステップにあり、該ステップは各E−ステップに対して追加のΣi=1M(2|Oi2+|Oi
3)回の乗算を必要とする。アルゴリズムをさらに高速化するために、iPCAを簡略化することができる。数式(8)の本質的なモデル化推定は、Yが、独立して同じくガウス分布N(0,K+σ2I)に従う行yiの集合であるということである。次に、この着想は、雑音および信号を明示的にモデル化するのではなく、処理がK←K+σ2Iによって結合して雑音の多い観測値yi(ただし、i=1,...,M)の共分散を直接処理することにある。得られたモデルは次のように簡単になる。
【0062】
i,j:δ(Xi,j)(ここで、xi:N(μ,K) (18)
さらに、δ(Xi,j)は、Yi,j=Xi,jの場合に1、そうでなければ0の確率を持つ分布である。このモデルに対して、EMアルゴリズムは次のようになる。
【0063】
・E−ステップ:E(xi)=K:Oi(KOi-1(yOi−μOi)、およびCov(xi)=K−K:Oi(KOi-1Oi
・M−ステップ:K←1/MΣi=1M[Cov(xi)+E(xi)E(xiT]お
よびμ←μ+1/MΣi=1ME(xi
該実施はアルゴリズム2で要約されている。雑音を評価する必要がないので、E−ステップでの計算コストは非確率的なアルゴリズム1の計算コストと比べてわずかな違いしかない。アルゴリズム2と比較して、新バージョンは、1つのE−ステップで、Netflixデータについて約11.7時間節減し、たった4時間で終了する。メモリコストも、KおよびBを格納するのにN(N−1)となるアルゴリズム1と同じである。予測は期待値E(Yi,j)=Kj,Oi(KOi-1(yOi−μOi)+μjを算出することによってなされる。その著しい単純性により、iPCAのより高速なバージョンを実験で用いた。
【0064】
次に、説明したアルゴリズム1および2の効率性および精度を、2つの最大の公的に入手可能なベンチマーク、EachMovieデータおよびNetflixデータと対照してテストした。
【0065】
2つのアルゴリズムが、今日まで2つの最大の公的なベンチマークである、大きさ74,424×1,648のEachMovieデータおよび大きさ480,189×17,770のNetflixデータについてテストされ、効率性と精度の両方について、低階数行列因子分解法によって達成された最先端技術の性能に匹敵するかまたはそれより優れているという結果を達成した。

EachMovieデータ
1,648本の映画に対する74,424人のユーザの2,811,718個の異なる数的評価を含んだ全体のEachMovieデータに関する一連の実験。平均で要素の97.17%が欠損しているので、これは非常に疎な行列である。ランダムに、各ユーザの評価の約80%がトレーニング用に選択され、残りの20%がテストケースとして選択された。無作為抽出を20回独立して行った。次のアルゴリズムがテストされる。
【0066】
(1)SVD:上で説明したiSVDを加えた20および40の次元を持つ低階数SVD
2つの低階数法が共役勾配法によって最適化される。停止基準は、トレーニング要素の1つの小さなホールドアウト集合(hold−out set)の性能に基づいている。各アルゴリズムについて、第1の区画をテストする場合、正則化パラメータが、ホールドアウト集合の性能に基づいて、γ=1、5、10、20、50、および100から設定された。
【0067】
(2)PCA:上で説明したiPCAを加えた20および40の次元を持つ低階数pPCA
これらの3つの方法について、停止基準は、EMの反復総数が30を超えるべきでないということに加えて、ホールドアウト集合にも基づいている。これらのpPCAモデルに関する素晴らしい利点は、調整する正則化パラメータがないことである!
平均化された結果を示す代わりに、20回の試行のすべての個々のRMSE結果を下の表に挙げている。すべての方法について、ランダムな列/テスト区画にわたる変動量は小さい。SVDおよびpPCAの2つのカテゴリーの各々について、無限のモデルは、各自分自身の低階数の相当モデルよりも常に優れた性能を示した。これは、モデルの次元制約を緩和するという利点が確かにあるということを意味している。次に、確率的な手法はそれらのSVD法より常に優れた性能を示した。特に、iPCAは20回の試行すべてにわたって勝利者である。iPCAの平均RMSE誤りは、iSVDの平均RMSE誤りより4.33%低く、SVD(次元d=20)の平均RMSE誤りより6.90%低い。この結果は、予測精度に関する確率的なモデルの利点を明確に支持している。
【0068】
アルゴリズムはC++を用いて実行された。20回の試行を通して平均化された実行時間を表2に報告する。共役勾配を用いたSVDは、非常にゆっくり収束した。上で解析したように、iSVDとiPCAとは本質的に同一の計算コストを持っている。ここで、iSVDは検出された過学習により通常5回の反復の後に停止したが、一方該過学習は30回の反復をすべて終了したpPCA法については観測されなかったので、iPCAにはより長時間を要した。
【0069】
【表4】

【0070】
Netflixデータ
1998〜2005年の期間に得られたNetflix.comの評価の分布を表すNetflixデータが収集された。発表されたトレーニングデータは、17,770本の映画に対する480,189人のユーザからの100,480,507個の評価から成る。さらに、Netflixは、1,408,395個の評価を持つ検証データ群も提供する。したがって、要素の98.81%が評価行列で欠損している。予測精度を評価するために、すべての参加者について値が保留されたおよび不明の2,817,131個の評価を含んだテストセットがある。テストセットのRMSEを評価するために、参加者は、RMSE誤りを知らせる電子メールを後で返送するNetflixに、結果を提出する必要がある。結果は全く同一のテストデータについて評価されるので、それは異なったアルゴリズムを比較するのに優れたプラットフォームを提供する。
【0071】
アルゴリズム1および2は、検証データの95%のランダムな集合を加えたトレーニングデータについてテストされ、該検証データの残りの5%は停止基準に用いられた。行列因子分解法による文献で報告されている最先端技術の結果と共に、2つのモデルによって得られた結果を次の表3に示している。異なった性質からなる異種のモデルを合成することによる優れた結果が報告されているが、一方本システムによって達成された結果は単一のモデルを用いている。同表において、ベースラインの結果はNetflix自身のアルゴリズムによってなされた。BPMFは、これまで低階数法によって最先端技術の精度を生み出した、MCMCを用いたベイズの確率的行列因子分解(Bayesian probabilistic matrix factorization)である。iPCAはBPMFよりもさらに良好な結果を達成し、ベースラインから6.18%だけ精度を改善した。恐らく正則化パラメータを微調整する必要性があるためであろうが、iSVDはこのデータセットについてはあまりうまく動作しなかった。しかしながら、これは、調整するパラメータを持たないiPCAの利点を際立たせている。実行時間の効率性に関して、両アルゴリズムは1つの反復当たり約5時間を費やした。iPCAの結果は30回の反復によって得られた。
【0072】
【表5】

【0073】
無限次元の行列因子分解モデルは大規模な協調フィルタリング問題を解くことができる。該モデルの2つの例とは、特異値分解(SVD)および確率的主成分分析(pPCA)である。テストは、無限次元のモデルが1億個の評価を含んだ非常に大規模なデータについて実際に効率的であることを示している。さらに、確率的な手法は非確率的な方法ほどスケーラブルでないと通常考えられているが、iPCAは確率的な手法と同じくらい速い非確率的な相当手法である。予測精度に関しては、無限次元のモデルは低階数法より優れた性能を示すことが多く、確率的なモデルは非確率的なモデルよりもより正確な結果を提供した。
【0074】
本発明は、ハードウェア、ファームウェア、またはソフトウェア、または、これら3つの組み合わせで実行されてもよい。好ましくは、本発明は、プロセッサ、データ記憶システム、揮発性および不揮発性メモリ、および/または記憶素子、少なくとも1つの入力装置、および少なくとも1つの出力装置を持つプログラム可能なコンピュータ上で実行されるコンピュータプログラムで実行される。
【0075】
例として、システムを支援するコンピュータのブロックダイアグラムを次に説明する。該コンピュータは、プロセッサと、ランダムアクセスメモリ(RAM)と、プログラムメモリ(好ましくはフラッシュROMのような書き込み可能な読み出し専用メモリ(ROM))と、CPUバスによって接続された入出力(I/O)制御装置とを含むのが好ましい。コンピュータは、ハードディスクおよびCPUバスに接続されたハードディスクドライブ制御装置を随意に含んでいてもよい。ハードディスクは、本発明のようなアプリケーションプログラム、およびデータを格納するのに使用されてもよい。あるいは、アプリケーションプログラムはRAMまたはROMに格納されてもよい。入出力制御装置は入出力インタフェースに入出力バスによって接続される。入出力インタフェースは、シリアルリンク、ローカルエリアネットワーク、無線リンク、およびパラレルリンクのような通信リンクを通して、アナログ形態またはディジタル形態のデータを受信し送信する。随意に、表示装置、キーボード、およびポインティングデバイス(マウス)も入出力バスに接続されてもよい。あるいは、個別の接続(個別のバス)が、入出力インタフェース、表示装置、キーボード、およびポインティングデバイス用に使用されてもよい。プログラム可能な処理システムは事前にプリプログラムされていてもよく、または該システムは、他のソース(例えばフロッピーディスク、CD−ROM、または他のコンピュータ)からプログラムをダウンロードすることによってプログラム(および再プログラム)されてもよい。
【0076】
各コンピュータプログラムは、汎用のまたは専用のプログラム可能コンピュータによって読取り可能な、機械可読の記憶媒体または装置(例えばプログラムメモリまたは磁気ディスク)に明確に格納され、記憶媒体または装置が、ここで説明している手順を実行するコンピュータによって読まれるとき、該コンピュータの動作を構成し、制御する。発明的システムは、コンピュータプログラムで構成されたコンピュータ可読記憶媒体で具体化されると考えることもでき、そのように構成された記憶媒体は、コンピュータをここで説明している機能を実行するように特定の事前に定められた方法で動作させる。
【0077】
特許法に準拠するために、および新規な原理を適用して、必須のそのような特殊な構成要素を構築して使用するのに必要な情報を当業者に提供するために、本発明をかなり詳細にここで説明した。しかしながら、本発明は明確に異なった設備および装置で実行することができ、種々の修正を、設備詳細および動作手順の両方について、本発明そのものの範囲から逸脱することなく行うことができることが理解されよう。
【0078】
本発明の具体的実施形態は添付の図面に示されており、前述の詳細な説明で説明されたが、本発明はここで説明している特定の実施形態に限定されるものではなくて、本発明の範囲から逸脱することなく多くの再配置、修正、および代替が可能であることが理解されよう。添付の特許請求の範囲は、そのような修正をすべて包含するように意図されている。

【特許請求の範囲】
【請求項1】
a.無限次元の行列因子分解を用いて協調フィルタリングを行うこと、
b.前記協調フィルタリングを用いて1つまたは2つ以上の推薦を発生させること、
c.前記推薦をユーザに表示すること、
を含む、推薦を生成するコンピュータ実施方法。
【請求項2】
データに対して確率的な行列因子分解を行うことを含む請求項1に記載の方法。
【請求項3】
データに対して非確率的な行列因子分解を行うことを含む請求項1に記載の方法。
【請求項4】
iSVD(無限次元の特異値分解)で行列因子分解を行うことを含む請求項1に記載の方法。
【請求項5】
pPCA(無限次元の確率的な主成分分析)で行列因子分解を行うことを含む請求項1に記載の方法。
【請求項6】
1つまたは2つ以上のアイテムに関するユーザの嗜好を収集することを含む請求項1に記載の方法。
【請求項7】
1つまたは2つ以上のアイテムに関するユーザの嗜好の平均値および共分散を収集することを含む、請求項1に記載の方法。
【請求項8】
すべてのユーザに対する大域的アイテム対アイテムの関連性または類似度を決定することを含む、請求項1に記載の方法。
【請求項9】
各ユーザに関連づけられたアイテム対アイテムの関連性または類似度を決定することを含む、請求項1に記載の方法。
【請求項10】
前記アイテム対アイテムの関連性または類似度を適用してユーザの嗜好を推測することを含む、請求項9に記載の方法。
【請求項11】
局所統計量を用いて1つまたは2つ以上のアイテムに関するユーザの嗜好の平均値および共分散を推測する、請求項10に記載の方法。
【請求項12】
局所統計量はユーザの嗜好およびデータ雑音エラーの共分散を含む請求項10に記載の方法。
【請求項13】
前記ユーザの嗜好およびデータ雑音エラーは、処理時間を短縮するために一緒に処理される、請求項12に記載の方法。
【請求項14】
各ユーザに関連づけられたアイテム対アイテムの関連性または類似度を含む大域的統計量を生成することを含む、請求項1に記載の方法。
【請求項15】
正準期待値最大化(EM)演算を処理することを含む請求項1に記載の方法。
【請求項16】
K←K+(1/M)KBKを決定することを含む請求項1に記載の方法。
【請求項17】
a.無限次元の行列因子分解による協調フィルターを持つプロセッサと、
b.前記プロセッサによって実行され、前記協調フィルターを用いて1つまたは2つ以上の推薦を生成する推薦エンジンと、
c.前記プロセッサによって実行され、ユーザに推薦を与えるユーザインターフェースエンジンと、
を有する、ユーザに対して推薦を生成するシステム。
【請求項18】
前記行列因子分解はiSVD(無限次元の特異値分解)を含む請求項17に記載のシステム。
【請求項19】
前記行列因子分解はpPCA(無限次元の確率的な主成分分析)を含む請求項17に記載のシステム。
【請求項20】
前記行列因子分解は、1つまたは2つ以上のアイテムに関するユーザの嗜好の平均値および共分散を演算する、請求項17に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2011−523753(P2011−523753A)
【公表日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2011−512441(P2011−512441)
【出願日】平成20年12月22日(2008.12.22)
【国際出願番号】PCT/US2008/087985
【国際公開番号】WO2009/148475
【国際公開日】平成21年12月10日(2009.12.10)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(504080663)エヌイーシー ラボラトリーズ アメリカ インク (68)
【氏名又は名称原語表記】NEC Laboratories America, Inc.
【Fターム(参考)】