(57)【要約】【課題】データ間の類似度の算出精度を向上させる。【解決手段】データ変換装置１０は、複数の項目それぞれについて、第１データ１内の対象項目に属する対象第１項目値を含む第１レコードと、第２データ２内の対象項目に属する対象第２項目値を含む第２レコードとの類似度に基づいて、第１重み情報５，６と第２重み情報７，８とを生成する。次にデータ変換装置１０は、第１重み情報５，６に基づいて、第１データ１を、異なる項目に属する変換先項目値間の関係を示す数値が設定された複数の第３レコードを有する第１類似判断用データ３に変換する。さらにデータ変換装置１０は、第２重み情報７，８に基づいて、第２データ２を、異なる項目に属する変換先項目値間の関係を示す数値が設定された複数の第４レコードを有する第２類似判断用データ４に変換する。【選択図】図１
2018055551.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数の項目のいずれかに属する複数の第１項目値のうちの異なる項目に属する２以上の第１項目値間の関係を示す数値が設定された複数の第１レコードを有する第１データ、および前記複数の項目のいずれかに属する複数の第２項目値のうちの異なる項目に属する２以上の第２項目値間の関係を示す数値が設定された複数の第２レコードを有する第２データを取得し、
前記複数の項目それぞれを対象項目とし、前記対象項目ごとに、前記第１データ内の前記対象項目に属する対象第１項目値に関する他の第１項目値との関係と、前記第２データ内の前記対象項目に属する対象第２項目値に関する他の第２項目値との関係との類似度に基づいて、前記複数の項目のいずれかに属する複数の変換先項目値のうちの前記対象項目に属する対象変換先項目値への前記対象第１項目値の影響度を示す第１重み情報と、前記対象変換先項目値への前記対象第２項目値の影響度を示す第２重み情報とを生成し、
前記複数の項目それぞれについて生成された前記第１重み情報に基づいて、前記第１データを、前記複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第３レコードを有する第１類似判断用データに変換し、
前記複数の項目それぞれについて生成された前記第２重み情報に基づいて、前記第２データを、前記複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第４レコードを有する第２類似判断用データに変換する、
処理を実行させるデータ変換プログラム。
【請求項２】
前記第１重み情報と前記第２重み情報との生成では、前記複数の項目それぞれについて、初期値が設定された前記第１重み情報と前記第２重み情報とを生成し、前記対象項目以外の項目について生成された他項目第１重み情報と他項目第２重み情報とに基づいて、前記第１データ内の前記対象項目に属する前記対象第１項目値に関する他の第１項目値との関係と、前記第２データ内の前記対象項目に属する前記対象第２項目値に関する他の第２項目値との関係との類似度を計算する、
請求項１記載のデータ変換プログラム。
【請求項３】
前記第１重み情報と前記第２重み情報との生成では、所定の終了条件を満たすまで、前記複数の項目それぞれを、繰り返し前記対象項目として、前記対象項目に対する前記第１重み情報と前記第２重み情報とを生成する、
処理を実行させる請求項１または２記載のデータ変換プログラム。
【請求項４】
前記コンピュータに、さらに、
前記第１類似判断用データ内の前記複数の第３レコードに含まれる数値群と、前記第２類似判断用データ内の前記複数の第４レコードに含まれる数値群との類似度を計算する、
処理を実行させる請求項１乃至３のいずれかに記載のデータ変換プログラム。
【請求項５】
前記第１重み情報は、前記複数の変換先項目値それぞれへの、前記対象第１項目値それぞれの影響度を示す重み値を成分とする、正規直交条件を満たす行列であり、
前記第２重み情報は、前記複数の変換先項目値それぞれへの、前記対象第２項目値それぞれの影響度を示す重み値を成分とする、正規直交条件を満たす行列である、
請求項１乃至４のいずれかに記載のデータ変換プログラム。
【請求項６】
コンピュータが、
複数の項目のいずれかに属する複数の第１項目値のうちの異なる項目に属する２以上の第１項目値間の関係を示す数値が設定された複数の第１レコードを有する第１データ、および前記複数の項目のいずれかに属する複数の第２項目値のうちの異なる項目に属する２以上の第２項目値間の関係を示す数値が設定された複数の第２レコードを有する第２データを取得し、
前記複数の項目それぞれを対象項目とし、前記対象項目ごとに、前記第１データ内の前記対象項目に属する対象第１項目値に関する他の第１項目値との関係と、前記第２データ内の前記対象項目に属する対象第２項目値に関する他の第２項目値との関係との類似度に基づいて、前記複数の項目のいずれかに属する複数の変換先項目値のうちの前記対象項目に属する対象変換先項目値への前記対象第１項目値の影響度を示す第１重み情報と、前記対象変換先項目値への前記対象第２項目値の影響度を示す第２重み情報とを生成し、
前記複数の項目それぞれについて生成された前記第１重み情報に基づいて、前記第１データを、前記複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第３レコードを有する第１類似判断用データに変換し、
前記複数の項目それぞれについて生成された前記第２重み情報に基づいて、前記第２データを、前記複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第４レコードを有する第２類似判断用データに変換する、
データ変換方法。
【請求項７】
複数の項目のいずれかに属する複数の第１項目値のうちの異なる項目に属する２以上の第１項目値間の関係を示す数値が設定された複数の第１レコードを有する第１データ、および前記複数の項目のいずれかに属する複数の第２項目値のうちの異なる項目に属する２以上の第２項目値間の関係を示す数値が設定された複数の第２レコードを有する第２データを記憶する記憶部と、
前記複数の項目それぞれを対象項目とし、前記対象項目ごとに、前記第１データ内の前記対象項目に属する対象第１項目値に関する他の第１項目値との関係と、前記第２データ内の前記対象項目に属する対象第２項目値に関する他の第２項目値との関係との類似度に基づいて、前記複数の項目のいずれかに属する複数の変換先項目値のうちの前記対象項目に属する対象変換先項目値への前記対象第１項目値の影響度を示す第１重み情報と、前記対象変換先項目値への前記対象第２項目値の影響度を示す第２重み情報とを生成し、前記複数の項目それぞれについて生成された前記第１重み情報に基づいて、前記第１データを、前記複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第３レコードを有する第１類似判断用データに変換し、前記複数の項目それぞれについて生成された前記第２重み情報に基づいて、前記第２データを、前記複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第４レコードを有する第２類似判断用データに変換する処理部と、
を有するデータ変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ変換プログラム、データ変換方法、およびデータ変換装置に関する。
【背景技術】
【０００２】
大量のデータを分類することで、有用な情報を取り出すことができる。分類対象のデータには、人・モノの間の関係が記録されたレコードの集合がある。例えば通信ログに記録された、通信元ホスト・通信先ホスト・ポート番号などの関係を示す大量のレコードが分類対象となる。また銀行の取引履歴に記録された、送金元口座・送金先口座・支店名などの関係を示すレコードが分類対象となることもある。通信ログに含まれるレコードを分類する場合、例えば不正や犯罪の有無などによりデータを分類することで、ＤＤｏＳ（Distributed Denial of Service attack）攻撃や標的型攻撃などが発生した時刻の通信ログの特徴を分析することができる。また銀行の取引履歴に含まれるレコードを分類する場合、マネーロンダリングや振込詐欺の発生の有無により分類することで、犯罪行為が行われた時刻の取引履歴の特徴を分析することができる。
【０００３】
データの分類には、例えばＳＶＭ（Support Vector Machine）などの手法が用いられる。ＳＶＭは、２つの分類の境界面を、境界面に最も近いデータとの距離が最大になるように算出するものである。データを分類する際には、データ間の類似度が計算される。
【０００４】
人やモノの間の関係のしかたを分類する場合、例えばある時間帯の通信ログと、別の時間帯の通信ログとの類似度が、コンピュータで計算される。各時間帯内の通信ログには複数のレコードが含まれており、各レコードには、例えば、通信を行った通信元ホストと通信先ホストとの関係に対応付けて、その通信の回数を示す数値が含まれる。
【０００５】
このようなデータ間の類似度を計算するとき、コンピュータでは、双方のデータ内のレコード同士を１対１で対応付け、対応付けたレコード間での数値の差に基づいて、データ全体の類似度が計算される。ただし、人やモノの間の関係のしかたを分類する場合、データ内のレコード間の対応が不明な場合が多い。例えば、類似の不正通信パタンを構成するホストは、その都度異なっている。そのため、通信元ホストと通信先ホストとが同じレコード同士を対比すればよいというものではない。そこでコンピュータは、類似判断の対象となるデータ間の類似度が最も高くなるよう、レコード間の対応関係を決定し、類似度を算出することとなる。このとき、レコードの対応関係のすべてのパタンを試すと、レコード間の対応関係のパタン数が爆発し、現実的に時間での計算が困難となる。
【０００６】
データ間の類似度を効率的に算出する手法として、グラフを用いたグラフカーネルと呼ばれる手法がある。グラフカーネルには、Random WalkカーネルやShortest Pathカーネルなどがある。レコード内に示される人・モノの関係をグラフデータとして表現すれば、人やモノの間の関係のしかたを分類する場合においても、グラフカーネルで類似度を計算することが可能となる。
【０００７】
グラフを用いたデータの分類手法としては、例えば２つのグラフの類似度をより正確に測るために、グラフ編集距離を近似的に求めるグラフMapping距離を用いた、グラフ編集距離カーネルも提案されている。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】塩月英美、猪口明博、「Star 編集距離を用いたグラフ分類学習」、DEIM Forum 2016、２０１６年２月２９日
【発明の概要】
【発明が解決しようとする課題】
【０００９】
グラフカーネルでは少ない計算量で類似度を計算できるが、元のデータの情報が損なわれており、類似度判定の精度が低下してしまう。例えば通信元ホスト、通信先ホスト、ポート番号の３つ組をグラフで表現できず、グラフカーネルでは３つ組の関係に関する情報が損なわれる。そのため、従来は、人・モノの間の関係を示すデータの類似度の計算を実現可能な処理量内で実施すると、類似度判定の精度が不十分となってしまう。
【００１０】
１つの側面では、本件は、データ間の類似度の算出精度を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、コンピュータに以下の処理を実行させるデータ変換プログラムが提供される。
データ変換プログラムに基づいて、コンピュータは、まず複数の項目のいずれかに属する複数の第１項目値のうちの異なる項目に属する２以上の第１項目値間の関係を示す数値が設定された複数の第１レコードを有する第１データ、および複数の項目のいずれかに属する複数の第２項目値のうちの異なる項目に属する２以上の第２項目値間の関係を示す数値が設定された複数の第２レコードを有する第２データを取得する。次にコンピュータは、複数の項目それぞれを対象項目とし、対象項目ごとに、第１データ内の対象項目に属する対象第１項目値に関する他の第１項目値との関係と、第２データ内の対象項目に属する対象第２項目値に関する他の第２項目値との関係との類似度に基づいて、複数の項目のいずれかに属する複数の変換先項目値のうちの対象項目に属する対象変換先項目値への対象第１項目値の影響度を示す第１重み情報と、対象変換先項目値への対象第２項目値の影響度を示す第２重み情報とを生成する。次にコンピュータは、複数の項目それぞれについて生成された第１重み情報に基づいて、第１データを、複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第３レコードを有する第１類似判断用データに変換する。そしてコンピュータは、複数の項目それぞれについて生成された第２重み情報に基づいて、第２データを、複数の変換先項目値のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値が設定された複数の第４レコードを有する第２類似判断用データに変換する。
【発明の効果】
【００１２】
１態様によれば、データ間の類似度の算出精度を向上させる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係るデータ変換装置の構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いる監視サーバのハードウェアの一構成例を示す図である。
【図４】監視サーバの機能の一例を示すブロック図である。
【図５】通信ログ記憶部の一例を示す図である。
【図６】類似度記憶部の一例を示す図である。
【図７】通信ログの変数への置き換え例を示す図である。
【図８】変換行列を用いて生成した中間データ間の類似度の計算例を示す図である。
【図９】「項Ｓ」の変換行列の更新例を示す図である。
【図１０】類似度計算処理の手順の一例を示すフローチャートである。
【図１１】初期状態の変換行列を用いた中間データの生成例を示す図である。
【図１２】「項Ｓ」の変換行列の更新例を示す図である。
【図１３】「項Ｒ」の変換行列の更新例を示す図である。
【図１４】更新後の変換行列を用いた中間データの生成例を示す図である。
【図１５】類似度計算の比較例を示す第１の図である。
【図１６】類似度計算の比較例を示す第２の図である。
【図１７】第２の実施の形態による類似度計算例を示す第１の図である。
【図１８】第２の実施の形態による類似度計算例を示す第２の図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。
【００１５】
図１は、第１の実施の形態に係るデータ変換装置の構成例を示す図である。データ変換装置１０は、記憶部１１と処理部１２とを有する。データ変換装置１０は、以下に示すデータ変換方法を実行する。例えばコンピュータが、データ変換プログラムを実行することによって、データ変換方法を実行可能なデータ変換装置１０が実現される。記憶部１１は、例えばデータ変換装置１０が有するメモリまたはストレージ装置である。処理部１２は、例えばデータ変換装置１０が有するプロセッサである。
【００１６】
記憶部１１は、類似度の計算対象となる第１データ１と第２データ２とを記憶する。第１データ１は、複数の項目「項Ｓ，項Ｒ」のいずれかに属する複数の第１項目値「Ｓ１，Ｓ２，Ｒ１，Ｒ２」のうちの、異なる項目に属する２以上の第１項目値間の関係を示す数値「ｋ１１〜ｋ１４」が設定された複数の第１レコードを有する。第２データ２は、複数の項目「項Ｓ，項Ｒ」のいずれかに属する複数の第２項目値「Ｓ１，Ｓ２，Ｒ１，Ｒ２」のうちの異なる項目に属する２以上の第２項目値間の関係を示す数値「ｋ２１〜ｋ２４」が設定された複数の第２レコードを有する。
【００１７】
処理部１２は、複数の項目（項Ｓ，項Ｒ）それぞれを対象項目とする。そして処理部１２は、対象項目ごとに、第１データ１内の対象項目に属する対象第１項目値に関する他の第１項目値との関係と、第２データ２内の対象項目に属する対象第２項目値に関する他の第２項目値との関係との類似度を計算する。処理部１２は、計算した類似度に基づいて、第１重み情報５，６と第２重み情報７，８とを生成する。第１重み情報５，６は、複数の項目「項Ｓ，項Ｒ」のいずれかに属する複数の変換先項目値「Ｓ’１，Ｓ’２，Ｒ’１，Ｒ’２」のうちの、対象項目に属する対象変換先項目値への対象第１項目値の影響度を示す情報である。第２重み情報７，８は、対象変換先項目値への対象第２項目値の影響度を示す情報である。
【００１８】
例えば「項Ｓ」が対象項目として選択されたとき、処理部１２は、第１重み情報５と第２重み情報７とを生成する。このとき第１重み情報５には、第１データ１内の「項Ｓ」に属する項目値「Ｓ１，Ｓ２」それぞれと、第２データ２内の「項Ｓ」に属する項目値「Ｓ１，Ｓ２」それぞれとの対ごとの、他の項目との関係の類似度が維持できるように、重みが設定される。同様に、第２重み情報７にも、第１データ１内の「項Ｓ」に属する項目値「Ｓ１，Ｓ２」それぞれと、第２データ２内の「項Ｓ」に属する項目値「Ｓ１，Ｓ２」それぞれとの対ごとの、他の項目との関係の類似度が維持できるように、重みが設定される。「項Ｒ」が対象項目として選択されたときに、処理部１２は、第１重み情報６と第２重み情報８とを生成する。
【００１９】
対象第１項目値と対象第２項目値との類似度を計算する場合、処理部１２は、例えば複数の項目「項Ｓ，項Ｒ」それぞれについて、初期値が設定された第１重み情報５，６と第２重み情報７，８とを生成する。次に処理部１２は、対象項目以外の項目について生成された他項目第１重み情報と他項目第２重み情報とに基づいて、第１データ１内の対象項目に属する対象第１項目値と、第２データ２内の対象項目に属する対象第２項目値との類似度を計算する。
【００２０】
なお、処理部１２は、所定の終了条件を満たすまで、複数の項目「項Ｓ，項Ｒ」それぞれを、繰り返し対象項目として特定し、対象項目に対する第１重み情報５，６と第２重み情報７，８とを繰り返し生成してもよい。例えば処理部１２は、対象項目以外の項目について生成された他項目第１重み情報と他項目第２重み情報とを用いて、対象項目に属する対象第１項目値それぞれと対象第２項目値それぞれとの類似度を計算し、類似度に応じて対象項目の重み情報を更新する。
【００２１】
例えば対象項目が「項Ｓ」であれば、処理部１２は、「項Ｒ」について生成された第１重み情報６を用いて、第１データ１の項目値「Ｓ１，Ｓ２」それぞれと、第２データ２の項目値「Ｓ１，Ｓ２」それぞれとの類似度を計算する。そして処理部１２は、計算した類似度に基づいて、「項Ｓ」についての第１重み情報５と第２重み情報７とを更新する。さらに処理部１２は、更新後の第１重み情報５と第２重み情報７を用いて、「項Ｒ」についての第１重み情報６と第２重み情報８とを更新する。
【００２２】
このように第１重み情報５，６と第２重み情報７，８の更新を繰り返すことで、第１類似判断用データ３と第２類似判断用データ４との類似度が向上するように、第１重み情報５，６と第２重み情報７，８が最適化される。
【００２３】
次に処理部１２は、複数の項目「項Ｓ，項Ｒ」それぞれについて生成された第１重み情報５，６に基づいて、第１データ１を第１類似判断用データ３に変換する。第１類似判断用データ３は、複数の変換先項目値「Ｓ’１，Ｓ’２，Ｒ’１，Ｒ’２」のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値「ｋ３１〜ｋ３４」が設定された複数の第３レコードを有する。さらに処理部１２は、複数の項目「項Ｓ，項Ｒ」それぞれについて生成された第２重み情報７，８に基づいて、第２データ２を第２類似判断用データ４に変換する。第２類似判断用データ４は、複数の変換先項目値「Ｓ’１，Ｓ’２，Ｒ’１，Ｒ’２」のうちの異なる項目に属する２以上の変換先項目値間の関係を示す数値「ｋ４１〜ｋ４４」が設定された複数の第４レコードを有する。
【００２４】
さらに処理部１２は、第１類似判断用データ３内の複数の第３レコードに含まれる数値群と、第２類似判断用データ４内の複数の第４レコードに含まれる数値群との類似度を計算する。処理部１２は、第１重み情報５，６と第２重み情報７，８を繰り返し生成するとき、第１重み情報５，６と第２重み情報７，８を生成するごとに、第１類似判断用データ３の数値群と第２類似判断用データ４の数値群との類似度を計算する。そして処理部１２は、計算した類似度の最大値を、第１データ１と第２データ２との類似度と判定する。
【００２５】
このように、第１重み情報５，６と第２重み情報７，８を用いて第１データ１と第２データ２とを変換した上で、類似度を計算することで、精度の高い類似度を算出することができる。すなわち、第１データ１と第２データ２との同一の項目に属する項目値に関する、他の項目値との間の関係の類似度が、その項目に対応する第１重み情報５，６と第２重み情報７，８とに反映されている。これにより、第１データ１と第２データ２との同一の項目に属する項目値に関する、他の項目値との間の関係の類似度が高いほど、変換後の第１類似判断用データ３と第２類似判断用データ４との類似度が高くなる。その結果、類似度の判定精度が向上する。
【００２６】
しかも、組み合わせ爆発のような計算量の急激な増加は発生せず、現実的な処理量での類似度計算が可能である。例えば、第１の実施の形態で示した類似度の計算処理は、行列を用いて以下のように計算できる。
【００２７】
処理部１２は、特定の項目の項目値と他の項目との関係はベクトルで表現する。そして処理部１２は、第１データ１と第２データ２とを、２つの項目値に対応するベクトル間の距離を保持したまま、第１類似判断用データ３と第２類似判断用データ４とに変換する。このとき処理部１２は、変換に用いる第１重み情報５，６と第２重み情報７，８とを行列で表す。以下、第１重み情報５，６と第２重み情報７，８とを表す行列を、変換行列と呼ぶ。
【００２８】
処理部１２は、第１類似判断用データ３と第２類似判断用データ４間の最大類似度を、第１データ１と第２データ２との間の類似度とする。これにより、本質的な関係の構造に基づく類似度を計算できる。以下に詳細を説明する。
【００２９】
簡単のため、第１データ１と第２データ２との項目は２つだけとする。処理部１２は、第１データ１と第２データ２とを、行列Ｘ1，Ｘ2で表す。行列Ｘ1，Ｘ2の各行は、１つ目の項目「項Ｓ」の各項目値「Ｓ１，Ｓ２」に対応し、各列は２つ目の項目「項Ｒ」の各変数値「Ｒ１，Ｒ２」に対応する。行列の要素（成分）には、行に対する項目値と列に対応する項目との関係を示す数値が入る。
【００３０】
なお処理部１２は、１つ目の項目「項Ｓ」の項目値の種類の数が第１データ１と第２データ２とで異なる場合には、少ないほうのデータにダミーの項目値を追加して、種類の数を同数にする。処理部１２は、２つ目の項目「項Ｒ」についても同様に、項目値の種類数を同数に揃える。
【００３１】
処理部１２は、第１データ１の「項Ｓ」と「項Ｒ」とに関する変換行列（第１重み情報５，６）を、それぞれ正方行列Ｃ11とＣ12で表す。同様に処理部１２は、第２データ２の「項Ｓ」と「項Ｒ」とに関する変換行列（第２重み情報７，８）を、それぞれ正方行列Ｃ21とＣ22で表す。ただし、Ｃ11，Ｃ12，Ｃ21，Ｃ22は、いずれも以下の正規直交条件を満たすものとする。
【００３２】
【数１】
2018055551.tif 000003
【００３３】
Ｉは対角成分が「１」で残りが「０」の単位行列である。このとき、Ｘ1の列ベクトルをｘ1a，ｘ1bとする。ｘ1a，ｘ1bは、「項Ｒ」の変数値「ａ」、「ｂ」と「項Ｓ」との関係を表しており、以下の関係を有する。
【００３４】
【数２】
2018055551.tif 000004
【００３５】
すなわち、Ｃ11によるＸ1の変換は、項目値の他項目との関係を表すベクトル間の距離を変化させない。Ｃ12，Ｃ21，Ｃ22についても同様である。
処理部１２は、Ｃ11とＣ21の更新では、Ｃ12とＣ22を固定したときの、データ間類似度を最大化するＣ11とＣ21として算出する。データ間類似度は、以下の式で表される。
【００３６】
【数３】
2018055551.tif 000005
【００３７】
データ間類似度を最大化するＣ11とＣ21は、以下に示す特異値分解により算出できる。
【００３８】
【数４】
2018055551.tif 000006
【００３９】
ただし、Ｓは非負値を持つ正方対角行列である。
このようにして、行列を用いて効率的にデータ変換を行い、類似度を計算することができる。
【００４０】
図１の例では、第１重み情報５，６および第２重み情報７，８が変換行列で表されている。例えば第１重み情報５を示す変換行列の第１行・第１列の成分には、第１データ１の「項Ｓ」に属する項目値「Ｓ１」の、「項Ｓ」に属する変換先項目値「Ｓ’１」への影響を示す重み（ｗ１１）が設定されている。変換行列を用いると、第１データ１の項目ごとの項目値を成分とする行ベクトルに右から変換行列を乗算すれば、変換先項目値を得ることができる。例えば第１データ１の「項Ｓ」に属する項目値を成分とする行ベクトル（Ｓ１，Ｓ２）に、「項Ｓ」に関する第１重み情報５を示す変換行列を右から掛けることで、「項Ｓ」に属する変換先項目値を示す行ベクトル（Ｓ’１，Ｓ’２）が得られる。
【００４１】
同様に、第１データ１の「項Ｒ」に属する項目値を成分とする行ベクトル（Ｒ１，Ｒ２）に、「項Ｒ」に関する第１重み情報６を示す変換行列を右から掛けることで、「項Ｒ」に属する変換先項目値を示す行ベクトル（Ｒ’１，Ｒ’２）が得られる。第２データ２の「項Ｓ」に属する項目値を成分とする行ベクトル（Ｓ１，Ｓ２）に、「項Ｓ」に関する第２重み情報７を示す変換行列を右から掛けることで、「項Ｓ」に属する変換先項目値を示す行ベクトル（Ｓ’１，Ｓ’２）が得られる。第２データ２の「項Ｒ」に属する項目値を成分とする行ベクトル（Ｒ１，Ｒ２）に、「項Ｒ」に関する第２重み情報８を示す変換行列を右から掛けることで、「項Ｒ」に属する変換先項目値を示す行ベクトル（Ｒ’１，Ｒ’２）が得られる。
【００４２】
ここで第１データ１と第２データ２とにおける同一レコード内の「項Ｓ」の項目値と「項Ｒ」の項目値の乗算結果が、そのレコードの「数値」の値であるものとする。同様に、第１類似判断用データ３と第２類似判断用データ４における同一レコード内の「項Ｓ」の項目値と「項Ｒ」の項目値の乗算結果が、そのレコードの「数値」の値であるものとする。すると、第１類似判断用データ３と第２類似判断用データ４との「数値」の値を算出できる。例えば第１類似判断用データ３の「Ｓ’１」と「Ｒ’１」との組に対応する数値「ｋ３１」は、以下の通りとなる。
ｋ３１＝Ｓ’１×Ｒ’１
＝（ｗ１１×Ｓ１＋ｗ１２×Ｓ２）×（ｗ２１×Ｒ１＋ｗ２２×Ｒ２）
＝ｗ１１×ｗ２１×Ｓ１×Ｒ１＋ｗ１２×ｗ２１×Ｓ２×Ｒ１＋ｗ１１×ｗ２２×Ｓ１×Ｒ２＋ｗ１２×ｗ２２×Ｓ２×Ｒ２
＝ｗ１１×ｗ２１×ｋ１１＋ｗ１２×ｗ２１×ｋ１２＋ｗ１１×ｗ２２×ｋ１３＋ｗ１２×ｗ２２×ｋ１４
同様にして、第１類似判断用データ３と第２類似判断用データ４との「数値」の他の値（ｋ３１〜ｋ３４，ｋ４１〜ｋ４４）も算出できる。
【００４３】
処理部１２は、第１類似判断用データ３と第２類似判断用データ４の「数値」の各値を比較することで、第１類似判断用データ３と第２類似判断用データ４との類似度を計算する。例えば、処理部１２は、第１類似判断用データ３の各レコードの数値を成分とするベクトルと、第２類似判断用データ４の各レコードの数値を成分とするベクトルとの内積を計算し、内積の結果を類似度とする。
【００４４】
このように第１重み情報５，６および第２重み情報７，８を行列で表すことで、類似度を容易に計算できる。
なお上記の計算例は、簡単のために第１データ１と第２データ２との項目は２つだけとしているが、項目数がもっと多い場合、行列をテンソルに拡張することで類似度を計算できる。なお、行列は、テンソルの一例である。
【００４５】
比較対象のデータに対応するテンソルをＸm，Ｘnとする（ｍ、ｎはデータを識別する整数）。Ｘm，Ｘnに含まれる項目数がｋ（ｋは２以上の整数）のとき、変換行列をＣkとすると、データの類似判断用データへの変換は、以下の式で表すことができる。
【００４６】
【数５】
2018055551.tif 000007
【００４７】
式（５）の×kは、テンソルのモード積を示している。式（５）の結果を用いて、テンソルＸm，Ｘn間の距離を、以下の式で表すことができる。
【００４８】
【数６】
2018055551.tif 000008
【００４９】
式（６）に示す距離を最小にする行列Ｃkが変換行列となる。ただし、Ｃkは、以下の正規直交条件を満たすものとする。
【００５０】
【数７】
2018055551.tif 000009
【００５１】
項目ごとのＣkは、以下の特異値分解を、項目ごとに交互に繰り返し行うことで算出できる。
【００５２】
【数８】
2018055551.tif 000010
【００５３】
式（８）により、行列Ｐk，Ｓk，ＱkTが生成される。そしてＰkとＱkTとを用いて、以下の式により行列Ｃkが得られる。
【００５４】
【数９】
2018055551.tif 000011
【００５５】
このような計算により変換行列を求めデータを変換することで、項目数が３以上であっても現実的な計算量で類似度を計算可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、通信ログを示す複数のデータ間の類似度を計算するものである。
【００５６】
図２は、第２の実施の形態のシステム構成例を示す図である。ネットワーク２０には、複数のサーバ２１１，２１２，・・・、複数の端末装置２２１，２２２，・・・、および監視サーバ１００が接続されている。複数のサーバ２１１，２１２，・・・は、いずれかの端末装置からの要求に応じた処理を実行するコンピュータである。複数のサーバ２１１，２１２，・・・のうちの２台以上が連携して処理を実行する場合もある。複数の端末装置２２１，２２２，・・・は、複数のサーバ２１１，２１２，・・・で提供されるサービスを利用するユーザが使用するコンピュータである。
【００５７】
監視サーバ１００は、ネットワーク２０を介して行われた通信を監視し、通信ログを記録する。監視サーバ１００は、単位時間帯ごとの通信ログのデータを分類する。例えば監視サーバ１００は、対応する単位時間帯における不正通信の有無に応じて、データを分類する。
【００５８】
図３は、第２の実施の形態に用いる監視サーバのハードウェアの一構成例を示す図である。監視サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００５９】
メモリ１０２は、監視サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００６０】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００６１】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００６２】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００６３】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００６４】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００６５】
機器接続インタフェース１０７は、監視サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００６６】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００６７】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示したデータ変換装置１０も、図３に示した監視サーバ１００と同様のハードウェアにより実現することができる。
【００６８】
監視サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。監視サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、監視サーバ１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また監視サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００６９】
次に、監視サーバが有する機能について説明する。
図４は、監視サーバの機能の一例を示すブロック図である。監視サーバ１００は、通信情報収集部１１０、通信ログ記憶部１２０、類似度計算部１３０、および類似度記憶部１４０を有する。
【００７０】
通信情報収集部１１０は、ネットワーク２０を介して送受信されているパケットなどの通信情報を取得する。例えば通信情報収集部１１０は、ネットワーク２０内に設置されたスイッチのミラーリングポートを介して、そのスイッチを経由して通信されたパケットを取得する。また通信情報収集部１１０は、各サーバ２１１，２１２，・・・から、そのサーバ自身の通信ログを取得することもできる。通信情報収集部１１０は、取得した通信情報を、通信ログ記憶部１２０に格納する。
【００７１】
通信ログ記憶部１２０は、通信情報収集部１１０が収集した通信情報のログ（通信ログ）を記憶する。
類似度計算部１３０は、単位期間ごとの通信ログを示すデータ間の類似度を計算する。類似度計算部１３０は、計算した類似度を、類似度記憶部１４０に格納する。
【００７２】
類似度記憶部１４０は、データ間の類似度を記憶する。
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００７３】
次に通信ログ記憶部１２０に格納される情報について具体的に説明する。
図５は、通信ログ記憶部の一例を示す図である。通信ログ記憶部１２０には、複数の単位期間ログ１２１，１２２，・・・が格納されている。単位期間ログ１２１，１２２，・・・それぞれには、通信ログの収集期間が示されている。単位期間ログ１２１，１２２，・・・には、収集期間で示された時間帯内に収集した通信情報が格納される。
【００７４】
単位期間ログ１２１，１２２，・・・に格納される各レコードには、通信元ホスト、通信先ホスト、および量が含まれる。通信元ホストは、パケットの送信元の装置の識別子である。通信先ホストは、パケットの宛先の装置の識別子である。量は、通信元ホストと通信先ホストとの組が同じ通信の出現回数である。なお単位期間ログ１２１，１２２，・・・に、通信に使用されたポートの識別子（例えば宛先のＴＣＰ(Transmission Control Protocol)／ＵＤＰ(User Datagram Protocol)のポート番号）を含めてもよい。
【００７５】
単位期間ログ１２１，１２２，・・・の通信元ホストと通信先ホストは、第１の実施の形態における「項目」の一例である。また単位期間ログ１２１，１２２，・・・の量は、第１の実施の形態における「数値」の一例である。
【００７６】
図６は、類似度記憶部の一例を示す図である。類似度記憶部１４０は、例えば類似度管理テーブル１４１を記憶している。類似度管理テーブル１４１には、比較対象の２つの収集期間に関連付けて、それらの収集期間に対応するデータ間の類似度が設定されている。
【００７７】
次に、類似度計算部１３０による単位期間ログ１２１，１２２，・・・間の類似度計算方法について、詳細に説明する。
類似度計算部１３０は、単位期間ログ１２１，１２２，・・・の通信元ホストと通信先ホストとを変数とみなして類似度の計算を行う。以下、第１の実施の形態における比較対象のデータの「項目」を「変数」と呼び、第１の実施の形態における「項目値」を「変数値」と呼ぶ。
【００７８】
図７は、通信ログの変数への置き換え例を示す図である。類似度計算部１３０は、単位期間ログ１２１における通信元ホスト、通信先ホスト、および量を、それぞれ変数とみなして、類似度計算の入力データとする。入力データでは、通信元ホストを変数「項Ｓ」、通信先ホストを変数「項Ｒ」とする。また類似度計算部１３０は、各関係を示すレコード内の通信元ホストや通信先ホストの識別子を、各変数の値（変数値）であるものとみなす。そして類似度計算部１３０は、１つの関係に含まれる「項Ｓ」と「項Ｒ」との変数値を乗算した結果が、変数「量」の変数値であるものとする。
【００７９】
そして類似度計算部１３０は、入力データの２つ組ごとに、それらの類似度を計算する。第２の実施の形態では、類似度計算部１３０は、入力データを変換行列を用いて中間データに変換し、中間データ間の類似度を計算する。
【００８０】
図８は、変換行列を用いて生成した中間データ間の類似度の計算例を示す図である。類似度計算部１３０は、第１データ３１と第２データ３２それぞれに対して、「量」以外の変数の数に応じた変換行列４１〜４４を生成する。例えば類似度計算部１３０は、第１データ３１に対して、「項Ｓ」に対応する変換行列４１と「項Ｒ」に対応する変換行列４２とを生成する。同様に類似度計算部１３０は、第２データ３２に対して、「項Ｓ」に対応する変換行列４３と「項Ｒ」に対応する変換行列４４とを生成する。
【００８１】
変換行列４１〜４４は、正規直交条件を満たす２行２列の行列である。変換行列４１の各行には、第１データ３１における「項Ｓ」の変数値「Ｓ１」、「Ｓ２」が関連付けられている。変換行列４３の各行には、第２データ３２における「項Ｓ」の変数値「Ｓ１」、「Ｓ２」が関連付けられている。変換行列４１の各列には、中間データ５２における「項Ｓ」の変数値「Ｓ’１」、「Ｓ’２」が関連付けられている。変換行列４３の各列には、中間データ５２における「項Ｓ」の変数値「Ｓ’１」、「Ｓ’２」が関連付けられている。変換行列４１，４３の各成分には、行方向に関連付けられた変数値「Ｓ１」、「Ｓ２」を、列方向に関連付けられた変数値「Ｓ’１」、「Ｓ’２」へ変換する場合の重みが設定されている。
【００８２】
変換行列４２の各行には、第１データ３１における「項Ｒ」の変数値「Ｒ１」、「Ｒ２」が関連付けられている。変換行列４４の各行には、第２データ３２における「項Ｒ」の変数値「Ｒ１」、「Ｒ２」が関連付けられている。変換行列４２の各列には、中間データ５１における「項Ｒ」の変数値「Ｒ’１」、「Ｒ’２」が関連付けられている。変換行列４４の各列には、中間データ５２における「項Ｒ」の変数値「Ｒ’１」、「Ｒ’２」が関連付けられている。変換行列４２，４４の各成分には、行方向に関連付けられた変数値「Ｒ１」、「Ｒ２」を、列方向に関連付けられた変数値「Ｒ’１」、「Ｒ’２」へ変換する場合の重みが設定されている。
【００８３】
なお図８の例では、変換行列４１〜４４に設定されている重みの値を小数点２桁までしか示していないが、実際には小数点２桁よりも下位の桁の値も存在するものとする。
類似度計算部１３０は、変換行列４１，４２を用いて、第１データ３１を中間データ５１に変換する。中間データ５１には、「項Ｓ」の変数値と「項Ｒ」の変数値の組み合わせに対応する量が設定されている。中間データ５１の「項Ｓ」の変数値には「Ｓ’１」または「Ｓ’２」が設定され、「項Ｒ」の変数値には「Ｒ’１」または「Ｒ’２」が設定されている。
【００８４】
中間データ５１の「量」の値は、「項Ｓ」の変数値と「項Ｒ」の変数値との乗算結果である。類似度計算部１３０は、第１データ３１を変換行列４１で変換することで、中間データ５１の「量」の値を算出する。例えば変数値「Ｓ’１」は、重み「−０．６８」×「Ｓ１」＋重み「−０．７３」×「Ｓ２」である。変数値「Ｓ’２」は、重み「−０．７３」×「Ｓ１」＋重み「０．６８」×「Ｓ２」である。変数値「Ｒ’１」は、重み「−０．３２」×「Ｒ１」＋重み「−０．９４」×「Ｒ２」である。変数値「Ｒ’２」は、重み「−０．９４」×「Ｒ１」＋重み「０．３２」×「Ｒ２」である。
【００８５】
このように、変換行列４１，４２を用いて、変数値「Ｓ’１」、「Ｓ’２」、「Ｒ’１」、「Ｒ’２」の値を、変数値「Ｓ１」、「Ｓ２」、「Ｒ１」、「Ｒ２」と、それらの重みで表すことができる。すると、変数値「Ｓ’１」または「Ｓ’２」と変数値「Ｒ’１」または「Ｒ’２」とを乗算すると、「Ｓ１×Ｒ１」、「Ｓ２×Ｒ１」、「Ｓ１×Ｒ２」、「Ｓ２×Ｒ２」のいずれかを含む項が現れる。例えば「Ｓ１×Ｒ１」は、以下の式で表される。
【００８６】
Ｓ’１×Ｒ’１＝｛（−０．６８×Ｓ１）＋（−０．７３×Ｓ２）｝×｛（−０．３２×Ｒ１）＋（−０．９４×Ｒ２）｝
＝（−０．６８）×（−０．３２）×Ｓ１×Ｒ１＋（−０．７３）×（−０．３２）×Ｓ２×Ｒ１＋（−０．６８）×（−０．９４）×Ｓ１×Ｒ２＋（−０．７３）×（−０．９４）×Ｓ２×Ｒ２
類似度計算部１３０は、「Ｓ１×Ｒ１」、「Ｓ２×Ｒ１」、「Ｓ１×Ｒ２」、「Ｓ２×Ｒ２」の値として、第１データ３１における対応する「量」の値を代入する。図８の例では、「Ｓ１×Ｒ１＝１」、「Ｓ２×Ｒ１＝０」、「Ｓ１×Ｒ２＝１」、「Ｓ２×Ｒ２＝１」である。その結果、中間データ５１における「量」の値が求まる。同様に、類似度計算部１３０は、第２データ３２を変換行列４３，４４で変換して、中間データ５２を生成する。
【００８７】
類似度計算部１３０は、中間データ５１，５２の間の類似度を計算する。例えば類似度計算部１３０は、中間データ５１の「量」の各変数値を成分とするベクトルと、中間データ５２の「量」の各変数値を成分とするベクトルとを、長さ「１」に正規化後、内積を計算する。そして類似度計算部１３０は、内積の結果を、中間データ５１，５２間の類似度とする。
【００８８】
このようにして計算される中間データ５１，５２間の類似度は、変換行列４１〜４４に設定されている重みに依存する。そこで類似度計算部１３０は、類似度が高くなるように変換行列４１〜４４を更新する。変換行列４１〜４４の更新は、「項Ｓ」の変換行列４１，４３の更新と、「項Ｒ」の変換行列４２，４４の更新とが交互に行われる。
【００８９】
図９は、「項Ｓ」の変換行列の更新例を示す図である。「項Ｓ」の変換行列４１，４３を更新する場合、類似度計算部１３０は、「項Ｓ」の変数を固定とし、「項Ｓ」以外の変数を変換して中間データ５３，５４を生成する。図９の例では、類似度計算部１３０は、「項Ｒ」の変数値「Ｒ１」、「Ｒ２」を変換行列４２，４４を用いて変換し、中間データ５３，５４を生成している。中間データ５３，５４の「量」の値は、「Ｓ１」または「Ｓ２」と「Ｒ’１」または「Ｒ’２」との乗算結果である。例えば第１データ３１の中間データ５３における「Ｓ１×Ｒ’１」は、変換行列４２に示される重みを用いて、「（−０．３２）×Ｓ１×Ｒ１＋（−０．９４）×Ｓ１×Ｒ２」と表される。第１データ３１に基づいて、「Ｓ１×Ｒ１」と「Ｓ１×Ｒ２」とに値を設定すれば、「Ｓ１×Ｒ’１」の値が得られる。
【００９０】
第１データ３１と第２データ３２の中間データ５３，５４が生成されると、類似度計算部１３０は、中間データ５３における「Ｓ１」、「Ｓ２」それぞれと、中間データ５４における「Ｓ１」、「Ｓ２」それぞれとの類似度を計算し、類似度行列６１を生成する。類似度行列６１の各行には、第１データ３１の「項Ｓ」の変数値が関連付けられており、類似度行列６１の各列には、第２データ３２の「項Ｓ」の変数値が関連付けられている。類似度行列６１の成分には、その成分が設定された行の変数値と列の変数値との類似度が設定されている。
【００９１】
例えば類似度計算部１３０は、「項Ｓ」の各変数値それぞれについて、他の「項Ｒ」の各変数値との関係を示すベクトルを生成する。具体的には、類似度計算部１３０は、中間データ５３の「Ｓ１」について、「Ｒ’１」と「Ｒ’２」とのそれぞれとの関係を示す「量」の値を成分とするベクトルｖ１1を生成する。同様に類似度計算部１３０は、中間データ５３の「Ｓ２」について、ベクトルｖ２1を生成する。類似度計算部１３０は、中間データ５４の「Ｓ１」について、ベクトルｖ１2を生成する。類似度計算部１３０は、中間データ５４の「Ｓ２」について、ベクトルｖ２2を生成する。
【００９２】
類似度計算部１３０は、ベクトルｖ１1とベクトルｖ１2との内積を、第１データ３１の「Ｓ１」と第２データ３２の「Ｓ１」との類似度として、類似度行列６１に設定する。類似度計算部１３０は、ベクトルｖ１1とベクトルｖ２2との内積を、第１データ３１の「Ｓ１」と第２データ３２の「Ｓ２」との類似度として、類似度行列６１に設定する。類似度計算部１３０は、ベクトルｖ２1とベクトルｖ１2との内積を、第１データ３１の「Ｓ２」と第２データ３２の「Ｓ１」との類似度として、類似度行列６１に設定する。類似度計算部１３０は、ベクトルｖ２1とベクトルｖ２2との内積を、第１データ３１の「Ｓ２」と第２データ３２の「Ｓ２」との類似度として、類似度行列６１に設定する。
【００９３】
類似度計算部１３０は、このようにして生成した類似度行列６１に基づいて、第１データ３１の「項Ｓ」変換用の変換行列４１ａと第２データ３２の「項Ｓ」変換用の変換行列４２ａとを生成する。例えば類似度計算部１３０は、変換行列４１ａ，４３ａからＳ’１、Ｓ’２を消去して１つの行列にしたときに類似度行列６１に最も類似するような、変換行列４１ａ，４３ａを生成する。具体的には、類似度計算部１３０は、類似度行列６１を特異値分解し、変換行列４１ａ，４３ａを生成する。
【００９４】
類似度行列６１は、第１データ３１の「項Ｓ」変換用の変換行列４１を、生成した変換行列４１ａに更新する。また類似度行列６１は、第２データ３２の「項Ｓ」変換用の変換行列４３を、生成した変換行列４３ａに更新する。
【００９５】
このようにして、「項Ｓ」を固定して他の変数を変換することで、「項Ｓ」の変換行列が更新される。次に類似度計算部１３０は、「項Ｒ」を固定して他の変数を変換することで、「項Ｒ」の変換行列を更新する。類似度計算部１３０は、各変数の変換行列を更新したら、更新後の変換行列を用いて、第１データ３１と第２データ３２との中間データを生成し、中間データ間の類似度を計算する。類似度計算部１３０は、例えば中間データ間の類似度が収束するまで、変換行列の更新を繰り返し行う。これにより中間データ間の類似度の最大値を得る変換行列が生成される。そして類似度計算部１３０は、中間データ間の類似度の最大値を、第１データ３１と第２データ３２との類似度とする。
【００９６】
図８、図９に示した処理の手順をフローチャートで表すと図１０のようになる。
図１０は、類似度計算処理の手順の一例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。類似度計算処理は、類似度の比較対象となる２つのデータが入力されたときに実行される。
【００９７】
［ステップＳ１０１］類似度計算部１３０は、変換行列を初期化する。例えば類似度計算部１３０は、分類対象のデータの「量」以外の変数ごとに、変換行列を生成する。生成される変換行列は、対応する変数に含まれる変数値の数（同一の値の変数値は１つと数える）分の行と列とを有する正方行列である。変換行列の成分には、正規直交条件を満たしていれば、ランダムな値を設定することができる。例えば類似度計算部１３０は、変換行列内のいくつかの成分の値をランダムに決定し、正規直交条件を満たすように他の成分の値を決定する。
【００９８】
［ステップＳ１０２］類似度計算部１３０は、生成した変換行列を用いて、比較対象のデータそれぞれから中間データを生成する。
［ステップＳ１０３］類似度計算部１３０は、中間データ間の類似度を算出する。類似度計算部１３０は、算出した類似度をメモリに一時的に保存する。
【００９９】
［ステップＳ１０４］類似度計算部１３０は、比較対象のデータの変数を１つ選択する。
［ステップＳ１０５］類似度計算部１３０は、比較対象のデータそれぞれの変数値間の類似度を示す類似度行列を生成する。例えば類似度計算部１３０は、比較対象のデータそれぞれについて、選択した変数以外の変数を変換行列で変換した中間データを生成する。そして類似度計算部１３０は、中間データに示される変数値の量の値と、他の中間データに示される変数値の量の値との類似度を、それらの２つの変数値間の類似度を示す成分として、類似度行列に設定する。
【０１００】
［ステップＳ１０６］類似度計算部１３０は、類似度行列に基づいて、選択した変数についての新たな変換行列を生成する。
［ステップＳ１０７］類似度計算部１３０は、すべての変数を選択したか否かを判断する。すべての変数の選択が選択済みとなった場合、処理がステップＳ１０８に進められる。未選択の変数があれば、処理がステップＳ１０４に進められる。
【０１０１】
［ステップＳ１０８］類似度計算部１３０は、各変数について新たに生成した変換行列を用いて、比較対象のデータごとの中間データを生成する。
［ステップＳ１０９］類似度計算部１３０は、ステップＳ１０８で生成した中間データ間の類似度を算出する。
【０１０２】
［ステップＳ１１０］類似度計算部１３０は、処理の終了条件が満たされたか否かを判断する。処理の終了条件とは、例えば類似度が収束したか、またはステップＳ１０４〜Ｓ１１０のループを所定回数以上繰り返したことである。処理の終了条件が満たされた場合、類似度計算処理が終了する。処理の終了条件が満たされていない場合、類似度計算部１３０は、変数の選択状態を未選択に初期化して、処理をステップＳ１０４に進める。
【０１０３】
このような手順で比較対象のデータ間の類似度を計算することができる。以下、図１１〜１４を参照して、類似度計算の具体例について説明する。
図１１は、初期状態の変換行列を用いた中間データの生成例を示す図である。図１１の例では、第１データ３１と第２データ３２とが比較対象のデータである。まず、第１データ３１の「項Ｓ」の変換行列４１と「項Ｒ」の変換行列４２とが初期化され、初期状態の変換行列４１，４２を用いて、第１データ３１が中間データ５１に変換される。同様に、第２データ３２の「項Ｓ」の変換行列４３と「項Ｒ」の変換行列４４とが初期化され、初期状態の変換行列４３，４４を用いて、第２データ３２が中間データ５２に変換される。そして、第１データ３１の中間データ５１と第２データ３２の中間データ５２との類似度が計算される。図１１の例では、類似度が「０．４０」である。
【０１０４】
次に、変数「項Ｓ」が選択されたものとする。「項Ｓ」が選択されると、「項Ｓ」の変換行列が更新される。
図１２は、「項Ｓ」の変換行列の更新例を示す図である。第１データ３１について、「項Ｒ」用の変換行列４２を用いて、「項Ｓ」以外の変数値を変換した中間データ５３が生成される。同様に第２データ３２について、「項Ｒ」用の変換行列４４を用いて、「項Ｓ」以外の変数値を変換した中間データ５４が生成される。次に、生成された２つの中間データ５３，５４それぞれの変数値間の類似度を示す類似度行列６１が生成される。そして類似度行列６１に基づいて、掛け合わせることで類似度行列６１と近似した値を得ることができる２つの変換行列４１ａ，４３ａが生成される。
【０１０５】
次に、変数「項Ｒ」が選択されたものとする。「項Ｒ」が選択されると、「項Ｒ」の変換行列が更新される。
図１３は、「項Ｒ」の変換行列の更新例を示す図である。第１データ３１について、「項Ｓ」用の変換行列４１ａを用いて、「項Ｒ」以外の変数値を変換した中間データ５５が生成される。同様に第２データ３２について、「項Ｓ」用の変換行列４３ａを用いて、「項Ｒ」以外の変数値を変換した中間データ５６が生成される。次に、生成された２つの中間データ５５，５６それぞれの変数値間の類似度を示す類似度行列６２が生成される。そして類似度行列６２に基づいて、掛け合わせることで類似度行列６２と近似した値を得ることができる２つの変換行列４２ａ，４４ａが生成される。
【０１０６】
「項Ｓ」と「項Ｒ」とのそれぞれについて、変換行列の更新が終了すると、更新後の変換行列４１ａ，４２ａ，４３ａ，４４ａに基づいて、中間データが生成される。
図１４は、更新後の変換行列を用いた中間データの生成例を示す図である。更新後の変換行列４１ａ，４２ａを用いて、第１データ３１から中間データ５３が生成される。同様に、更新後の変換行列４３ａ，４４ａを用いて、第２データ３２から中間データ５４が生成される。そして、生成された中間データ５３，５４間の類似度が算出される。図１４の例では、類似度は「０．９１」である。
【０１０７】
更新後の変換行列４１ａ，４２ａ，４３ａ，４４ａを用いて生成した中間データ５３，５４間の類似度は、更新前の変換行列４１〜４４を用いて生成した中間データ５１，５２間の類似度（図１１参照）よりも高くなっている。すなわち変換行列４１〜４４を更新したことにより、生成される中間データ間の類似度が高まっている。更新後の変換行列４１ａ，４２ａ，４３ａ，４４ａに対して、さらに更新処理を行えば、中間データ間の類似度をさらに高めることができる。ただし更新処理を何度も繰り返すと、中間データ間の類似度の上昇度合いが鈍化し、ある程度の類似度に収束する。
【０１０８】
類似度計算部１３０は、例えば、類似度の上昇度合いが所定値以下になったとき、最後に算出した中間データ間の類似度を、比較対象の第１データ３１と第２データ３２との類似度に決定する。類似度計算部１３０は、決定した類似度を、類似度記憶部１４０に格納する。
【０１０９】
このように第２の実施の形態では、変換行列を用いて生成した中間データ間の類似度により、複数のデータ間の類似度を決定するようにしたことで、類似度の判定精度が向上する。
【０１１０】
以下に、比較例として、比較対象のデータに含まれる変数値の並べ替えのみによる類似度の計算例を図１５、図１６に示す。
図１５は、類似度計算の比較例を示す第１の図である。図１５に示す第１データ７１と第２データ７２との類似度を計算する場合を想定する。人やモノの間の関係のしかたを分類するとき、第１データ７１を採取した期間に「Ｓ１」の装置が担っていた役割を、第２データ７２を採取した期間では「Ｓ２」の装置が担っている可能性がある。そこで図１５の例では、通信元ホストや通信先ホストを、別の変数値に対応付けて、各データ内のレコードの並べ替えを行っている。並べ替えにより、変換データ７３，７４が生成される。２つの変換データ７３，７４は、通信元ホスト、通信先ホスト、ポートの関係を示す変数値の組み合わせの順番が統一されている。図１５の例では、変換データ７３，７４の最上位には、「Ｓ’１」、「Ｒ’１」、「Ｐ’１」の組み合わせを示すレコードが登録され、その次に「Ｓ’１」、「Ｒ’１」、「Ｐ’２」の組み合わせを示すレコードが登録されている。
【０１１１】
このように変換データ７３，７４内に所定の順番で並べられた各レコードの量の値を比較することで、変換データ７３，７４間の類似度を算出できる。例えば、量の値を成分とするベクトル間の内積が、類似度とされる。この場合、第１データ７１と第２データ７２との各変数値に、変換データ７３，７４のどの変数値を対応付けるかにより、類似度が変わってくる。そのため、対応付けのすべてのパタンについて変換データ７３，７４を生成し、類似度の最大化が図られる。そして、変換データ７３，７４から得られる類似度の最大値が、第１データ７１と第２データ７２との類似度と判定される。
【０１１２】
図１６は、類似度計算の比較例を示す第２の図である。図１５に示した方法で類似度を計算したときの第１データ７１と第２データ７２との類似度が「０．８９」である。同じ方法で、第１データ７１と第３データ７５との類似度を計算すると、同じく「０．８９」となる。
【０１１３】
ここで、第１データ７１と第２データ７２における通信先ホストとポートとの関係をみると、「量」の値が「１」以上のレコードに、｛Ｒ１，Ｐ１｝または｛Ｒ２，Ｐ２｝の組み合わせしか含まれていないことが分かる。それに対して第３データ７５では、「量」の値が「１」以上のレコードのなかに、｛Ｒ１，Ｐ２｝の組み合わせを含むものがある。そうすると、第１データ７１と第２データ７２とは、通信元ホストが分離・併合された前後での通信ログというだけで、類似の事象に関する通信ログである可能性が高い。それに対して、第３データ７５は、別の事象に関する通信ログであると考えられる。
【０１１４】
しかし、図１５に示した方法で類似度を計算すると、図１６に示すように、第１データ７１から見たとき、第２データ７２と第３データ７５とのいずれとの間も類似度が同じとなる。すなわち、正しく類似度が計算されていない。
【０１１５】
次に第１データ７１と第２データ７２との類似度、および第１データ７１と第３データ７５との類似度を、第２の実施の形態に係る方法で計算した場合について、図１７，図１８を参照して説明する。
【０１１６】
図１７は、第２の実施の形態による類似度計算例を示す第１の図である。図１７には、第１データ７１と第２データ７２との類似度の計算例を示している。第１データ７１について、通信元ホスト、通信先ホスト、ポートそれぞれに対応する変換行列８１〜８３が生成されている。これらの変換行列８１〜８３を用いて、第１データ７１が中間データ９１に変換されている。また第２データ７２について、通信元ホスト、通信先ホスト、ポートそれぞれに対応する変換行列８４〜８６が生成されている。これらの変換行列８４〜８６を用いて、第２データ７２が中間データ９２に変換されている。第１データ７１の中間データ９１と第２データ７２の中間データ９２との類似度は、「０．９７」である。
【０１１７】
図１８は、第２の実施の形態による類似度計算例を示す第２の図である。図１８には、第１データ７１と第３データ７５との類似度の計算例を示している。第３データ７５について、通信元ホスト、通信先ホスト、ポートそれぞれに対応する変換行列８７〜８９が生成されている。これらの変換行列８７〜８９を用いて、第３データ７５が中間データ９３に変換されている。第１データ７１の中間データ９１と第３データ７５の中間データ９３との類似度は、「０．９４」である。
【０１１８】
図１７と図１８の類似度の計算結果から、第１データ７１は、第３データ７５よりも第２データ７２に類似していることが分かる。すなわち、変数値間の関係を正しく反映させた類似度計算により、類似度の計算精度が向上している。
【０１１９】
しかも図１５、図１６に示したような方法で類似度の精度を上げようとすると、対応付けのすべてのパタンについて類似度を計算することとなり、計算量が膨大となる。例えば、３項目の人またはモノがあり、各項目の種類数がそれぞれ「Ａ，Ｂ，Ｃ」（Ａ，Ｂ，Ｃは１以上の整数）であるものとする。このとき、図１５、図１６に示した方法で類似度を計算すると、「Ａ！Ｂ！Ｃ！」の数の組み合わせパタンについて類似度計算を行うこととなる。それに対して、第２の実施の形態に示す手法では、（Ａ2＋Ｂ2＋Ｃ2）ＡＢＣに比例する計算量となる。これは「Ａ，Ｂ，Ｃ」がそれぞれ「１０，１０，１０」なら、約１６０，０００，０００，０００，０００倍高速となることを意味する。
【０１２０】
以上のように、第２の実施の形態によれば、類似する事象がログ生成の過程で異なる状態で記録された場合でも、重みづけによる変換により、精度の高い類似度の判定を、効率的に実行することができる。
【０１２１】
〔その他の実施の形態〕
第２の実施の形態では、単位期間ごとの通信ログ間の類似度を計算する例を示したが、同じ技術により、他の様々な情報の類似度を計算可能である。また単に類似度の計算結果は、例えば情報の分類、データマイニング、機械学習などの様々な分野に利用できる。
【０１２２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１２３】
１  第１データ
２  第２データ
３  第１類似判断用データ
４  第２類似判断用データ
５，６  第１重み情報
７，８  第２重み情報
１０  データ変換装置
１１  記憶部
１２  処理部
【図１】
2018055551.tif 000012
【図２】
2018055551.tif 000013
【図３】
2018055551.tif 000014
【図４】
2018055551.tif 000015
【図５】
2018055551.tif 000016
【図６】
2018055551.tif 000017
【図７】
2018055551.tif 000018
【図８】
2018055551.tif 000019
【図９】
2018055551.tif 000020
【図１０】
2018055551.tif 000021
【図１１】
2018055551.tif 000022
【図１２】
2018055551.tif 000023
【図１３】
2018055551.tif 000024
【図１４】
2018055551.tif 000025
【図１５】
2018055551.tif 000026
【図１６】
2018055551.tif 000027
【図１７】
2018055551.tif 000028
【図１８】
2018055551.tif 000029