(57)【特許請求の範囲】
【請求項１】
監視対象としての監視対象システムから監視データを取得する監視データ取得部と、
前記取得した監視データを前記監視対象システムの挙動に応じて分割する監視データ分割部と、
前記分割した監視データから特徴を抽出する特徴抽出部と、
前記抽出した特徴と、処理実行時に稼働中の監視対象システムの監視データの特徴と比較し、前記分割した監視データのうちの、該処理実行時に稼働中の監視対象システムの監視データと特徴が近い監視データを学習に用いる学習データとして選択する学習データ選択部と、
前記選択された学習データを用いて予測モデルを生成する予測モデル生成部と、
を備え、
前記監視データ分割部は、
前記監視対象システムにおいて稼働しているアプリケーションプログラムのバージョンに応じて前記監視データを分割する
ことを特徴とする学習データ管理装置。
【請求項２】
前記監視対象システムはＷｅｂアプリケーションであり、
前記予測モデル生成部は、
前記Ｗｅｂアプリケーションの挙動を予測することを特徴とする請求項１に記載の学習データ管理装置。
【請求項３】
前記予測モデル生成部は、
前記学習データとしてアクセス数、遷移率及び購入率を用いることを特徴とする請求項１に記載の学習データ管理装置。
【請求項４】
前記予測モデル生成部は、
前記監視対象システムとして、前記Ｗｅｂアプリケーションが稼働するサーバについて挙動を予測することを特徴とする請求項２に記載の学習データ管理装置。
【請求項５】
前記予測モデル生成部は、
前記学習データとしてプロセッサ使用率、キャッシュ使用率及びキャッシュサイズを用いることを特徴とする請求項１に記載の学習データ管理装置。
【請求項６】
前記予測モデル生成部によって生成された予測モデルを用いて前記監視対象システムの挙動を予測する挙動予測部を備えることを特徴とする請求項１に記載の学習データ管理装置。
【請求項７】
学習データを用いて予測モデルを生成する学習データ管理装置における学習データ管理方法であって、
前記学習データ管理装置が、監視対象としての監視対象システムから監視データを取得する監視データ取得ステップと、
前記学習データ管理装置が、前記取得した監視データを前記監視対象システムの挙動に応じて分割する監視データ分割ステップと、
前記学習データ管理装置が、前記分割した監視データから特徴を抽出する特徴抽出ステップと、
前記学習データ管理装置が、前記抽出した特徴と、処理実行時に稼働中の監視対象システムの監視データの特徴と比較し、前記分割した監視データのうちの、該処理実行時に稼働中の監視対象システムの監視データと特徴が近い監視データを学習に用いる学習データとして選択する学習データ選択ステップと、
前記学習データ管理装置が、前記選択された学習データを用いて予測モデルを生成する予測モデル生成ステップと、
を有し、
前記監視データ分割ステップでは、
前記学習データ管理装置が、前記監視対象システムにおいて稼働しているアプリケーションプログラムのバージョンに応じて前記監視データを分割する
ことを特徴とする学習データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習データ管理装置及び学習データ管理方法に関し、特に、開発者（Ｄｅｖｅｌｏｐｍｅｎｔ）と運用管理者（Ｏｐｅｒａｔｉｏｎｓ）とが連携して協力する開発手法である「ＤｅｖＯｐｓ」において開発されるサービスに対して機械学習が用いられる際における学習データの管理に適用して好適な機能を有する。
【背景技術】
【０００２】
近年、サービスやアプリケーションの開発手法が変化しつつある。従来、サービスやアプリケーションを提供する場合には、要件定義、設計及び開発という長いプロセスを経てからユーザにこれらを提供していた。しかしながら、このような長いプロセスを要すると、ユーザのニーズの変化に迅速に対応できないため、従来から開発サイクルを短くしたいというニーズが存在している。近年では、例えばアジャイル開発、ＤｅｖＯｐｓなどの開発手法が普及している。これにより、アップデートの頻度を高め、１日に複数回に亘ってサービスやアプリケーションをアップデートすることができるようになっている。【０００３】
これらのサービスやアプリケーションを監視対象システムとした場合、従来は、監視対象システムの動作状況を表すメトリクス値のうち、監視対象システムの故障発生期間以外のメトリクス値から正常範囲を示すベースライン情報を生成するという技術が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−０６６１１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した従来技術においては、監視対象システムの故障発生期間とそれ以外の期間とを区別し、ベースライン情報を生成しているが、監視対象システムの挙動、すなわち、メトリクス値の分布が頻繁に変化することは想定されていない。その一方、最近のサービスやアプリケーションにおいては、上述したＤｅｖＯｐｓのような開発手法により頻繁に更新が行われ、監視対象システムの挙動が変化することが考えられる。【０００６】
ベースライン情報等を機械学習で生成していた場合、監視対象システムのアップデートにより内部ロジックが変更されることが考えられる。アップデートにより対象システムの挙動が変化すると、アップデート前のメトリクス値を用いて作成された学習結果と実際の動作との間に差異が生じ、ベースライン情報等の予測精度が低下してしまうおそれがあった。【０００７】
本発明は以上の点を考慮してなされたもので、監視対象システムの今後の挙動について予測精度の高い予測モデルを生成可能な学習データ管理装置及び学習データ管理方法を提案しようとする機能を有する。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため、本発明においては、監視対象としての監視対象システムから監視データを取得する監視データ取得部と、前記取得した監視データを前記監視対象システムの挙動に応じて分割する監視データ分割部と、前記分割した監視データから特徴を抽出する特徴抽出部と、前記抽出した特徴と、処理実行時に稼働中の監視対象システムの監視データの特徴と比較し、両特徴が近いものを学習に用いる学習データとして選択する学習データ選択部と、前記選択された学習データを用いて予測モデルを生成する予測モデル生成部と、を備えることを特徴とする。【０００９】
また、本発明においては、学習データを用いて予測モデルを生成する学習データ管理装置における学習データ管理方法であって、前記学習データ管理装置が、監視対象としての監視対象システムから監視データを取得する監視データ取得ステップと、前記学習データ管理装置が、前記取得した監視データを前記監視対象システムの挙動に応じて分割する監視データ分割ステップと、前記学習データ管理装置が、前記分割した監視データから特徴を抽出する特徴抽出ステップと、前記学習データ管理装置が、前記抽出した特徴と、処理実行時に稼働中の監視対象システムの監視データの特徴と比較し、両特徴が近いものを学習に用いる学習データとして選択する学習データ選択ステップと、前記学習データ管理装置が、前記選択された学習データを用いて予測モデルを生成する予測モデル生成ステップと、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、監視対象システムの今後の挙動について予測精度の高い予測モデルを生成することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態による学習データ管理装置の構成例を示すシステム構成図である。
【図２】図１に示すデプロイサーバの構成例を示すブロック図である。
【図３】図１に示す仮想マシンの構成例をより詳細に示したブロック図である。
【図４】図１に示すサービス監視サーバの構成例をより詳細に示したブロック図である。
【図５】図１に示す管理サーバの構成例をより詳細に示したブロック図である。
【図６】図４に示す監視メトリクス値テーブルの構成例を示すテーブル構成図である。
【図７】図５に示すバージョン別学習データテーブルの構成例を示すテーブル構成図である。
【図８】図５に示すクラスタ重心位置テーブルの構成例を示すテーブル構成図である。
【図９】図５に示す予測モデルテーブルの構成例を示すテーブル構成図である。
【図１０】一般的な予測モデル情報の一例を示す図である。
【図１１】図５に示すプログラム設定テーブルの構成例を示すテーブル校正図である。
【図１２】第１の実施の形態による学習処理の一例を示すフローチャートである。
【図１３】図１２に示す学習用データ保存処理をより詳しく表したフローチャートである。
【図１４】図１２に示す学習データ選択処理をより詳しく表したフローチャートである。
【図１５】クラスタ重心位置計算及びクラスタ重心位置比較の一れを示す図である。
【図１６】図１２に示す予測モデル生成処理の一例を示すフローチャートである。
【図１７】第１の実施の形態による効果の一例を示す図である。
【図１８】第２の実施形態による管理サーバの構成例を示すブロック図である。
【図１９】第２の実施の形態による日時別学習データテーブルの稿整理を示すテーブル構成図である。
【図２０】第２の実施の形態による日時別学習データ保存処理をより詳しく表したフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面について、本発明の一実施の形態について詳述する。
【００１３】
（１）第１の実施の形態
（１−１）概要構成
図１は、第１の実施の形態による学習データ管理装置の構成例を示す。本実施の形態では、監視対象システムとしてＷｅｂアプリケーションの１種であるＥＣサービスを例として挙げているが、これに限るものではない。また、監視対象システムはＷｅｂアプリケーションに限るものではなく、サーバの挙動、例えばストレージ応答性能予測などにも用いることができる。
【００１４】
また、本実施の形態では、監視対象システムの挙動を分割するための要素として、例えば監視対象システムのバージョンを用いるものとする。
【００１５】
図１は、第１の実施の形態による学習データ管理装置としての計算機システムの構成例を示す。本実施の形態に関わる計算機システムは、監視対象システム１００、デプロイサーバ１０１、サービス監視サーバ１０２、管理サーバ１０３、管理端末１０５及び開発端末１０４を備える。これらはそれぞれが持つ通信インターフェースによってネットワーク１０６に接続され、ネットワーク１０６を介して互いに接続される。
【００１６】
本実施の形態では、監視対象システム１００として、例えばＷｅｂアプリケーション、具体的にはＥＣ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｍｍｅｒｃｅ）サービスを例示する。
【００１７】
管理端末１０５は、通信インターフェース１３４、プロセッサ１３３、記憶装置１３５、メモリ１３６を備えて、これらが内部バス１４５によって接続されている。内部バス１４５には、入力装置１３７及び出力装置１３８が接続されている。運用管理者１３９は、この入力装置１３７及び出力装置１３８を介して、ＥＣサービス１００、デプロイサーバ１０１、サービス監視サーバ１０２及び管理サーバ１０３に対する操作を実施する。
【００１８】
開発端末１０４は、通信インターフェース１２９、プロセッサ１３０、記憶装置１３１及びメモリ１３２を備えており、これらが内部バス１４４によって接続されている。内部バス１４４には、入力装置１４７及び出力装置１４８が接続されている。開発者１４０は、開発端末を１０４用いてアプリケーションを開発する。開発されたアプリケーションのソースコードは、ネットワーク１０６を介しデプロイサーバ１０１の記憶装置１１９に保存される。
【００１９】
ＥＣサービス１００は、物理サーバ１１０上で動作する仮想化ソフトウェア１１１によって提供される仮想マシン１１２を備える。物理サーバ１１０は、通信インターフェース１１３、プロセッサ１１４、記憶装置１１５及びメモリ１１６を備える。仮想マシン１１２には、物理マシン１１０のプロセッサ１１４、記憶装置１１５及びメモリ１１６の一部が割り当てられている。仮想マシン１１２に対する操作は、物理サーバ１１０の通信インターフェース１１３を介して実施される。これら通信インターフェース１１３、プロセッサ１１４、記憶装置１１５及びメモリ１１６は、内部バス１４６によって接続されている。
【００２０】
デプロイサーバ１０１は、通信インターフェース１１７、プロセッサ１１８、記憶装置１１９及びメモリ１２０を備える。これら通信インターフェース１１７、プロセッサ１１８、記憶装置１１９及びメモリ１２０は、内部バス１４１によって接続されている。
【００２１】
サービス監視サーバ１０２は、通信インターフェース１２１、プロセッサ１２２、記憶装置１２３及びメモリ１２４を備える。これら通信インターフェース１２１、プロセッサ１２２、記憶装置１２３及びメモリ１２４は、内部バス１４２によって接続されている。
【００２２】
管理サーバ１０３は、通信インターフェース１２５、プロセッサ１２６、記憶装置１２７及びメモリ１２８を備える。これら通信インターフェース１２５、プロセッサ１２６、記憶装置１２７及びメモリ１２８は、内部バス１４３によって接続されている。
【００２３】
図２は、デプロイサーバ１０１の構成例を示すブロック図を示す。デプロイサーバ１０１は、ソースコードレポジトリ２０１に格納されているソースコードをビルドし、仮想マシン１１２で稼働しているアプリケーションプログラム３００を更新する機能を有する。
【００２４】
メモリ１２０には、デプロイプログラム２００が格納されている。記憶装置１１９には、ソースコードリポジトリ２０１が格納されている。ソースコードリポジトリ２０１には、仮想マシン１１２上で提供されるアプリケーションプログラム３００のソースコードが格納されている。このソースコードは、開発者１４０が開発端末１０４を用いて開発されており、ネットワーク１０６を介してソースコードレポジトリ２０１に保存される。
【００２５】
デプロイプログラム２００は、管理端末１０５の入力装置１３７を介してデプロイの指示を受領すると、ソースコードリポジトリ２０１に格納されているソースコードをビルドし、このようなビルドにより生成されたアプリケーションプログラムの実行ファイルを、仮想マシン１１２で稼働しているアプリケーションプログラム３００と入れ替えることによりアプリケーションを更新する。
【００２６】
図３は、ＥＣサービス１００において稼働している仮想マシン１１２の構成図を示す。仮想マシン１１２に割り当てられたメモリ１１６上では、ＥＣサービス１００を提供するアプリケーションプログラム３００が稼働している。
【００２７】
メモリ１１６には、アプリケーションプログラム３００及び監視エージェントプログラム３０１が格納されている。記憶装置１１５には、商品データＤＢ３０３が格納されている。商品データＤＢ（データベース）３０３には、商品の名前、商品の値段、及び商品の在庫数を含む商品情報が格納されている。アプリケーションプログラム３００は、商品データＤＢ３０３に格納されている商品情報を取得し、この商品情報を基にサービスを提供する。
【００２８】
このアプリケーションプログラム３００は、ネットワーク１０６に公開されている。監視エージェントプログラム３０１は、アプリケーションプログラム３００の稼働情報を取得しており、監視により得られた監視メトリクス値を、ネットワーク１０６を介してサービス監視サーバ１０２のサービス管理マネージャプログラム４００（図４）に送信する。
【００２９】
図４は、サービス監視サーバ１０２の構成図を示す。サービス監視サーバ１０２は、仮想マシン１１２で稼働している監視マネージャプログラム３０１から監視結果を受信し保存する。
【００３０】
メモリ１２４にはサービス管理マネージャプログラム４００が格納されている。記憶装置１２３には、監視メトリクス値テーブル４０１が格納されている。サービス監視マネージャプログラム４００は、仮想マシン１１２で稼働している監視エージェントプログラム３００によって取得された監視メトリクス値を受信し、記憶装置１２３内の監視メトリクス値テーブル４０１に格納する。監視メトリクス値テーブル４０１の詳細については後述する。
【００３１】
図５は、管理サーバ１０３の構成図を示す。管理サーバ１０３は、サービス監視サーバ１０２によって取得された監視メトリクス値を学習し、アプリケーションプログラム３００における販売数予測モデルを作成する機能を有する。プロセッサ１２６は、この販売数予測モデルを用いてＥＣサービス１００における販売数の予測を行う。
【００３２】
メモリ１２８には、学習用データ保存プログラム５００、学習用データ選択プログラム５０１、予測モデル生成プログラム５０２及び在庫管理プログラム５０３が格納されている。記憶装置１２７には、バージョン別学習データテーブル５０４、クラスタ重心位置テーブル５０５、予測モデルテーブル５０６及びプログラム設定テーブル５０７が格納されている。
【００３３】
学習用データ保存プログラム５００は、サービス監視サーバ１０２の監視メトリクス値テーブル４０１から値を読み出して処理を実行した後、バージョン別学習データテーブル５０４に格納する。学習用データ選択プログラム５０１は、バージョン別学習データテーブル５０４の学習データを基に、クラスタ重心位置を計算し、クラスタ重心位置テーブル５０５に保存する。学習用データ選択プログラム５０１は、このように保存されたクラスタ重心位置を基に、学習に用いるテーブルを選択する。なお、通常テーブルにはレコードが格納されているが、本実施の形態では、分かり易く説明する都合上、バージョン別学習データテーブル５０４にはレコードに相当するテーブルが存在しているものとして説明する。
【００３４】
予測モデル生成プログラム５０２は、学習用データ選択プログラムで選択されたテーブルの学習データを基に予測モデルを生成し、予測モデルテーブル５０６に予測モデルを保存する。これらの処理の詳細については後述する。
【００３５】
在庫管理プログラム５０３は、予測モデルテーブル５０６から最新の予測モデルを取得し、この取得した予測モデルを販売数予測モデル５０８として保持する。在庫管理プログラム５０３は、販売数予測モデル５０８を基にＥＣサービス１００における販売数を予測する。運用管理者１３９は、この予測情報から発注量を調整する。設定ファイルは、学習用データ保存プログラム５００及び学習用データ選択プログラム５０１で利用される。
【００３６】
図６は、サービス監視サーバ１０２の記憶装置１２３に格納される監視メトリクス値テーブル４０１の一例を示す図である。管理メトリクス値テーブル４０１は、バージョン６０１、日時６０２、アクセス数６０３、ユーザ数６０４、遷移率６０５及び購入率６０６を管理する。なお、このうちアクセス数６０３におけるメトリクス値とは５０００回などの数値を示し、メトリクスとはアクセス数の項目自体を示している。
【００３７】
監視データとは、ある日時における各メトリクスのメトリクス値をまとめたものを指す。仮想マシン１１２で稼働している監視エージェントプログラム３０１によってアプリケーションプログラム３００のメトリクス値は、サービス監視サーバ１０２に送られ、監視マネージャプログラム４００によって保存される。監視メトリクス値テーブル４０１には、バージョン６０１、日時６０２、アクセス数６０３、ユーザ数６０４、遷移率６０５及び購入率６０６が格納される。
【００３８】
バージョン６０１は、仮想マシン１１２で稼働しているアプリケーションプログラム３００のバージョン情報を示す。日時６０２は、監視メトリクス値を取得した日時、アクセス数６０３は単位時間内にＥＣサービス１００にて販売される商品の紹介ページがアクセスされた回数を示す。ユーザ数６０４は、メトリクス値取得時のアプリケーションプログラム３００に登録されているユーザの人数を示す。遷移率６０５は、アクセス数６０３のうち商品の紹介ページから購入ページに遷移した割合を示す。購入率６０６は、アクセス数のうち商品を購入した割合を示す。販売数は、商品が購入された数を示す。
【００３９】
図７は、管理サーバ１０３の記憶装置１２７に格納されるバージョン別学習データテーブル５０４の一例を示す図である。ここでは、バージョン２.０３の学習データ、バージョン２.０４の学習データ、及びバージョン２.０５の学習データが、それぞれ別の学習データテーブル７０１，７０２，７０３に格納されている様子を示している。
【００４０】
学習データとは、学習用データ保存プログラム５００によってバージョン別学習データテーブル５０４に保存されたデータを指す。バージョン別学習データテーブル５０４の中身の値は、学習用データ保存プログラム５００によって正規化されている。このバージョン別学習データテーブル５０４には、監視メトリクス値テーブル４０１のメトリクスの中から学習に使うメトリクスだけ選択し正規化された値が格納される。項目７０５，７０６，７０７には、アクセス数、遷移率、購入率が正規化された値が保存されている。項目７０４は、学習データのＩＤの役割を持つため、正規化されずそのまま保存される。本実施の形態では、ユーザ数６０４は、学習に用いないため、バージョン別学習データテーブル５０４には格納されない。
【００４１】
図８は、管理サーバ１０３の記憶装置１２７に格納されるクラスタ重心位置テーブル５０５の一例を示す図である。クラスタ重心位置テーブル５０５には、バージョン８０１と関係するテーブルにおけるクラスタ重心位置の計算結果８０２が格納されている。クラスタ重心位置とは、学習データテーブル５０４の各バージョンのテーブルの学習データを座標空間にマッピングした座標の平均のことを指す。クラスタ重心位置テーブル５０５は、学習データ選択プログラム５０１の実行時に使用され、更新される。
【００４２】
図９は、管理サーバ１０３の記憶装置１２７に格納される予測モデルテーブル５０６の一例を示す図である。この予測モデルテーブル５０６は、予測モデルを生成した日時９００と、予測モデルを生成する際に使用したバージョン９０１と、それによって生成された予測モデル情報９０２と、が格納されている。
【００４３】
学習に複数のバージョンが使用された場合は、バージョン９０１の［２．０１］、［２．０２］のように各バージョンが羅列される。予測モデル情報には予測モデルそのものの情報が格納されている。例えば、予測モデルが、図１０のようなニューラルネットワークを用いて作成されていた場合、各ノードの重みが予測モデル情報に格納される。予測モデルテーブルは、予測モデル生成プログラム５０２の実行時に更新される。
【００４４】
図１０は、予測モデル生成プログラムによって作成される販売数予測モデル５０８のニューラルネットワークの構成例を示しており、例えば入力層、隠れ層及び出力層に分かれている。本実施の形態では、一例として、入力は、アクセス数、遷移率及び購入率であり、出力は販売数となる。ノード１には１つの入力があり、これに対し「w１_０」という重みがかかっている。
【００４５】
これに対し、ノードNに関しては５つの入力があり、それぞれの入力に対して「wN_０」、「wN_１」、「wN_２」、「wN_３」及び「wN_４」という重みがかかっている。この重みの値は、図９に示す予測モデル情報９０３，９０４に格納されている。
【００４６】
図１１は、管理サーバ１０３の記憶装置１２７に格納されるプログラム設定テーブル１０００の一例を示す図である。このプログラム設定テーブル１０００には、学習データ保存プログラム５００及び学習データ選択プログラム５０１において使用される設定が保存されている。
【００４７】
処理時間実行間隔設定１００１は、管理サーバ１０３にて実行される学習処理Ｓ１１００（図１２）の実行間隔が保存される。学習メトリクス選択設定１００２は、学習データ選択プログラム５０１で学習に用いるメトリクスを選択する際に用いられる。データ数閾値設定１００３は、学習データ選択プログラム５０１において処理を実行するか否かの判断の際に用られる。クラスタ重心位置閾値設定１００４は、学習データ選択プログラム５０１で学習に用いる学習データテーブルを選択する際に用いられる。
【００４８】
プログラム設定テーブル１０００は、学習処理Ｓ１１００が実行される前に運用管理者１３９によって管理端末１０５の入力装置１３７が用いられることにより、ネットワーク１０６を介して設定が保存される。
【００４９】
既述の監視メトリクス値テーブル４０１では、監視対象がＥＣサービス１００になっているため、格納されているメトリクスがアクセス数６０３、ユーザ数６０４、遷移率６０５及び購入率６０６となっている。
【００５０】
なお、本実施の形態は、監視対象システム１００として、ＥＣサービスを例示しているが、これに限られず、例えば、ストレージの応答性能の予測等にも適用することができる。このようにストレージ応答性能の予測を行う場合は、監視メトリクス値テーブル４０１には、プロセッサ使用率、キャッシュ使用率、キャッシュサイズなどが格納されることになる。
【００５１】
（１−２）予測モデルの生成を実施する学習処理
図１２は、予測モデルを生成する学習処理Ｓ１１００の一例を示すフローチャートである。このフローチャートは、管理サーバ１０３によって実行される。
【００５２】
学習用データ保存処理Ｓ１１０１は、学習用データ保存プログラム５００に対応しており、学習用データ選択処理Ｓ１１０２は、学習用データ選択プログラム５０１に対応しており、予測モデル生成処理Ｓ１１０３は、予測モデル生成プログラム５０２に対応している。管理サーバ１０３では、これらのプログラム５００，５０１，５０２が管理サーバ１０３のメモリ１２８に展開されており、各プログラム５００，５０１，５０２に含まれる処理がプロセッサ１２６によって実行される。
【００５３】
学習処理Ｓ１１００は、予め運用管理者１３９が定めた処理実行時間間隔設定５０９を基に一定時間間隔ごとに実行される（ステップＳ１１０５）。図１１に示すプログラム設定テーブル１０００の処理実行時間間隔設定１００１には、処理の実行間隔のみが記述されている。この処理実行時間間隔設定１００１に１時間と記述されていれば、１時間ごとに処理が実行されることを表している。処理Ｓ１１０５では、前回処理を実行した日時が出力され、この前回実行した日時が次の学習用データ保存処理Ｓ１１０１において使用される。
【００５４】
管理サーバ１０３では、プロセッサ１２６が、学習用データ保存処理を実行し（ステップＳ１１０１）、前回実行した日時を基に、前回の処理Ｓ１１００実行時から増加した分のデータを監視メトリクステーブル４０１から読み込み、バージョン別学習データテーブル５０４に保存する。
【００５５】
次にプロセッサ１２６は、学習用データ選択処理を実行し（ステップＳ１１０２）、バージョン別学習データテーブル５０４の中で予測モデル生成に用いる学習データテーブルを選択する。
【００５６】
学習用データ選択処理では、プロセッサ１２６が、学習に用いるバージョン別学習データテーブル５０４の学習データテーブルを出力する（ステップＳ１１０２）、次にプロセッサ１２６は、予測モデル生成処理を実行し（ステップＳ１１０３）、学習用データ選択処理Ｓ１１０２によって渡されたバージョン別学習データテーブル５０４の学習データテーブルを使って新しい予測モデルを生成し、予測モデルテーブル５０６に保存する。
【００５７】
さらにプロセッサ１２６は、予測モデルテーブル５０６から予測モデル生成処理（ステップＳ１１０３）において生成された予測モデルを予測モデルテーブル５０６から取得し、在庫管理プログラム５０３の販売数予測モデル５０７を生成された新しい予測モデルへ更新する（ステップＳ１１０４）。
【００５８】
図１３は、図１２に示す学習用データ保存処理の詳細を示したフローチャートである。管理サーバ１０３では、プロセッサ１２６が、サービス監視サーバ１０２の監視メトリクス値テーブル４０１からネットワーク１０６を介して、前回実行時から増加した分の監視データを取得する（ステップＳ１２０１）。この際、プロセッサ１２６は、増加した分の監視データであるか否かの判断のために、既に説明した前回処理を実行した日時を使用し、前回処理を実行した日時以降の日時を示す監視データを取得する。
【００５９】
次にプロセッサ１２６は、予め運用管理者１３９によって設定された学習メトリクス選択設定１００２を参照し、監視メトリクス値テーブル４０１の監視データから、学習に用いるメトリクスを選択する（ステップＳ１２０２）。学習メトリクス選択設定１００２には学習に使うメトリクスが列挙されており、例えばアクセス数、遷移率及び購入率の３つのメトリクスが列挙されている。
【００６０】
次にプロセッサ１２６は、上述のように選択されたメトリクスのメトリクス値を正規化する（ステップＳ１２０３）。ここでいう正規化とは、各メトリクスのメトリクス値が取り得る最大値と最小値との間においてメトリクス値がどこに位置するかを０から１の間の数値で示すように変換することである。最後に処理Ｓ１２０４は、正規化されたメトリクス値をバージョン別にバージョン別学習データテーブル５０４に保存する。
【００６１】
例えば、監視メトリクス値テーブル５０４から増加した分の監視データとして日時２０１６/１０/１０  １３:００の監視データが上記ステップＳ１２０１において取得されると、プロセッサ１２６は、メトリクスのアクセス数、遷移率及び購入率を選択する（ステップＳ１２０２）。
【００６２】
プロセッサ１２６は、上述のように選択されたメトリクスのメトリクス値を正規化し（ステップＳ１２０３）、この正規化されたメトリクス値をバージョン別学習データテーブル５０４のテーブル７０３に保存する（ステップＳ１２０４）。
【００６３】
図１４は、図１２に示す学習用データ選択処理の詳細を示したフローチャートである。まず、管理サーバ１０３では、プロセッサ１２６が、仮想マシン１１２で稼働しているアプリケーションプログラム３００のバージョンのデータ数が十分存在するか否かについてバージョン別学習データテーブル５０４を参照して確認する（ステップＳ１３０１）。データ数が十分であるか否かの判断は、予め運用管理者１３９が決定しておいたデータ数閾値設定１００３に従うものとする。
【００６４】
データ数閾値設定１００３には、データ数がいくつであれば十分であると判断するかという値のみが格納されている。例えば、予め運用管理者１３９により「３００」と設定されていた場合、バージョン別学習データテーブル５０４のテーブル７０３に３００個以上の学習データがあれば、データ数が十分であると判断される。データ数が十分であった場合、プロセッサ１２６は、各バージョンのバージョン別学習データテーブル５０４を用いてクラスタ重心位置を計算する（ステップＳ１３０３）。
【００６５】
この際、既述のステップＳ１３０２では、プロセッサ１２６が、前回のクラスタ重心位置計算及びクラスタ重心位置計算に用いられたデータ数同士を比較し、データ数が増加している場合のみクラスタ重心位置の計算を行い、この結果をクラスタ重心位置テーブル５０５に保存する。クラスタ重心位置計算に用いられたデータ数は、学習用データ選択プログラム５０１が保持する。
【００６６】
すべてのバージョンに対してクラスタ重心位置の計算終了後、プロセッサ１２６は、学習に用いる学習データテーブルを選択する（ステップＳ１３０４）。このステップＳ１３０４では、プロセッサ１２６が、運用管理者１３９によって予め設定されたクラスタ重心位置閾値設定１００４に従い、仮想マシン１１２で稼働しているアプリケーションプログラム３００のバージョンの「クラスタ重心位置からの距離」が閾値内に収まるバージョンのバージョン別学習データテーブル５０４の学習データテーブルを選択する。
【００６７】
ここでいうクラスタ重心位置からの距離とは、複数のクラスタ重心位置の値同士の差を示す。クラスタ重心位置閾値設定１００４には、閾値の値のみが格納されている。各バージョンのクラスタ重心位置は、クラスタ重心位置テーブル５０５から取得される。ステップＳ１３０１において学習データ数が十分でなかった場合、プロセッサ１２６は、クラスタ重心位置計算の処理を実行しない。
【００６８】
この場合、プロセッサ１２６は、前回の学習データ選択処理実行時に選択されたバージョンを選択するとともに、仮想マシン１１２で稼働しているバージョンの学習データテーブルを選択する（ステップＳ１３０５）。選択された学習データテーブルは、学習用データ選択プログラム５０１によって保持される。以上のようにステップＳ１３０４またはステップＳ１３０５において、プロセッサ１２６が学習データテーブルを選択し、次のような予測モデル生成処理を実行する（Ｓ１１０３）。
【００６９】
図１５（Ａ）〜図１５（Ｃ）は、ステップＳ１３０３においてクラスタ重心位置を計算する一例を表した概念図であり、図１５（Ｄ）は、ステップＳ１３０４において学習データを選択する一例を表した概念図である。
【００７０】
管理サーバ１０３では、プロセッサ１２６が、図１５（Ａ）〜図１５（Ｃ）に各々示すようにバージョンごとに学習データテーブルの学習データを座標空間にマッピングし、そのマッピングされた学習データの重心を計算する（ステップＳ１４００）。
【００７１】
図１５（Ａ）〜図１５（Ｃ）では、それぞれ、バージョン［２．０３］、［２．０４］、［２．０５］の各学習データがマッピングされ、重心位置が計算によって求められる。図１５（Ｄ）では、各バージョンのクラスタ重心位置のみをマッピングし、バージョン２.０５からの距離が比較されている（ステップＳ１４０１）。図中の閾値は、運用管理者１３９が設定したクラスタ重心位置の閾値である。
【００７２】
本実施の形態では、クラスタ重心位置閾値として「０.１０」が設定されているものとすると、図１５（Ｃ）に示すバージョン［２．０５］のクラスタ重心位置が例えば「０.６１」となるため、図１５（Ａ）に示すバージョン［２．０３］のクラスタ重心位置「０.５６」は閾値内に入っているのに対し、図１５（Ｂ）に示すバージョン［２．０４］のクラスタ重心位置０.７２は閾値内に入っていない。以上のことに基づき、学習データテーブルとして、バージョン［２．０３］及び現在稼働中であるバージョン［２．０５］が選択される。
【００７３】
図１６は、予測モデル生成処理（ステップＳ１１０３）の詳細を示したフローチャートである。まず、ステップＳ１５０１では、プロセッサ１２６が、予測モデルテーブル５０６を参照し、選択された学習データテーブルに対応する過去の予測モデルを選択する。以下に予測モデルを選択する一例を示す。
【００７４】
既述の学習データ選択処理（ステップＳ１１０２）において、上述のようにバージョン［２．０３］及びバージョン［２．０５］の学習データテーブルが選択されているので、プロセッサ１２６は、予測モデルテーブル５０６からバージョン［２．０３］及び［２．０５］の学習データテーブルから生成されている予測モデルを検索する。仮にこの予測モデルが存在しない場合、プロセッサ１２６は、選択されている学習データテーブルのいずれかのみで生成されている予測モデルを検索する。
【００７５】
そのように予測モデルが存在しない場合、上述のようにバージョン［２．０３］及び［２．０５］が選択されている場合であれば、バージョン［２．０３］で生成された予測モデル、及び、バージョン［２．０５］で生成された予測モデルのうちのどちらか一方の予測モデルが該当する。
【００７６】
一方、そのように予測モデルが存在しない場合、バージョン［２．０１］、［２．０３］及び［２．０５］が選択されている場合であれば、バージョン［２．０１］、［２．０３］、［２．０５］、［２．０１、２．０３］、［２.０１，２.０５］、［２.０３、２.０５］で生成されている予測モデルが該当する。仮に該当する予測モデルが複数ある場合は総データ数が一番多くなる予測モデルが選択される。
【００７７】
第１の実施の形態では、学習用データ選択処理（ステップＳ１１０２）においてプロセッサ１２６が、バージョン別学習データテーブル５０４の中からバージョン［２.０３］の学習データテーブル７０１を選択するとともに、バージョン［２.０５］の学習データテーブル７０３を選択している。ステップＳ１５０１では、プロセッサ１２６が、予測モデルテーブル５０６から、バージョン２.０３によって作成された予測モデルを選択する。
【００７８】
次にステップＳ１５０２では、プロセッサ１２６が、ステップＳ１５０１によって対応する予測モデルを選択したか否かを判定する。対応する予測モデルが発見され、過去の予測モデルを利用可能な場合、プロセッサ１２６は、上述したステップＳ１５０１において選択された過去の予測モデルに対して差分の学習データを学習させ、新しい予測モデルを生成し（ステップＳ１５０３）、これを予測モデルテーブル５０６（図９参照）に登録する。ここでいう差分とは、予測モデルテーブル５０６の項目９００（予測モデルを作成した日時）を基に、この日時以降の学習データを示す。
【００７９】
第１の実施の形態では、バージョン［２.０３］で作成された過去の予測モデルが選択されているので、この過去の予測モデルに対し、差分の学習データを追加で学習させることにより新しい予測モデルを生成し、予測モデルテーブル５０６に当該新しい予測モデルが追加される。
【００８０】
一方、対応する予測モデルが存在せず、過去の予測モデルが利用できない場合、プロセッサ１２６は、学習データ選択プログラム１１０２によって選択されたテーブルに含まれる全ての学習データを用いて予測モデルを生成し（ステップＳ１５０４）、予測モデルテーブル５０６に、この予測モデルを追加する。
【００８１】
図１７は、在庫管理プログラム５０３により示される販売数が予測される様子を示す図である。なお、縦軸が販売数を表し、横軸が時間を表している。横軸の下にはアプリケーションプログラム３００においてどのバージョンが稼働していたかというものを示している。実線で示されている販売数変化は実測値であり、点線で示されている販売数変化は予測モデルによる予測値であり、一点鎖線で示されている販売数変化は古い予測モデルによる予測値である。
【００８２】
現在時刻において、上述したステップＳ１１０４において新しく生成された予測モデルによる予測値に更新されている（図示の点線に相当）。図示の例では、アプリケーションプログラム３００のバージョンが［２.０４］から［２.０５］に更新され、古いモデルによる予測値では、実線で示した実測値とのずれが大きくなっていた。これを新しいモデルに更新することで、より実測値に近い予測を行うことができるようになる。
【００８３】
（１−３）第１の実施の形態の効果等
以上説明したように、本実施の形態における管理サーバ１０３では、プロセッサ１２６が、監視対象システム１００から監視データを取得し、当該取得した監視データを監視対象システム１００の挙動に応じて分割する。プロセッサ１２６は、当該分割した監視データから抽出した特徴と、処理実行時に稼働している監視対象システムの監視データの特徴と比較し、両特徴が近いものを学習に用いる学習データとして選択し、当該選択された学習データを用いて予測モデルを生成している。
【００８４】
本実施の形態によれば、そのような学習データを監視対象システムの挙動ごとに管理し、現在動いている監視対象システム１００の挙動と近い学習データのみを選んで学習させることで、学習によって生成される予測モデルの予測精度を向上させることができる。これにより、監視対象システムの今後の挙動について予測精度の高い予測モデルを生成可能とし、今後の挙動について予測精度を高めることができる。
【００８５】
（２）第２の実施の形態
第２の実施の形態は、第１の実施の形態とほぼ同様であるため、同様の構成及び動作については説明を省略し、異なる点を中心として説明する。
【００８６】
（２−１）第２の実施の形態における特徴
第２の実施の形態では、プロセッサ１２６が、学習用データ保存プログラム５０１による学習用データ保存処理Ｓ１１０１の処理Ｓ１２０４（図１３参照）において、第１の実施の形態のように学習データをバージョンごとにバージョン別学習データテーブル５０４に保存する代わりに、例えば、平日及び休日など時間帯によって挙動が異なる場合を分けて学習データを日時ごとに日時別学習データテーブル１７００に保存している。
【００８７】
第２の実施の形態では、後述するようにプロセッサ１２６が、日時別学習データテーブル１７００の学習データを予測モデルの生成に用いる点が第１の実施の形態と異なっている。以下、より具体的に説明する。
【００８８】
図１８は、第２の実施の形態による管理サーバ１０３Ａの構成例を示すブロック図である。管理サーバ１０３Ａは、第１の実施の形態による管理サーバ１０３とほぼ同様の構成であるが、バージョン別学習データテーブル５０４の代わりに、学習データを日時別に保存可能な次の日時別学習データテーブル１７００が設けられている点が相違する。
【００８９】
図１９（Ａ）〜図１９（Ｃ）は、それぞれ、図１８に示す日時別学習データテーブル１７００のテーブル構成例を示す。この日時別学習データテーブル１７００は、管理サーバ１０３のメモリ１２８に格納されている。各学習データテーブルには、年月日及び時刻からなるテーブル名前が付されており、どの日時に保存された学習データであるのかを表している。
【００９０】
具体的には、例えば、図１９（Ａ）では、２０１６年１０月８日９：００時点の学習データテーブル１７０１を例示し、図１９（Ｂ）では、２０１６年１０月９日９：００時点の学習データテーブル１７０２を例示し、図１９（Ｃ）では、２０１６年１０月１０日９:００時点の学習データテーブル１７０３を例示している。各学習データテーブルは、例えば日時７０４、アクセス数７０５、遷移率７０６及び購入率７０７を管理している。
【００９１】
図２０は、第２の実施の形態における学習用データ保存処理Ｓ１１０１Ａのフローチャートである。なお、第２の実施の形態における図２０は、第１の実施の形態における図１３に対応しており、第２の実施の形態におけるステップＳ１２０１，Ｓ１２０２，Ｓ１２０３は、第１の実施の形態におけるステップＳ１２０１，Ｓ１２０２，Ｓ１２０３に対応している。
【００９２】
この学習用データ保存処理Ｓ１１０１Ａは、第１の実施の形態による図１２及び図１３に示す学習用データ保存処理Ｓ１１００の代わりに、学習用データ保存プログラム５００によって実行される。第１の実施形態と同様に学習用データ保存プログラム５００は、メモリ１２８に展開されており、プロセッサ１２６によって実行される。なお、第２の実施の形態によるステップＳ１２０１〜１２０３は、第１の実施の形態と同様であるため、説明を省略する。
【００９３】
プロセッサ１２６は、第１の実施の形態におけるステップＳ１２０４と異なり、バージョンの代わりに日時で学習用データを切り分ける。この際、プロセッサ１２６は、運用管理者１３９が予め設定しておいたテーブル分割設定１８０５を読み込み、このテーブル分割設定１８０５を基に学習用データを切り分ける。
【００９４】
テーブル分割設定１８０５は、管理サーバ１０３のプログラム設定テーブル５０７に格納されており、運用管理者１３９は、管理端末１０５の入力装置１３７を用いてネットワーク１０６を介して設定を行う。
【００９５】
テーブル分割設定１８０５には、どの日時で学習テーブルを切り分けるかが記述されている。このため、同一時間帯で学習テーブルを切り分けても良いし、異なる時間帯で切り分けても良い。
【００９６】
なお、例えば、日時別学習データテーブル１７００では、テーブル１７０１、テーブル１７０２及びテーブル１７０３が全て９:００で分割されているが、テーブル１７０２のみ２０１６年１０月９日１２:００で分割されるようにしても良い。日時別学習データテーブル１８００には、ステップＳ１２０３において正規化されたデータが保存される（ステップＳ１２０４Ａ）。
【００９７】
上述した学習用データ保存処理が（ステップＳ１１０１Ａ）が終了すると、第２の実施の形態でも、プロセッサ１２６が、第１の実施の形態と同様に、図１２に示す学習用データ選択処理を実行する（ステップＳ１１０２）。
【００９８】
この学習用データ選択処理では、プロセッサ１２６が、第１の実施の形態の場合とほぼ同様の動作を実行するが、処理対象の学習データテーブルがバージョン別学習データテーブル５０４ではなく、日時別学習データテーブル１７００となっている点が第１の実施の形態とは異なっている。
【００９９】
これにより、第２の実施の形態では、プロセッサ１２６が、既述のステップＳ１３０６においてバージョン別学習データテーブル５０４の代わりに（図１４参照）、日時別学習データテーブル１７００を用いてほぼ同様の処理を実行し、第１の実施の形態とほぼ同様にテーブルを選択する（ステップＳ１３０４，Ｓ１３０５）。
【０１００】
上述した学習用データ選択処理（ステップＳ１１０２）を実行することにより、プロセッサ１２６は、日時別学習データテーブル１７００から学習データテーブルを選択し、この学習データテーブルを入力として予測モデルを生成する（ステップＳ１１０３）。
【０１０１】
（２−２）第２の実施の形態の効果等
以上のような構成によれば、日時別で学習データを管理することにより、日時ごとに、例えば平日と休日、昼間と夜間、セール期間とその他の期間のように監視対象システム１００の挙動が異なる場合でも、既述のようにデータを切り分けて学習することができるので、それぞれの状況において予測精度の高い予測モデルを生成することができる。
【０１０２】
（３）その他の実施形態
上記実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その趣旨を逸脱しない限り、様々な形態で実施することができる。例えば、上記実施形態では、監視対象システム１００の一例として、ＥＣサービスを例示しているが、これに限られず、様々なＷｅｂアプリケーションを例示することもできる。
【産業上の利用可能性】
【０１０３】
本発明は、開発者（Development）と運用管理者（Operations）とが連携して協力する開発手法である「DevOps」で開発されるサービスに対して機械学習が用いられる際における学習データの管理方法を用いる学習データ管理装置に広く適用することができる。
【符号の説明】
【０１０４】
１０３……管理サーバ、５００……データ用保存プログラム、５０１……学習用データ選択プログラム、５０２……予測モデル生成プログラム、５０４……バージョン別学習データテーブル、１０３……クラスタ重心位置テーブル、５０６…予測モデルテーブル、１１００……学習処理、Ｓ１１０１……学習用データ保存処理、Ｓ１１０２……学習用データ選択処理、Ｓ１１０３……予測モデル生成処理、Ｓ１２０１……監視メトリクス値取得処理、Ｓ１２０２……学習メトリクス選択処理、Ｓ１２０３……メトリクス値正規化処理、Ｓ１２０４……バージョン別学習データ保存処理、Ｓ１３０３……クラスタ重心位置計算処理、Ｓ１３０５……学習データテーブル選択処理、Ｓ１５０３……予測モデル生成処理。
【図１】
0006695490.tif 000002
【図２】
0006695490.tif 000003
【図３】
0006695490.tif 000004
【図４】
0006695490.tif 000005
【図５】
0006695490.tif 000006
【図６】
0006695490.tif 000007
【図７】
0006695490.tif 000008
【図８】
0006695490.tif 000009
【図９】
0006695490.tif 000010
【図１０】
0006695490.tif 000011
【図１１】
0006695490.tif 000012
【図１２】
0006695490.tif 000013
【図１３】
0006695490.tif 000014
【図１４】
0006695490.tif 000015
【図１５】
0006695490.tif 000016
【図１６】
0006695490.tif 000017
【図１７】
0006695490.tif 000018
【図１８】
0006695490.tif 000019
【図１９】
0006695490.tif 000020
【図２０】
0006695490.tif 000021