【文献】
成田敦博、外3名,補助情報を用いたテンソル分解,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2011年 3月21日,Vol.110、No.476,pp.139〜146
(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の非特許文献1の技術は、単一のテンソル形式のデータを解析して因子を発見する技術である。しかし、この技術には解析対象テンソルに含まれるデータが少ない場合には性能が低下する課題を持つ。また、複数テンソルを同時に解析し、これらのテンソルに共通する因子を発見することは出来ない。
【0006】
本発明は、上記の事情を鑑みてなされたもので、複数の情報源から得られた解析対象データを解析して、精度よく因子を発見することができるデータ解析装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記の目的を達成するために本発明に係るデータ解析装置は、入力された複数の情報源の各々の関係を示す解析対象データの各観測値を要素として含むI
y×J
y×K
yのテンソルY
(Iy、Jy、Kyは2以上の自然数であり、それぞれ予め定められた値である)を作成し、前記複数の情報源のうちのN個の情報源nの各々について入力された前記情報源nに関する補助データの各観測値を要素として含むI
n×J
n×K
nの補助テンソルA
(n)(In、Jn、Knは2以上の自然数であり、それぞれ予め定められた値である)を各々作成するテンソル加工部であって、前記情報源nの各々について、前記補助テンソルA
(n)のI
nの値、J
nの値、及びK
nの値の何れ
か一つが、前記テンソルYと共通するテンソル加工部と、前記テンソル加工部によって作成された前記テンソルYを、I
y×Rの行列T
y(Rは自然数であり、予め定められた値である)、J
y×Rの行列U
y、及びK
y×Rの行列V
yに分解し、かつ、前記テンソル加工部によって作成された前記情報源nの各々の前記補助テンソルA
(n)を、前記情報源nの各々に対するI
n×Rの行列T
(n)、J
n×Rの行列U
(n)、及びK
(n)×Rの行列V
(n)に分解するテンソル分解部であって、前記テンソルY及び前記情報源nの各々の補助テンソルA
(n)と、前記行列T
y、前記行列U
y、及び前記行列V
yに基づいて推定される前記テンソルYの推定値^Y、並びに前記情報源nの各々に対する前記行列T
(n)、前記行列U
(n)、及び前記行列V
(n)に基づいて推定される前記情報源nの各々の補助テンソルA
(n)の推定値^A
(n)との距離を表す目的関数を最小化するように、前記テンソルYを、前記行列T
y、前記行列U
y、及び前記行列V
yに分解し、かつ前記情報源nの各々の前記補助テンソルA
(n)を、前記情報源nの各々に対する前記行列T
(n)、前記行列U
(n)、及び前記行列V
(n)に分解するテンソル分解部と、を含んで構成されている。
【0008】
本発明に係るデータ解析方法は、テンソル加工部によって、入力された複数の情報源の各々の関係を示す解析対象データの各観測値を要素として含むI
y×J
y×K
yのテンソルY
(Iy、Jy、Kyは2以上の自然数であり、それぞれ予め定められた値である)を作成し、前記複数の情報源のうちのN個の情報源nの各々について入力された前記情報源nに関する補助データの各観測値を要素として含むI
n×J
n×K
nの補助テンソルA
(n) (In、Jn、Knは2以上の自然数であり、それぞれ予め定められた値である)を各々作成するステップであって、前記情報源nの各々について、前記補助テンソルA
(n)のI
nの値、J
nの値、及びK
nの値の何れ
か一つが、前記テンソルYと共通するステップと、テンソル分解部によって、前記テンソル加工部によって作成された前記テンソルYを、I
y×Rの行列T
y(Rは自然数であり、予め定められた値である)、J
y×Rの行列U
y、及びK
y×Rの行列V
yに分解し、かつ、前記テンソル加工部によって作成された前記情報源nの各々の前記補助テンソルA
(n)を、前記情報源nの各々に対するI
n×Rの行列T
(n)、J
n×Rの行列U
(n)、及びK
(n)×Rの行列V
(n)に分解するステップであって、前記テンソルY及び前記情報源nの各々の補助テンソルA
(n)と、前記行列T
y、前記行列U
y、及び前記行列V
yに基づいて推定される前記テンソルYの推定値^Y、並びに前記情報源nの各々に対する前記行列T
(n)、前記行列U
(n)、及び前記行列V
(n)に基づいて推定される前記情報源nの各々の補助テンソルA
(n)の推定値^A
(n)との距離を表す目的関数を最小化するように、前記テンソルYを、前記行列T
y、前記行列U
y、及び前記行列V
yに分解し、かつ前記情報源nの各々の前記補助テンソルA
(n)を、前記情報源nの各々に対する前記行列T
(n)、前記行列U
(n)、及び前記行列V
(n)に分解するステップと、を含む。
【0009】
本発明に係るプログラムは、上記のデータ解析装置の各部としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0010】
以上説明したように、本発明のデータ解析装置、方法、及びプログラムによれば、解析対象データのテンソルYを作成し、情報源nの各々の補助データについて、I
nの値、J
nの値、及びK
nの値の何れ一つが、テンソルYと共通する補助テンソルA
(n)を各々作成し、目的関数を最小化するように、テンソルYを、行列T
y、行列U
y、及び行列V
yに分解し、かつ情報源nの各々の補助テンソルA
(n)を、行列T
(n)、行列U
(n)、及び行列V
(n)に分解することにより、複数の情報源から得られた解析対象データを解析して、精度よく因子を発見することができる、という効果が得られる。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0013】
<概要>
まず、本発明のポイントは、以下の(1)、(2)である。
【0014】
(1)解析対象データを加工したテンソルに加えて、補助的なデータを加工した補助テンソルを利用して因子の解析を行う。
【0015】
(2)複数の解析対象データを同時に解析するため、Nonnegative Tensor Factorization(NTF)技術を拡張し、複数の補助情報を利用したテンソル分解を行えるようした。このために、テンソル間のインデクスの共有と補助テンソル毎の重み係数を導入した。
【0016】
テンソル形式に加工したデータからの因子を発見する解析方法として、非負値テンソル因子分解(NTF)が知られている(参考文献1を参照)。
【0017】
(参考文献1):A. Shashua & T. Hazan, “Non-Negative Tensor Factorization with Applications to Statistics and Computer Vision,” ICML, 2005.
【0018】
NTFは、ある非負値のテンソルYを非負値の因子行列U、T、Vに分解する手法である。例えば、テンソルYは、あるユーザがあるアイテムにある曜日に与えた評価点数からなるテンソルとする。このようなテンソルYを分解すると、複数のアイテムに類似した点数を同じ曜日に与えやすいユーザ集団が、因子行列Uの基底、類似した店舗が、因子行列Tの基底(例:IKEA(登録商標), Apple Store(登録商標)など)、また、上記のレビューがどの程度ある曜日に書かれるか(例:日曜日に)を表す指標が、因子行列Vの基底に抽出される。しかし、このようなデータでは、ユーザ毎の評価数は限られている場合が多いため、テンソルYは非常にデータ数が少なくなりNTFにより因子行列の発見は困難になる。
【0019】
本発明では、レビューの点数と評価された曜日データだけでなく、アイテムカテゴリとレビューのテキスト、店舗の位置情報と来客数などの補助データも入力として利用し、これらを同時に解析する必要がある。これらの情報を1つのテンソル(Y)にまとめることはできないため、NTFをそのまま適用することはできない。そこで本発明では、非負値テンソル因子分解(NTF)を拡張し複合非負値テンソル因子分解(NMTF)を提案する。
【0020】
<システム構成>
図1は、本発明の実施の形態に係るデータ解析装置100の模式図の一例である。データ解析装置100は、CPUと、RAMと、後述するデータ解析処理ルーチンを実行するためのプログラムを記憶したROMとを備えたコンピュータで構成され、機能的には、データ解析装置100は、入力部10と、演算部20と、出力部30と、を備えている。
【0021】
入力部10は、複数の情報源の各々の関係(ユーザ、アイテム、曜日の関係)を示す観測値(評価点)の集合である解析対象データの入力を受け付けると共に、各情報源について、当該情報源に関する観測値(アイテムカテゴリとレビューのテキスト、又は店舗の位置情報と来客数)の集合である補助データの入力を受け付ける。入力される解析対象データ、補助データは、テンソル形式に加工可能なデータであり、補助データは、例えば、3つまでの補助データとする。
【0022】
演算部20は、テンソル加工部21、及びテンソル分解部22を備えている。
【0023】
〔テンソル加工部〕
テンソル加工部21は、入力部10により受け付けた解析対象データと、補助データ1、2、3とを読み込み、以下の加工を行う。ただし、補助データのいずれかが入力されない場合も許し、その場合は該当する補助データの加工を省略する。
【0024】
解析対象データを表現する、I
y×J
y×K
yのテンソルYを作成し、出力する。y
ijkは、テンソルYのijk要素に対応する数値とする。
【0025】
補助データ1が入力された場合は、補助データ1を表現する、I
1×J
1×K
1のテンソルA
(1)を作成し、出力する。a
(1)ijjは、補助テンソルA
(1)のijk要素に対応する数値とする。
【0026】
補助データ2が入力された場合は、補助データ2を表現する、I
2×J
2×K
2のテンソルA
(2)を作成し、出力する。a
(2)ijjは、補助テンソルA
(2)のijk要素に対応する数値とする。
【0027】
補助データ3が入力された場合は、補助データ3を表現する、I
3×J
3×K
3のテンソルA
(3)を作成し、出力する。a
(3)ijjは、補助テンソルA
(3)のijk要素に対応する数値とする。
【0028】
このように、情報源nに関する補助データが入力されない場合は、補助テンソルA
(n)の作成と出力を行わない。
【0029】
また、等式I
1= I
y、J
2 =J
y、K
3=K
yが満たされない場合はエラーとなり計算を終了する。この処理は、テンソル間のインデクスの共有の仮定を満たさない場合にはNMTFがテンソル分解を行えないため、テンソル分解前に必要なエラー検出である。
【0030】
〔テンソル分解部〕
テンソル分解部22は、テンソル加工部21から入力されたテンソルY、A
(1)、A
(2)、A
(3)を、以下の(1)式に示す目的関数Dを最小化するように、因子集合Θ={T
y、U
y、V
y、T
(n)、U
(n)、V
(n) (n=1…N)}へ分解する。ただし、いずれかの補助テンソルA
(n) (n=1…N)が入力されなかった場合は、T
(n)、U
(n)、V
(n) への分解は省略する。ここで、T
y、U
y、V
y、T
(n)、U
(n)、V
(n) (n=1…N)は、
図2に示すように、それぞれI
y×R行列、J
y×R行列、K
y×R行列、I
n×R行列、J
n×R行列、K
n×R行列(n=1…N)である。I
y、J
y、K
y、I
n、J
n、K
n(n=1…N)は解析対象のデータで用いたものと同じであり、Rは任意の自然数であり、予め設定される。
【0031】
ここで入力されたテンソルを同時に分解するために、以下の処理を行う。I
1=I
y、J
2=J
y、K
3=K
yであるからT
(1)=T
y、U
(2)=U
y、V
(3)=V
yと定める。この処理は、テンソル間のインデクスが共有される場合に、テンソル間で因子行列が共有されると定めている。
【0033】
ここで、η
(n)は、補助テンソルA
(n)に対して予め定められた重み係数である。重み係数を導入することによって、複数のテンソルの間のスケールの異なりを緩和し、同時解析を可能にしている。
【0034】
ここで、d()は次の一般化KL距離である。
【0036】
テンソル分解部22の詳細構成を
図3に示す。テンソル分解部22は、初期化部221、行列更新部222、及び計算終了評価部223を備え、以下の手順で行列U
y、V
y、T
y、U
(1)、V
(1)、T
(2)、V
(2) 、T
(3)、U
(3)を求める。
【0037】
〔初期化部〕
初期化部221は、因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)の各要素を乱数によって初期化する。
【0038】
〔行列更新部〕
行列更新部222は、初期化部221によって初期化された、又は前回更新された因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)に基づいて、下記式により因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)の各要素を更新する。
【0040】
ここで、t
iryは行列T
yのi行r列の要素、u
jryは行列U
yのj行r列の要素、t
kryは行列T
yのk行r列の要素、t
ir(n)は行列T
(n)のi行r列の要素、u
jr(n)は行列U
(n)のj行r列の要素、t
kr(n)は行列T
(n)のk行r列の要素である。また、^y
ijkは、テンソルYの推定値^Yのijk要素であり、a
ijk(n)は前記補助テンソルA
(n)のijk要素であり、^a
ijk(n)は、補助テンソルA
(n)の推定値^A
(n)のijk要素であり、以下の式で表わされる。
【0042】
〔計算終了評価部〕
行列更新部222の最大繰り返し数をLとする。l回目の行列更新部222の計算から得られた因子行列の集合をΘ
lと置く。初期化部221から出力される初期化された因子行列はΘ
0とする。
【0043】
計算終了評価部223では、行列更新部222の繰り返し数がLに到達した場合、もしくは、以下の基準を満たした場合に、予め定められた計算終了条件を満たしたと評価し、計算を終了し、Θ
lを出力する。
【0045】
これは、上記の(1)式の目的関数Dの変化分(t回目の計算結果と前回のt-1回目の計算結果の差分の絶対値)が、予め定めた誤差ε以下になった場合に、因子行列集合が収束した(上記(1)式の目的関数Dが最小化された)と評価し、計算を終了することを意味する。
【0046】
<データ解析装置の動作>
次に、本発明の実施の形態に係るデータ解析装置100の作用について説明する。まず、複数の情報源の間の関係を示す観測値の集合である解析対象データの入力を受け付けると共に、当該複数の情報源のうちのN個の情報源の各々に関する補助データが、入力部10を介してデータ解析装置100に入力されると、データ解析装置100において、
図4に示すデータ解析処理ルーチンが実行される。
【0047】
まず、ステップS101において、入力部10により入力された解析対象データに基づいて、テンソルYを作成すると共に、入力部10により入力された各情報源nの補助データに基づいて、補助テンソルA
(n)を各々作成する。
【0048】
そして、ステップS102において、上記ステップS101で作成されたテンソルY、及び各情報源nの補助テンソルA
(n)に基づいて、因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)を作成し、因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)の各要素を乱数によって初期化する。
【0049】
次のステップS103では、上記ステップS102で初期化された、又は前回更新された因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)に基づいて、因子行列T
y、U
y、V
y、U
(1)、V
(1)、T
(2)、V
(2)、T
(3)、U
(3)の各要素を更新する。
【0050】
ステップS104では、予め定められた計算終了条件を満たしたか否かを評価し、計算終了条件を満たしていないと評価された場合には、上記ステップS103へ戻り、計算終了条件を満たしたと評価された場合には、計算を終了し、上記ステップS103で最終的に更新された因子行列の集合Θ
lを出力する。
【0051】
<実施例>
本発明の効果を示すために、人工的に生成したデータセットと、アイテム評価オンラインサービスであるYelp(登録商標)(URL:http://www.yelp.com/)から得られたデータセットとに対して、NTFとNMTFを用いて解析を行った結果について、定量的な評価と定性的な評価を行った。なお、NTFの場合は、本発明の分解対象であるテンソルのうちYを入力データとしてNTFにより因子行列に分解した。
【0052】
平均対数尤度という指標を用いて定量的な評価を行った。平均対数は、モデルとデータの間の誤差を表し、良いモデルほど平均対数尤度の値が増加する。行列更新終了時の平均対数尤度を以下に示す。
【0053】
【表1】
NMTF(本発明)によって、平均対数尤度の改善が確認できた。
【0054】
次に定性的な評価を行った。Yelp(R)データの行列更新終了時の因子行列の一部を
図5と
図6に示す。ここで、
図5、6の説明を行う。
図5、6の上段左部は店舗因子を可視化してあり、棒グラフの値は該当店舗の影響力の大きさを示している。上段右部には、来客数因子を可視化してあり、線グラフの値はある曜日のある時間での来客数の統計値を示している。中段左部にはカテゴリ因子を可視化してあり、棒グラフの値は該当カテゴリの影響力の大きさを示している。中段右部には単語因子を可視化してあり、棒グラフの値は該当単語の影響力の大きさを示している。下段の図は位置因子を可視化してあり、円の半径は該当地点の影響力の大きさを示している。
【0055】
図5ではCamelback MountainやSouth Mountain Parkなどの公共施設が強い影響力を持ち、来客者は休日の来客数が多い。さらにカテゴリとしてはActive LifeやParksなどが、単語としてはparkやhikeなどが影響力をもち、影響する地区は地図上の市街地に存在している。休日のレジャー活動に関する因子が抽出されたと言える。
【0056】
図6ではRoka AkorやSakana Sushi & Grill、Hana Japanese Eateryなどの飲食店舗が強い影響力を持ち、来客者は全日を通して12時付近と18時付近が多い。さらにカテゴリとしてはSushi BarやRestaurantなどが、単語としてはsushiやrollなどが影響力をもち、影響する地区は地図上の市街地に存在している。日本食の飲食に関する因子が抽出されたと言える。
【0057】
以上説明したように、本発明の実施の形態に係るデータ解析装置によれば、解析対象データのテンソルYを作成し、情報源nの各々の補助データについて、I
nの値、J
nの値、及びK
nの値の何れ
か一つが、テンソルYと共通するI
n×J
n×K
nの補助テンソルA
(n)を各々作成し、目的関数を最小化するように、テンソルYを、行列T
y、行列U
y、及び行列V
yに分解し、かつ情報源nの各々の補助テンソルA
(n)を、行列T
(n)、行列U
(n)、及び行列V
(n)に分解することにより、複数の情報源から得られた解析対象データを解析して、複数のテンソルに共通する因子を精度よく発見することができる。
【0058】
また、解析対象テンソルと補助的なテンソルのデータを同時解析することで、解析対象テンソルに含まれるデータが少ない場合に性能が低下する課題を解決し、定量的にも定性的にも、より高い精度で、複数のテンソルに共通する因子の発見を実現することができる。
【0059】
なお、本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【0060】
例えば、補助データが、4つ以上であってもよい。その場合には、4つ以上の情報源nの各々の補助データについて、I
nの値、J
nの値、及びK
nの値の何れ
か一つが、テンソルYと共通するI
n×J
n×K
nの補助テンソルA
(n)を各々作成すればよい。また、因子行列の各要素の更新式についても、4つ以上の補助データに対応した更新式を用いればよい。
【0061】
また、上述のデータ解析装置は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
【0062】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。