(57)【特許請求の範囲】
【請求項１】
テンソルの因子分解処理を行うテンソル因子分解処理装置であって、
特定の事象の複数の属性情報を含むログデータの群から抽出した属性情報をモードとするテンソルを構築するテンソル構築手段と、
前記テンソル毎に当該テンソルの因子行列を含んだテンソル情報と当該因子行列毎のテンソル内順序を含んだ因子行列情報とから成る補助データを構築する補助データ構築手段と、
前記補助データに基づき前記因子行列の更新時に参照すべき因子行列を決定する参照決定手段と
を備えたことを特徴とするテンソル因子分解処理装置。
【請求項２】
前記参照決定手段は、前記補助データの因子行列を更新する場合に当該因子行列のテンソル内順序以外の順序に対応した因子行列を前記参照すべき因子行列として決定すること
を特徴とする請求項１に記載のテンソル因子分解処理装置。
【請求項３】
前記補助データ構築手段は、前記テンソルをその重みに対応付けて前記テンソル情報に格納することを特徴とする請求項１または２に記載のテンソル因子分解処理装置。
【請求項４】
テンソルの因子分解処理を行うテンソル因子分解処理装置が実行するテンソル因子分解処理方法であって、
特定の事象の複数の属性情報を含むログデータの群から抽出した属性情報をモードとするテンソルを構築するテンソル構築ステップと、
前記テンソル毎に当該テンソルの因子行列を含んだテンソル情報と当該因子行列毎のテンソル内順序を含んだ因子行列情報とから成る補助データを構築する補助データ構築ステップと、
前記補助データに基づき前記因子行列の更新時に参照すべき因子行列を決定する参照決定ステップと
を有することを特徴とするテンソル因子分解処理方法。
【請求項５】
前記参照決定ステップにおいて、前記補助データの因子行列を更新する場合に当該因子行列のテンソル内順序以外の順序に対応した因子行列を前記参照すべき因子行列として決定すること
を特徴とする請求項４に記載のテンソル因子分解処理方法。
【請求項６】
前記補助データ構築ステップにおいて、前記テンソルをその重みに対応付けて前記テンソル情報に格納すること
を特徴とする請求項４または５に記載のテンソル因子分解処理方法。
【請求項７】
コンピュータを請求項１から３のいずれか１項に記載のテンソル因子分解処理装置を構成する各手段として機能させることを特徴とするテンソル因子分解処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データマイニング技術、特に、複数の属性情報から要因パターンを抽出する因子分解に関する技術に関する。
【背景技術】
【０００２】
複数の属性情報から要因パターンを抽出する技術として、非負値複合テンソル因子分解と呼ばれる技術がある（例えば非特許文献１）。この技術は数式として定式化されており、入力条件が定まっていれば、数値計算用のソフトウェアを用いて入力条件に応じた因子分解処理手順を設定することにより、要因パターンを表す行列（因子行列）を得ることができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Koh Takeuchi , Ryota Tomioka , Katsuhiko Ishiguro , Akisato Kimura , and Hiroshi Sawada ," Non-negative Multiple Tensor Factorization ", ICDM , 2013
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の技術では、任意の入力条件について数式通りのテンソルの因子分解処理手順を動的に決定する手法がなく、入力条件に応じてその都度処理手順の設定を行わなければならない。
【０００５】
入力条件の違いと処理手順への影響としては、例えば、入力するテンソルの個数や階数に依って出力される因子行列の個数が異なる。また、複数のテンソルが共有モードを有する場合に各テンソルを因子分解して更新処理する際に参照すべき当該テンソルの因子行列の値やその個数が異なる。
【０００６】
本発明は、上記の事情に鑑み、テンソルの因子分解処理において任意の入力条件について正しい処理手順を動的に決定することを課題とする。
【課題を解決するための手段】
【０００７】
そこで、本発明は、特定の事象の属性情報を含むログデータから構築したテンソルとその補助データとに基づきテンソルの因子分解処理を行う。
【０００８】
本発明のテンソル因子分解処理装置としての態様は、テンソルの因子分解処理を行うテンソル因子分解処理装置であって、特定の事象の属性情報を含むログデータの群から抽出した属性情報をモードとするテンソルを構築するテンソル構築手段と、前記テンソル毎に当該テンソルの因子行列を含んだテンソル情報と当該因子行列毎のテンソル内順序を含んだ因子行列情報とから成る補助データを構築する補助データ構築手段と、前記補助データに基づき前記因子行列の更新時に参照すべき因子行列を決定する参照決定手段とを備える。
【０００９】
本発明のテンソル因子分解処理方法としての態様は、テンソルの因子分解処理を行うテンソル因子分解処理装置が実行するテンソル因子分解処理方法であって、特定の事象の属性情報を含むログデータの群から抽出した属性情報をモードとするテンソルを構築するテンソル構築ステップと、前記テンソル毎に当該テンソルの因子行列を含んだテンソル情報と当該因子行列毎のテンソル内順序を含んだ因子行列情報とから成る補助データを構築する補助データ構築ステップと、前記補助データに基づき前記因子行列の更新時に参照すべき因子行列を決定する参照決定ステップを有する。
【００１０】
尚、本発明は上記装置の各手段としてコンピュータを機能させるプログラム若しくは上記方法の各ステップをコンピュータに実行させるプログラムの態様とすることもできる。
【発明の効果】
【００１１】
以上の発明によればテンソルの因子分解処理において任意の入力条件に対する正しい処理手順を動的に決定できる。
【図面の簡単な説明】
【００１２】
【図１】（ａ）は本発明の実施形態におけるテンソル因子分解処理装置のブロック構成図、（ｂ）は同装置におけるテンソル分解部のブロック構成図。
【図２】ログデータの一例を示したデータ構成図。
【図３】ログデータに基づくテンソルの一例を示したデータ構成図。
【図４】ログデータからテンソルが構築される過程の説明図。
【図５】（ａ）は補助データのテンソル情報の一例を示したデータ構成図、（ｂ）は同補助データの因子行例情報の一例を示したデータ構成図。
【図６】テンソルを構築する過程を説明したフローチャート。
【図７】補助データを構築する過程を説明したフローチャート。
【図８】テンソルの因子行列を初期化する過程を説明したフローチャート。
【図９】参照すべき因子行列の決定過程を説明したフローチャート。
【図１０】前記因子行列を更新する過程を説明したフローチャート。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら本発明の実施の形態について説明するが本発明はこの実施形態に限定されるものではない。
【００１４】
［概要］
図１に示した本実施形態のテンソル因子分解処理装置１はテンソルの因子行列の更新処理手順を決定するためのデータ構造を構築する。そして、このデータ構造を一定の手順で参照することにより、任意の入力条件に対するテンソルの因子行列の正しい更新処理手順を動的に決定する。
【００１５】
［技術用語の説明］
本実施形態の説明にあたり、本実施形態に関連する技術用語について説明する。
【００１６】
ログデータとは、特定の事象の複数の属性情報の組合せとこの組合せに対応する属性値とを含んでなるデータである。例えば、人々が商店を訪れたことのログデータは、ユーザＩＤ，店ＩＤ，曜日の３つの属性と、これらの属性に対応する訪問回数や滞在時間で示される属性値とを含んでなる。尚、ログデータはその属性をモードとみなすことでテンソルとして表すことができる。
【００１７】
テンソルとは、本発明においては多次元の配列と同義である。例えば、３階のテンソルは３次元配列として表現できる。
【００１８】
モードとは、テンソルの軸を指す。例えば、行列は２階のテンソルとみなせるが、このとき行方向と列方向の２つのモードがある。ログデータをテンソルで表すとき、各モードはログデータの属性と一対一で対応する。
【００１９】
共有モードとは、入力するテンソルのうち複数のテンソルに現れるモードである。例えば、入力として（ユーザＩＤ，店ＩＤ，曜日）のモードをもつテンソルと、（ユーザＩＤ，環境種別，時間帯）のモードをもつテンソルがあるとき、ユーザＩＤが共有モードとなる。
【００２０】
因子行列とは、テンソルを因子分解することで得られる行列であり、モードと同じ数だけ存在する。前述の入力例では、５つのモードに対応して５つの因子行列が得られる。
【００２１】
［装置の構成］
テンソル因子分解処理装置１は、入力データ記憶部１０，テンソル構築部１１，補助データ構築部１２，テンソル分解部１３，出力データ記憶部１４を備える。
【００２２】
入力データ記憶部１０は、因子分解するテンソルの元データであるログデータと、非負値複合テンソル因子分解で用いるパラメータを保存している。尚、ログデータは予め保存されているものとする。
【００２３】
入力データ記憶部１０に保存されているログデータの一例を図２に示す。本事例のログデータは、ユーザＩＤや店ＩＤ等の属性情報の組合せとこの組合せに対応する属性値とを含んでいる。但し、属性情報の組合せのみで属性値を有しない形式も想定される場合は、ログデータ内の同一の組合せの重複をカウントし、そのカウント値を属性値としている。
【００２４】
テンソル構築部１１は、入力データ記憶部１０からログデータの群を引き出してこのログデータの群から抽出した特定の事象の属性情報をモードとするテンソルを構築する。この構築されたテンソルの一例を図３，４に示す。詳細な処理は後述する。
【００２５】
補助データ構築部１２は、テンソル構築部１１によって構築されたテンソルに基づき補助データを構築する。この補助データはテンソル情報と因子行列情報とから成る。前記テンソル情報は、前記テンソル毎に対応付けられた重みと当該テンソルの因子行列とを含む。前記因子行列情報は、前記因子行列毎のテンソル内順序を含む。この構築された補助データの一例を図５に示す。詳細な処理は後述する。
【００２６】
テンソル分解部１３は、前記テンソルと前記補助データとを用いて、テンソルの因子分解処理を実行する。テンソル分解部１３は、図１に示したようにその具体的な構成要素として、初期化部２０、参照決定部２１、行列更新部２２及び計算終了評価部２３を備える。
【００２７】
初期化部２０は、テンソル構築部１１にて構築されたテンソルの因子行列を乱数で初期化する。詳細な処理は後述する。
【００２８】
参照決定部２１は、補助データ構築部１２にて構築された補助データに基づき前記初期化済みのテンソルの因子行列の更新時に参照すべき因子行列を決定する。詳細な処理は後述する。
【００２９】
行列更新部２２は、参照決定部２１にて決定された参照すべき因子行列の要素を更新する。詳細な処理は後述する。
【００３０】
計算終了評価部２３は、所定基準に基づき前記更新の継続、終了のいずれかを決定する。
【００３１】
出力データ記憶部１４は、テンソル分解部１３で得られた因子行列を保存する。
【００３２】
以上のテンソル因子分解処理装置１の機能部１０〜１４，２０〜２３はコンピュータのハードウェアリソースによって実現される。すなわち、テンソル因子分解処理装置１は、少なくとも演算装置（ＣＰＵ）、記憶装置（メモリ、ハードディスク装置等）、通信インタフェース等のコンピュータに係るハードウェアリソースを備える。そして、これらのハードウェアリソースがソフトウェアリソース（ＯＳ、アプリケーション等）と協働することにより各機能部１０〜１４，２０〜２３が実装される。また、各々のコンピュータに機能部１０〜１４，２０〜２３を各々実装させるようにしてもよい。
【００３３】
［本実施形態のテンソル因子分解処理の過程］
本過程は、以下の「テンソルの構築」、「補助データの構築」、「因子行列の初期化」、「参照すべき因子行列の決定」及び「因子行列の更新」の過程を有する。
【００３４】
（テンソルの構築）
図６を参照しながらテンソル構築の過程Ｓ１００〜Ｓ１０６について説明する。本過程はテンソル構築部１１によって実行される。
【００３５】
Ｓ１００：入力データ記憶部１０から引き出した各ログデータについて要素の値が全て０であるテンソルを用意してＳ１０１以降の処理を実行する。全てのログデータについて処理が終了したときは処理終了に進む。
【００３６】
Ｓ１０１：１つのログデータの各行について、Ｓ１０２以降の処理を実行する。全ての行についての処理が終了したときは、Ｓ１００に進む。
【００３７】
Ｓ１０２：１行の各属性について、Ｓ１０３以降の処理を実行する。全ての属性について処理が終了したときは、Ｓ１０６に進む。
【００３８】
Ｓ１０３：ある属性の属性値が過去にＳ１０５で添え字に割り当てられたことがあればＳ１０４に進み、そうでなければＳ１０５に進む。
【００３９】
Ｓ１０４：属性値を過去に割り当てられた添え字に変換し、Ｓ１０２に進む。
【００４０】
Ｓ１０５：属性値に未割当の添え字を割り当て、この属性値を当該添え字に変換してＳ１０２に進む。
【００４１】
Ｓ１０６：テンソルのＳ１０３〜Ｓ１０６で変換した添え字が指す要素に属性値を代入する。
【００４２】
以上のＳ１００〜Ｓ１０６の過程で構築された図３に例示されたテンソルＴ０，Ｔ１、図４に例示されたテンソルＴ０は図５（ａ）に例示したように重みの値と対応づけて入力データ記憶部１０に保存される。
【００４３】
（補助データの構築）
図７を参照しながら補助データ構築の過程Ｓ２００〜Ｓ２０７について説明する。本過程は補助データ構築部１２によって実行される。
【００４４】
Ｓ２００：入力データ記憶部１０に保存された各テンソルについてＳ２０１以降の処理を実行する。全てのテンソルについて処理が終了したときは、処理終了に進む。
【００４５】
Ｓ２０１：入力データ記憶部１０からテンソルをその重みの値と共に引き出す。
【００４６】
Ｓ２０２：前記テンソルの各モードに対応するログデータの属性名（図４の事例では、ユーザＩＤ、店ＩＤ、曜日、環境種別、時間帯）を入力データ記憶部１０から引き出す。
【００４７】
Ｓ２０３：前記テンソルの各モードについてＳ２０４以降の処理を実行する。入力データ記憶部１０の保存された全てのテンソルの全てのモードについて処理が終了したときは、Ｓ２０７に進む。
【００４８】
Ｓ２０４：あるモードについて同じ属性名をもつ因子行列情報があればＳ２０５に進み、当該因子行列情報がなければＳ２０６に進む。
【００４９】
Ｓ２０５：当該因子行列情報にテンソル情報の番号と、この番号に対応したテンソルの因子行列のテンソル内順序を追加する。テンソル情報の番号には、この時点で作成されたテンソル情報の総数を用いる。例えば、まだ１つもテンソル情報が作成されていないときは０となる。
【００５０】
Ｓ２０６：新しい因子行列情報を追加し、この因子行列情報にＳ２０５と同様にモードの属性名、当該モードを成分とするテンソルの番号、この番号に対応したテンソルの因子行列のテンソル内順序を追加する。
【００５１】
Ｓ２０７：新しいテンソル情報を追加し、このテンソル情報にＳ２０１にて読み込んだ重みを対応付けさせ、Ｓ２０５，Ｓ２０６にて選択または追加した因子行列情報の番号を追加する。
【００５２】
以上のＳ２００〜Ｓ２０７の過程で構築された補助データは、例えば図５（ａ）に示されたテンソル情報と図５（ｂ）に示された因子行列情報とから成る態様で入力データ記憶部１０に保存される。
【００５３】
（因子行列の初期化）
図８を参照しながら因子行列の初期化の過程Ｓ３００〜Ｓ３０２について説明する。本過程はテンソル分解部１３の初期化部２０によって実行される。
【００５４】
Ｓ３００：入力データ記憶部１０から本実施形態の因子分解で用いるパラメータとしてランク数（階数）を引き出す。
【００５５】
Ｓ３０１：補助データ構築部１２にて構築された補助データの各因子行列情報について、Ｓ３０２の処理を実行する。全ての因子行列情報について処理が終了したときは、処理終了に進む。
【００５６】
Ｓ３０２：前記各因子行列情報に対応したテンソルの因子行列の全ての要素について、０より大きい乱数を代入する。尚、因子行列は、行の大きさを対応するモードの大きさとし、列の大きさをＳ３００で引き出したランク数とする。
【００５７】
（参照すべき因子行列の決定）
図９に基づき参照すべき因子行列の決定の過程Ｓ４００〜Ｓ４０４について説明する。本過程はテンソル分解部１３の参照決定部２１によって実行される。
【００５８】
Ｓ４００：前記因子行列が初期化された前記補助データの各テンソル情報について、Ｓ４０１以降の処理を実行する。全てのテンソル情報について処理が終了したときは、処理終了に進む。
【００５９】
Ｓ４０１：前記各テンソル情報に対応した各因子行列情報について、Ｓ４０２以降の処理を実行する。全ての因子行列情報について処理が終了したときは、Ｓ４００に進む。
【００６０】
Ｓ４０２：前記因子行列情報の各テンソル情報について、対応するテンソルの推定値を計算する。このテンソル情報に対応するテンソルの推定値は、当該テンソル情報の因子行列情報の番号に対応する因子行列によって算出できる。図５（ａ）の事例では、テンソル０の推定値は、因子行列番号０，１，２に対応する因子行列の要素の値に基づき算出される。この推定値の数学的な定義は非特許文献１において開示されている。
【００６１】
Ｓ４０３：前記因子行列情報の各テンソル情報について、対応するテンソル内順序以外の順序を有する因子行列情報を選択する。図５の事例において、因子行列情報１を処理する場合、テンソル情報０についてテンソル０内順序が１以外の順序０，２に対応した因子行列情報、すなわち、因子行列情報０，２が選択される。同様に、因子行列情報０について処理する場合、テンソル情報０についてテンソル０内順序が０以外の順序１，２に対応した因子行列情報１，２が、テンソル情報１についてテンソル１内順序が０以外の順序１，２に対応した因子行列情報３，４が選択される。
【００６２】
Ｓ４０４：行列更新部２２に対して、更新する因子行列情報の番号と、（テンソル情報の番号，因子行列情報の番号のリスト）の１つ以上の組を指定する。図５の事例では、因子行列情報０を処理する場合は「０，（０，１，２），（１，３，４）」を指定する。因子行列情報１を処理する場合は「１，（０，０，２）」を指定する。
【００６３】
（因子行列の更新）
図１０を参照しながら因子行列の更新の過程について説明する。本過程はテンソル分解部１３の行列更新部２２によって実行される。
【００６４】
Ｓ５００：前記指定された因子行列情報に対応する因子行列の各要素について、Ｓ５０１以降の処理を行う。全ての要素について処理が終了したときは、処理終了に進む。
【００６５】
Ｓ５０１：前記指定されたテンソル情報の番号、因子行列情報の番号のリストに基づき、因子行列の要素の更新式の値を計算し、要素を更新する。すなわち、前記指定されたテンソル情報の番号のテンソルに対応した前記因子行列情報の番号の順に当該テンソルの因子行列の要素の更新式の値を計算し、当該要素を更新する。
【００６６】
更新式はテンソル間の距離の定義により異なるが、例えば一般化ＫＬダイバージェンスを距離としたときの、２つのテンソルが関わる因子行列の要素の更新式は以下の式（１）となる。この更新式の計算に必要なパラメータは、テンソル情報に対応するテンソルの重みηの値、Ｓ４０２で算出された当該テンソルの推定値、Ｓ４０３で得られた当該テンソルの因子行列である。
【００６７】
【数１】
0006038987.tif 000002
【００６８】
そして、計算終了評価部２３は、Ｓ５０１で更新された因子行列に基づき、前記更新（Ｓ５００，Ｓ５０１）の終了、継続のいずれかを決定する。
【００６９】
具体的には、計算終了評価部２３は、テンソルごとに「更新された因子行列から計算できるそのテンソルの推定値」と「テンソル構築部１１で構築した最初のテンソル」の距離若しくは前記更新の回数に基づき前記更新の継続，終了のいずれかの決定を行う。前記距離には例えばＫＬダイバージェンス距離が採用される。この一般化ＫＬダイバージェンスは一例であり、他の確率論的な周知の距離を採用することもできる。尚、ここで他の距離を採用すれば、式（１）もその距離に適したものを採用することになる。
【００７０】
そして、前記距離が前記終了条件を満たしていない場合、または、前記回数が前記上限に達していない場合、前記更新の継続と決定する。
【００７１】
一方、前記距離が予め設定された終了条件を満たした場合、または、前記回数が予め設定された上限に達した場合、前記更新の終了と決定する。
【００７２】
以上のように更新されたテンソルの因子行列は出力データ記憶部１４に保存される。
【００７３】
［本実施形態の効果］
本実施形態のテンソル因子分解処理装置１によれば、テンソルの因子行列の更新処理手順を決定するためのデータ構造を一定の手順で参照することにより、任意の入力条件に対する因子行列の正しい更新処理手順を動的に決定することができる。これにより、異なる入力条件に対応するためのコードの変更が不要となり、多様な条件に対するデータマイニングを効率的に行うことができる。
【００７４】
したがって、例えば、入力されるテンソルの個数や階数に依って出力されるテンソルの因子行列の個数が異なる場合や、共有モードを有する複数のテンソルを因子分解して更新処理する際に参照すべき各テンソルの因子行列の値やその個数が異なる場合でも、因子分解の正しい更新処理手順を動的に決定できる。
【００７５】
また、上述実施形態のテンソル因子分解処理は３階のテンソルの事例であるが、入力の一部が行列であったり、４階以上のテンソルであったりする場合でも同様に処理手順を決定することができる。これにより、ビッグデータのような多様なデータにも対応できる。
【００７６】
さらに、前記補助データの因子行列を更新する場合に、ステップＳ４０３において、補助データの因子行列を更新する場合に当該因子行列のテンソル内順序以外の順序に対応した因子行列を参照すべき因子行列として決定する。これにより、前記更新にあたり更新すべき因子行列を動的に決定できる。
【００７７】
また、前記補助データの構築の過程（Ｓ２００〜Ｓ２０７）では、前記テンソルがその重みに対応付けて前記テンソル情報に格納される。これにより、因子行列のテンソルの重みを反映した因子行列の要素の更新を行える。
【００７８】
［本発明の他の態様］
本発明は、テンソル因子分解処理装置１を構成する上記の機能部１１〜１３，２０〜２３の一部若しくは全てとしてコンピュータを機能させるプログラムで構成しこれを当該コンピュータに実行させることにより実現できる。または、同装置１が実行する上記のステップＳ１００〜Ｓ１０６，Ｓ２００〜Ｓ２０７，Ｓ３００〜Ｓ３０２，Ｓ４００〜Ｓ４０４，Ｓ５００，Ｓ５０１の一部若しくは全てをコンピュータに実行させるプログラムで構成しこれを当該コンピュータに実行させることにより実現できる。そして、このプログラムをそのコンピュータが読み取り可能な周知の記録媒体（例えば、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ等）に格納して提供できる。または、前記プログラムをインターネットや電子メール等でネットワークを介して提供できる。
【００７９】
尚、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更、応用が可能である。
【符号の説明】
【００８０】
１…テンソル因子分解処理装置
１１…テンソル構築部（テンソル構築手段）
１２…補助データ構築部（補助データ構築手段）
１３…テンソル分解部
２０…初期化部
２１…参照決定部（参照決定手段）
２２…行列更新部
２３…計算終了評価部
【図１】
0006038987.tif 000003
【図２】
0006038987.tif 000004
【図３】
0006038987.tif 000005
【図４】
0006038987.tif 000006
【図５】
0006038987.tif 000007
【図６】
0006038987.tif 000008
【図７】
0006038987.tif 000009
【図８】
0006038987.tif 000010
【図９】
0006038987.tif 000011
【図１０】
0006038987.tif 000012