(57)【要約】【課題】高い精度でデータ推定を行うこと。【解決手段】関連する複数のデータを入力する入力手段と、前記データ毎に固有の変換関数によって前記複数のデータで共通の潜在ベクトルを変換した変換結果と、前記複数のデータとに基づいて、前記変換関数のパラメータと、前記共通の潜在ベクトルとを推定するパラメータ推定手段と、推定した前記変換関数のパラメータと前記共通の潜在ベクトルとから前記データを推定するデータ推定手段と、を有することを特徴とする。【選択図】図４
2019101584.tif 000002
【特許請求の範囲】
【請求項１】
関連する複数のデータを入力する入力手段と、
前記データ毎に固有の変換関数によって前記複数のデータで共通の潜在ベクトルを変換した変換結果と、前記複数のデータとに基づいて、前記変換関数のパラメータと、前記共通の潜在ベクトルとを推定するパラメータ推定手段と、
推定した前記変換関数のパラメータと前記共通の潜在ベクトルとから前記データを推定するデータ推定手段と、
を有することを特徴とする推定装置。
【請求項２】
前記入力手段は、
それぞれが行列で表される前記複数のデータを入力し、
前記パラメータ推定手段は、
前記行列の第１軸で固有の変換関数によって前記第１軸におけるｍ番目の要素に対応する前記共通の潜在ベクトルを変換した第１の変換結果と、前記行列の第２軸で固有の変換関数によって前記第２軸におけるｍ´番目の要素に対応する前記共通の潜在ベクトルを変換した第２の変換結果と、前記行列の（ｍ，ｍ´）要素とに基づいて、前記変換関数のパラメータと前記共通の潜在ベクトルとを推定する、ことを特徴とする請求項１に記載の推定装置。
【請求項３】
前記パラメータ推定手段は、
所定の最適化法により、前記第１の変換結果を表す第１のベクトルと前記第２の変換結果を表す第２のベクトルとの内積と、前記行列の（ｍ，ｍ´）要素との誤差が最小になるように、前記変換関数のパラメータと前記共通の潜在ベクトルとを推定する、ことを特徴とする請求項２に記載の推定装置。
【請求項４】
前記データ推定手段は、
前記パラメータ推定手段により推定された前記変換関数のパラメータと前記共通の潜在ベクトルとを用いて、前記行列の第１軸で固有の変換関数によって第１軸におけるｉ番目の要素における前記共通の潜在ベクトルを変換した第３の変換結果を表す第３のベクトルと、前記行列の第２軸で固有の変換関数によって第２軸におけるｊ番目の要素における前記共通の潜在ベクトルを変換した第４の変換結果を表す第４のベクトルとの内積を、前記データを表す行列の（ｉ，ｊ）要素と推定する、ことを特徴とする請求項３に記載の推定装置。
【請求項５】
関連する複数のデータを入力する入力手順と、
前記データ毎に固有の変換関数によって前記複数のデータで共通の潜在ベクトルを変換した変換結果と、前記複数のデータとに基づいて、前記変換関数のパラメータと、前記共通の潜在ベクトルとを推定するパラメータ推定手順と、
推定した前記変換関数のパラメータと前記共通の潜在ベクトルとから前記データを推定するデータ推定手順と、
をコンピュータが実行することを特徴とする推定方法。
【請求項６】
コンピュータを、請求項１乃至４の何れか一項に記載の推定装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、推定装置、推定方法及びプログラムに関する。
【背景技術】
【０００２】
関連する複数のデータが得られる場合がある。例えば、図１に示すように、ユーザ毎の各映画に対する好みを表す評点データ（データ１）と、ユーザ毎の属性（例えば、性別、年齢、居住地等）を表す属性データ（データ２）と、映画毎のジャンルを表すジャンルデータ（データ３）とが得られる場合がある。
【０００３】
評点データは、例えば、ユーザｉ（１≦ｉ≦Ｉ）の映画ｊ（１≦ｊ≦Ｊ）に対する評点をａｉ，ｊと表した場合、（ｉ，ｊ）要素がａｉ，ｊであるＩ×Ｊ行列で表される。属性データは、例えば、ユーザｉ（１≦ｉ≦Ｉ）の属性ｋ（１≦ｋ≦Ｋ）を示す値をｂｉ，ｋと表した場合、（ｉ，ｋ）要素がｂｉ，ｋであるＩ×Ｋ行列で表される。ジャンルデータは、例えば、映画ｊ（１≦ｊ≦Ｊ）がジャンルｌ（１≦ｌ≦Ｌ）に属するか否かを示す値をｃｊ，ｌと表した場合、（ｊ，ｌ）要素がｃｊ，ｌであるＪ×Ｌ行列で表される。
【０００４】
このとき、データ１とデータ２とは１つの軸（行成分を示す軸）のタイプが「ユーザ」であるという点で共通しており、データ１とデータ３とは１つの軸（列成分を示す軸）のタイプが「映画」であるという点で共通している。このため、これらの複数のデータは関連するデータであると言うことできる。
【０００５】
関連する複数のデータを利用することで、或るデータを推定する場合における推定精度の向上が期待できる。例えば、属性データとジャンルデータとを利用することで、ユーザの好みの映画の推定精度（すなわち、評点データの推定精度）の向上が期待できる。
【０００６】
関連する複数のデータを利用する方法として、複合行列分解が提案されている（例えば非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】竹内孝, 石黒勝彦, 木村昭悟, 澤田宏, "非負制約下における複合行列分解とそのソーシャルメディア解析への応用", 情報処理学会論文誌:数理モデル化と応用(TOM) 7(1), 71-83, 2014-03-28
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、複合行列分解では、異なるデータで同一の潜在ベクトルを仮定している。このため、複数のデータの性質が異なる場合（すなわち、複数のデータをそれぞれ表す行列の間で共通の潜在的な特徴を仮定できない場合）、これら複数のデータの解析が適切に行えず、データの推定精度が低下することがあった。
【０００９】
本発明は、上記の点に鑑みてなされたもので、高い精度でデータ推定を行うことを目的とする。
【課題を解決するための手段】
【００１０】
そこで、本発明の実施の形態では、関連する複数のデータを入力する入力手段と、前記データ毎に固有の変換関数によって前記複数のデータで共通の潜在ベクトルを変換した変換結果と、前記複数のデータとに基づいて、前記変換関数のパラメータと、前記共通の潜在ベクトルとを推定するパラメータ推定手段と、推定した前記変換関数のパラメータと前記共通の潜在ベクトルとから前記データを推定するデータ推定手段と、を有することを特徴とする。
【発明の効果】
【００１１】
高い精度でデータ推定を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】関連する複数のデータの一例を模式的に示す図である。
【図２】本発明の実施の形態における推定装置の構成の一例を示す図である。
【図３】本発明の実施の形態における推定装置のハードウェア構成の一例を示す図である。
【図４】本発明の実施の形態における推定装置の機能構成の一例を示す図である。
【図５】本発明の実施の形態におけるパラメータ推定処理の一例を示すフローチャートである。
【図６】本発明の実施の形態におけるデータ推定処理の一例を示すフローチャートである。
【図７】本発明と従来技術との比較例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面を参照しながら説明する。以降では、関連する複数のデータの全てに共通の潜在ベクトルを仮定し、その共通の潜在ベクトルを各データ固有の関数によって変換したものを利用することで、各データを推定する推定装置１０について説明する。なお、関連する複数のデータとは、少なくとも一部の軸が同じタイプである複数のデータのことである。
【００１４】
＜推定装置１０の構成＞
まず、本発明の実施の形態における推定装置１０の構成について、図２を参照しながら説明する。図２は、本発明の実施の形態における推定装置１０の構成の一例を示す図である。
【００１５】
図２に示すように、本発明の実施の形態における推定装置１０は、推定プログラム１００がインストールされたコンピュータ又はコンピュータシステムである。なお、推定プログラム１００は、複数のモジュール（プログラム）により構成されるプログラム群であっても良い。
【００１６】
以降では、入力データとして、共通項があるＤ個のデータ（すなわち、関連するＤ個のデータ）が与えられるものとする。また、各データは行列で表されるものとする。ただし、これに限られず、各データは、例えば、ベクトルやテンソル等により表されていても良い。
【００１７】
Ｄ個のデータのうちのｄ番目のデータを表す行列をＸｄとする。以降では、データと、当該データを表す行列とを同一視するものとする。また、ｄ番目の行列Ｘｄの第ｎ軸のタイプをｔｄｎとする。タイプとは、例えば、「ユーザ」、「映画」、「ジャンル」等を表す。
【００１８】
ここで、本発明では、それぞれのタイプの要素毎に、全データで共通の潜在ベクトルを持つものする。すなわち、全てのデータにおいて、タイプｔにおけるｍ番目の要素の潜在ベクトルをｕｔｍとする。なお、潜在ベクトルｕｔｍとは、タイプｔにおけるｍ番目の要素の潜在的な特徴的を表すベクトルである。
【００１９】
このとき、本発明では、ｄ番目の行列Ｘｄの（ｉ，ｊ）要素は、その行列の各軸に固有（言い換えれば、データ毎及び軸毎に固有）の関数ｆｄｎ（・）により潜在ベクトルを変換したものによって推定できるものとする。例えば、関数ｆｄｎ（・）により変換した潜在ベクトルの内積によってＸｄの（ｉ，ｊ）要素ｘｄｉｊを推定する場合、
【００２０】
【数１】
2019101584.tif 000003
となる。なお、変換する関数ｆｄｎ（・）は、例えば、線形関数、ニューラルネット等の非線形関数等、任意の関数を用いることができる。以降では、変換する関数ｆｄｎ（・）を「変換関数ｆｄｎ（・）」とも表す。
【００２１】
そこで、本発明の実施の形態における推定装置１０は、推定プログラム１００により、まず、共通項があるＤ個のデータを入力して、変換関数ｆｄｎ（・）のパラメータ（以降では、「変換関数パラメータ」と表す。）と、潜在ベクトルとを推定するパラメータ推定処理を実行する。次に、本発明の実施の形態における推定装置１０は、推定プログラム１００により、推定した変換関数パラメータ及び潜在ベクトルを用いて、Ｘｄの（ｉ，ｊ）要素の推定値を推定するデータ推定処理を実行する。これにより、本発明の実施の形態における推定装置１０によってデータが推定される。
【００２２】
＜推定装置１０のハードウェア構成＞
次に、本発明の実施の形態における推定装置１０のハードウェア構成について、図３を参照しながら説明する。図３は、本発明の実施の形態における推定装置１０のハードウェア構成の一例を示す図である。
【００２３】
図３に示すように、本発明の実施の形態における推定装置１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４と、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、補助記憶装置１８とを有する。これら各ハードウェアは、それぞれがバスＢを介して通信可能に接続されている。
【００２４】
入力装置１１は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置１２は、例えばディスプレイ等であり、推定装置１０の処理結果を表示する。なお、推定装置１０は、入力装置１１及び表示装置１２の少なくとも一方を有していなくても良い。
【００２５】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。推定装置１０は、外部Ｉ／Ｆ１３を介して、記録媒体１３ａ等の読み取りや書き込みを行うことができる。記録媒体１３ａには、推定プログラム１００等が記録されていても良い。
【００２６】
記録媒体１３ａには、例えば、フレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ＳＤメモリカード（Secure Digital memory card）、ＵＳＢ（Universal Serial Bus）メモリカード等がある。
【００２７】
ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、例えば、ＯＳ（Operating System）設定やネットワーク設定等が格納されている。
【００２８】
ＣＰＵ１６は、ＲＯＭ１５や補助記憶装置１８等からプログラムやデータをＲＡＭ１４上に読み出して処理を実行する演算装置である。
【００２９】
通信Ｉ／Ｆ１７は、推定装置１０を通信ネットワークに接続するためのインタフェースである。推定プログラム１００は、通信Ｉ／Ｆ１７を介して、所定のサーバ等から取得（ダウンロード）されても良い。
【００３０】
補助記憶装置１８は、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置１８に格納されているプログラムやデータには、例えば、ＯＳ、当該ＯＳ上において各種機能を実現するアプリケーションプログラム、推定プログラム１００等がある。
【００３１】
本発明の実施の形態における推定装置１０は、図３に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。
【００３２】
＜推定装置１０の機能構成＞
次に、本発明の実施の形態における推定装置１０の機能構成について、図４を参照しながら説明する。図４は、本発明の実施の形態における推定装置１０の機能構成の一例を示す図である。
【００３３】
本発明の実施の形態における推定装置１０は、データ入力部１１０と、パラメータ推定部１２０と、データ推定部１３０と、データ出力部１４０とを有する。これら各部は、推定プログラム１００がＣＰＵ１６に実行させる処理により実現される。
【００３４】
また、本発明の実施の形態における推定装置１０は、記憶部１５０を有する。当該記憶部は、例えば補助記憶装置１８を用いて実現可能である。なお、当該記憶部は、推定装置１０とネットワークを介して接続される記憶装置等を用いて実現されていても良い。
【００３５】
データ入力部１１０は、共通項があるＤ個のデータを入力する。なお、データ入力部１１０は、例えば、補助記憶装置１８や記録媒体１３ａ等に記憶されているＤ個のデータを入力しても良いし、ネットワークを介して接続されるサーバ等から取得したＤ個のデータを入力しても良い。
【００３６】
パラメータ推定部１２０は、変換関数パラメータ及び潜在ベクトルを推定する。このとき、パラメータ推定部１２０は、データ入力部１１０により入力されたデータの値（観測値）と、データを推定したときの値（推定値）との誤差がなるべく小さくなるように、変換関数パラメータ及び潜在ベクトルを推定する。
【００３７】
誤差としては、二乗誤差やクロスエントロピー誤差、一般化カルバックライブラー情報量等、任意の誤差を用いることができる。例えば、二乗誤差の場合は、以下の式１となる。
【００３８】
【数２】
2019101584.tif 000004
ここで、Ｄは行列数（データ数）、λｄはｄ番目のデータの誤差の重みハイパーパラメータ、Ｎｔはタイプｔの要素数である。また、ｍｄｉｊはｘｄｉｊが観測されていれば１、観測されていなければ０となる変数を表す。
【００３９】
なお、潜在ベクトルや変換関数パラメータ、変換後の潜在ベクトルに制約を付与しても良い。このような制約としては、例えば、スパース制約や非負値制約、ノルム制約等が挙げられる。
【００４０】
パラメータ推定部１２０には、初期化部１２１と、勾配計算部１２２と、パラメータ更新部１２３と、終了条件判定部１２４とが含まれる。
【００４１】
初期化部１２１は、変換関数パラメータ及び潜在ベクトルを初期化する。初期化部１２１により初期化された変換関数パラメータ及び潜在ベクトルは、記憶部１５０に記憶される。
【００４２】
勾配計算部１２２は、誤差の変換関数パラメータ及び潜在ベクトルに関する勾配を計算する。
【００４３】
パラメータ更新部１２３は、勾配計算部１２２により計算された勾配を用いて、誤差が小さくなるように、記憶部１５０に記憶されている変換関数パラメータ及び潜在ベクトルを更新する。パラメータ更新部１２３は、誤差を小さくするために、例えば、最急降下法や確率的勾配法、ニュートン法等の任意の最適化法を用いることができる。なお、遺伝的アルゴリズム等、勾配を用いない最適化法を用いても良い。
【００４４】
終了条件判定部１２４は、所定の終了条件を満たしたか否かを判定する。勾配計算部１２２による勾配の計算と、パラメータ更新部１２３による変換関数パラメータ及び潜在ベクトルの更新とは、終了条件判定部１２４によって終了条件を満たすと判定されるまで、繰り返し実行される。
【００４５】
所定の終了条件としては、例えば、繰り返しの回数が所定の回数以上となったこと、変換関数パラメータ及び潜在ベクトルの変化量が所定以下となったこと、誤差の絶対値が所定以下となったこと、誤差の変化量が所定以下となったこと等を用いることができる。
【００４６】
潜在ベクトルの次元や正則化のハイパーパラメータ、行列毎の誤差のハイパーパラメータ、データの誤差の重みハイパーパラメータ等の各種ハイパーパラメータは、例えば、交差検定等を用いて推定される。
【００４７】
なお、パラメータ推定部１２０には、ベイズ推定によって変換関数パラメータ及び潜在ベクトルを求めても良い。
【００４８】
データ推定部１３０は、パラメータ推定部１２０により推定された変換関数パラメータ及び潜在ベクトルを用いて、Ｘｄの（ｉ，ｊ）要素であるｘｄｉｊの推定値ｘｄｉｊ＾を計算する。推定値ｘｄｉｊ＾は、例えば、以下の式２で計算される。
【００４９】
【数３】
2019101584.tif 000005
データ推定部１３０には、パラメータ入力部１３１と、データ計算部１３２とが含まれる。
【００５０】
パラメータ入力部１３１は、記憶部１５０に記憶されている変換関数パラメータ及び潜在ベクトルを取得する。データ計算部１３２は、パラメータ入力部１３１により取得された変換関数パラメータ及び潜在ベクトルを用いて、上記の式２により推定値ｘｄｉｊ＾を計算する。
【００５１】
データ出力部１４０は、データ推定部１３０により推定された推定値ｘｄｉｊ＾を（ｉ，ｊ）要素とする行列Ｘｄ＾を出力する。データ出力部１４０の出力先としては、例えば、補助記憶装置１８や表示装置１２、記録媒体１３ａ等が挙げられる。データ出力部１４０の出力先として、例えば、ネットワークを介して接続されるサーバ等であっても良い。
【００５２】
＜パラメータ推定処理＞
以降では、本発明の実施の形態における推定装置１０が実行するパラメータ推定処理について、図５を参照しながら説明する。図５は、本発明の実施の形態におけるパラメータ推定処理の一例を示すフローチャートである。
【００５３】
データ入力部１１０は、共通項があるＤ個のデータを入力する（ステップＳ１０１）。
【００５４】
次に、パラメータ推定部１２０の初期化部１２１は、変換関数パラメータ及び潜在ベクトルを初期化する（ステップＳ１０２）。初期化部１２１は、初期化した変換関数パラメータ及び潜在ベクトルを記憶部１５０に記憶させる。初期化部１２１は、例えば、変換関数パラメータ及び潜在ベクトルを任意の値又は予め決められた値にそれぞれ初期化すれば良い。
【００５５】
次に、パラメータ推定部１２０の勾配計算部１２２は、誤差の変換関数パラメータ及び潜在ベクトルに関する勾配を計算する（ステップＳ１０３）。
【００５６】
次に、パラメータ推定部１２０のパラメータ更新部１２３は、勾配計算部１２２により計算された勾配を用いて、誤差が小さくなるように、記憶部１５０に記憶されている変換関数パラメータ及び潜在ベクトルを更新する（ステップＳ１０４）。
【００５７】
次に、終了条件判定部１２４は、所定の終了条件を満たしたか否かを判定する（ステップＳ１０５）。
【００５８】
ステップＳ１０５において、終了条件を満たしていないと判定された場合、パラメータ推定部１２０は、ステップＳ１０３に戻る。これにより、終了条件を満たすまで、ステップＳ１０３〜ステップＳ１０５が繰り返し実行される。
【００５９】
一方で、ステップＳ１０５において、終了条件を満たしていると判定された場合、パラメータ推定部１２０は、処理を終了する。
【００６０】
以上のように、本発明の実施の形態における推定装置１０では、データ推定処理で用いる変換関数パラメータ及び潜在ベクトルが推定される。
【００６１】
＜データ推定処理＞
以降では、本発明の実施の形態における推定装置１０が実行するデータ推定処理について、図６を参照しながら説明する。図６は、本発明の実施の形態におけるデータ推定処理の一例を示すフローチャートである。
【００６２】
まず、データ推定部１３０のパラメータ入力部１３１は、記憶部１５０に記憶されている変換関数パラメータ及び潜在ベクトルを取得する（ステップＳ２０１）。
【００６３】
次に、データ推定部１３０のデータ計算部１３２は、パラメータ入力部１３１により取得された変換関数パラメータ及び潜在ベクトルを用いて、上記の式２により推定値ｘｄｉｊ＾を計算する（ステップＳ２０２）。
【００６４】
データ推定部１３０のデータ出力部１４０は、データ推定部１３０により推定された推定値ｘｄｉｊ＾を（ｉ，ｊ）要素とする行列Ｘｄ＾を出力する（ステップＳ２０３）。
【００６５】
以上のように、本発明の実施の形態における推定装置１０では、変換関数パラメータ及び潜在ベクトルを用いて、各データＸｄ＾が推定される。
【００６６】
＜本発明と従来技術との比較例＞
ここで、本発明と従来技術との比較例を図７に示す。図７では、２つのデータセットを用いて、本発明と従来技術）とを行った評価指標値を示している。
【００６７】
１つ目のデータセットは、各ユーザによっていくつかの映画について１から５の評点が付けられた映画の評点データである。このとき、各映画のジャンルが示すジャンルデータを与えた。
【００６８】
２つ目のデータセットは、各ユーザがどのアーティストを何回聞いたかを示す音楽の視聴データである。このとき、各ユーザの友人関係を示すフレンドデータを与えた。
【００６９】
比較手法として、各データを独立に行列分解する従来手法（行列分解）と、非特許文献１に開示されている従来手法（複合行列分解）とを用いた。また、評価指標値としては、推定値と観測値との平均二乗誤差を用いた。
【００７０】
図７に示すように、本発明が最も低い誤差を達成しており、複数のデータを用いて高精度で推定できていることがわかる。
【００７１】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００７２】
１０        推定装置
１００      推定プログラム
１１０      データ入力部
１２０      パラメータ推定部
１２１      初期化部
１２２      勾配計算部
１２３      パラメータ更新部
１２４      終了条件判定部
１３０      データ推定部
１３１      パラメータ入力部
１３２      データ計算部
１４０      データ出力部
１５０      記憶部
【図１】
2019101584.tif 000006
【図２】
2019101584.tif 000007
【図３】
2019101584.tif 000008
【図４】
2019101584.tif 000009
【図５】
2019101584.tif 000010
【図６】
2019101584.tif 000011
【図７】
2019101584.tif 000012