(57)【要約】本発明にかかる異常検知装置（１）は、二分木構造作成部（１１）、スコア算出部（１３）、及び学習部（１４）を備える。二分木構造作成部（１１）は、複数のデータを用いて二分木構造を作成する。スコア算出部（１３）は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する。学習部（１４）は、二分木構造の各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する。
2020170420.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを用いて二分木構造を作成する二分木構造作成部と、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出するスコア算出部と、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する学習部と、を備える、
異常検知装置。
【請求項２】
前記各々のノードのノード特徴に対するノード評価値は、前記各々のノードのノード特徴における重みであり、
前記スコア算出部は、前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードのノード特徴における重みを用いてスコアを算出し、
前記学習部は、前記各々のノードのノード特徴における重みを計算するためのノード評価モデルを学習する、
請求項１に記載の異常検知装置。
【請求項３】
前記ノード特徴は、前記各々のノードに属するデータの統計情報を用いて生成される、請求項１または２に記載の異常検知装置。
【請求項４】
前記ノード特徴は、前記各々のノードに属するデータの最小値と最大値とを用いて生成される、請求項３に記載の異常検知装置。
【請求項５】
前記ノード特徴は、対象ノードに到達する直前の分岐におけるパラメータを用いて生成される、請求項１または２に記載の異常検知装置。
【請求項６】
前記ノード特徴は、前記対象ノードに到達する直前の分岐における特徴、閾値、及び分岐方向を用いて生成される、請求項５に記載の異常検知装置。
【請求項７】
前記学習部は、外れ値と判断されたデータのスコアを正常値の可能性が高いスコアから離すように前記ノード評価モデルを学習する、請求項１〜６のいずれか一項に記載の異常検知装置。
【請求項８】
前記学習部は、正常値と判断されたデータのスコアを外れ値の可能性が高いスコアから離すように前記ノード評価モデルを学習する、請求項１〜７のいずれか一項に記載の異常検知装置。
【請求項９】
前記学習部は、異常ラベルが付与されたデータと上位スコアのデータとのスコア差に関するヒンジ損失および正常ラベルが付与されたデータと下位スコアのデータとのスコア差に関するヒンジ損失の少なくとも一方を含む損失関数を最小化することで、前記ノード評価モデルを学習する、請求項１〜８のいずれか一項に記載の異常検知装置。
【請求項１０】
前記損失関数は、前回のスコアからの変動を抑制する項を有する、請求項９に記載の異常検知装置。
【請求項１１】
複数のデータを用いて二分木構造を作成し、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出し、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する、
異常検知方法。
【請求項１２】
複数のデータを用いて二分木構造を作成する処理と、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する処理と、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する処理と、をコンピュータに実行させるためのプログラムが格納された非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は異常検知装置、異常検知方法、及びコンピュータ可読媒体に関し、特に二分木構造を用いてデータの異常を検知することが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
近年の情報化社会の発達により、サイバーセキュリティの重要性が高まってきている。例えば、サイバーセキュリティの分野では、データの異常を検知するために、通常とは異なるデータ（異常値や外れ値）を発見することが重要である。このような外れ値を検知するためのアルゴリズムの一つとして、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔが用いられている。【０００３】
特許文献１には、木構造の分類モデルを用いた判定について、判定結果を評価するための情報を提供することが可能な分類装置が開示されている。特許文献２には、時系列データを複数のクラスに識別するのに適したモデルの学習を行うことが可能な学習装置に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−０４５５１６号公報
【特許文献２】特開２０１６−２００９７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムは、複数のデータを用いて二分木構造（分離木構造）を作成し、この二分木構造を用いて複数のデータを分割していくアルゴリズムである。Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、根ノードから葉ノードに到達するまでのパス長をスコアとしており、このスコアが小さいほど（深さが浅いほど）、外れ値（異常データ）である可能性が高いと判断している。【０００６】
Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムは、データの分布に偏りがあると期待した結果が得られない場合がある。すなわち、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、分割するデータの特徴（パラメータ）と閾値とをランダムに決定して二分木構造を作成している。このため、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータの場合は、少数派のデータ群に含まれるデータを外れ値と判断する傾向があり、この結果、期待した通りにデータの異常を検知することができない場合がある。【０００７】
しかしながら、ユーザによっては、このような少数派のデータ群に含まれるデータを正常値として扱いたい場合がある。したがって、ユーザの意図を反映させることが可能な異常検知装置が必要とされている。【０００８】
上記課題に鑑み本発明の目的は、ユーザの意図を反映させることが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一態様にかかる異常検知装置は、複数のデータを用いて二分木構造を作成する二分木構造作成部と、前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出するスコア算出部と、前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する学習部と、を備える。【００１０】
本発明の一態様にかかる異常検知方法は、複数のデータを用いて二分木構造を作成し、前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出し、前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する。【００１１】
本発明の一態様にかかるコンピュータ可読媒体は、複数のデータを用いて二分木構造を作成する処理と、前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する処理と、前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する処理と、をコンピュータに実行させるためのプログラムが格納された非一時的なコンピュータ可読媒体である。
【発明の効果】
【００１２】
本発明により、ユーザの意図を反映させることが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態にかかる異常検知装置を説明するためのブロック図である。
【図２】実施の形態にかかる異常検知装置の具体的な構成を説明するためのブロック図である。
【図３】実施の形態にかかる異常検知装置の動作を説明するためのフローチャートである。
【図４】プロキシログデータの一例を示す表である。
【図５】プロキシログデータを特徴データに変換した一例を示す表である。
【図６】二分木構造の一例を示す図である。
【図７Ａ】ノード特徴の一例を説明するための図である。
【図７Ｂ】ノード特徴の一例を説明するための図である。
【図８】ノード特徴の他の例を説明するための図である。
【図９】機械学習の一例を説明するための図である。
【図１０】ノード評価モデルを学習する際の動作を説明するための図である。
【図１１】データの分布に偏りがある場合を示す図である。
【図１２】実施の形態にかかる異常検知装置の動作を説明するためのフローチャートである。
【図１３】本発明にかかる異常検知処理用プログラムを実行するためのコンピュータを示すブロック図である。
【発明を実施するための形態】
【００１４】
まず、本発明の骨子について説明する。図１は、実施の形態にかかる異常検知装置を説明するためのブロック図であり、本発明の骨子を説明するための図である。本実施の形態にかかる異常検知装置１は、二分木構造作成部１１、スコア算出部１３、及び学習部１４を備える。二分木構造作成部１１は、入力された複数のデータを用いて二分木構造を作成する。スコア算出部１３は、二分木構造作成部１１で作成された二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する。学習部１４は、二分木構造の各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する。
【００１５】
本実施の形態にかかる異常検知装置１では、各々のノードの評価値を計算するノード評価モデルを学習部１４において学習している。そして、この学習結果を用いて各々のノードのノード評価値を決定している。したがって、ユーザの意図を反映させることが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体を提供することができる。以下、本発明の実施の形態について詳細に説明する。
【００１６】
図２は、本実施の形態にかかる異常検知装置の具体的な構成を説明するためのブロック図である。図２に示すように、本実施の形態にかかる異常検知装置１は、二分木構造作成部１１、ノード特徴抽出部１２、スコア算出部１３、及び学習部１４を備える。また、異常検知装置１は、データセット格納部２１、二分木構造格納部２２、及びノード評価モデル格納部２３を備える。
【００１７】
二分木構造作成部１１は、複数のデータ（全データまたはサンプリングしたデータ）を用いて二分木構造を作成する。二分木構造作成部１１は、入力されたデータに対して、分割の次元（パラメータ）および閾値をランダムに選択して二分木構造を作成する。このとき作成した二分木構造の葉ノードの数が指定した要素数になるまで、または、葉ノードの深さが所定の深さ（例えば、指定した最大値）になるまで分割を行う。
【００１８】
ノード特徴抽出部１２は、二分木構造作成部１１で作成された二分木構造の各々のノードのノード特徴を抽出する。ノード特徴の詳細については後述する。
【００１９】
スコア算出部１３は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する。スコア算出部１３で算出されるスコアは、データの正常さの程度を示している。具体的には、スコアが大きいほどデータが正常であると判定される。逆に、スコアが小さいほどデータが異常であると（つまり外れ値であると）判定される。例えば、各々のノードのノード特徴に対するノード評価値は、各々のノードのノード特徴における重みであり、スコア算出部１３は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードのノード特徴における重みを用いてスコアを算出する。
【００２０】
学習部１４は、二分木構造の各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する。換言すると、学習部１４は、各々のノードのノード特徴における重みを計算するためのノード評価モデルを学習する。例えば、学習部１４は、深層学習などの機械学習を用いてノード評価モデルを学習する。
【００２１】
データセット格納部２１には、異常検知の対象となるデータセットが格納されている。各々のデータは多次元ベクトルで表現されるデータｘｉの集合である。また、データセット格納部２１には、各々のデータｘｉに対して、「正常／異常／不明」のいずれかを示すデータラベルが格納されている。
【００２２】
二分木構造格納部２２は、二分木構造作成部１１で作成された二分木構造を格納する。具体的には、二分木構造格納部２２は、二分木構造作成部１１で作成された二分木構造の各々のノードの情報を格納している。例えば、二分木構造格納部２２は、ノード特徴抽出部１２で抽出されたノード特徴を格納する。
【００２３】
二分木構造格納部２２は、例えば、全てのノードのノード特徴を格納する。ここでノード特徴とは、二分木構造中のノードｋに対するノード特徴ｎｋである。また、二分木構造格納部２２は、中間ノードの情報として、「分岐に利用する項目」、「分岐の閾値」、「閾値未満／以上の場合の子ノードの識別子」に関する情報を格納してもよい。
【００２４】
また、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは複数の二分木構造（アンサンブル）を作成することができる。二分木構造格納部２２はこのような複数の二分木構造を管理する。
【００２５】
ノード評価モデル格納部２３は、学習部１４で学習されたノード評価モデル（ノード評価関数）を格納する。例えば、ノード評価モデル格納部２３は、学習モデル（学習モデルのパラメータ）や学習結果の重みなどを格納することができる。
【００２６】
また、本実施の形態にかかる異常検知装置１は、スコア算出部１３で算出されたスコア結果や異常検知結果などを表示する表示部（不図示）を備えていてもよい。また、例えば、表示部に表示された下位のスコアのデータに対して、ユーザが異常／正常の判断結果を入力して、データセットを更新するようにしてもよい。
【００２７】
次に、本実施の形態にかかる異常検知装置の動作（特に学習フェーズにおける動作）について説明する。図３は、本実施の形態にかかる異常検知装置の動作を説明するためのフローチャートであり、異常検知装置の学習フェーズにおける動作を説明するためのフローチャートである。
【００２８】
図３に示すように、異常検知装置１の二分木構造作成部１１（図２参照）は、複数のデータを用いて二分木構造を作成する（ステップＳ１）。つまり、二分木構造作成部１１は、データセット格納部２１に格納されている複数のデータに対して、分割の次元（パラメータ）および閾値をランダムに選択して二分木構造を作成する。作成された二分木構造のデータは、二分木構造格納部２２に格納される。
【００２９】
次に、スコア算出部１３は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアｙ’を算出する（ステップＳ２）。例えば、各々のノードのノード特徴は、ノード特徴抽出部１２を用いて抽出される。また、例えば、ノード評価値とは、各々のノードのノード特徴における重みであり、スコア算出部１３は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードのノード特徴における重みを用いてスコアを算出する。以下、ノード特徴とスコア算出処理について詳細に説明する。
【００３０】
ノード特徴とは、各々のノードの特徴を示す特徴量であり、ノードに属するデータの統計情報を用いて表現したり、直前の分岐情報を用いて表現したりすることができる。また、ノード特徴として、ノードに属するデータの統計情報を用いた表現と直前の分岐情報を用いた表現の両方を用いてもよい。
【００３１】
ノードに属するデータの統計情報を用いて表現する場合は、例えば、各々のノードに属するデータの最小値と最大値とを用いてノード特徴を生成することができる。すなわち、ノードに含まれる全データにおけるそれぞれの特徴に対して、最小値・最大値をノード特徴としてもよい。このとき、データの偏りを学習に反映させるために中央値を含めてもよい。また、最小値・最大値・中央値以外の統計情報を用いてノード特徴を表現してもよい。
【００３２】
統計情報を用いる場合は、データの次元数がＤのとき、Ｄ×２の行列（またはＤ×３の行列）でノード特徴を表現することができる。この場合、ノード特徴は下記の値を用いて表現することができる。
ｎｋ，ｄ，１：ノードｋに含まれるデータにおける第ｄ成分の最小値
ｎｋ，ｄ，２：ノードｋに含まれるデータにおける第ｄ成分の最大値
ｎｋ，ｄ，３：ノードｋに含まれるデータにおける第ｄ成分の中央値（任意に選択可能）
【００３３】
また、直前の分岐情報を用いて表現する場合は、対象ノードに到達する直前の分岐（つまり、直前のノード）におけるパラメータを用いてノード特徴を生成することができる。例えば、対象ノードに到達する直前の分岐における特徴、閾値、及び分岐方向（未満／以上）を用いてノード特徴を生成することができる。
【００３４】
直前の分岐情報を用いて表現する場合は、データの次元数がＤのとき、Ｄ×３の行列でノード特徴を表現することができる。この場合、ノード特徴は下記の値を用いて表現することができる。
ｎｋ，ｄ，１：第ｄ成分で分割されている場合は「１」それ以外は「０」
ｎｋ，ｄ，２：第ｄ成分で分割されている場合は「閾値」、それ以外は「０」
ｎｋ，ｄ，３：第ｄ成分で分割されている場合は「−１／＋１（未満／以上）」、それ以外は「０」
【００３５】
以下、ノード特徴の定義方法について、具体例を用いて説明する。図４は、プロキシログデータの一例を示す表であり、プロキシサーバのアクセスログの一例を示している。図４に示すプロキシログデータには、時刻、ドメイン、メソッド、パス、送信バイト数、受信バイト数、クライアントＩＰに関する情報が含まれている。
【００３６】
図５は、プロキシログデータを特徴データに変換した一例を示す表である。図５に示す表では、ドメイン毎にＰＯＳＴ率（ｆ１）とアクセス回数（ｆ２）を抽出した場合を示している。なお、ＰＯＳＴ率（ｆ１）とは、図４に示す全メソッドに占めるＰＯＳＴの行の割合である。また、アクセス回数（ｆ２）とは、図４に示す表の行の総数である。
【００３７】
なお、図５では、説明を簡単にするために、ＰＯＳＴ率（ｆ１）とアクセス回数（ｆ２）をノード特徴として抽出した場合を示した。しかし、これ以外にもノード特徴として、送信バイト数（最小値、最大値、平均値）、受信バイト数（最小値、最大値、平均値）、アクセスクライアント数などを用いてもよい。
【００３８】
図５に示したデータに対して二分木構造を作成した例を図６に示す。図６では、説明を簡単にするために、図５に示したデータの５０％のデータ（ｄ１、ｄ３、ｄ５、ｄ７、ｄ９、ｄ１１）をサンプリングして二分木構造を作成した場合を示している。また、各々のノードにおける閾値は、ノードに含まれるデータの最小値と最大値の平均値を採用している。図６に示す二分木構造では、実線の矢印（左への分岐）が条件を満たす場合、破線の矢印（右への分岐）が条件を満たさない場合を示している。
【００３９】
図６に示すノード（ｋ＝１）（ｋ＝１はノード識別子である）は、根ノードに対応している。ノード（ｋ＝１）は特徴ｆ１（ＰＯＳＴ率）を用いて分岐している。すなわち、「ｆ１＜０．５」を条件として、この条件を満たす場合はノード（ｋ＝１）に含まれるデータを中間ノード（ｋ＝３）に分岐し、この条件を満たさない場合はノード（ｋ＝１）に含まれるデータを葉ノード（ｋ＝２）に分岐している。
【００４０】
また、全データのうち、ノード（ｋ＝１）に到達するデータの特徴ｆ１の最小値と最大値はそれぞれ０．０と１．０である。図６では、「ｆ１∈［０．０、１．０］と記載している。同様に、全データのうち、ノード（ｋ＝１）に到達するデータの特徴ｆ２の最小値と最大値はそれぞれ２と１４０である。図６では、「ｆ２∈［２、１４０］と記載している。
【００４１】
この場合、ノードに属するデータの統計情報を用いてノード（ｋ＝１）のノード特徴を表現すると、図７Ａに示すような、２×２の行列で表現することができる。図７Ａに示す行列ｎ１において、１行目の［０．０、１．０］は、特徴ｆ１の最小値と最大値に対応し、２行目の［２、１４０］は、特徴ｆ２の最小値と最大値に対応している。
【００４２】
図６に示すノード（ｋ＝２）は、葉ノードに対応している。サンプリングデータのうち、ノード（ｋ＝２）に到達するデータはｄ１１のデータである。また、全データのうち、ノード（ｋ＝２）に到達するデータの特徴ｆ１の最小値と最大値はそれぞれ０．８と１．０である。図６では、「ｆ１∈［０．８、１．０］と記載している。同様に、全データのうち、ノード（ｋ＝２）に到達するデータの特徴ｆ２の最小値と最大値はそれぞれ５と１００である。図６では、「ｆ２∈［５、１００］と記載している。
【００４３】
この場合、ノードに属するデータの統計情報を用いてノード（ｋ＝２）のノード特徴を表現すると、図７Ｂに示すような、２×２の行列で表現することができる。図７Ａに示す行列ｎ２において、１行目の［０．８、１．０］は、特徴ｆ１の最小値と最大値に対応し、２行目の［５、１００］は、特徴ｆ２の最小値と最大値に対応している。
【００４４】
このようにノードに属するデータの統計情報を用いることで、各々のノードのノード特徴ｎ１、ｎ２、・・・を表現することができる。
【００４５】
次に、直前の分岐情報を用いてノード特徴を表現する場合の具体例について、図８を用いて説明する。図８では一例として、図６に示した二分木構造のノード（ｋ＝１〜３）のノード特徴を示している。
【００４６】
図８に示すように、ノード（ｋ＝１）では直前の分岐はないので、ノード特徴ｎ１の行列の全ての要素を、便宜上０としている。
【００４７】
図８に示すように、ノード（ｋ＝２）の直前の分岐はノード（ｋ＝１）であるので、ノード（ｋ＝２）のノード特徴ｎ２は、ノード（ｋ＝１）の情報を用いて生成される。ノード特徴ｎ２のうち１行目の要素が直前の分岐であるノード（ｋ＝１）の特徴ｆ１に対応している。また、ノード特徴ｎ２のうち２行目の要素が直前の分岐であるノード（ｋ＝１）の特徴ｆ２に対応している。
【００４８】
ノード（ｋ＝１）では特徴ｆ１を分岐の条件としているので、ノード特徴ｎ２の要素のうち１行目の要素が［１、０．５、１］となっている。ここで、ノード特徴ｎ２の１列目の要素「１」は、直前の分岐の条件が特徴ｆ１であることを示している。また、ノード特徴ｎ２の２列目の要素「０．５」は、直前の分岐の条件の閾値が「０．５」であることを示している。また、ノード特徴ｎ２の３列目の要素「１」は、ノード（ｋ＝２）への到達が、直前の分岐の条件において、「ｆ１＜０．５」を満たさないことによる到達（つまり、「以上」での到達）を示している。
【００４９】
また、図８に示すように、ノード（ｋ＝３）の直前の分岐はノード（ｋ＝１）であるので、ノード（ｋ＝３）のノード特徴ｎ３は、ノード（ｋ＝１）の情報を用いて生成される。ノード特徴ｎ３のうち１行目の要素が直前の分岐であるノード（ｋ＝１）の特徴ｆ１に対応している。また、ノード特徴ｎ３のうち２行目の要素が直前の分岐であるノード（ｋ＝１）の特徴ｆ２に対応している。
【００５０】
ノード（ｋ＝１）では特徴ｆ１を分岐の条件としているので、ノード特徴ｎ３の要素のうち１行目の要素が［１、０．５、−１］となっている。ここで、ノード特徴ｎ３の１列目の要素「１」は、直前の分岐の条件が特徴ｆ１であることを示している。また、ノード特徴ｎ３の２列目の要素「０．５」は、直前の分岐の条件の閾値が「０．５」であることを示している。また、ノード特徴ｎ３の３列目の要素「−１」は、ノード（ｋ＝３）への到達が、直前の分岐の条件において、「ｆ１＜０．５」を満たしていることによる到達（つまり、「未満」での到達）を示している。
【００５１】
このように直前の分岐情報を用いることで、各々のノードのノード特徴ｎ１、ｎ２、・・・を表現することができる。
【００５２】
次に、図３に示すステップＳ２においてスコアを算出する際の動作について詳細に説明する。スコア算出部１３は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する。具体的には、ノード特徴ｎに対するノード評価値ｖ（ｎ）を用いて、データｘのスコアを算出する。つまり、下記の式を用いて、スコアｙｉを算出する。
【００５３】
【数１】
2020170420.tif 000003
【００５４】
上記式において、ｘｉはｉ番目のデータの特徴ベクトルである。ｙｉは、ｉ番目のデータのスコアである。Ｉｋ（ｘｉ）は、ｘがノードｋに属する場合には「１」、属さない場合には「０」となる値である。ｖ（ｎｋ）は、ノードｋの評価値（重み）である。ｎｋは、ノードｋの特徴ベクトルである。
【００５５】
つまり、スコア算出部１３は、根ノードから葉ノードに到達するまでに通過する各々のノードのノード評価値ｖ（ｎ）（重み）を加算することで、データｘのスコアを算出することができる。
【００５６】
次に、図３に示すように、学習部１４は、学習データをサンプリングする（ステップＳ３）。その後、学習部１４は、ステップＳ３でサンプリングしたデータを用いて、ノード評価モデルを学習する（ステップＳ４）。その後、スコア算出部１３は、学習後のノード評価モデル（つまり、ノード評価ｖ（ｎ））を用いて、スコアｙを算出する（ステップＳ５）。そして、スコアｙ’の値をｙに更新して、ステップＳ３〜Ｓ６の処理を繰り返す。このステップＳ３〜Ｓ６の処理は学習処理に対応している。以下、本実施の形態にかかる異常検知装置の学習処理について詳細に説明する。
【００５７】
本実施の形態にかかる異常検知装置では、学習部１４は、外れ値と判断されたデータのスコアを正常値の可能性が高いスコアから離すようにノード評価モデルを学習する。また、学習部１４は、正常値と判断されたデータのスコアを外れ値の可能性が高いスコアから離すようにノード評価モデルを学習する。
【００５８】
図９は、機械学習の一例を説明するための図であり、重み関数の構成例を示している。図９では、ノードｋのノード特徴ｎｋを入力層とし、重みｖｋを出力層とするニューラルネットワークを利用している。出力層ｖｋには値が非負になる活性化関数（シグモイド関数、ＲｅＬＵなど）を利用する。そして、各層ＷＩ、ＷＨ、ＷＯの重みを調整することで、関数ｖｋ＝ｖ（ｎｋ）を学習する。関数ｖ（ｎｋ）の学習にＤＮＮ（Deep Neural Network）を用いてもよい。
【００５９】
このとき、本実施の形態では、異常ラベルが付与されたデータと上位スコアのデータとのスコア差に関するヒンジ損失および正常ラベルが付与されたデータと下位スコアのデータとのスコア差に関するヒンジ損失の少なくとも一方を含む損失関数を用いて、ノード評価モデルを学習してもよい。つまり、このような損失関数が最小化するように学習することで、ノード評価モデルを学習することができる。また、損失関数には、前回のスコアからの変動を抑制する項が含まれていてもよい。
【００６０】
具体的には、下記の式で表される損失Ｌを最小化するノード評価値ｖ（ｎ）を学習する。
【００６１】
【数２】
2020170420.tif 000004
【００６２】
上記式において、ＰＮは正常学習データであり、正常と判断されたデータｊと下位スコアのデータｉの組（ｉ，ｊ）を要素とする集合である。ＰＡは異常学習データであり、異常と判断されたデータｉと上位スコアのデータｊの組（ｉ，ｊ）を要素とする集合である。λＮ、λＣは調整用パラメータである。ρＡ、ρＮは、外れ値と正常値のスコアに関するマージンである。ｙｉ’は前回のスコアの値である（なお、初回は、全てのノード評価値が等しいものとして算出したスコアを利用する。）
【００６３】
上記の損失Ｌを示す損失関数において、第１項は、「異常ラベルが付与されたデータと上位スコアのデータとのスコア差に関するヒンジ損失」に対応している。また、第２項は、「正常ラベルが付与されたデータと下位スコアのデータとのスコア差に関するヒンジ損失」に対応している。また、第３項は、「前回のスコアからの変動を抑制する項」に対応している。本実施の形態では、上記損失関数において損失Ｌを最小化するノード評価値ｖ（ｎ）を学習する。
【００６４】
また本実施の形態では、ステップＳ３において学習データをサンプリングする際に、次のようにしている。すなわち、正常学習データＰＮは、正常と判断されたデータｊに対してスコアが下位のデータからサンプリングした１以上のデータｉの組（ｉ、ｊ）を要素として作成する。また、異常学習データＰＡは、異常と判断されたデータｉに対してスコアが上位のデータからサンプリングした１以上のデータｊの組（ｉ、ｊ）を要素として作成する。図１０を用いて具体的に説明すると、データ３１とデータ４１がそれぞれ正常と異常と判断されているときに、正常と判断されたデータｊ（３１）に対して、下位のスコアのデータの中からｉ（３２）をサンプリングいている。また、異常と判断されたデータｉ（４１）に対して、上位のスコアのデータの中からｊ（４２）をサンプリングいている。
【００６５】
そして本実施の形態では、このようにしてサンプリングしたデータに対して学習処理を施すことで、ノード評価値ｖ（ｎ）を学習している。すなわち、このようにしてサンプリングしたデータに対して、上記損失関数の損失Ｌが最小化するようなノード評価値ｖ（ｎ）を学習している。
【００６６】
図１０を用いて具体的に説明すると、正常と判断されたデータｊ（３１）に関しては、スコアが高くなるように（右方向にシフトするように）している。また、外れ値である可能性が高いデータｉ（３２）に関しては、スコアが低くなるように（左方向にシフトするように）している。ここで、ρＮは、サンプリングしたスコアが下位のデータと正常値とのスコアに関するマージンであり、スコアが下位のデータと正常値との間で維持すべき（つまり、最低限離したい）スコア差に対応している。
【００６７】
また、異常と判断されたデータｉ（４１）に関しては、スコアが低くなるように（左方向にシフトするように）している。また、外れ値でない可能性が高いデータｊ（４２）に関しては、スコアが高くなるように（右方向にシフトするように）している。ここで、ρＡは、外れ値とスコアが上位のデータとのスコアに関するマージンであり、外れ値とスコアが上位のデータとの間で(最低限)維持すべきスコア差に対応している。
【００６８】
学習部１４は、このような学習処理を繰り返すことで、異常検知処理においてユーザの意図を反映させることができる。学習部１４において学習されたノード評価モデルは、ノード評価モデル格納部２３に格納される。
【００６９】
上述のように、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムは、複数のデータを用いて二分木構造（分離木構造）を作成し、この二分木構造を用いて複数のデータを分割していくアルゴリズムである。Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、根ノードから葉ノードに到達するまでのパス長をスコアとしており、このスコアが小さいほど（深さが浅いほど）、外れ値（異常データ）である可能性が高いと判断している。
【００７０】
Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムは、データの分布に偏りがあると期待した結果が得られない場合がある。すなわち、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、分割するデータの特徴（パラメータ）と閾値とをランダムに決定して二分木構造を作成している。このため、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータの場合は、少数派のデータ群に含まれるデータを外れ値と判断する傾向があり、この結果、期待した通りにデータの異常を検知することができない場合がある。
【００７１】
例えば、図１１に示すデータ群は複数のデータ１２１、１２２を備えるが、これらの複数のデータは、多数派のデータ群１１１と少数派のデータ群１１２とを備える偏りのあるデータとなっている。このようなデータ群にＩｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを適用すると、少数派のデータ群１１２に含まれるデータ１２２を外れ値と判断する傾向が高くなる。このため、偏りのあるデータにＩｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを適用した場合は、期待した通りにデータの異常を検知することができない場合がある。
【００７２】
しかしながら、ユーザによっては、このような少数派のデータ群に含まれるデータを正常値として扱いたい場合がある。したがって、ユーザの意図を反映させることが可能な異常検知装置が必要とされている。ここで、ユーザの意図とは、特定のデータ群を正常または異常のどちらとして扱うかに関するユーザの意図であり、データの扱いに関するユーザの方針を反映させた内容である。このようなユーザの意図は、複数のデータを分割（分類）する際に反映される。
【００７３】
本実施の形態にかかる異常検知装置１では、上述のように、学習部１４において、二分木構造の各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習している。学習部１４は、このような学習処理を行うことで、異常検知処理においてユーザの意図を反映させることができる。すなわち、ユーザの意図をフィードバックしながら学習処理を実施することで、異常検知処理においてユーザの意図を反映させることができる。ユーザの意図は、図３のステップＳ３においてサンプリングされる学習データを用いて反映させることができる。具体的には、学習データである正常学習データＰＮ、及び異常学習データＰＡを用いて、ユーザの意図を反映させることができる。
【００７４】
図１１で説明したように、偏りのあるデータにＩｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを適用した場合は、少数派のデータ群１１２に含まれるデータを外れ値と判断する傾向が高くなる。つまり、少数派のデータ群１１２には、浅い分割で到達するため、スコアが低くなる傾向にある。これに対して本実施の形態にかかる発明を適用した場合は、少数派のデータ群１１２に含まれるデータが他のデータよりもスコアが高くなるように学習させることができる。
【００７５】
また、本実施の形態では、二分木構造がスコアの制約になる働きを有するため、過学習になりにくいという特徴がある。つまり、深いノードに属するデータのスコアを大きくすることができる。
【００７６】
また、本実施の形態では、学習部１４において学習されたノード評価モデルは、二分木構造を再構築した際に再利用してもよい。すなわち、データの増加などでデータセットに変化があった場合、必要に応じて二分木構造を再構築するが、このとき、学習済みのノード評価モデルを利用してもよい。
【００７７】
図１２は、本実施の形態にかかる異常検知装置の動作を説明するためのフローチャートであり、二分木構造を再構築する場合の動作を説明するためのフローチャートである。図１２に示すように、二分木構造を再構築する場合、異常検知装置１の二分木構造作成部１１（図２参照）は、再構築用のデータセットを用いて二分木構造を作成する（ステップＳ１１）。
【００７８】
次に、スコア算出部１３は、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する（ステップＳ１２）。このときスコア算出部１３は、学習済みのノード評価モデルを再利用して、スコアを算出する。
【００７９】
その後、学習部１４は、ノード評価モデルをチューニングする（ステップＳ１３）。すなわち、図３に示したステップＳ３〜Ｓ６の学習処理を実施することで、ノード評価モデルを新たなデータセットに応じてチューニングする。このとき、教師データを利用してチューニングを実施してもよい。なお、ステップＳ１３のチューニング処理は不要であれば適宜省略してもよい。
【００８０】
このように、新たなデータセットに対して二分木構造を作成する際に、学習済みのノード評価モデルを再利用することで、演算処理の負荷を軽減することができる。
【００８１】
上述の実施の形態では、説明を簡単にするため１つの二分木構造を利用する構成としたが、本発明はこれに限定されない。すなわち、複数の二分木構造を利用してもよい。その場合、それぞれの二分木構造毎にノード評価モデルを学習するのではなく、全ての二分木構造で1つのノード評価モデルを学習する構成とすることができる。複数の二分木構造を利用する場合においても、データのスコアは上述のスコアｙｉを算出する式を用いて、全ての二分木構造において通過するノード評価値の和として算出できる。
【００８２】
上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、異常検知処理を、プロセッサであるＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。
【００８３】
すなわち、複数のデータを用いて二分木構造を作成する処理と、二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードのノード特徴に対するノード評価値を用いてスコアを算出する処理と、二分木構造の各々のノードの特徴であるノード特徴を用いて各々のノードの評価値を計算するノード評価モデルを学習する処理と、を含む異常検知処理を実行するためのプログラムを、コンピュータに実行させてもよい。
【００８４】
図１３は、本発明にかかる異常検知処理用プログラムを実行するためのコンピュータを示すブロック図である。図１３に示すように、コンピュータ９０は、プロセッサ９１およびメモリ９２を備える。メモリ９２には異常検知処理用のプログラムが格納されている。プロセッサ９１は、メモリ９２から異常検知処理用のプログラムを読み出す。そして、プロセッサ９１において異常検知処理用のプログラムを実行することで、上述した本発明にかかる異常検知処理を実行することができる。
【００８５】
上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００８６】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８７】
（付記１）
複数のデータを用いて二分木構造を作成する二分木構造作成部と、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出するスコア算出部と、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する学習部と、を備える、
異常検知装置。
【００８８】
（付記２）
前記各々のノードのノード特徴に対するノード評価値は、前記各々のノードのノード特徴における重みであり、
前記スコア算出部は、前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードのノード特徴における重みを用いてスコアを算出し、
前記学習部は、前記各々のノードのノード特徴における重みを計算するためのノード評価モデルを学習する、
付記１に記載の異常検知装置。
【００８９】
（付記３）
前記ノード特徴は、前記各々のノードに属するデータの統計情報を用いて生成される、付記１または２に記載の異常検知装置。
【００９０】
（付記４）
前記ノード特徴は、前記各々のノードに属するデータの最小値と最大値とを用いて生成される、付記３に記載の異常検知装置。
【００９１】
（付記５）
前記ノード特徴は、対象ノードに到達する直前の分岐におけるパラメータを用いて生成される、付記１または２に記載の異常検知装置。
【００９２】
（付記６）
前記ノード特徴は、前記対象ノードに到達する直前の分岐における特徴、閾値、及び分岐方向を用いて生成される、付記５に記載の異常検知装置。
【００９３】
（付記７）
前記学習部は、外れ値と判断されたデータのスコアを正常値の可能性が高いスコアから離すように前記ノード評価モデルを学習する、付記１〜６のいずれか一項に記載の異常検知装置。
【００９４】
（付記８）
前記学習部は、正常値と判断されたデータのスコアを外れ値の可能性が高いスコアから離すように前記ノード評価モデルを学習する、付記１〜７のいずれか一項に記載の異常検知装置。
【００９５】
（付記９）
前記学習部は、異常ラベルが付与されたデータと上位スコアのデータとのスコア差に関するヒンジ損失および正常ラベルが付与されたデータと下位スコアのデータとのスコア差に関するヒンジ損失の少なくとも一方を含む損失関数を最小化することで、前記ノード評価モデルを学習する、付記１〜８のいずれか一項に記載の異常検知装置。
【００９６】
（付記１０）
前記損失関数は、前回のスコアからの変動を抑制する項を有する、付記９に記載の異常検知装置。
【００９７】
（付記１１）
複数のデータを用いて二分木構造を作成し、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出し、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する、
異常検知方法。
【００９８】
（付記１２）
複数のデータを用いて二分木構造を作成する処理と、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する処理と、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する処理と、をコンピュータに実行させるためのプログラムが格納された非一時的なコンピュータ可読媒体。
【００９９】
以上、本発明を上記実施の形態に即して説明したが、本発明は上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【０１００】
１  異常検知装置
１１  二分木構造作成部
１２  ノード特徴抽出部
１３  スコア算出部
１４  学習部
２１  データセット格納部
２２  二分木構造格納部
２３  ノード評価モデル格納部
９０  コンピュータ
９１  プロセッサ
９２  メモリ
【図１】
2020170420.tif 000005
【図２】
2020170420.tif 000006
【図３】
2020170420.tif 000007
【図４】
2020170420.tif 000008
【図５】
2020170420.tif 000009
【図６】
2020170420.tif 000010
【図７Ａ】
2020170420.tif 000011
【図７Ｂ】
2020170420.tif 000012
【図８】
2020170420.tif 000013
【図９】
2020170420.tif 000014
【図１０】
2020170420.tif 000015
【図１１】
2020170420.tif 000016
【図１２】
2020170420.tif 000017
【図１３】
2020170420.tif 000018
【手続補正書】
【提出日】令和3年8月6日(2021.8.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータを用いて二分木構造を作成する二分木構造作成部と、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出するスコア算出部と、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する学習部と、を備える、
異常検知装置。
【請求項２】
前記各々のノードのノード特徴に対するノード評価値は、前記各々のノードのノード特徴における重みであり、
前記スコア算出部は、前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードのノード特徴における重みを用いてスコアを算出し、
前記学習部は、前記各々のノードのノード特徴における重みを計算するためのノード評価モデルを学習する、
請求項１に記載の異常検知装置。
【請求項３】
前記ノード特徴は、前記各々のノードに属するデータの統計情報を用いて生成される、請求項１または２に記載の異常検知装置。
【請求項４】
前記ノード特徴は、前記各々のノードに属するデータの最小値と最大値とを用いて生成される、請求項３に記載の異常検知装置。
【請求項５】
前記ノード特徴は、対象ノードに到達する直前の分岐におけるパラメータを用いて生成される、請求項１または２に記載の異常検知装置。
【請求項６】
前記ノード特徴は、前記対象ノードに到達する直前の分岐における特徴、閾値、及び分岐方向を用いて生成される、請求項５に記載の異常検知装置。
【請求項７】
前記学習部は、外れ値と判断されたデータのスコアを正常値の可能性が高いスコアから離すように前記ノード評価モデルを学習する、請求項１〜６のいずれか一項に記載の異常検知装置。
【請求項８】
前記学習部は、正常値と判断されたデータのスコアを外れ値の可能性が高いスコアから離すように前記ノード評価モデルを学習する、請求項１〜７のいずれか一項に記載の異常検知装置。
【請求項９】
前記学習部は、異常ラベルが付与されたデータと上位スコアのデータとのスコア差に関するヒンジ損失および正常ラベルが付与されたデータと下位スコアのデータとのスコア差に関するヒンジ損失の少なくとも一方を含む損失関数を最小化することで、前記ノード評価モデルを学習する、請求項１〜８のいずれか一項に記載の異常検知装置。
【請求項１０】
前記損失関数は、前回のスコアからの変動を抑制する項を有する、請求項９に記載の異常検知装置。
【請求項１１】
複数のデータを用いて二分木構造を作成し、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出し、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する、
異常検知方法。
【請求項１２】
複数のデータを用いて二分木構造を作成する処理と、
前記二分木構造の根ノードから葉ノードに到達するまでに通過する各々のノードの特徴であるノード特徴に対するノード評価値を用いてスコアを算出する処理と、
前記二分木構造の前記各々のノードのノード特徴に対するノード評価値を計算するノード評価モデルを学習する処理と、をコンピュータに実行させるためのプログラム。
【国際調査報告】
2020170420.tif 000019
2020170420.tif 000020
2020170420.tif 000021
2020170420.tif 000022