(57)【要約】  与えられたテンソルに対するテンソル分解によって得られる因子を網羅的に求めることができるテンソル分解処理システムを提供する。分解実行部３は、所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行する。条件判定部５は、所定の終了条件が満たされたか否かを判定する。分解実行部３は、テンソルに対してテンソル分解を実行するときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行する。
2020170358.tif 000002
【特許請求の範囲】
【請求項１】
所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行する分解実行部と、
前記所定の終了条件が満たされたか否かを判定する条件判定部とを備え、
前記分解実行部は、
前記テンソルに対してテンソル分解を実行するときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行する
ことを特徴とするテンソル分解処理システム。
【請求項２】
与えられたテンソルに対する複数回のテンソル分解によって得られた因子をクラスタリングするクラスタリング部を備える
請求項１に記載のテンソル分解処理システム。
【請求項３】
クラスタリング部は、
因子をｋ−ｍｅａｎｓ法によってクラスタリングする
請求項２に記載のテンソル分解処理システム。
【請求項４】
クラスタ毎に、クラスタに属している因子を、与えられたテンソルの近似に寄与する順に順序付けする順序付け部を備える
請求項２または請求項３に記載のテンソル分解処理システム。
【請求項５】
順序付け部は、
与えられたテンソルをＸとし、個々の因子をＹとしたときに、クラスタ毎に、｜｜Ｘ−Ｙ｜｜が小さい順に、クラスタに属している因子を順序付けする
請求項４に記載のテンソル処理システム。
【請求項６】
コンピュータが、
所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行し、
前記所定の終了条件が満たされたか否かを判定し、
前記テンソルに対してテンソル分解を実行するときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行する
ことを特徴とするテンソル分解処理方法。
【請求項７】
コンピュータに、
所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行する分解実行処理、および、
前記所定の終了条件が満たされたか否かを判定する条件判定処理を実行させ、
前記コンピュータに、
前記分解実行処理で、前記テンソルに対してテンソル分解を実行させるときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行させる
ためのテンソル分解処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、与えられたテンソルに対してテンソル分解を実行するテンソル分解処理システム、テンソル分解処理方法、および、テンソル分解処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、ネットワークを構成する複数の要素のコストを推定するためのモデルを、テンソル分解によって得ることが記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１１２８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
テンソルに対してテンソル分解を実行することによって得られる因子に基づいてデータ分析を行うことが考えられる。ただし、１回のテンソル分解で、データ分析に適した因子が得られるとは限らない。【０００５】
また、テンソル分解で用いられるパラメータである初期値を変更して、テンソル分解をやり直すことが考えられる。しかし、分析者にとっては、どのような初期値に変更すれば、データ分析に適した因子が得られるのかが分からない。【０００６】
そこで、本発明は、与えられたテンソルに対するテンソル分解によって得られる因子を網羅的に求めることができるテンソル分解処理システム、テンソル分解処理方法、および、テンソル分解処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明によるテンソル分解処理システムは、所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行する分解実行部と、所定の終了条件が満たされたか否かを判定する条件判定部とを備え、分解実行部が、テンソルに対してテンソル分解を実行するときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行することを特徴とする。【０００８】
本発明によるテンソル分解処理方法は、コンピュータが、所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行し、所定の終了条件が満たされたか否かを判定し、テンソルに対してテンソル分解を実行するときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行することを特徴とする。【０００９】
本発明によるテンソル分解処理プログラムは、コンピュータに、所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行する分解実行処理、および、所定の終了条件が満たされたか否かを判定する条件判定処理を実行させ、コンピュータに、分解実行処理で、テンソルに対してテンソル分解を実行させるときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、与えられたテンソルに対するテンソル分解によって得られる因子を網羅的に求めることができる。
【図面の簡単な説明】
【００１１】
【図１】テンソルＸの近似を示す式（１）を模式的に表した模式図である。
【図２】Ｊ個の因子から得られる各テンソルの和によるテンソルＸの近似を示す模式図である。
【図３】本発明の第１の実施形態のテンソル分解処理システムの例を示すブロック図である。
【図４】本発明の第１の実施形態のテンソル分解処理システムの処理経過の例を示すフローチャートである。
【図５】因子に含まれる各列ベクトルに基づいて表示されるグラフの例を示す模式図である。
【図６】本発明の第２の実施形態のテンソル分解処理システムの例を示すブロック図である。
【図７】本発明の第２の実施形態のテンソル分解処理システムの処理経過の例を示すフローチャートである。
【図８】本発明の各実施形態のテンソル分解処理システムに係るコンピュータの構成例を示す概略ブロック図である。
【図９】本発明のテンソル分解処理システムの概要を示すブロック図である。
【発明を実施するための形態】
【００１２】
まず、テンソル分解について説明する。テンソル分解とは、テンソルを、よりランクの低いテンソルを表現するための因子の組み合わせで表すことである。
【００１３】
また、テンソル分解の一例として、ＣＰ（Canonical Polyadic）分解が挙げられる。以下では、ＣＰ分解を例にして、テンソル分解を説明する。
【００１４】
テンソル分解の対象となるテンソルは、２階以上のテンソルである。以下、テンソル分解の対象となるテンソルをＸで表す。また、以下では、説明を簡単にするために、テンソルＸが３階のテンソルである場合を例にして説明する。
【００１５】
テンソルＸは、以下に示す式（１）のように近似することができる。
【００１６】
【数１】
2020170358.tif 000003
【００１７】
式（１）において、Ａ，Ｂ，Ｃはそれぞれ行列であり、Ｘが３階のテンソルであるならば、Ｘは、３つの行列Ａ，Ｂ，Ｃを用いて近似される。ＸがＮ階のテンソルであるならば、Ｘは、Ｎ個の行列を用いて近似される。なお、式（１）において、行列Ａ，Ｂ，Ｃの左下に付した値は、コアテンソルＩに対して、行列をどの方向から乗算するのかを示している。この点は、後述の例においても同様である。
【００１８】
Ｉは、コアテンソルであり、コアテンソルＩの要素は、以下に示すように表される。
【００１９】
【数２】
2020170358.tif 000004
【００２０】
また、以下に示す式（２）が成立しているものとする。
【００２１】
【数３】
2020170358.tif 000005
【００２２】
すなわち、Ａは、Ｉ１行Ｊ列の行列である。Ｂは、Ｉ２行Ｊ列の行列である。Ｃは、Ｉ３行Ｊ列の行列である。従って、テンソルの近似に用いられる各行列の列数は共通であり、ここでは、その列数をＪとしている。ただし、行列や、行列に含まれる列ベクトルを図示する場合において、便宜的に、行列や列ベクトルを転置した状態で図示する場合がある。
【００２３】
式（１）を模式的に図示すると、図１に示すように表すことができる。図１において、行列Ｂ，Ｃを、便宜的に、転置した状態で図示している。
【００２４】
テンソルの近似に用いられる複数の行列における、対応する列の列ベクトルの組み合わせを因子と呼ぶ。例えば、Ａの１列目の列ベクトル、Ｂの１列目の列ベクトル、および、Ｃの１列目の列ベクトルの組み合わせが１つの因子となる。同様に、Ａの２列目の列ベクトル、Ｂの２列目の列ベクトル、および、Ｃの２列目の列ベクトルの組み合わせが１つの因子となる。また、ＡのＪ列目の列ベクトル、ＢのＪ列目の列ベクトル、および、ＣのＪ列目の列ベクトルの組み合わせが１つの因子となる。ここでは、各行列の１列目、２列目およびＪ列目を例にして説明したが、他の列に関しても、列毎に因子が定まる。行列Ａ、Ｂ，Ｃは、１列目の列ベクトルからＪ列目の列ベクトルまでのＪ個の列ベクトルを含む。従って、Ｊ個の因子が得られる。
【００２５】
また、１つの因子に含まれる列ベクトルの外積計算によって、Ｘよりもランクが低いテンソルが得られる。例えば、Ａの１列目の列ベクトルをＡ１、Ｂの１列目の列ベクトルをＢ１、および、Ｃの１列目の列ベクトルをＣ１とすると、以下に示す外積計算によってテンソルが得られる。
【００２６】
【数４】
2020170358.tif 000006
【００２７】
なお、外積計算を、以下に示す記号
【数５】
2020170358.tif 000007
で表すこととする。
【００２８】
Ｊ個の因子から得られる各テンソルの和で、テンソル分解の対象となるテンソルＸを近似することができる。このことを、模式的に図２に示す。
【００２９】
既に説明したように、テンソル分解とは、テンソルを、よりランクの低いテンソルを表現するための因子の組み合わせで表すことである。ただし、１つのテンソルＸに対するテンソル分解によって得られるＪ個の因子の組み合わせは１通りに限定されるわけではない。
【００３０】
なお、因子数Ｊは、予め定められた値である。
【００３１】
前述のように、本発明では、与えられたテンソルに対するテンソル分解によって得られる因子を網羅的に求めることができるようにすることを目的としている。
【００３２】
以下、本発明の実施形態を図面を参照して説明する。
【００３３】
実施形態１．
図３は、本発明の第１の実施形態のテンソル分解処理システムの例を示すブロック図である。本発明のテンソル分解処理システム１は、入力部２と、分解実行部３と、分解結果記憶部４と、条件判定部５と、出力部６とを備える。
【００３４】
入力部２は、テンソル分解の対象となるテンソルＸと、１回のテンソル分解によって求める因子の数Ｊと、重みλと、分解実行部３がテンソルＸに対して繰り返し実行するテンソル分解の終了条件とが入力される入力デバイスである。例えば、入力部２は、データ記録媒体からテンソルＸと、１回のテンソル分解によって求める因子の数Ｊと、重みλと、終了条件とを読み込むデータ読み込み装置（例えば、オプティカルディスクドライブ）等の入力デバイスであってもよい。
【００３５】
テンソル分解の対象となるテンソルＸは、２階以上のテンソルである。
【００３６】
重みλは、分解実行部３がテンソルＸに対するテンソル分解を実行する際の制約において用いられる。この制約については、後述する。
【００３７】
また、終了条件の具体例についても、後述する。
【００３８】
分解実行部３は、終了条件が満たされるまで、入力されたテンソルＸに対して、複数回のテンソル分解を実行する。分解実行部３は、テンソル分解としてＣＰ分解を実行してもよい。
【００３９】
このとき、分解実行部３は、テンソルＸに対してテンソル分解を実行するときに、そのテンソル分解よりも前に実行したテンソルＸのテンソル分解によって得られた因子とは異なる因子を得るという制約のもとで、テンソル分解を実行する。例えば、テンソルＸに対して２回目のテンソル分解を実行する場合、分解実行部３は、テンソルＸに対する１回目のテンソル分解で得られた因子とは異なる因子を得るという制約のもとで、２回目のテンソル分解を実行する。また、例えば、テンソルＸに対して３回目のテンソル分解を実行する場合、分解実行部３は、テンソルＸに対する１回目や２回目のテンソル分解で得られた因子とは異なる因子を得るという制約のもとで、３回目のテンソル分解を実行する。従って、分解実行部３は、テンソルＸに対する各回のテンソル分解でそれぞれ異なる因子を得る。
【００４０】
以下、分解実行部３がテンソルＸに対してテンソル分解を実行する際の制約を具体的に示す。以下に示す例では、前述の例と同様に、Ｘが３階のテンソルであり、Ｊ個の因子を規定する行列の数が３つであるものとする。そして、前述の例と同様に、この３つの行列を行列Ａ，Ｂ，Ｃと記す。行列Ａ，Ｂ，Ｃの列の数は、いずれもＪである。
【００４１】
分解実行部３がテンソルＸに対するＴ回目のテンソル分解を実行するときの制約は、以下に示す式（３）のように表すことができる。
【００４２】
【数６】
2020170358.tif 000008
【００４３】
式（３）において、行列Ａ，Ｂ，Ｃの右上に括弧付きで示した添え字は、Ｘに対する何回目のテンソル分解で得られた行列であるかを示している。例えば、Ａ（ｔ），Ｂ（ｔ），Ｃ（ｔ）は、Ｘに対するｔ回目のテンソル分解で得られた行列Ａ，Ｂ，Ｃを意味している。
【００４４】
上記の式（３）に含まれている以下の式（４）は、テンソル分解によって得られる因子によって元のテンソルＸがどの程度近似できるかを示している。
【００４５】
【数７】
2020170358.tif 000009
【００４６】
式（４）の値が小さいほど、テンソル分解によって得られる因子によって元のテンソルＸが近似できることを表わし、式（４）の値が大きい程、テンソル分解によって得られる因子によるテンソルＸの近似の精度が低いことを表わしている。
【００４７】
上記の式（３）に含まれている以下の式（５）は、ｔ回目のテンソル分解で得られる因子と、ｔ−１回目以前の各回のテンソル分解で得られた因子とがどの程度異なっているかを示している。
【００４８】
【数８】
2020170358.tif 000010
【００４９】
式（５）の値が小さいほど、ｔ回目のテンソル分解で得られる因子と、ｔ−１回目以前の各回のテンソル分解で得られた因子とが異なっていることを表わす。また、式（５）の値が大きいほど、ｔ回目のテンソル分解で得られる因子と、ｔ−１回目以前の各回のテンソル分解で得られた因子とが類似していることを表わす。
【００５０】
式（５）における演算Ω（｛Ａ（τ），Ｂ（τ），Ｃ（τ）｝，｛Ａ（ｔ），Ｂ（ｔ），Ｃ（ｔ）｝）（以下、単に演算Ωと記す。）は、ｔ回目のテンソル分解で得られる因子と、ｔ−１回目以前のテンソル分解で得られた因子とが異なるほど小さな値が得られ、類似しているほど大きな値が得られる演算である。
【００５１】
このような演算Ωの具体例として、以下に示す式（６）に示す演算が挙げられる。
【００５２】
【数９】
2020170358.tif 000011
【００５３】
式（６）において、右下に添え字を付して表したＡは、行列Ａの列ベクトルを意味し、その右下の添え字は、行列Ａにおける何列目の列ベクトルであるかを示している。例えば、式（６）に示した“Ａｋ（ｔ）”は、ｔ回目のテンソル分解で得られた行列Ａにおけるｋ列目の列ベクトルを表わしている。
【００５４】
右下に添え字を付して表したＢ，Ｃに関しても同様である。すなわち、右下に添え字を付して表したＢ，Ｃは、いずれも列ベクトルを表わす。
【００５５】
なお、既に説明したように、以下に示す記号
【数１０】
2020170358.tif 000012
は、外積計算を表わす。
【００５６】
式（３）は、式（４）と式（５）の和が最小となる行列Ａ，Ｂ，Ｃを求めるという制約を表わしている。なお、行列Ａ，Ｂ，Ｃを求めるということは、Ｊ個の因子を求めることと同義である。
【００５７】
式（３）で表される制約は、Ｔ回目のテンソル分解において、テンソルＸを近似できる因子を求めること、および、以前のテンソル分解で得た因子とは異なる因子を求めることという制約を意味する。また、入力部２に入力された重みλは、前のテンソル分解で得た因子とは異なる因子を求めるという制約に関する重みである。
【００５８】
また、分解実行部３は、テンソルＸに対するテンソル分解の回数に応じて、式（３）における“Ｔ”の値を設定することによって、テンソル分解の制約を更新する。例えば、分解実行部３は、次回のテンソル分解がＳ回目のテンソル分解であるならば、式（３）における“Ｔ”にＳを代入することによって、制約を更新する。
【００５９】
また、分解実行部３は、テンソルＸに対するテンソル分解を実行する毎に、テンソル分解の結果として得られる因子を分解結果記憶部４に記憶させる。
【００６０】
分解結果記憶部４は、テンソル分解の結果として得られる因子を記憶する記憶装置である。
【００６１】
条件判定部５は、分解実行部３がテンソルＸに対して繰り返し実行するテンソル分解の終了条件が満たされたか否かを判定する。終了条件が満たされたと判定された後、分解実行部３はテンソルＸに対するテンソル分解を行わない。
【００６２】
終了条件の例として、例えば、分解実行部３がテンソルＸに対して実行したテンソル分解の回数が予め定められた回数に達したことが挙げられる。
【００６３】
また、終了条件の他の例として、テンソルＸに対する直近のテンソル分解で、前述の式（４）の値が、閾値（αとする。）以下となるＪ個の因子が得られなかったことが挙げられる。テンソルＸに対する直近のテンソル分解で、式（４）の値が、閾値α以下となるＪ個の因子が得られなかったということは、得られた因子によるテンソルＸの近似の精度が許容できない程度まで低下したことを意味する。閾値αは、予め定めておけばよい。
【００６４】
また、終了条件の他の例として、テンソルＸに対する直近のテンソル分解で、前述の式（５）の値が、閾値（βとする。）以下となるＪ個の因子が得られなかったことが挙げられる。テンソルＸに対する直近のテンソル分解で、式（５）の値が、閾値β以下となるＪ個の因子が得られなかったということは、これまでに実行したテンソル分解で得られた因子と異なる因子が得られなくなったことを意味する。閾値βは、予め定めておけばよい。
【００６５】
終了条件は、上記のように例示した条件以外の条件であってもよい。
【００６６】
終了条件は、予め定められ、入力部２に入力される。
【００６７】
出力部６は、終了条件が満たされたと判定された後、分解結果記憶部４に記憶されている各因子（各回のテンソル分解で得られた各因子）を出力する。例えば、出力部６は、各因子を、テンソル分解処理システム１が備えるディスプレイ装置（図３において図示略）上に表示する。
【００６８】
分解実行部３、条件判定部５および出力部６は、例えば、テンソル分解処理プログラムに従って動作するコンピュータのＣＰＵ（Central Processing Unit ）によって実現される。例えば、ＣＰＵが、コンピュータのプログラム記憶装置等のプログラム記録媒体からテンソル分解処理プログラムを読み込み、そのテンソル分解処理プログラムに従って、分解実行部３、条件判定部５および出力部６として動作すればよい。また、分解結果記憶部４は、例えば、コンピュータが備える記憶装置によって実現される。
【００６９】
次に、処理経過について説明する。図４は、本発明の第１の実施形態のテンソル分解処理システムの処理経過の例を示すフローチャートである。
【００７０】
まず、入力部２に、テンソルＸと、１回のテンソル分解によって求める因子の数Ｊと、重みλと、終了条件とが入力される（ステップＳ１）。
【００７１】
次に、分解実行部３が、テンソルＸに対するテンソル分解を実行する（ステップＳ２）。１回目のテンソル分解（すなわち、１回目のステップＳ２）では、分解実行部３は、制約なしで、テンソルＸに対するテンソル分解を実行してよい。
【００７２】
本例では、Ｘに対する１回のテンソル分解でＪ個の因子が得られる。ステップＳ２の後、分解実行部３は、ステップＳ２でのテンソル分解によって得たＪ個の因子を分解結果記憶部４に記憶させる（ステップＳ３）。
【００７３】
ステップＳ３の後、分解実行部３は、テンソルＸに対する次回のテンソル分解の制約を定める（ステップＳ４）。分解実行部３は、テンソルＸに対する次回のテンソル分解（ステップＳ２）がＳ回目のテンソル分解（ステップＳ２）であるならば、制約を表わす式（３）における“Ｔ”にＳを代入することによって、次回のテンソル分解の制約を定める。例えば、次回のテンソル分解が２回目のテンソル分解であるならば、制約を表わす式（３）における“Ｔ”に２を代入することによって、次回のステップＳ２における制約を定める。
【００７４】
ステップＳ４の後、条件判定部５は、ステップＳ１で入力された終了条件が満たされたか否かを判定する（ステップＳ５）。
【００７５】
終了条件が満たされていない場合（ステップＳ５のＮｏ）、分解実行部３は、ステップＳ２以降の処理を繰り返す。分解実行部３は、２回目以降のステップＳ２を実行するときには、直近のステップＳ４で定められた制約のもとで、テンソルＸに対するテンソル分解を再度、実行する。すなわち、分解実行部３は、これまでのテンソル分解（換言すれば、これまでのステップＳ２）で得られた因子と異なる因子を得るという制約のもとで、テンソルＸに対するテンソル分解を再度、実行する。
【００７６】
そして、ステップＳ５で終了条件が満たされたと判定されるまで、テンソル分解処理システム１は、ステップＳ２〜Ｓ５の処理を繰り返す。
【００７７】
終了条件が満たされたと判定された場合（ステップＳ５のＹｅｓ）、出力部６は、分解結果記憶部４に記憶されている各因子を出力する（ステップＳ６）。例えば、出力部６は、各因子を、テンソル分解処理システム１が備えるディスプレイ装置（図３において図示略）上に表示する。以下、出力部６が各因子をディスプレイ装置上に表示する場合を例にして説明する。
【００７８】
出力部６は、１つの因子を表示する際、１つの因子に含まれる各列ベクトルに基づいてグラフを表示してもよい。因子に含まれる各列ベクトルに基づいて表示されるグラフの例を図５に示す。図５では、１つの因子に３つの列ベクトルが含まれ、１つの因子に基づいて３つのグラフが表示される例を示している。
【００７９】
本実施形態によれば、テンソル分解処理システム１は、終了条件が満たされたと判定されるまでステップＳ２〜Ｓ５の処理を繰り返す。そして、分解実行部３は、ステップＳ２で、これまでのテンソル分解で得られた因子と異なる因子を得るという制約のもとで、テンソルＸに対するテンソル分解を実行する。従って、本実施形態によれば、与えられたテンソルＸに対するテンソル分解によって得られる因子を網羅的に求めることができる。
【００８０】
その結果、分析者は、そのように網羅的に得られた個々の因子を確認して、データ分析に適切な因子を選択することができる。すなわち、分析者は、データ分析に適した因子を得ることができる。また、分析者は、個々の因子を確認するときに、図５に例示するように表示されたグラフを確認することよって、データ分析に適切な因子を判断してもよい。
【００８１】
実施形態２．
図６は、本発明の第２の実施形態のテンソル分解処理システムの例を示すブロック図である。第１の実施形態と同様の要素については、図３と同一の符号を付し、説明を省略する。
【００８２】
第２の実施形態のテンソル分解処理システム１は、入力部２と、分解実行部３と、分解結果記憶部４と、条件判定部５と、クラスタリング部７と、順序付け部８と、出力部６とを備える。入力部２、分解実行部３、分解結果記憶部４および条件判定部５は、第１の実施形態におけるそれらの要素と同様であり、説明を省略する。
【００８３】
クラスタリング部７は、終了条件が満たされたと判定されるまでに得られた因子に対してクラスタリングを行い、複数の因子をクラスタに分類する。テンソルＸに対する１回のテンソル分解でＪ個の因子が得られる。終了条件が満たされたと判定されるまでに、Ｐ回のテンソル分解が実行された場合、Ｊ×Ｐ個の因子が得られ、それらの因子は分解結果記憶部４に記憶されている。クラスタリング部７は、各因子を分解結果記憶部４から読み込み、因子を複数のクラスタに分類する。
【００８４】
クラスタリング部７は、類似する因子同士が同じクラスタに属するように、分解結果記憶部４から読み込んだ因子をクラスタリングする。類似する因子同士が同じクラスタに属するようにクラスタリングする方法の一例として、例えば、ｋ−ｍｅａｎｓ法がある。クラスタリング部７は、分解結果記憶部４から読み込んだ因子（換言すれば、テンソルＸに対する複数回のテンソル分解によって得られた複数の因子）を、ｋ−ｍｅａｎｓ法によってクラスタリングしてもよい。
【００８５】
順序付け部８は、クラスタリング部７によって得られたクラスタ毎に、クラスタに属する因子の順序付けを行う。因子の順序付けの基準は、与えられたテンソルＸの近似に寄与している度合いである。すなわち、順序付け部８は、与えられたテンソルＸの近似に寄与している度合いが大きい順に、クラスタに属している因子の順序付けを行う。
【００８６】
与えられたテンソルＸの近似に寄与している度合いについて説明する。着目している因子から得られるテンソルをＹとする。Ｙは、因子に含まれている各列ベクトルの外積計算によって得られる。テンソルＸの近似に寄与している度合いは、｜｜Ｘ−Ｙ｜｜と表すことができる。｜｜Ｘ−Ｙ｜｜が小さいほど、テンソルＸの近似に寄与している度合いが大きく、｜｜Ｘ−Ｙ｜｜が大きいほど、テンソルＸの近似に寄与している度合いが小さい。従って、順序付け部８は、１つのクラスタにおいて、そのクラスタに属している因子毎に｜｜Ｘ−Ｙ｜｜を算出し、｜｜Ｘ−Ｙ｜｜が小さい順に、そのクラスタに属している因子を順序付けすればよい。そして、順序付け部８は、この処理をクラスタ毎に行えばよい。
【００８７】
出力部６は、第１の実施形態と同様に、分解結果記憶部４に記憶されている各因子をディスプレイ装置（図６において図示略）上に表示する。
【００８８】
さらに、出力部６は、クラスタ毎に、クラスタに属する因子をディスプレイ装置上に表示する。このとき、出力部６は、各クラスタにおいて、順序付け部８によって順序付けされた順に因子をディスプレイ装置上に表示する。
【００８９】
分解実行部３、条件判定部５、クラスタリング部７、順序付け部８および出力部６は、例えば、テンソル分解処理プログラムに従って動作するコンピュータのＣＰＵによって実現される。例えば、ＣＰＵが、コンピュータのプログラム記憶装置等のプログラム記録媒体からテンソル分解処理プログラムを読み込み、そのテンソル分解処理プログラムに従って、分解実行部３、条件判定部５、クラスタリング部７、順序付け部８および出力部６として動作すればよい。
【００９０】
図７は、本発明の第２の実施形態のテンソル分解処理システムの処理経過の例を示すフローチャートである。ステップＳ１〜Ｓ５は、第１の実施形態のステップＳ１〜Ｓ５と同様であり、説明を省略する。
【００９１】
ステップＳ５において終了条件が満たされたと判定された場合（ステップＳ５のＹｅｓ）、クラスタリング部７は、テンソルＸにする複数回のテンソル分解によって得られた因子をクラスタリングする（ステップＳ１１）。具体的には、クラスタリング部７は、分解結果記憶部４に記憶されている因子を読み込み、その因子をクラスタリングする。クラスタリング部７は、例えば、ｋ−ｍｅａｎｓ法によって、因子をクラスタリングすればよい。ステップＳ１１の結果、複数のクラスタが得られる。そして、個々のクラスタには、類似する因子が属している。
【００９２】
次に、順序付け部８は、ステップＳ１１で得られたクラスタ毎に、テンソルＸの近似に寄与している度合いが大きい順に、クラスタに属している因子の順序付けを行う（ステップＳ１２）。既に説明したように、着目している因子から得られるテンソルをＹとした場合、順序付け部８は、１つのクラスタにおいて、そのクラスタに属している因子毎に｜｜Ｘ−Ｙ｜｜を算出し、｜｜Ｘ−Ｙ｜｜が小さい順に、そのクラスタに属している因子を順序付けすればよい。そして、順序付け部８は、この処理をクラスタ毎に行えばよい。
【００９３】
ステップＳ１２の次に、出力部６は、分解結果記憶部４に記憶されている各因子をディスプレイ装置上に表示する。さらに、出力部６は、クラスタ毎に、クラスタに属する因子をディスプレイ装置上に表示する。このとき、出力部６は、各クラスタにおいて、順序付け部８によって順序付けされた順に因子をディスプレイ装置上に表示する（ステップＳ１３）。
【００９４】
なお、ステップＳ１３において、順序付けされた順に因子をディスプレイ装置上に表示する処理をクラスタ毎に行う場合、クラスタによらずに各因子をディスプレイ装置上に表示する処理を省略してもよい。
【００９５】
また、第１の実施形態で説明したように、出力部６は、１つの因子を表示する際、１つの因子に含まれる各列ベクトルに基づいてグラフを表示してもよい。
【００９６】
本実施形態によれば、第１の実施形態と同様の効果が得られる。さらに、第２の実施形態によれば、類似する因子が同じクラスタに分類されるので、因子の解釈容易性を向上させることができる。また、分析者がデータの全体像を理解しやすくなるという効果も得られる。
【００９７】
また、第２の実施形態では、順序付け部８が、クラスタ毎に、テンソルＸの近似に寄与している度合いが大きい順に、クラスタに属している因子の順序付けを行う。従って、分析者に、どの因子が重要であるのかを示すことができる。
【００９８】
図８は、本発明の各実施形態のテンソル分解処理システム１に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ１０００は、ＣＰＵ１００１と、主記憶装置１００２と、補助記憶装置１００３と、インタフェース１００４と、ディスプレイ装置１００５と、入力デバイス１００６とを備える。
【００９９】
本発明の各実施形態のテンソル分解処理システム１は、コンピュータ１０００によって実現される。テンソル分解処理システム１の動作は、テンソル分解処理プログラムの形式で補助記憶装置１００３に記憶されている。ＣＰＵ１００１は、そのテンソル分解処理プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、そのテンソル分解処理プログラムに従って上記の各実施形態で説明した処理を実行する。
【０１００】
補助記憶装置１００３は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory ）、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータ１０００がそのプログラムを主記憶装置１００２に展開し、そのプログラムに従って上記の各実施形態で説明した処理を実行してもよい。
【０１０１】
また、プログラムは、前述の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置１００３に既に記憶されている他のプログラムとの組み合わせで前述の処理を実現する差分プログラムであってもよい。
【０１０２】
また、各構成要素の一部または全部は、汎用または専用の回路（circuitry ）、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０１０３】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０１０４】
次に、本発明の概要について説明する。図９は、本発明のテンソル分解処理システムの概要を示すブロック図である。本発明のテンソル分解処理システムは、分解実行部３と、条件判定部５とを備える。
【０１０５】
分解実行部３は、所定の終了条件が満たされるまで、与えられたテンソルに対して複数回のテンソル分解を実行する。
【０１０６】
条件判定部５は、所定の終了条件が満たされたか否かを判定する。
【０１０７】
分解実行部３は、テンソルに対してテンソル分解を実行するときに、当該テンソル分解よりも前に実行したテンソル分解によって得られた因子と異なる因子を得るという制約のもとで、当該テンソル分解を実行する。
【０１０８】
そのような構成によって、与えられたテンソルに対するテンソル分解によって得られる因子を網羅的に求めることができる。
【０１０９】
また、与えられたテンソルに対する複数回のテンソル分解によって得られた因子をクラスタリングするクラスタリング部（例えば、クラスタリング部７）を備える構成であってもよい。
【０１１０】
また、クラスタリング部が、因子をｋ−ｍｅａｎｓ法によってクラスタリングする構成であってもよい。
【０１１１】
また、クラスタ毎に、クラスタに属している因子を、与えられたテンソルの近似に寄与する順に順序付けする順序付け部（例えば、順序付け部８）を備える構成であってもよい。
【０１１２】
また、順序付け部が、与えられたテンソルをＸとし、個々の因子をＹとしたときに、クラスタ毎に、｜｜Ｘ−Ｙ｜｜が小さい順に、クラスタに属している因子を順序付けする構成であってもよい。
【０１１３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【０１１４】
本発明は、テンソル分解による因子の取得に好適に適用される。
【符号の説明】
【０１１５】
１  テンソル分解処理システム
２  入力部
３  分解実行部
４  分解結果記憶部
５  条件判定部
６  出力部
７  クラスタリング部
８  順序付け部
【図１】
2020170358.tif 000013
【図２】
2020170358.tif 000014
【図３】
2020170358.tif 000015
【図４】
2020170358.tif 000016
【図５】
2020170358.tif 000017
【図６】
2020170358.tif 000018
【図７】
2020170358.tif 000019
【図８】
2020170358.tif 000020
【図９】
2020170358.tif 000021
【手続補正書】
【提出日】令和3年7月12日(2021.7.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項５
【補正方法】変更
【補正の内容】
【請求項５】
順序付け部は、
与えられたテンソルをＸとし、個々の因子から得られるテンソルをＹとしたときに、クラスタ毎に、｜｜Ｘ−Ｙ｜｜が小さい順に、クラスタに属している因子を順序付けする
請求項４に記載のテンソル分解処理システム。
【国際調査報告】
2020170358.tif 000022
2020170358.tif 000023
2020170358.tif 000024