(57)【要約】  特徴量生成装置は、異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と、学習期間において、前記数値ベクトルを学習し、学習結果を出力する学習部と、テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、前記学習結果とに基づいて異常を検知する検知部とを有する。
2018142694.tif 000002
【特許請求の範囲】
【請求項１】
異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と、
学習期間において、前記数値ベクトルを学習し、学習結果を出力する学習部と、
テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、前記学習結果とに基づいて異常を検知する検知部と、
を有する特徴量生成装置。
【請求項２】
前記生成部は、前記非数値のテキストデータにＩＤを付与し、前記学習期間において付与されたＩＤの総数を次元数として各ＩＤの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったＩＤが前記テスト期間における非数値のテキストデータで出現した場合、当該非数値のテキストデータを無視する、請求項１に記載の特徴量生成装置。
【請求項３】
前記生成部は、前記非数値のテキストデータにＩＤを付与し、前記学習期間において付与されたＩＤの総数に所定数のＩＤの個数を追加した数を次元数として各ＩＤの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったＩＤが前記テスト期間における非数値のテキストデータで出現した場合、当該非数値のデータに前記所定数のＩＤのいずれかを付与して数値ベクトルを生成する、請求項１に記載の特徴量生成装置。
【請求項４】
前記生成部は、前記非数値のテキストデータの単語にＩＤを付与し、前記学習期間において付与されたＩＤの総数を次元数として各ＩＤの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったＩＤが前記テスト期間における非数値のテキストデータの単語で出現した場合、当該単語を無視する、請求項１に記載の特徴量生成装置。
【請求項５】
前記生成部は、前記非数値のテキストデータの単語にＩＤを付与し、前記学習期間において付与されたＩＤの総数に所定数のＩＤの個数を追加した数を次元数として各ＩＤの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったＩＤが前記テスト期間における非数値のテキストデータの単語で出現した場合、当該単語に前記所定数のＩＤのいずれかを付与して数値ベクトルを生成する、請求項１に記載の特徴量生成装置。
【請求項６】
前記生成部は、予め用意された複数の単語の数値ベクトル表現に基づいて前記非数値のテキストデータを数値ベクトル化し、各単語に対応するベクトルを合成して数値ベクトルを生成し、
前記予め用意された複数の単語以外の単語が前記テスト期間において出現した場合、当該単語を無視する、請求項１に記載の特徴量生成装置。
【請求項７】
異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成手順と、
学習期間において、前記数値ベクトルを学習し、学習結果を出力する学習手順と、
テスト期間において、前記生成手順において生成された数値ベクトルごとに、当該数値ベクトルと、前記学習結果とに基づいて異常を検知する検知手順と、
をコンピュータが実行する特徴量生成方法。
【請求項８】
請求項１乃至６いずれか一項記載の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特徴量生成装置、特徴量生成方法及びプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムのリアルタイムな異常検知の方法として、システム上の様々なデータを定期的に観測し、データが正常時と異なる傾向を示した場合に「異常」として検知するアルゴリズムが考えられる。【０００３】
例えば、予め正常時として定義された「学習期間」のデータが教師データとして用いられて学習され、異常検知を行う「テスト期間」においては、観測されたテストデータの傾向と、学習した教師データの傾向との比較が行われる異常検知アルゴリズムが考えられる。【０００４】
異常検知アルゴリズムとしては様々な手法が提案されているが、その多くにおいて入力されるデータは正規化された数値ベクトルで表現されることが望まれる（例えば、非特許文献１、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】櫻田 麻由，矢入 健久，"オートエンコーダを用いた次元削減による宇宙機の異常検知"， 人工知能学会全国大会論文集 28, 1-3, 2014
【非特許文献２】Banerjee, Amit, Philippe Burlina, and Chris Diehl. "A support vector method for anomaly detection in hyperspectral imagery." IEEE Transactions on Geoscience and Remote Sensing 44.8 (2006): 2282.
【非特許文献３】Kimura, Tatsuaki, et al. "Proactive failure detection learning generation patterns of large-scale network logs." Network and Service Management (CNSM), 2015 11th International Conference on. IEEE, 2015.
【非特許文献４】Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
【非特許文献５】Mitchell, Jeff, and Mirella Lapata. "Composition in distributional models of semantics." Cognitive science 34.8 (2010): 1388-1429.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワークにおける観測データに基づいて異常検知を行う場合、観測データには各ホストにおけるログメッセージ（例えば、ｓｙｓｌｏｇのメッセージ）のような非数値のテキストデータが含まれることが考えられる。しかし、このような非数値のテキストデータは異常検知を行うのに適しておらず、異常検知のための数値ベクトルへと変換するための工夫が必要である。【０００７】
本発明は、上記の点に鑑みてなされたものであって、非数値のテキストデータが異常の検知対象から収集されるデータに含まれる場合に、非数値のテキストデータから異常検知のための特徴量の生成を行うことを目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、特徴量生成装置は、異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と、学習期間において、前記数値ベクトルを学習し、学習結果を出力する学習部と、テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、前記学習結果とに基づいて異常を検知する検知部とを有する。
【発明の効果】
【０００９】
非数値のテキストデータが異常の検知対象から収集されるデータに含まれる場合に、非数値のテキストデータから異常検知のための特徴量の生成を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態におけるシステム構成例を示す図である。
【図２】第１の実施の形態における異常検知装置１０のハードウェア構成例を示す図である。
【図３】第１の実施の形態における異常検知装置１０の機能構成例を示す図である。
【図４】第１の実施の形態における学習処理の処理手順の一例を説明するためのフローチャートである。
【図５】第１の実施の形態における検知処理の処理手順の一例を説明するためのフローチャートである。
【図６】オートエンコーダを説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、第１の実施の形態におけるシステム構成例を示す図である。図１において、ネットワークＮ１は、異常の検知対象とされるネットワークである。ネットワークＮ１は、ルータやサーバ装置等の複数のノードが相互に接続されることによって構成され、所定のサービスを提供するために任意のノード間においてパケットの送受信が行われる。
【００１２】
ネットワークＮ１の複数箇所には測定装置２０が配置されている。測定装置２０は、配置箇所を監視することで得られる観測データを複数のタイミングで採取する。収集される観測データの一例として、ｓｙｓｌｏｇのメッセージのような非数値のテキストデータ等が挙げられる。
【００１３】
ｓｙｓｌｏｇは、測定装置２０がログメッセージをネットワーク上で転送するための規格である。ｓｙｓｌｏｇで転送されるログメッセージは、「時刻、メッセージ、ホスト」等を含む。時刻は、メッセージが出力された時刻であり、以下の説明では「タイムスタンプ」と呼ばれる。メッセージは測定装置２０が出力したメッセージの内容であり、非数値のテキストデータである。ホストは、メッセージを出力した測定装置２０を識別するための識別子である。
【００１４】
測定装置２０によって採取された観測データは、異常検知装置１０によって収集される。異常検知装置１０は、収集された観測データから、正常時の特徴を学習し、学習結果に基づいて、その後に入力される観測データについて、異常の発生を検知する（異常の有無を判定する）コンピュータである。なお、正常時の特徴の学習が行われる処理を「学習処理」といい、学習処理が行われる期間を「学習期間」という。学習処理において学習された結果に基づいて異常の検知が行われる処理を「テスト処理」といい、テスト処理が行われる期間を「テスト期間」という。
【００１５】
図２は、第１の実施の形態における異常検知装置１０のハードウェア構成例を示す図である。図２の異常検知装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１６】
異常検知装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１７】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って異常検知装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１８】
図３は、第１の実施の形態における異常検知装置１０の機能構成例を示す図である。図３において、異常検知装置１０は、受信部１１、学習処理制御部１２、前処理部１３、学習部１４、検知処理制御部１５及び検知部１６等を有する。これら各部は、異常検知装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。異常検知装置１０は、また、教師データ記憶部１２１、パラメータ記憶部１２２、観測データ記憶部１２３、学習結果記憶部１２４、学習データ記憶部１２５及び辞書データ記憶部１２６等を利用する。これら各記憶部は、例えば、補助記憶装置１０２、又は異常検知装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００１９】
教師データ記憶部１２１には、予め正常時に収集されたことが確認されている観測データが教師データとして記憶されている。但し、教師データは、観測データから選別されるのではなく、人為的に作成されてもよい。
【００２０】
受信部１１は、測定装置２０から観測データを受信する。受信された観測データは、観測データ記憶部１２３に記憶される。
【００２１】
学習処理制御部１２は、学習処理を制御する。
【００２２】
前処理部１３は、教師データの集合、観測データの集合、又は学習データ記憶部１２５に記憶されている学習データの集合について前処理を実行する。前処理とは、データ集合からの単位時間ごとの特徴量の抽出や、抽出された特徴量の正規化等の処理である。特徴量は、数値ベクトルの形式で表現される。非数値のテキストデータは、ＩＤ等によって数値ベクトル化され、特徴量が抽出される。数値ベクトル化には、辞書データ記憶部１２６に予め記憶された、テキストデータを数値化するための辞書が利用されてもよい。なお、学習期間には、教師データ記憶部１２１に記憶されている教師データ群が前処理の対象とされる。テスト期間において、受信部１１によって観測データの受信が開始されると、観測データ群が前処理の対象とされる。更に、検知部１６による異常の検知が開始され、正常であると判定され、学習データとして学習データ記憶部１２５に記憶された観測データが所定数に達すると、当該学習データ群が前処理の対象とされてもよい。
【００２３】
前処理部１３は、また、教師データ群又は学習データ群について前処理を実行する際に、観測データ又は学習データを正規化するためのパラメータ（以下、「正規化パラメータ」という。）を生成又は更新し、生成又は更新された正規化パラメータをパラメータ記憶部１２２に記憶する。また、前処理部１３は、メッセージに付与したＩＤをパラメータ記憶部１２２に記憶する。
【００２４】
学習部１４は、教師データ又は学習データに基づいて学習を実行する。学習部１４による学習結果は、学習結果記憶部１２４に記憶される。
【００２５】
検知処理制御部１５は、検知処理を制御する。
【００２６】
検知部１６は、観測データ記憶部１２３に記憶されている観測データが前処理部１３によって前処理されることで生成される数値ベクトルと、学習結果記憶部１２４に記憶されている学習結果とに基づいて異常の発生を検知する。具体的には、検知部１６は、前処理された数値ベクトルについて、学習結果との違いを異常度として算出し、当該異常度を閾値と比較することで異常の発生を検知する。異常が検知されなかった数値ベクトルの正規化前の値は、学習データとして学習データ記憶部１２５に記憶されてもよい。
【００２７】
以下、異常検知装置１０が実行する処理手順について説明する。図４は、第１の実施の形態における学習処理の処理手順の一例を説明するためのフローチャートである。
【００２８】
学習処理が開始されると、学習処理制御部１２は、教師データ記憶部１２１から教師データ群を取得し、当該教師データ群を前処理部１３へ入力する（Ｓ１０１）。
【００２９】
続いて、前処理部１３は、入力された教師データ群を、単位時間ごとの集合に分割する（Ｓ１０２）。なお、教師データ記憶部１２１には、単位時間×Ｕの期間（学習期間）分の教師データが記憶されていることとする。したがって、教師データ群は、Ｕ個の集合に分割される。
【００３０】
続いて、前処理部１３は、分割された集合ごとに、目的に応じた特徴量を抽出し、抽出された特徴量を各次元の要素とする多次元数値ベクトルを生成する。
【００３１】
例えば、単位時間が１分で、前処理部１３が、１分間ごとの特徴量を抽出するとする。教師データがｓｙｓｌｏｇのメッセージであるとすると、教師データは、タイムスタンプの付いたテキストデータの集合ｌｔｒａｉｎ＿ｄ＝｛ｗｔｒａｉｎ＿｛ｄ，ｗ｝｝（ｄ＝１，...，Ｄ，ｗ＝１，...，Ｗ＿ｄ，Ｄ：教師データの数，Ｗ＿ｄ：ｄ番目のテキスト）として表され、例えば下記のような「タイムスタンプ」と「テキスト」の属性を持ったフォーマットを取る。
タイムスタンプ      テキスト
１２：００：００    Ｉ  ｈａｖｅ  ａ  ｐｅｎ
１２：００：０３    Ｉ  ｈａｖｅ  ａｎ  ａｐｐｌｅ
・・・
前処理部１３は、教師データの各テキストｌｔｒａｉｎ＿１，ｌｔｒａｉｎ＿２，...ｌｔｒａｉｎ＿Ｄに対して、何らかの方法で各テキストに対応したＩＤを付与することによってテキストデータを数値化する（Ｓ１０３）。ＩＤが付与された教師データは下記のような「タイムスタンプ」「ＩＤ」の属性を持ったフォーマットを取る。
タイムスタンプ      ＩＤ
１２：００：００    ０
１２：００：０３    １
・・・
ここで、０は「Ｉ  ｈａｖｅ  ａ  ｐｅｎ」に、１は「Ｉ  ｈａｖｅ  ａｎ  ａｐｐｌｅ」に与えられたＩＤである。テキストに対してＩＤを付与する方法としては、テキストの集合を与えることで、テキストに対する事前知識を要すること無く、同内容のテキストに同じＩＤを割り当てることができる技術等が考えられる（例えば、非特許文献３参照）。
【００３２】
先頭の教師データのフロー開始時刻が１２：００：００であるとすると、前処理部１３は、全教師データのうち、フロー開始時刻ｔが１１：５９：００＜＝ｔ＜１２：００：００であるような教師データの集合について、各ＩＤｉの出現回数ｘｔｒａｉｎ＿｛τｔｒａｉｎ，ｉ｝（τｔｒａｉｎ：出現回数の計算対象となる単位時間）を計算する。前処理部１３は、ＩＤの総数Ｍを次元数として各ＩＤの出現回数に応じた特徴量を要素とする数値ベクトルの時系列データを生成する（Ｓ１０４）。例えば、教師データのタイムスタンプが１２：５９：５９までであり、付与されたＩＤの総数が３であった場合、要素を単純に出現回数とすると、時系列データは下記のようなフォーマットを取る。
時間          ＩＤ＿０    ＩＤ＿１    ＩＤ＿２
１２：００    ２          １          ０
１２：０１    １          ２          ３
１２：０２    ０          ３          ３
・・・
１２：５９    ３          ０          １
なお、ここで付与された全ＩＤ（ここでは｛０，１，２｝）については、パラメータ記憶部１２２に記憶される。
【００３３】
続いて、前処理部１３は、各数値ベクトルにおける各メトリックｉ（各ＩＤｉの出現回数）の最大値ｘｍａｘ＿ｉを算出し、算出したｘｍａｘ＿ｉをパラメータ記憶部１２２に記憶する（Ｓ１０５）。すなわち、第１の実施の形態において、各メトリックｉの最大値ｘｍａｘ＿ｉが、正規化パラメータである。
【００３４】
上記の時系列データの場合、これらの数値ベクトルの各メトリックの最大値ｘｍａｘ＿ｉは、｛３，３，３｝である（すなわち、ｘｍａｘ＿１＝３，ｘｍａｘ＿２＝３，ｘｍａｘ＿２＝３である）。
【００３５】
続いて、前処理部１３は、正規化パラメータに基づいて、各数値ベクトルを正規化する（Ｓ１０６）。正規化は、各数値ベクトルのメトリックｉの値が最大値ｘｍａｘ＿ｉによって除されることにより行われる。したがって、正規化された数値ベクトルの時系列データは下記のようなフォーマットを取る。
時間          ＩＤ＿０    ＩＤ＿１    ＩＤ＿２
１２：００    ０．６６    ０．３３    ０
１２：０１    ０．３３    ０．６６    １
１２：０２    ０          １          １
・・・
１２：５９    １          ０          ０．３３
続いて、学習部１４は、当該数値ベクトルについて学習器を利用して学習する（Ｓ１０７）。学習結果は、学習結果記憶部１２４に記憶される。
【００３６】
図５は、第１の実施の形態における検知処理の処理手順の一例を説明するためのフローチャートである。図５の処理手順は、図４のステップＳ１０７が少なくとも１回実行された後であれば、いつ開始されてもよい。すなわち、図５の処理手順は、図４の処理手順と並行して実行される。
【００３７】
ステップＳ２０１において、検知処理制御部１５は、単位時間の経過を待機する。当該単位時間は、図４の説明における単位時間と同じ時間長である。この待機中に、リアルタイムに収集され、受信部１１によって受信された観測データは観測データ記憶部１２３に記憶される。
【００３８】
単位時間が経過すると（Ｓ２０１でＹｅｓ）、検知処理制御部１５は、直近の単位時間分の観測データ群を観測データ記憶部１２３から取得し、当該観測データ群を前処理部１３へ入力する（Ｓ２０２）。
【００３９】
続いて、前処理部１３は、当該観測データ群から目的に応じた特徴量を抽出し、抽出された特徴量を各次元の要素とする多次元数値ベクトルを生成する。例えば、前処理部１３は、観測データの各テキストｌｔｅｓｔ＿ｔ＝｛ｗｔｅｓｔ＿｛ｔ，ｗ｝｝（ｔ＝１，...，Ｔ，ｗ＝１，...，Ｗ＿ｔ，Ｔ：異常検知対象となる全時間，Ｗ＿ｔ：時間ｔにおけるテキスト）に対して、ステップＳ１０３と同様にＩＤを付与することによって数値化する（Ｓ２０３）。また、前処理部１３は、ステップＳ１０４と同様に各ＩＤの出現回数を計算する（Ｓ２０４）。このとき、パラメータ記憶部１２２に記憶されている、教師データに付与された全ＩＤを参照し、教師データに付与されなかったＩＤが観測データで出現した場合、出現回数をカウントせず、観測データを無視する。そのため、ＩＤ＿０、ＩＤ＿１、ＩＤ＿３の３つのＩＤを用いる例では、３次元の数値ベクトルが生成される。
【００４０】
続いて、前処理部１３は、生成された数値ベクトルを、パラメータ記憶部１２２に記憶されている最大値ｘｍａｘ＿ｉに基づいて正規化する（Ｓ２０５）。すなわち、当該数値ベクトルの各メトリックｉが、最大値ｘｍａｘ＿ｉによって除算される。
【００４１】
続いて、検知部１６は、異常判定処理を実行する（Ｓ２０６）。異常判定処理では、正規化された数値ベクトルと、学習結果記憶部１２４に記憶されている最新の学習結果とに基づいて、ネットワークＮ１について異常の有無が判定される。
【００４２】
異常が無いと判定された場合、検知処理制御部１５は、当該数値ベクトルの正規化前の数値ベクトルを、学習データとして学習データ記憶部１２５に記憶してもよい。異常が有ると判定された場合、当該数値ベクトルの正規化前の数値ベクトルは、学習データ記憶部１２５に記憶されない。したがって、学習データ記憶部１２５には、正常時の数値ベクトルのみが記憶される。
【００４３】
図４のステップＳ１０７において、学習部１４は、教師データを用いて学習器を生成する。学習器としては数値ベクトルのメトリック間の相関関係の学習による異常検知を行うオートエンコーダ（非特許文献１）や主成分分析等を用いることができる。主成分分析については、例えば、「Ringberg, Haakon, et al. "Sensitivity of PCA for traffic anomaly detection." ACM SIGMETRICS Performance Evaluation Review 35.1 (2007): 109-120.」に詳しい。本実施の形態では、学習器にオートエンコーダを用いる例について説明する。
【００４４】
図６は、オートエンコーダを説明するための図である。オートエンコーダは、ディープラーニングによる異常検知アルゴリズムである。オートエンコーダは、正常時の入力データがメトリック間で相関関係を持ち、低次元に圧縮可能であることを利用する。異常時には入力データの相関関係が崩れるため、圧縮が正しく行われず入力データと出力データとの差が大きくなる。
【００４５】
図６の（１）に示されるように、学習部１４が生成する学習器（オートエンコーダ）は、出力層（Ｌａｙｅｒ  Ｌ３）が入力層（Ｌａｙｅｒ  Ｌ１）に近くなるように学習を行う。具体的には、学習部１４は、数値ベクトルを２つに複製し、一方を入力層へ当てはめ、他方を出力層に当てはめて学習を行い、学習結果を出力する。学習結果は、学習結果記憶部１２４に記憶される。学習結果は、学習器に対するパラメータ群である。なお、学習器は、データ種別ごとに生成されるため、学習結果もデータ種別ごとに出力され、学習結果記憶部１２４に記憶される。
【００４６】
一方、検知部１６も、学習部１４と同様に学習器を生成する。当該学習器には、学習部１４によって生成される学習器と同様にオートエンコーダ又は主成分分析等のうち、学習部１４が生成する学習器に対応する方法を用いることができる。
【００４７】
図５のステップＳ２０６において、検知部１６は、学習結果記憶部１２４に記憶されている学習結果に基づいて、学習器を生成する。すなわち、検知部１６によって生成される学習器は、当該学習結果の出力時において学習部１４によって生成された学習器と同じである。検知部１６は、学習器に対する入力データと出力データとの距離（メトリック間の相関関係の崩れの程度を示す指標）を異常度として計算する。本実施の形態ではオートエンコーダの入力層と出力層との距離である平均二乗誤差（ＭＳＥ：Mean Squared Error）が異常度として計算される。ＭＳＥの計算式は、以下の通りである。
【００４８】
【数１】
2018142694.tif 000003
本実施の形態では、メッセージの出現回数のＭＳＥが得られる。検知部１６は、得られたＭＳＥの平均を、最終的な異常度として計算し、最終的な異常度が予め定められた閾値を超えていた場合に異常であると判定する。そうでない場合、検知部１６は、正常とであると判定する。
【００４９】
上述したように、第１の実施の形態によれば、非数値のテキストデータから異常検知を行うための特徴量が生成される。したがって、非数値のテキストデータが教師データ及び観測データに含まれる場合であっても、異常検知を行うことができる。
【００５０】
次に、第２の実施の形態について説明する。第２の実施の形態では第１の実施の形態と異なる点について説明する。第２の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００５１】
第２の実施の形態では、図４のステップＳ１０４において、ＩＤの総数Ｍを次元数とするのではなく、ＩＤの総数Ｍに所定数のＩＤの個数Ｋを追加した数Ｍ＋Ｋを次元数とする。教師データにおいてはＭ＋１〜Ｍ＋Ｋ番目の要素を全て０とする。例えば、Ｋ＝１の場合、第１の実施の形態における時系列データの例では、下記のように「ＩＤ＿＊」の次元を加え、その要素は全て０とする。
時間          ＩＤ＿０    ＩＤ＿１    ＩＤ＿２    ＩＤ＿＊
１２：００    ２          １          ０          ０
１２：０１    １          ２          ３          ０
１２：０２    ０          ３          ３          ０
・・・
１２：５９    ３          ０          １          ０
また、図５のステップＳ２０４において、教師データに付与されなかったＩＤが観測データで出現した場合、「ＩＤ＿＊」の要素で表現を行う。表現方法としては、教師データには付与されなかったＩＤの出現回数を要素とする方法や、教師データには付与されなかったＩＤが存在した場合に１とし、そうでない場合に０とする方法が考えられる。後者の例は、教師データに付与されなかったＩＤの出現回数が１以上である場合に１とし、そうでない場合に０とすると表現されてもよい。また、Ｋ＞１の場合、複数の未知のＩＤが出現した場合に、それらをＫ種類に分類して、Ｍ＋１〜Ｍ＋Ｋの次元でそれぞれ表現する場合が考えられる。例えば、ｎ番目に出現した未知のＩＤについては，Ｍ＋ｍｏｄ（ｎ，Ｋ）番目の次元で表現するとした場合、１番目に出現した未知のＩＤについてはＭ＋１番目の次元で表現し、２番目に出現した未知のＩＤについてはＭ＋２番目の次元で表現し、・・・、Ｋ番目に出現した未知のＩＤについてはＭ＋Ｋ番目の次元で表現し、Ｋ＋１番目に出現した未知のＩＤについてはＭ＋１番目の次元で表現し、・・・といったように振り分けられる。
【００５２】
第２の実施の形態によっても、第１の実施の形態と同様の効果を得ることができる。また、教師データに出現しなかったＩＤが観測データで出現しても、Ｍ＋１〜Ｍ＋Ｋの次元で表現できるため、未知のログに関しても、異常検知を行うことができる。
【００５３】
次に、第３の実施の形態について説明する。第３の実施の形態では第１の実施の形態と異なる点について説明する。第３の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００５４】
第３の実施の形態では、図４のステップＳ１０３において、テキストにＩＤを付与するのではなく、テキスト内の単語にＩＤを付与する。ここでは単語とＩＤの対応関係を表す辞書を用いるが、辞書は予め辞書データ記憶部１２６に保存しておくか、教師データに基づいて生成する方法が考えられる。教師データに基づいて生成する場合、テキスト内での出現順にＩＤを付与すると仮定すると、第１の実施の形態における教師データの例では、｛０：Ｉ，  １：ｈａｖｅ，  ２：ａ，  ３：ｐｅｎ，  ４：ａｎ，  ５：ａｐｐｌｅ，・・・｝のように辞書が生成される。前処理部１３は、下記のように「タイムスタンプ」「出現ＩＤ」の属性を持ったフォーマットを取る教師データを生成する。
タイムスタンプ      出現ＩＤ
１２：００：００    ｛０，１，２，３｝
１２：００：０３    ｛０，１，４，５｝
・・・
ここで付与された全ＩＤ（ここでは｛０，１，２，３，４，５｝）については、パラメータ記憶部１２２に記憶される。
【００５５】
図４のステップＳ１０４において、前処理部１３は、上記のような教師データに基づいて、ＩＤの総数Ｎを次元数として各ＩＤの出現回数に応じた特徴量を要素とする数値ベクトルの時系列データを生成する。数値ベクトル化の方法としては、付与されたＩＤの総数Ｎを次元とし、対応するＩＤが出現した場合に１とし、そうでない場合に０とするような方法が考えられる。すなわち、ＩＤの出現回数が１以上である場合に１とし、そうでない場合に０とする。
【００５６】
例えば、上記の例において、付与されたＩＤの総数が６である場合、下記のように「タイムスタンプ」「数値ベクトル」を要素とするデータが生成される。
タイムスタンプ      数値ベクトル
１２：００：００    ｛１，１，１，１，０，０｝
１２：００：０３    ｛１，１，０，０，１，１｝
・・・
また、出現回数を要素の値とする方法も考えられる。例えば、テキスト内に「ｐｅｎ」が２回出現する場合、その単語の数値ベクトルを２とする。前処理部１３は、上記のデータに基づいて、単位時間毎の数値ベクトルの時系列データを生成する。タイムスタンプ毎の数値ベクトルを単位時間あたりの数値ベクトルへと集約する方法としては、例えば重心を取る方法等が考えられる。上記の例で、１２：００：００〜１２：００：５９までに出現したテキストが上記の２件だけである場合、重心を取ることで下記のような時系列データが生成される。
時間          数値ベクトル
１２：００    ｛１，１，０．５，０．５，０．５，０．５｝
図５のステップＳ２０３においても同様に、観測データのテキスト内の単語にＩＤを付与する。図５のステップＳ２０４において、パラメータ記憶部１２２に記憶されている、教師データに付与された全ＩＤを参照し、教師データに付与されなかったＩＤが観測データの単語で出現した場合、出現回数をカウントせず、その単語を無視する。そのため、ＩＤ＿０〜ＩＤ＿５の６個のＩＤを用いる例では、６次元の数値ベクトルが生成される。
【００５７】
第３の実施の形態によっても、第１の実施の形態と同様の効果を得ることができる。
【００５８】
次に、第４の実施の形態について説明する。第４の実施の形態では第３の実施の形態と異なる点について説明する。第４の実施の形態において特に言及されない点については、第３の実施の形態と同様でもよい。
【００５９】
第４の実施の形態では、図４のステップＳ１０４において、ＩＤの総数Ｎを次元数とするのではなく、ＩＤの総数Ｎに所定数のＩＤの個数Ｋを追加した数Ｎ＋Ｋを次元数とする。教師データにおいてはＮ＋１〜Ｎ＋Ｋ番目の要素を全て０とする。例えば、Ｋ＝１の場合、第３の実施の形態における時系列データの例では、下記のようにＮ＋１番目の要素を０とする。
時間          数値ベクトル
１２：００    ｛１，１，０．５，０．５，０．５，０．５，０｝
また、図５のステップＳ２０４において、教師データに付与されなかったＩＤが観測データの単語で出現した場合、Ｎ＋１〜Ｎ＋Ｋ番目の要素で表現を行う。表現方法としては、教師データには付与されなかったＩＤの出現回数を要素とする方法や、教師データには付与されなかったＩＤが存在した場合に１とし、そうでない場合に０とする方法が考えられる。後者の例は、教師データに付与されなかったＩＤの出現回数が１以上である場合に１とし、そうでない場合に０とすると表現されてもよい。また、Ｋ＞１の場合、複数の未知のＩＤが出現した場合に、それらをＫ種類に分類して、Ｍ＋１〜Ｍ＋Ｋの次元でそれぞれ表現する場合が考えられる。例えば、ｎ番目に出現した未知のＩＤについては，Ｍ＋ｍｏｄ（ｎ，Ｋ）番目の次元で表現するとした場合、１番目に出現した未知のＩＤについてはＭ＋１番目の次元で表現し、２番目に出現した未知のＩＤについてはＭ＋２番目の次元で表現し、・・・、Ｋ番目に出現した未知のＩＤについてはＭ＋Ｋ番目の次元で表現し、Ｋ＋１番目に出現した未知のＩＤについてはＭ＋１番目の次元で表現し、・・・といったように振り分けられる。
【００６０】
第４の実施の形態によっても、第３の実施の形態と同様の効果を得ることができる。また、教師データに出現しなかったＩＤが観測データで出現しても、Ｎ＋１〜Ｎ＋Ｋの次元で表現できるため、未知の単語が出現するログに関しても、異常検知を行うことができる。
【００６１】
次に、第５の実施の形態について説明する。第５の実施の形態では第３の実施の形態と異なる点について説明する。第５の実施の形態において特に言及されない点については、第３の実施の形態と同様でもよい。
【００６２】
第５の実施の形態では、図４のステップＳ１０３において、テキスト内の単語にＩＤを付与するのではなく、単語の数値ベクトル表現に基づいてテキストを数値ベクトル化する。単語への数値ベクトルの付与の方法としては、ｗｏｒｄ２ｖｅｃを用いた方法等が考えられる（非特許文献４参照）。例えば、｛ｃａｔ｛０．３，０．２，０．５｝，ｄｏｇ｛０．１，０．４，０．２｝，・・・｝等の単語に対して次元Ｎのベクトルを付与した辞書を用いるが、辞書は予め辞書データ記憶部１２６に保存しておくか、教師データに基づいて生成する方法が考えられる。前処理部１３は、予め用意された複数の単語の数値ベクトル表現に基づいてテキストの数値ベクトル化する。その結果、「タイムスタンプ」「数値ベクトル」を要素とするデータが生成される。
【００６３】
図４のステップＳ１０４において、前処理部１３は、各単語に対応するベクトルを合成して数値ベクトルの時系列データを生成する。各単語に対応するベクトルの合成の方法としては、単純にベクトルの和をとる方法、重み付けの和を取る方法、要素の積を取る方法等、様々な手法が考えられる（非特許文献５参照）。
【００６４】
図５のステップＳ２０３においても同様に、観測データのテキストを数値ベクトル化する。図５のステップＳ２０４において、辞書に存在しない単語が観測データで出現した場合、その単語を無視する。
【００６５】
第５の実施の形態によっても、第３の実施の形態と同様の効果を得ることができる。
【００６６】
なお、上記各実施の形態は、ネットワーク以外から収集されるデータに関して適用されてもよい。例えば、コンピュータシステムから収集されるデータに関して上記各実施の形態が適用されてもよい。
【００６７】
なお、上記各実施の形態において、異常検知装置１０は、特徴量生成装置の一例である。前処理部１３は、生成部の一例である。
【００６８】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００６９】
本国際出願は２０１７年２月２日に出願した日本国特許出願２０１７−０１７９２１号に基づく優先権を主張するものであり、２０１７−０１７９２１号の全内容を本国際出願に援用する。
【符号の説明】
【００７０】
１０          異常検知装置
１１          受信部
１２          学習処理制御部
１３          前処理部
１４          学習部
１５          検知処理制御部
１６          検知部
２０          測定装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１２１        教師データ記憶部
１２２        パラメータ記憶部
１２３        観測データ記憶部
１２４        学習結果記憶部
１２５        学習データ記憶部
Ｂ            バス
Ｎ１          ネットワーク
【図１】
2018142694.tif 000004
【図２】
2018142694.tif 000005
【図３】
2018142694.tif 000006
【図４】
2018142694.tif 000007
【図５】
2018142694.tif 000008
【図６】
2018142694.tif 000009
【国際調査報告】
2018142694.tif 000010
2018142694.tif 000011