(57)【特許請求の範囲】
【請求項１】
入力された複数の情報源の各々の関係を示す解析対象データの各観測値を要素として含むＩy×Ｊy×ＫyのテンソルＹ（Ｉy、Ｊy、Ｋyは２以上の自然数であり、それぞれ予め定められた値である）を作成し、前記複数の情報源のうちのＮ個の情報源ｎの各々について入力された前記情報源ｎに関する補助データの各観測値を要素として含むＩn×Ｊn×Ｋnの補助テンソルＡ(n)（Ｉn、Ｊn、Ｋnは２以上の自然数であり、それぞれ予め定められた値である）を各々作成するテンソル加工部であって、前記情報源ｎの各々について、前記補助テンソルＡ(n)のＩnの値、Ｊnの値、及びＫnの値の何れか一つが、前記テンソルＹと共通するテンソル加工部と、
前記テンソル加工部によって作成された前記テンソルＹを、Ｉy×Ｒの行列Ｔy（Ｒは自然数であり、予め定められた値である）、Ｊy×Ｒの行列Ｕy、及びＫy×Ｒの行列Ｖyに分解し、かつ、前記テンソル加工部によって作成された前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対するＩn×Ｒの行列Ｔ(n)、Ｊn×Ｒの行列Ｕ(n)、及びＫ(n)×Ｒの行列Ｖ(n)に分解するテンソル分解部であって、前記テンソルＹ及び前記情報源ｎの各々の補助テンソルＡ(n)と、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに基づいて推定される前記テンソルＹの推定値＾Ｙ、並びに前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に基づいて推定される前記情報源ｎの各々の補助テンソルＡ(n)の推定値＾Ａ(n)との距離を表す目的関数を最小化するように、前記テンソルＹを、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに分解し、かつ前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に分解するテンソル分解部と、
を含むデータ解析装置。
【請求項２】
前記目的関数を、以下の式で表わされる目的関数＾Ｄとした請求項１記載のデータ解析装置。
【数１】
0006050212.tif 000008
ただし、ｙijkは前記テンソルＹのｉｊｋ要素であり、＾ｙijkは、前記テンソルＹの推定値＾Ｙのｉｊｋ要素であり、ｄ（）は、距離を表す関数であり、ａijk(n)は前記補助テンソルＡ(n)のｉｊｋ要素であり、＾ａijk(n)は、前記補助テンソルＡ(n)の推定値＾Ａ(n)のｉｊｋ要素であり、＾η(n)は、前記補助テンソルＡ(n)に対して予め定められた重み係数であり、ｔiryは、前記行列Ｔyのi行r列の要素であり、ｕjryは、前記行列Ｕyのj行r列の要素であり、ｔkryは、前記行列Ｔyのk行r列の要素であり、ｔir(n)は、前記行列Ｔ(n)のi行r列の要素であり、ｕjr(n)は、前記行列Ｕ(n)のj行r列の要素であり、ｔkr(n)は、前記行列Ｔ(n)のk行r列の要素である。
【請求項３】
前記入力された補助データは、３個の情報源ｎ（ｎ＝１，２，３）の各々について入力された前記情報源ｎに関する補助データであって、
前記テンソル分解部は、
前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyと、前記情報源ｎの各々の前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)との各要素を初期化する初期化部と、
前記初期化部によって初期化された、または前回更新された前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyと、前記情報源ｎの各々の前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)とに基づいて、以下の式に従って、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyと、前記情報源ｎの各々の前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)との各要素を更新する行列更新部と、
予め定められた計算終了条件を満たしたか否かを評価し、予め定められた計算終了条件を満たすまで、前記行列更新部による更新を繰り返す計算終了評価部と、
を含む請求項２記載のデータ解析装置。
【数２】
0006050212.tif 000009
【請求項４】
テンソル加工部によって、入力された複数の情報源の各々の関係を示す解析対象データの各観測値を要素として含むＩy×Ｊy×ＫyのテンソルＹ（Ｉy、Ｊy、Ｋyは２以上の自然数であり、それぞれ予め定められた値である）を作成し、前記複数の情報源のうちのＮ個の情報源ｎの各々について入力された前記情報源ｎに関する補助データの各観測値を要素として含むＩn×Ｊn×Ｋnの補助テンソルＡ(n) （Ｉn、Ｊn、Ｋnは２以上の自然数であり、それぞれ予め定められた値である）を各々作成するステップであって、前記情報源ｎの各々について、前記補助テンソルＡ(n)のＩnの値、Ｊnの値、及びＫnの値の何れか一つが、前記テンソルＹと共通するステップと、
テンソル分解部によって、前記テンソル加工部によって作成された前記テンソルＹを、Ｉy×Ｒの行列Ｔy（Ｒは自然数であり、予め定められた値である）、Ｊy×Ｒの行列Ｕy、及びＫy×Ｒの行列Ｖyに分解し、かつ、前記テンソル加工部によって作成された前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対するＩn×Ｒの行列Ｔ(n)、Ｊn×Ｒの行列Ｕ(n)、及びＫ(n)×Ｒの行列Ｖ(n)に分解するステップであって、前記テンソルＹ及び前記情報源ｎの各々の補助テンソルＡ(n)と、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに基づいて推定される前記テンソルＹの推定値＾Ｙ、並びに前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に基づいて推定される前記情報源ｎの各々の補助テンソルＡ(n)の推定値＾Ａ(n)との距離を表す目的関数を最小化するように、前記テンソルＹを、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに分解し、かつ前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に分解するステップと、
を含むデータ解析方法。
【請求項５】
前記目的関数を、以下の式で表わされる目的関数＾Ｄとした請求項４記載のデータ解析方法。
【数３】
0006050212.tif 000010
ただし、ｙijkは前記テンソルＹのｉｊｋ要素であり、＾ｙijkは、前記テンソルＹの推定値＾Ｙのｉｊｋ要素であり、ｄ（）は、距離を表す関数であり、ａijk(n)は前記補助テンソルＡ(n)のｉｊｋ要素であり、＾ａijk(n)は、前記補助テンソルＡ(n)の推定値＾Ａ(n)のｉｊｋ要素であり、＾η(n)は、前記補助テンソルＡ(n)に対して予め定められた重み係数であり、ｔiryは、前記行列Ｔyのi行r列の要素であり、ｕjryは、前記行列Ｕyのj行r列の要素であり、ｔkryは、前記行列Ｔyのk行r列の要素であり、ｔir(n)は、前記行列Ｔ(n)のi行r列の要素であり、ｕjr(n)は、前記行列Ｕ(n)のj行r列の要素であり、ｔkr(n)は、前記行列Ｔ(n)のk行r列の要素である。
【請求項６】
前記入力された補助データは、３個の情報源ｎ（ｎ＝１，２，３）の各々について入力された前記情報源ｎに関する補助データであって、
前記テンソル分解部によって分解するステップは、
初期化部によって、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyと、前記情報源ｎの各々の前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)との各要素を初期化するステップと、
行列更新部によって、前記初期化部によって初期化された、または前回更新された前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyと、前記情報源ｎの各々の前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)とに基づいて、以下の式に従って、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyと、前記情報源ｎの各々の前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)との各要素を更新するステップと、
計算終了評価部によって、予め定められた計算終了条件を満たしたか否かを評価し、予め定められた計算終了条件を満たすまで、前記行列更新部による更新を繰り返すステップと、
を含む請求項５記載のデータ解析方法。
【数４】
0006050212.tif 000011
【請求項７】
請求項１〜請求項３の何れか１項に記載のデータ解析装置を構成する各部として、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ解析装置、方法、及びプログラムに係り、特に、複数の情報源の各々の関係を示す解析対象データを解析するデータ解析装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、オンラインアイテム評価サービス(Yelp（登録商標）、Amazon（登録商標）、Netflix（登録商標）など)では、ユーザにアイテム(店舗、日用品、映像作品など)の評価点数を公開する機能が提供されている。これらのサービスでは、あるアイテムにある点数を与えたユーザに、その評価に合わせたアイテムを推薦する技術の研究開発が進められている。この技術ではアイテムとユーザのクラスターを解析するテンソル分解法が多く用いられている。しかし、この手法はユーザの評価するアイテム数が少ない場合に性能が低下する問題を持つため、解析が困難な問題がある。
【０００３】
非特許文献１では、ユーザがアイテムに付与したタグ情報を利用することで、ユーザごとのタグ付与傾向の類似性や、アイテムごとのタグの被付与傾向の類似性と、タグとユーザとアイテムの関係性を用いた、アイテムとユーザとタグのクラスターを解析するテンソル分解法の技術が提案されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】S. Rendle and L. Schmidt-Thieme, “Pairwise interaction tensor factorization for personalized tag recommendation,” in Proc. WSDM, 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の非特許文献１の技術は、単一のテンソル形式のデータを解析して因子を発見する技術である。しかし、この技術には解析対象テンソルに含まれるデータが少ない場合には性能が低下する課題を持つ。また、複数テンソルを同時に解析し、これらのテンソルに共通する因子を発見することは出来ない。
【０００６】
本発明は、上記の事情を鑑みてなされたもので、複数の情報源から得られた解析対象データを解析して、精度よく因子を発見することができるデータ解析装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために本発明に係るデータ解析装置は、入力された複数の情報源の各々の関係を示す解析対象データの各観測値を要素として含むＩy×Ｊy×ＫyのテンソルＹ（Ｉy、Ｊy、Ｋyは２以上の自然数であり、それぞれ予め定められた値である）を作成し、前記複数の情報源のうちのＮ個の情報源ｎの各々について入力された前記情報源ｎに関する補助データの各観測値を要素として含むＩn×Ｊn×Ｋnの補助テンソルＡ(n)（Ｉn、Ｊn、Ｋnは２以上の自然数であり、それぞれ予め定められた値である）を各々作成するテンソル加工部であって、前記情報源ｎの各々について、前記補助テンソルＡ(n)のＩnの値、Ｊnの値、及びＫnの値の何れか一つが、前記テンソルＹと共通するテンソル加工部と、前記テンソル加工部によって作成された前記テンソルＹを、Ｉy×Ｒの行列Ｔy（Ｒは自然数であり、予め定められた値である）、Ｊy×Ｒの行列Ｕy、及びＫy×Ｒの行列Ｖyに分解し、かつ、前記テンソル加工部によって作成された前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対するＩn×Ｒの行列Ｔ(n)、Ｊn×Ｒの行列Ｕ(n)、及びＫ(n)×Ｒの行列Ｖ(n)に分解するテンソル分解部であって、前記テンソルＹ及び前記情報源ｎの各々の補助テンソルＡ(n)と、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに基づいて推定される前記テンソルＹの推定値＾Ｙ、並びに前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に基づいて推定される前記情報源ｎの各々の補助テンソルＡ(n)の推定値＾Ａ(n)との距離を表す目的関数を最小化するように、前記テンソルＹを、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに分解し、かつ前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に分解するテンソル分解部と、を含んで構成されている。
【０００８】
本発明に係るデータ解析方法は、テンソル加工部によって、入力された複数の情報源の各々の関係を示す解析対象データの各観測値を要素として含むＩy×Ｊy×ＫyのテンソルＹ（Ｉy、Ｊy、Ｋyは２以上の自然数であり、それぞれ予め定められた値である）を作成し、前記複数の情報源のうちのＮ個の情報源ｎの各々について入力された前記情報源ｎに関する補助データの各観測値を要素として含むＩn×Ｊn×Ｋnの補助テンソルＡ(n) （Ｉn、Ｊn、Ｋnは２以上の自然数であり、それぞれ予め定められた値である）を各々作成するステップであって、前記情報源ｎの各々について、前記補助テンソルＡ(n)のＩnの値、Ｊnの値、及びＫnの値の何れか一つが、前記テンソルＹと共通するステップと、テンソル分解部によって、前記テンソル加工部によって作成された前記テンソルＹを、Ｉy×Ｒの行列Ｔy（Ｒは自然数であり、予め定められた値である）、Ｊy×Ｒの行列Ｕy、及びＫy×Ｒの行列Ｖyに分解し、かつ、前記テンソル加工部によって作成された前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対するＩn×Ｒの行列Ｔ(n)、Ｊn×Ｒの行列Ｕ(n)、及びＫ(n)×Ｒの行列Ｖ(n)に分解するステップであって、前記テンソルＹ及び前記情報源ｎの各々の補助テンソルＡ(n)と、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに基づいて推定される前記テンソルＹの推定値＾Ｙ、並びに前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に基づいて推定される前記情報源ｎの各々の補助テンソルＡ(n)の推定値＾Ａ(n)との距離を表す目的関数を最小化するように、前記テンソルＹを、前記行列Ｔy、前記行列Ｕy、及び前記行列Ｖyに分解し、かつ前記情報源ｎの各々の前記補助テンソルＡ(n)を、前記情報源ｎの各々に対する前記行列Ｔ(n)、前記行列Ｕ(n)、及び前記行列Ｖ(n)に分解するステップと、を含む。
【０００９】
本発明に係るプログラムは、上記のデータ解析装置の各部としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１０】
以上説明したように、本発明のデータ解析装置、方法、及びプログラムによれば、解析対象データのテンソルＹを作成し、情報源ｎの各々の補助データについて、Ｉnの値、Ｊnの値、及びＫnの値の何れ一つが、テンソルＹと共通する補助テンソルＡ(n)を各々作成し、目的関数を最小化するように、テンソルＹを、行列Ｔy、行列Ｕy、及び行列Ｖyに分解し、かつ情報源ｎの各々の補助テンソルＡ(n)を、行列Ｔ(n)、行列Ｕ(n)、及び行列Ｖ(n)に分解することにより、複数の情報源から得られた解析対象データを解析して、精度よく因子を発見することができる、という効果が得られる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係るデータ解析装置の構成を示す概略図である。
【図２】テンソルを分解した行列を示す図である。
【図３】本発明の実施の形態に係るデータ解析装置のテンソル分解部の構成を示す図である。
【図４】本発明の実施の形態に係るデータ解析装置におけるデータ解析処理ルーチンの内容を示すフローチャートである。
【図５】実験結果を示す図である。
【図６】実験結果を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１３】
＜概要＞
まず、本発明のポイントは、以下の（１）、（２）である。
【００１４】
（１）解析対象データを加工したテンソルに加えて、補助的なデータを加工した補助テンソルを利用して因子の解析を行う。
【００１５】
（２）複数の解析対象データを同時に解析するため、Nonnegative Tensor  Factorization（NTF）技術を拡張し、複数の補助情報を利用したテンソル分解を行えるようした。このために、テンソル間のインデクスの共有と補助テンソル毎の重み係数を導入した。
【００１６】
テンソル形式に加工したデータからの因子を発見する解析方法として、非負値テンソル因子分解（NTF）が知られている（参考文献１を参照）。
【００１７】
（参考文献１）：A. Shashua & T. Hazan, “Non-Negative Tensor Factorization with Applications to Statistics and Computer Vision,” ICML, 2005.
【００１８】
NTFは、ある非負値のテンソルＹを非負値の因子行列Ｕ、Ｔ、Ｖに分解する手法である。例えば、テンソルＹは、あるユーザがあるアイテムにある曜日に与えた評価点数からなるテンソルとする。このようなテンソルＹを分解すると、複数のアイテムに類似した点数を同じ曜日に与えやすいユーザ集団が、因子行列Ｕの基底、類似した店舗が、因子行列Ｔの基底(例：IKEA（登録商標）, Apple Store（登録商標）など)、また、上記のレビューがどの程度ある曜日に書かれるか（例：日曜日に）を表す指標が、因子行列Ｖの基底に抽出される。しかし、このようなデータでは、ユーザ毎の評価数は限られている場合が多いため、テンソルＹは非常にデータ数が少なくなりＮＴＦにより因子行列の発見は困難になる。
【００１９】
本発明では、レビューの点数と評価された曜日データだけでなく、アイテムカテゴリとレビューのテキスト、店舗の位置情報と来客数などの補助データも入力として利用し、これらを同時に解析する必要がある。これらの情報を１つのテンソル(Ｙ)にまとめることはできないため、NTFをそのまま適用することはできない。そこで本発明では、非負値テンソル因子分解（NTF）を拡張し複合非負値テンソル因子分解(NMTF)を提案する。
【００２０】
＜システム構成＞
図１は、本発明の実施の形態に係るデータ解析装置１００の模式図の一例である。データ解析装置１００は、ＣＰＵと、ＲＡＭと、後述するデータ解析処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成され、機能的には、データ解析装置１００は、入力部１０と、演算部２０と、出力部３０と、を備えている。
【００２１】
入力部１０は、複数の情報源の各々の関係（ユーザ、アイテム、曜日の関係）を示す観測値（評価点）の集合である解析対象データの入力を受け付けると共に、各情報源について、当該情報源に関する観測値（アイテムカテゴリとレビューのテキスト、又は店舗の位置情報と来客数）の集合である補助データの入力を受け付ける。入力される解析対象データ、補助データは、テンソル形式に加工可能なデータであり、補助データは、例えば、３つまでの補助データとする。
【００２２】
演算部２０は、テンソル加工部２１、及びテンソル分解部２２を備えている。
【００２３】
〔テンソル加工部〕
テンソル加工部２１は、入力部１０により受け付けた解析対象データと、補助データ１、２、３とを読み込み、以下の加工を行う。ただし、補助データのいずれかが入力されない場合も許し、その場合は該当する補助データの加工を省略する。
【００２４】
解析対象データを表現する、Iy×Jy×KyのテンソルＹを作成し、出力する。yijkは、テンソルＹのijk要素に対応する数値とする。
【００２５】
補助データ１が入力された場合は、補助データ１を表現する、I1×J1×K1のテンソルＡ(1)を作成し、出力する。a(1)ijjは、補助テンソルＡ(1)のijk要素に対応する数値とする。
【００２６】
補助データ2が入力された場合は、補助データ２を表現する、I2×J2×K2のテンソルＡ(2)を作成し、出力する。a(2)ijjは、補助テンソルＡ(2)のijk要素に対応する数値とする。
【００２７】
補助データ3が入力された場合は、補助データ３を表現する、I3×J3×K3のテンソルＡ(3)を作成し、出力する。a(3)ijjは、補助テンソルＡ(3)のijk要素に対応する数値とする。
【００２８】
このように、情報源ｎに関する補助データが入力されない場合は、補助テンソルＡ(n)の作成と出力を行わない。
【００２９】
また、等式I1= Iy、J2 =Jy、K3=Kyが満たされない場合はエラーとなり計算を終了する。この処理は、テンソル間のインデクスの共有の仮定を満たさない場合にはNMTFがテンソル分解を行えないため、テンソル分解前に必要なエラー検出である。
【００３０】
〔テンソル分解部〕
テンソル分解部２２は、テンソル加工部２１から入力されたテンソルＹ、Ａ(1)、Ａ(2)、Ａ(3)を、以下の（１）式に示す目的関数Ｄを最小化するように、因子集合Θ={Ｔy、Ｕy、Ｖy、Ｔ(n)、Ｕ(n)、Ｖ(n) (n=1…N)}へ分解する。ただし、いずれかの補助テンソルＡ(n) (n=1…N)が入力されなかった場合は、Ｔ(n)、Ｕ(n)、Ｖ(n) への分解は省略する。ここで、Ｔy、Ｕy、Ｖy、Ｔ(n)、Ｕ(n)、Ｖ(n) (n=1…N)は、図2に示すように、それぞれIy×R行列、Jy×R行列、Ky×R行列、In×R行列、Jn×R行列、Kn×R行列(n=1…N)である。Iy、Jy、Ky、In、Jn、Kn(n=1…N)は解析対象のデータで用いたものと同じであり、Rは任意の自然数であり、予め設定される。
【００３１】
ここで入力されたテンソルを同時に分解するために、以下の処理を行う。I1=Iy、J2=Jy、K3=KyであるからＴ(1)=Ｔy、Ｕ(2)=Ｕy、Ｖ(3)=Ｖyと定める。この処理は、テンソル間のインデクスが共有される場合に、テンソル間で因子行列が共有されると定めている。
【００３２】
【数１】
0006050212.tif 000002
【００３３】
ここで、η(n)は、補助テンソルＡ(n)に対して予め定められた重み係数である。重み係数を導入することによって、複数のテンソルの間のスケールの異なりを緩和し、同時解析を可能にしている。
【００３４】
ここで、d（）は次の一般化KL距離である。
【００３５】
【数２】
0006050212.tif 000003
【００３６】
テンソル分解部２２の詳細構成を図３に示す。テンソル分解部２２は、初期化部２２１、行列更新部２２２、及び計算終了評価部２２３を備え、以下の手順で行列Ｕy、Ｖy、Ｔy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2) 、Ｔ(3)、Ｕ(3)を求める。
【００３７】
〔初期化部〕
初期化部２２１は、因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)の各要素を乱数によって初期化する。
【００３８】
〔行列更新部〕
行列更新部２２２は、初期化部２２１によって初期化された、又は前回更新された因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)に基づいて、下記式により因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)の各要素を更新する。
【００３９】
【数３】
0006050212.tif 000004
【００４０】
ここで、tiryは行列Ｔyのi行r列の要素、ujryは行列Ｕyのj行r列の要素、tkryは行列Ｔyのk行r列の要素、tir(n)は行列Ｔ(n)のi行r列の要素、ujr(n)は行列Ｕ(n)のj行r列の要素、tkr(n)は行列Ｔ(n)のk行r列の要素である。また、＾ｙijkは、テンソルＹの推定値＾Ｙのｉｊｋ要素であり、ａijk(n)は前記補助テンソルＡ(n)のｉｊｋ要素であり、＾ａijk(n)は、補助テンソルＡ(n)の推定値＾Ａ(n)のｉｊｋ要素であり、以下の式で表わされる。
【００４１】
【数４】
0006050212.tif 000005
【００４２】
〔計算終了評価部〕
行列更新部２２２の最大繰り返し数をLとする。l回目の行列更新部２２２の計算から得られた因子行列の集合をΘlと置く。初期化部２２１から出力される初期化された因子行列はΘ0とする。
【００４３】
計算終了評価部２２３では、行列更新部２２２の繰り返し数がLに到達した場合、もしくは、以下の基準を満たした場合に、予め定められた計算終了条件を満たしたと評価し、計算を終了し、Θlを出力する。
【００４４】
【数５】
0006050212.tif 000006
【００４５】
これは、上記の（１）式の目的関数Ｄの変化分（t回目の計算結果と前回のt-1回目の計算結果の差分の絶対値）が、予め定めた誤差ε以下になった場合に、因子行列集合が収束した（上記（１）式の目的関数Ｄが最小化された）と評価し、計算を終了することを意味する。
【００４６】
＜データ解析装置の動作＞
次に、本発明の実施の形態に係るデータ解析装置１００の作用について説明する。まず、複数の情報源の間の関係を示す観測値の集合である解析対象データの入力を受け付けると共に、当該複数の情報源のうちのＮ個の情報源の各々に関する補助データが、入力部１０を介してデータ解析装置１００に入力されると、データ解析装置１００において、図４に示すデータ解析処理ルーチンが実行される。
【００４７】
まず、ステップＳ１０１において、入力部１０により入力された解析対象データに基づいて、テンソルＹを作成すると共に、入力部１０により入力された各情報源ｎの補助データに基づいて、補助テンソルＡ(n)を各々作成する。
【００４８】
そして、ステップＳ１０２において、上記ステップＳ１０１で作成されたテンソルＹ、及び各情報源ｎの補助テンソルＡ(n)に基づいて、因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)を作成し、因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)の各要素を乱数によって初期化する。
【００４９】
次のステップＳ１０３では、上記ステップＳ１０２で初期化された、又は前回更新された因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)に基づいて、因子行列Ｔy、Ｕy、Ｖy、Ｕ(1)、Ｖ(1)、Ｔ(2)、Ｖ(2)、Ｔ(3)、Ｕ(3)の各要素を更新する。
【００５０】
ステップＳ１０４では、予め定められた計算終了条件を満たしたか否かを評価し、計算終了条件を満たしていないと評価された場合には、上記ステップＳ１０３へ戻り、計算終了条件を満たしたと評価された場合には、計算を終了し、上記ステップＳ１０３で最終的に更新された因子行列の集合Θlを出力する。
【００５１】
＜実施例＞
本発明の効果を示すために、人工的に生成したデータセットと、アイテム評価オンラインサービスであるYelp（登録商標）（URL：http://www.yelp.com/）から得られたデータセットとに対して、NTFとNMTFを用いて解析を行った結果について、定量的な評価と定性的な評価を行った。なお、NTFの場合は、本発明の分解対象であるテンソルのうちＹを入力データとしてNTFにより因子行列に分解した。
【００５２】
平均対数尤度という指標を用いて定量的な評価を行った。平均対数は、モデルとデータの間の誤差を表し、良いモデルほど平均対数尤度の値が増加する。行列更新終了時の平均対数尤度を以下に示す。
【００５３】
【表１】
0006050212.tif 000007
NMTF（本発明）によって、平均対数尤度の改善が確認できた。
【００５４】
次に定性的な評価を行った。Yelp（Ｒ）データの行列更新終了時の因子行列の一部を図５と図６に示す。ここで、図５、６の説明を行う。図５、６の上段左部は店舗因子を可視化してあり、棒グラフの値は該当店舗の影響力の大きさを示している。上段右部には、来客数因子を可視化してあり、線グラフの値はある曜日のある時間での来客数の統計値を示している。中段左部にはカテゴリ因子を可視化してあり、棒グラフの値は該当カテゴリの影響力の大きさを示している。中段右部には単語因子を可視化してあり、棒グラフの値は該当単語の影響力の大きさを示している。下段の図は位置因子を可視化してあり、円の半径は該当地点の影響力の大きさを示している。
【００５５】
図５ではCamelback MountainやSouth Mountain Parkなどの公共施設が強い影響力を持ち、来客者は休日の来客数が多い。さらにカテゴリとしてはActive LifeやParksなどが、単語としてはparkやhikeなどが影響力をもち、影響する地区は地図上の市街地に存在している。休日のレジャー活動に関する因子が抽出されたと言える。
【００５６】
図６ではRoka AkorやSakana Sushi & Grill、Hana Japanese Eateryなどの飲食店舗が強い影響力を持ち、来客者は全日を通して12時付近と18時付近が多い。さらにカテゴリとしてはSushi BarやRestaurantなどが、単語としてはsushiやrollなどが影響力をもち、影響する地区は地図上の市街地に存在している。日本食の飲食に関する因子が抽出されたと言える。
【００５７】
以上説明したように、本発明の実施の形態に係るデータ解析装置によれば、解析対象データのテンソルＹを作成し、情報源ｎの各々の補助データについて、Ｉnの値、Ｊnの値、及びＫnの値の何れか一つが、テンソルＹと共通するＩn×Ｊn×Ｋnの補助テンソルＡ(n)を各々作成し、目的関数を最小化するように、テンソルＹを、行列Ｔy、行列Ｕy、及び行列Ｖyに分解し、かつ情報源ｎの各々の補助テンソルＡ(n)を、行列Ｔ(n)、行列Ｕ(n)、及び行列Ｖ(n)に分解することにより、複数の情報源から得られた解析対象データを解析して、複数のテンソルに共通する因子を精度よく発見することができる。
【００５８】
また、解析対象テンソルと補助的なテンソルのデータを同時解析することで、解析対象テンソルに含まれるデータが少ない場合に性能が低下する課題を解決し、定量的にも定性的にも、より高い精度で、複数のテンソルに共通する因子の発見を実現することができる。
【００５９】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【００６０】
例えば、補助データが、４つ以上であってもよい。その場合には、４つ以上の情報源ｎの各々の補助データについて、Ｉnの値、Ｊnの値、及びＫnの値の何れか一つが、テンソルＹと共通するＩn×Ｊn×Ｋnの補助テンソルＡ(n)を各々作成すればよい。また、因子行列の各要素の更新式についても、４つ以上の補助データに対応した更新式を用いればよい。
【００６１】
また、上述のデータ解析装置は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【００６２】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。
【符号の説明】
【００６３】
１０   入力部
２０   演算部
２１   テンソル加工部
２２   テンソル分解部
３０   出力部
１００ データ解析装置
２２１ 初期化部
２２２ 行列更新部
２２３ 計算終了評価部
【図１】
0006050212.tif 000012
【図２】
0006050212.tif 000013
【図３】
0006050212.tif 000014
【図４】
0006050212.tif 000015
【図５】
0006050212.tif 000016
【図６】
0006050212.tif 000017