本発明の実施形態を図面に基づいて詳細に説明する。なお、本発明は本実施形態により限定されるものではない。
[1.概要]
本発明の概要を、背景、課題、解決例、本発明の特徴の順に説明する。
(1-1.背景)
本発明の背景を説明する。建設業や、システム開発業など、期間毎に進捗を積み上げていくようなプロジェクト型管理をする業界において、「過去の案件と比較して、積み上がり方が妥当かを判断したい」という要求がある。
本発明の異常検知システムでは、予定工期や予算を超過することを考慮しつつデータを加工し、進捗の推移の近似曲線を引くことで、進捗の積み上がり方を評価して、高精度に異常を検知することができる。また、各業務の特性に応じた判定の処理をマスタで設定することができる。
本発明の異常検知システムによれば、(1)予定工期や予算を超過した場合でも、柔軟に進捗遅れの異常を判定でき、計画を修正することができる。また、(2)進捗率の不正計上を検知し、実態に伴わない実績計上の不正を従来の異常検知システムより正確に防ぐことができる。
本明細書において、「経過月数」とは、案件開始からの経過した月数をいう。「累計実績額」とは、案件開始から経過月数までに掛かった実際の費用をいう。「予定工期」とは、案件開始前に設定される、案件が終了するまでに掛かる予定の月数をいう。「実施期間」とは、案件開始後に分かる、案件終了までにかかった月数をいう。「予算」とは、案件開始前に設定される、案件が終了するまでに掛かる予定の費用をいう。「実績額」とは、案件完了後に分かる、案件にかかった総額をいう。「予定工期経過率」とは、経過月数を予定工期で割ったものをいう。「実施期間経過率」とは、経過月数を実施期間で割ったものをいう。「予算経過率」とは、累計実績額を予算で割ったものをいう。「実績進捗率」とは、累計実績額を実績額で割ったものをいう。「異常判定対象案件」とは、進行中の案件で進捗の積み上がり方の異常を判定したい案件をいう。「近似曲線」とは、グラフで見た時の図形としての曲線をいう。「近似関数」とは、近似曲線をx,y等の文字を用いて表した場合の式のことをいう。「近似関数名」とは、近似関数を式ではなく用語で区別するための名称のことをいう。
(1-2.課題)
図1及び図2を参照して、本発明の課題を説明する。従来、以下の課題がある。
1.工期と実績が一致する過去の案件のみで比較した場合、比較対象のサンプル数が少なく、妥当性が低い異常判定結果となるという課題がある。
2.過去の案件の工期と実績が異なると、データを比較することが出来ないという課題がある。
より具体的には、以下の通りである。
(1)工期と実績が一致する過去の案件のみで比較した場合、比較対象のサンプル数が少なく、妥当性が低い異常判定結果という課題は、具体的には、過去の案件のデータを集める際に、異常判定対象案件の工期と予算に一致するものだけを抽出すると、過去の案件のサンプル数が少なくなってしまう。このように、サンプル数が少ないと異常判定結果の妥当性が低くなってしまう。
(2)過去の案件の工期と実績が異なると、データを比較することが出来ないという課題について、図1及び図2を参照して詳細に説明する。過去の既に完了した案件B0001の実績の積み上がり方をもとに案件A0001の異常判定を行いたい場合を説明する。前提として異常判定対象案件の実績データと予算データおよび過去の比較対象案件の実績データは以下のようなデータとして保持しているものとする。
図1(A)は、異常判定対象案件の実績データの例を示しており、案件コード、経過月数、実績のデータを含んでいる。図1(B)は、異常判定対象案件の予算データの例を示しており、案件コード、工期、予算のデータを含んでいる。図1(C)は、過去の案件の実績データの例を示しており、案件コード、経過月数、実績のデータを含んでいる。
図2は、異常判定対象案件の積み上がり方と過去の比較対象案件の積み上がり方を比較する場合のグラフのイメージを示している。図2は、図1の過去の類似案件(B0001)と異常判定対象案件(A0001)の経過月数と実績を示しており、X軸は経過月数(ヶ月)、Y軸は実績(万円)を示している。異常判定対象案件の工期および予算が過去の比較対象案件の工期および実績と異なるため、異常判定対象案件の実績の積み上がり方が異常か否か判断できない。
(1-3.解決策)
そこで、本発明では、解決策として、例えば、過去の案件群の工期と実績のスケールと、異常判定対象の案件の工期と予算のスケールが一致するように、スケールを統一するデータの加工を行っている。
1.工期と実績が一致する過去の案件のみで比較した場合、比較対象のサンプル数が少なく、妥当性が低い異常判定結果となるという課題に対して、過去の案件の工期と実績によらず、異常判定対象の案件と比較出来るため、工期と実績に関係なくデータを集めることができるようになる。
2.過去の案件の工期と実績が異なると、データを比較することが出来ないという課題に対して、過去の案件群の工期と実績を異常判定対象の案件の工期と予算に合わせることで、過去の案件と異常判定対象の案件を比較できるようになる。
(1-4.本発明の特徴)
本発明の異常検知システムは、加工した過去の案件の月別データに対して近似曲線を引き、閾値の計算を行い、閾値を元に異常判定を行うものであり、以下の特徴1~3を有している。
(1)本発明の特徴1
工期の遅れや予算の超過など何を重視して異常を判定するか選択できる。本発明の異常検知システムの導入企業ごとに、案件完了時に予定工期・予算とのずれをどの程度重視するかの方針の違いを吸収できる(「3-4.過去の案件の月別実績データの加工方法の選択肢」で詳細を説明)。
(2)本発明の特徴2
案件の進捗の推移を予測する際に、複数の近似関数を選択できる。案件の進捗の推移を予測する際に、異常判定定義マスタで、近似関数候補名に多項式関数、指数関数、対数関数、ロジスティック関数、バスモデル関数を指定できる。異常検知システムのユーザが経験的に知っている、案件の進捗の推移に応じて、近似関数を選択することができる。
(3)本発明の特徴3
案件の進捗の推移の予測を精度高く行うことができる。本発明の異常検知システムの近似曲線アルゴリズムでは、実際のデータを用いて基準値・閾値を計算するため、精度が従来の手法より高い。
本発明の異常検知システムは、全業種・全業界に適用でき、例えば、建設工事業界やITメディア業界等のプロジェクト型管理を行う案件に好適に適用することができる。
[2.構成]
図3を参照して、本実施形態に係る異常検知システム100の構成の一例について説明する。図3は、異常検知システム100の構成の一例を示すブロック図である。
異常検知システム100は、市販のデスクトップ型パーソナルコンピュータである。なお、異常検知システム100は、デスクトップ型パーソナルコンピュータのような据置型情報処理装置に限らず、市販されているノート型パーソナルコンピュータ、PDA(Personal Digital Assistants)、スマートフォン、タブレット型パーソナルコンピュータなどの携帯型情報処理装置であってもよい。
異常検知システム100は、制御部102と通信インターフェース部104と記憶部106と入出力インターフェース部108と、を備えている。異常検知システム100が備えている各部は、任意の通信路を介して通信可能に接続されている。
通信インターフェース部104は、ルータ等の通信装置及び専用線等の有線又は無線の通信回線を介して、異常検知システム100をネットワーク300に通信可能に接続する。通信インターフェース部104は、他の装置と通信回線を介してデータを通信する機能を有する。ここで、ネットワーク300は、異常検知システム100と、サーバ200や業務システム400とを相互に通信可能に接続する機能を有し、例えばインターネットやLAN(Local Area Network)等である。業務システム400は、各種の業務データの作成や更新等を行う。
入出力インターフェース部108には、入力装置112及び出力装置114が接続されている。出力装置114には、モニタ(家庭用テレビを含む)の他、スピーカやプリンタを用いることができる。入力装置112には、キーボード、マウス、及び、マイクの他、マウスと協働してポインティングデバイス機能を実現するモニタを用いることができる。なお、以下では、出力装置114をモニタ114とし、入力装置112をキーボード112又はマウス112として記載する場合がある。また、モニタ114に情報を表示して、ユーザが入力装置112を操作すること等を、「UIを介したユーザ操作」と記載する場合がある。
記憶部106には、各種のデータベース、テーブル、及びファイルなどが格納される。記憶部106には、OS(Operating System)と協働してCPU(Central Processing Unit)に命令を与えて各種処理を行うためのコンピュータプログラムが記録される。記憶部106として、例えば、RAM(Random Access Memory)・ROM(Read Only Memory)等のメモリ装置、ハードディスクのような固定ディスク装置、フレキシブルディスク、及び光ディスク等を用いることができる。記憶部106は、異常判定定義マスタ106a、判定結果テーブル106b、近似曲線結果付属情報テーブル106c、過去の案件の月別実績データ及び予定・実績データ、異常判定対象案件の月別実績データ及び予定・実績データ等を備えている。
異常判定定義マスタ106aは、異常判定定義識別情報(異常判定定義ID、異常判定定義名)、取得定義、使用アルゴリズム(例えば、近似曲線)、パラメータ設定{X軸項目(例えば、経過月数),Y軸項目(例えば、累計実績額),X軸スケール統一項目(例えば、予定工期),Y軸スケール統一項目(例えば、実績額),近似関数候補名(例えば、多項式関数,ロジスティック関数,バスモデル関数),滑らか度、有意水準)}を関連付けて登録したテーブル等で構成することができる。オペレータは、異常判定定義マスタ106aのデータを設定可能となっている。
判定結果テーブル106bは、異常判定の結果である判定結果データを格納するためのテーブルである。判定結果データは、案件コード、会計年月、予定工期経過率、実績進捗率、予測値、標準偏差、上側閾値、下側閾値、判定結果(FALSEorTRUE)を含んでいてもよい。異常だと判定されたデータは、判定結果を「TRUE」とし、それ以外は、「FALSE」とする。
近似曲線結果付属情報テーブル106cは、異常判定のグラフを表示するための近似曲線結果付属情報を格納するためのテーブルである。近似曲線結果付属情報は、実行履歴ID、行番号、X、Y、上側閾値、下側閾値を含んでいてもよい。「実行履歴ID」は、異常判定の1度の実行につき自動で割り振られるID、「行番号」は、表示用データを行ごとに0から連番を振ったもの、「X」は、表示用データのX軸の値に相当するもの、「Y」は、表示用データのY軸の値に相当するもの、「上側閾値」は、表示用データの上側閾値、「下側閾値」は、表示用データの下側閾値である。
過去の案件の月別実績データは、案件コード(案件識別情報)、会計年月、X軸項目(例えば、経過月数)、Y軸項目(例えば、累計実績額)を含むことにしてもよい。
過去の案件の予定・実績データは、案件コード(案件識別情報)、X軸スケール統一項目(例えば、予定工期)、予算、実施期間、Y軸スケール統一項目(例えば、実績額)を含むことにしてもよい。
異常判定対象案件の月別実績データは、案件コード(案件識別情報)、会計年度、X軸項目(例えば、経過月数)、Y軸項目(例えば、累計実績額)を含むことにしてもよい。
異常判定対象案件の予定・実績データは、案件コード(案件識別情報)、予定期間又は終了目標期間、予算又は目標、実施期間、実績額を含むことにしてもよい。目標は、見積金額や目標定着率等を含むことにしてもよい。
制御部102は、異常検知システム100を統括的に制御するCPU等である。制御部102は、OS等の制御プログラム・各種の処理手順等を規定したプログラム・所要データなどを格納するための内部メモリを有し、格納されているこれらのプログラムに基づいて種々の情報処理を実行する。
制御部102は、記憶部106に格納されている、異常判定定義マスタ106a、判定結果テーブル106b、近似曲線結果付属情報テーブル106c、過去の案件の月別実績データ及び予定・実績データ、異常判定対象案件の月別実績データ及び予定・実績データ
等にアクセス可能に構成されている。なお、異常判定定義マスタ106a、判定結果テーブル106b、近似曲線結果付属情報テーブル106c、過去の案件の月別実績データ及び予定・実績データ、異常判定対象案件の月別実績データ及び予定・実績データは、他の場所(例えば、サーバ200)に設けられていてもよく、制御部102がアクセス可能な構成であればよい。
制御部102は、機能概念的に、データ取得部102aと、データ加工部102bと、近似曲線算出部102cと、閾値算出部102dと、異常判定部102eと、画面表示制御部102fと、マスタメンテ部102gと、を備えている。
データ取得部102aは、業務システム300から過去の案件の月別実績データ及び予定・実績データや異常判定対象案件の月別実績データ及び予定・実績データを取得して、記憶部106に格納する。例えば、データ取得部102aは、業務システム300から、異常判定定義マスタ106aの取得定義に従って、パラメータ設定されているX軸項目(例えば、経過月数),Y軸項目(例えば、累計実績額)を含む過去の案件及び異常判定対象案件の月別実績データ、X軸スケール統一項目(例えば、予定工期),Y軸スケール統一項目(例えば、実績額)を含む過去の案件及び異常判定対象案件の予定・実績データを取得してもよい。
データ加工部102bは、過去の案件と異常判定対象案件の月別実績データのスケールを統一するためのデータの加工を行う。データ加工部102bは、過去の案件の月別実績データについて、案件識別情報毎に、X軸項目を前記過去の案件の予定・実績データのX軸スケール統一項目で割った経過率と、Y軸項目を前記過去の案件のデータのY軸スケール統一項目で割った進捗率を算出して加工してもよい。また、異常判定対象案件の月別実績データについて、案件識別情報毎に、X軸項目を前記異常判定対象案件の予定・実績データの予定工期で割った経過率と、Y軸項目を前記異常判定対象案件の予定・実績データの予算で割った進捗率を算出して加工してもよい。X軸項目は、経過月数を含み、Y軸項目は、累計実績額を含み、X軸スケール統一項目は、予定工期又は実施期間を含み、Y軸スケール統一項目は、予算又は実績額を含むことにしてもよい。
近似曲線算出部102cは、加工後の過去の案件の月別実績データの全データに対する実績近似曲線を算出する。近似曲線算出部102cは、加工後の過去の案件の月別実績データの経過率と進捗率、異常判定定義マスタ106aに設定されている1又は複数の近似関数候補の情報を近似部品に渡して最適な係数を求め、近似部品から返ってくる係数を元に、AICを計算し、AICの最も小さな近似関数を実績中心近似関数として決定することにしてもよい。1又は複数の近似関数候補は、多項式関数、指数関数、対数関数、ロジスティック関数、及びバスモデル関数の少なくとも1つを含むことにしてもよい。
閾値算出部102dは、算出した近似曲線からの加工後の過去の案件の月別実績データの全データの散らばりを計算し、計算した散らばりの傾向を表現する標準偏差曲線を算出し、実績中心近似曲線と標準偏差曲線に基づいて、閾値を算出する。この場合、閾値算出部102dは、加工後の過去の案件の月別実績データの各経過率を実績中心近似関数に代入して、進捗率の予測値を計算し、予測値と進捗率の実際のデータとの差である残差を計算し、さらに、残差の平方を計算し、残差の平方に対して残差平方近似関数の近似曲線を引き、残差平方近似関数の平方根をとったものを標準偏差関数とし、加工後の異常判定対象案件の月別実績データの各経過率を、実績中心近似関数に代入して、進捗率の予測値を算出し、また、標準偏差関数に代入して標準偏差を算出し、標準偏差に有意水準を元に算出される一定値を掛けた値の分だけ、予測値の上下に幅を持たせた上側閾値及び下側閾値を算出することにしてもよい。
異常判定部102eは、加工後の異常判定対象案件の月別実績データの各案件識別情報の経過率及び進捗率を、算出した閾値と比較して異常判定を行う。異常判定部102eは、異常と判定した場合に異常検出メッセージ及び異常判定のグラフを異常判定出力画面に表示出力してもよい。
画面表示制御部102fは、モニタ114に表示する各種画面(例えば、異常判定出力画面やマスタメンテ画面等)の表示及びその入力を制御する。
マスタメンテ部102gは、例えば、モニタ114に表示されるマスタメンテ画面上でのオペレータの操作に応じて、異常判定定義マスタ106aに対して、データの入力・追加・削除・編集等の設定を行う。
画面表示制御部102fは、モニタ114に表示する各種画面(例えば、店舗供給アラート画面やマスタメンテ画面等)の表示及びその入力を制御する。
[3.具体例]
図4~図46を参照して、本実施の形態における異常検知システム100の制御部102の処理の具体例について説明する。図4は、本実施の形態における異常検知システム100の制御部102の全体の処理の概略を説明するための処理フローを示す図である。図5~図46は、本実施の形態における異常検知システム100の制御部102の処理の具体例を説明するための図である。
[3-1.処理フロー概説]
図4を参照して、処理フローの概要を説明する。図4において、データ加工部102bは、過去の案件の月別実績データの加工処理を実行し(ステップS1)、過去の案件の月別実績データについて、案件識別情報毎に、X軸項目を前記過去の案件の予定・実績データのX軸スケール統一項目で割った経過率と、Y軸項目を前記過去の案件のデータのY軸スケール統一項目で割った進捗率を算出して加工する。X軸項目は、経過月数を含み、Y軸項目は、累計実績額を含み、X軸スケール統一項目は、予定工期又は実施期間を含み、Y軸スケール統一項目は、予算又は実績額を含むことにしてもよい。
データ加工部102bは、異常対象案件の月別実績データの加工処理を実行し(ステップS2)、異常判定対象案件の月別実績データについて、案件識別情報毎に、X軸項目を異常判定対象案件の予定・実績データの予定工期で割った経過率と、Y軸項目を前記異常判定対象案件の予定・実績データの予算で割った進捗率を算出して加工する。
近似曲線算出部102cは、実績中心近似曲線算出処理を実行し(ステップS3)、加工後の過去の案件の月別実績データの全データに対する実績中心近似曲線を算出する。この場合、近似曲線算出部102cは、加工後の過去の案件の月別実績データの経過率と進捗率、異常判定定義マスタ106aに設定されている1又は複数の近似関数候補の情報を近似部品に渡して最適な係数を求め、近似部品から返ってくる係数を元に、AICを計算し、AICの最も小さな近似関数候補を実績中心近似関数として決定することにしてもよい。1又は複数の近似関数候補は、多項式関数、指数関数、対数関数、ロジスティック関数、及びバスモデル関数の少なくとも1つを含むことにしてもよい。
閾値算出部102dは、実績中心近似曲線からのデータの散らばりを計算する処理を実行し(ステップS4)、算出した実績中心近似曲線からの加工後の過去の案件の月別実績データの全データの散らばりを計算する。この場合、閾値算出部102dは、加工後の過去の案件の月別実績データの各経過率を実績中心近似関数に代入して、進捗率の予測値を計算し、予測値と進捗率の実際のデータとの差である残差を計算し、さらに、残差の平方を計算してもよい。
閾値算出部102dは、データの散らばりの傾向を計算する処理を実行し(ステップS5)、計算した散らばりの傾向を表現する標準偏差曲線を算出する。この場合、閾値算出部102dは、残差の平方に対して残差平方近似関数の近似曲線を引き、残差平方近似関数の平方根をとったものを標準偏差関数とし算出してもよい。
閾値算出部102dは、異常判定対象案件の予測値・閾値を計算する処理を実行し(ステップS6)、実績中心近似曲線と標準偏差曲線に基づいて、閾値を算出する。この場合、閾値算出部102dは、加工後の異常判定対象案件の月別実績データの各経過率を、実績中心近似関数に代入して、進捗率の予測値を算出し、また、標準偏差関数に代入して標準偏差を算出し、標準偏差に有意水準を元に算出される一定値を掛けた値の分だけ、予測値の上下に幅を持たせた上側閾値及び下側閾値を算出することにしてもよい。
異常判定部102eは、異常判定処理を実行し(ステップS7)、加工後の異常判定対象案件の月別実績データを、算出した閾値と比較して異常判定を行う。この場合、異常判定部102eは、異常と判定した場合に異常検出メッセージを異常判定出力画面に表示出力してもよい。
異常判定部102eは、表示用データの計算処理を実行し(ステップS8)、異常判定結果のグラフを表示するための近似曲線結果付属情報を作成して近似曲線結果付属情報テーブル106cに格納し、近似曲線結果付属情報に基づいて異常判定結果のグラフを異常判定出力画面に表示出力する。
[3-2.処理フロー詳細]
図5~図31を参照して、上記処理フローの詳細を説明する。
(前提1)
異常判定定義マスタ106aは、記憶部106に予め登録されているものとする。異常判定定義マスタ106aは、業務データ上の異常判定を行う定義を管理するためのマスタである。
図5は、異常判定定義マスタ106aの構成例を示す図である。異常判定定義マスタ106aは、異常判定定義ID、異常判定定義名、データ取得定義、使用アルゴリズム、パラメータ設定を関連づけて登録したものである。
同図に示す例では、異常判定定義ID「JD001」、異常判定定義名「案件進捗アラート」、使用アルゴリズム「近似曲線」、パラメータ設定{X軸項目:経過月数,Y軸項目:累計実績額,X軸スケール統一項目:予定工期,Y軸スケール統一項目:実績額,近似関数候補名:[多項式関数,ロジスティック関数,バスモデル関数],滑らか度:12,有意水準:0.1}となっている。
(前提2)
記憶部106には、過去の類似案件の月別実績データ及び予定・実績データが格納されているものとする。データ取得部102aは、業務システム400から過去の案件の実績データ及び予定・実績データを取得して記憶部106に格納する。
図6(A)は、過去の案件の月別実績データの例を示している。過去の案件の月別実績データは、案件コード、会計年月、経過月数[ヶ月]、累計実績額[万円]のデータの項目を備えている。「会計年月」の列は、処理フローの計算では使用しない。本例では、過去の案件の案件コードを「A001」、「A002」、「A003」とする。本説明では簡略化のため3案件を例にして説明するが、実際は異常判定結果の妥当性を担保するために過去の案件は多数あることが前提である。
図6(B)は、図6(A)の過去の案件の月別実績データをグラフ化したものであり、横軸は、経過月数[ヶ月]、縦軸は、累計実績額[万円]を示している。
図6(C)は、過去の案件の予定・実績データの例を示している。過去の案件の予定・実績データは、案件コード、予定工期[ヶ月]、予算[万円]、実施期間[ヶ月]、実績額[万円]の項目を備えている。
(前提3)
記憶部106には、異常判定対象の案件の月別実績データ及び当該案件開始前の予定・実績データが格納されているものとする。データ取得部102aは、業務システム400から異常判定対象の案件の月別実績データ及び当該案件開始前の予定・実績データを取得して記憶部106に格納する。
図7(A)は、異常判定対象案件の月別実績データの例を示している。異常判定対象案件の月別実績データは、案件コード、会計年月、経過月数[ヶ月]、累計実績額[万円]のデータの項目を備えている。「会計年月」の列は、処理フローの計算では使用しないが、異常判定結果のメッセージを表示する際に使用する。本例では、異常判定対象案件の案件コードを「B001」、「B002」とする。本説明では簡略化のため2案件を例にして説明するが、実際には異常判定対象案件は多数あることが前提である。
図7(B)は、図7(A)の異常判定対象案件の月別実績データをグラフ化したものであり、横軸は、経過月数[ヶ月]、縦軸は、累計実績額[万円]を示している。
図7(C)は、異常判定対象案件の予定・実績データの例を示している。異常判定対象案件の予定・実績データは、案件コード、予定工期[ヶ月]、予算[万円]、実施期間[ヶ月]、実績額[万円]の項目を備えている。異常判定対象案件は進行中の案件であるため、実施期間と実績額の列にはデータが入っていない。
(前提4)
制御部102は、関数の最適な係数を求める計算部品(以下、「近似部品」と呼ぶ)を実装している。近似部品には以下のような情報を渡すことで最適な係数が返ってくる。以下、図8を参照して、近似部品を説明する。
図8(A)は、近似部品に渡す情報(1)の例を示しており、近似曲線を引きたいデータを渡す。近似曲線を引きたいデータは(X,Y)のようなペアのデータで、グラフで見た時の横軸X縦軸Yの値に対応する。
図8(B)は、近似部品に渡す情報(2)の例を示しており、近似したい関数を渡す。この例では、y=ax2+bx+cとなっている。近似したい関数の内x,y以外の文字が係数となる。
近似部品内での処理では、例として近似したい関数がy=ax2+bx+cの場合は、上記例の場合では、近似部品によって、a=0.5,b=-3.5,c=7.6という最適な係数が計算される。近似したい関数は、この例に限られるものではなく、y=aやy=ax+b等の場合もある。
図8(C)は、近似部品が返す情報の例を示しており、近似部品内での処理で得られた近似したい関数の最適な係数が返される。この例では、近似部品が返す情報は、a=0.5,b=-3.5,c=7.6の係数である。
(S1:過去の案件の月別実績データの加工処理)
図9及び図10を参照して、過去の案件の月別実績データの加工処理を説明する。過去の案件の月別実績データの加工処理では、過去の案件の月別実績データの経過月数・累計実績額をX軸スケール統一項目、Y軸スケール統一項目を100%とする値に変換する。具体的には、異常判定定義マスタ106aのパラメータ設定列に登録されているデータを元に以下の計算処理を行う。
(1)月別実績データのX軸項目の列の値をX軸スケール統一項目の値で割る。
(2)月別実績データのY軸項目の列の値をY軸スケール統一項目の値で割る。
以下では、過去の案件の月別実績データの案件コード「A003」を例に挙げて説明する。過去の案件の月別実績データのX軸項目、Y軸項目をそれぞれどの値で割るかは異常判定定義マスタ106aのX軸スケール統一項目、Y軸スケール統一項目で設定できる。スケール統一項目の設定の違いによる加工後のデータの違いは、[3-3.過去の案件の月別実績データの加工方法の選択肢]で後述する。
図9(A)は、異常判定定義マスタ106aの設定例を示す図である。図9(B)は、A003の月別実績データのデータ例を示す図である。図9(C)は、A003の予定・実績データの例を示す図である。
図9(D)は、加工後のA003の月別実績データの例を示しており、異常判定定義マスタ106aの設定例に従い、X軸項目「経過月数」を、X軸スケール統一項目「予定工期」で割った予定工期経過率[%」と、Y軸項目「累計実績額」を、Y軸スケール統一項目「実績額」で割った実績進捗率[%]を算出する。
このデータの加工は、[3-3.過去の案件の月別実績データの加工方法の選択肢]の「パターンB:予定工期柔軟・予算厳格型」である。
加工後のデータの特徴は以下の通りである。予定工期経過率は経過月数を案件開始前の工期で割るため、案件が予定より、1.早く終わった場合は、最終経過月での予定工期経過率が100%未満となり、2.長引いた場合は、最終経過月での予定工期経過率が100%を超えることがある。また、実績進捗率は累計実績額を実績額で割るため、最終経過月での実績進捗率は必ず100%となる。
過去の全ての案件「A001」~「A003」のデータに対して上記の「A003」のような処理を行った後のデータは図10に示すような状態である。図10(A)は、加工後のA001~A003の月別実績データの例を示している。図10(B)は、図10(A)のデータをグラフ化した例を示している(上記本発明の特徴1)。
(S2:異常判定対象案件の月別実績データの加工処理)
図11及び図12を参照して、異常判定対象案件の月別実績データの加工処理の詳細を説明する。異常判定対象案件の月別実績データの加工処理では、異常判定対象案件の月別実績データの経過月数・累計実績額をそれぞれ予定工期・予算で割る。具体的には、以下の処理を行う。
(1)経過月数を予定工期で割る。
(2)累計実績額を予算で割る。
異常判定対象案件の月別実績データの案件コード「B001」を例に挙げて説明する。図11(A)は、B001の月別実績データのデータ例を示す図である。図11(B)は、B001の予定・実績データの例を示す図である。
図11(C)は、加工後のB001の月別実績データの例を示しており、異常判定定義マスタ106aの設定例に従い、X軸項目「経過月数」を、X軸スケール統一項目「予定工期」で割った予定工期経過率[%」と、Y軸項目「累計実績額」を、「予算」で割った予算進捗率[%]を算出する(過去の案件では、「実績額」で割っているが、ここでは「予算」で割る)。
異常判定対象案件の全ての案件「B001」~「B002」のデータに対して上記の「B001」のような処理を行った後のデータは図12に示すような状態である。図12(A)は、加工後のB001~B002の月別実績データの例を示している。図12(B)は、図12(A)のデータをグラフ化した例を示している。
(S3:実績中心近似曲線算出処理)
図13A~図15を参照して、実績中心近似曲線算出処理の詳細を説明する。実績中心近似曲線算出処理では、案件コードによるデータの区別はせずに、過去の案件の月別実績データの案件の全てのデータを元に近似部品を利用して近似曲線を計算する。本処理は、以下の特徴を有している。
(1)近似関数の選択肢には「多項式関数・指数関数・対数関数・ロジスティック関数・バスモデル関数」があり、複数選択することができる。
(2)選択された関数の中で一番AIC(赤池情報量基準)という近似の精度を測る指標の最も良いものが、以降の処理フローで使われる近似曲線となる。
以降、この最も近似の精度がよいとされた近似関数を「Y=F(X)」とし、この近似関数名を「実績中心近似関数」、この近似関数をグラフに表示した場合の曲線のことを「実績中心近似曲線」と呼ぶ。Xは予定工期進捗率、Yは実績進捗率、Fは実績中心近似関数を表し、FにX:予定工期経過率を渡すことで、Y:実績進捗率の予測値が計算される。
上記の「バスモデル関数」は、国土交通省で建設工事の進捗率を推測する際に使われている。また、バスモデル関数と比較するために、多項式関数やロジスティック関数も使われている(https://www.mlit.go.jp/sogoseisaku/jouhouka/content/001348995.pdf)。
具体的には、以下の処理を行う。
(1)異常判定定義マスタ106aに登録されているパラメータ設定のうち、X軸項目、Y軸項目、近似関数候補名ごとの関数の情報を近似部品に渡して最適な係数を求める。
(2)近似部品から返ってくる係数を元に、AICを計算する。
(3)AICの最も小さな近似関数を実績中心近似関数とする。
以下それぞれの処理を詳細に説明する。
(1)異常判定定義マスタ106aに登録されているパラメータ設定のうち、X軸項目、Y軸項目、近似関数候補名ごとの関数の情報を近似部品に渡して最適な係数を求める。
図13A及び図13Bにおいて、(A)は、異常判定定義マスタ106aのデータ例を示している。この例では、異常判定定義ID「JD001」、異常判定定義名「案件進捗アラート」、使用アルゴリズム「近似曲線」、パラメータ設定{X軸項目:経過月数,Y軸項目:累計実績額,近似関数候補名:[多項式関数,ロジスティック関数,バスモデル関数],・・・}となっている。近似する関数の選択肢は、異常判定定義マスタ106aに登録されているデータのパラメータ設定の近似関数候補に対応する、近似曲線を引きたいデータのX値・Y値は異常判定定義マスタ106aに登録されているデータのパラメータ設定のX値項目の加工後の値・Y値項目の加工後の値に対応する。
(B)は、加工後の過去の案件の月別実績データの例を示している。(C)は、近似関数候補を示しており、多項式関数、ロジスティック関数、バスモデル関数が示されている。多項式関数が選択されている場合は、0次~6次までの多項式関数式が渡される。この例では、近似関数候補に多項式関数・ロジスティック関数・バスモデル関数が選択されているため、近似部品に渡される近似したい関数は上の9個となる。近似関数候補には、指数関数や対数関数を選択してもよい。
近似関数候補ごとに以下の処理を行う。例として、近似したい関数がy=a/(1+ebx+c)の場合(ロジスティック関数)を説明する。(D)は、近似部品に渡される情報(1)(近似曲線を引き渡したいデータ)の例を示している。(E)は、近似部品に渡される情報(2)(近似したい関数)の例を示している。(F)は、近似部品から返ってくる情報(係数)の例を示しており、a=100.85、b=-0.069、c=3.68となっている。
(2)近似部品から返ってくる係数を元に、AICを計算する。AICの計算については、http://www.radio3.ee.uec.ac.jp/ronbun/TR_YK_048_AIC.pdf参照。
図14において、(A)は、AICの計算式を示しており、AIC=(データサイズ)×log(予測値との差の2乗和)/(データサイズ)+2×(係数の個数)となっている。ここで、Yの予測値は、近似関数に近似曲線を引きたいデータのXが代入されて計算される。Yの予測値との差の2乗は、近似曲線を引きたいデータの(Yの値-Yの予測値)の二乗で計算される。データサイズは、データ(X,Y)の組の数である。
AICの特徴として、予測値との差の2乗和が小さいほどAICは小さくなり、係数の数が大きいほど、AICは大きくなる。AICの値自体に意味はなく、AICの値の大小を比較することで近似関数の優劣を判断する指標である。AICの計算式の解釈を説明する。AICの計算式の第1項「(データサイズ)×log(予測値との差の2乗和)/(データサイズ)」は、近似曲線を引きたいデータに対する精度の良さ、第2項「2×(係数の個数)」は、係数の数が多いことに対するペナルティを表している。AICをもとに近似関数の優劣を判断することで、近似曲線を引きたいデータに過度にフィットすることなく、データの変化にも強い、バランスのよい近似関数が選択される。AICをもとに近似関数の優劣を判断することによる効果を説明する。時間が経つにつれて過去の案件の実績データが増えたとしても、過度に過去のデータにフィットした近似関数が選択されるわけではないため、次の2つの効果が得られる。(1)異常判定を行うたびに近似関数の種類や次数が頻繁に変化することを防ぐことができる。(2)案件進捗管理の徹底などにより、予定の進捗を大きく外れる案件が激減した場合などでも、近似曲線が管理の徹底の前後でなだらかにシフトする。
(B)は、近似曲線を引きたいデータ(X,Y)を示している。(C)は、Yの予測値、Yの予測値との差の2乗和を示している。
AICの計算式に、データサイズ、Yの予測値との差の2乗和、係数、係数の個数=3を代入すると、(D)に示すように、AIC=94.18となる。
上記処理を近似関数候補全てにおいて処理が終了した場合、図15(A)に示すようなデータを取得でき、近似関数候補全てのAICを取得できる。同図においては、「・・・」には、実際に数値が入る。
(3)AICの最も小さな近似関数を実績中心近似関数とする。
近似関数候補すべてに対してAICを計算した結果、ロジスティック関数のAICが最も小さかったという仮定の下で処理フローの説明をすすめていく。実績中心近似関数をY = F(X)とすると、本説明では、実績中心近似関数を、図15(B)に示すような、y=100.85/(1+e-0.069X+3.68)とする。これは、AICが最も小さい関数で、近似したい関数に係数がセットされたものである。以降、この関数をF(X)とするとして扱う(本発明の特徴2,特徴3)。
(S4:実績中心近似曲線からのデータの散らばりを計算する処理)
図16及び図17を参照して、実績中心近似曲線からのデータの散らばりを計算する処理の詳細を説明する。実績中心近似曲線からのデータの散らばりを計算する処理では、以下の処理を行う。
(1)過去の案件の月別実績データの各予定工期経過率における実績進捗率の予測値を計算する。
(2)予測値と実績進捗率の実際のデータとの差(残差)を計算する。
(3)残差を2乗した値(残差の平方)を計算する。
図16を参照して、具体的な計算を説明する。
(1)実績進捗率の予測値を、予測値=F(工期進捗率)で計算する。
(2)実績進捗率と予測値の差である残差を、残差=実績進捗率-予測値で計算する。
(3)残差の2乗を、残差の平方=(残差)2で計算する。
図16(A)は、過去の案件の実績データの予定工期経過率[%]と、実績進捗率[%]を示している。図16(B)は、新たに追加される列である予測値[%]、残差[%]、残差の平方[%2]を示している。予測値[%]は、予定工期経過率を実績中心近似関数F(X)に渡すことで計算される。残差を2乗しているため、残差平方は全て0以上の値となっている。残差を2乗することで、過去の実績データが近似曲線からどれだけ離れているかを残差平方の大小で表現できる。
図17(A)は、過去の案件データの予測値・近似曲線を示したグラフであり、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]を示しており、過去の実績データをプロットすると共に、近似曲線上に予測値をプロットしている。実績進捗率-予測値が残差を示している。
図17(B)は、残差を示したグラフであり、横軸は、予定工期経過率[%]、縦軸は、残差[%]を示している。
図17(C)は、残差の平方を示したグラフであり、横軸は、予定工期経過率[%]、縦軸は、残差の平方[%2]を示している。
(S5:データの散らばりの傾向を計算する処理)
図18A~図20を参照して、データの散らばりの傾向を計算する処理の詳細を説明する。データの散らばりの傾向を計算する処理では、以下の処理を行う。
(1)残差の平方に対して近似曲線を引き、この近似関数名を残差平方近似関数と名付けで、この残差平方近似関数をσ2=V(X)とする。残差平方近似関数は(多項式関数)2の形である。残差平方近似関数にX:予定工期経過率を渡すことで、その予定工期経過率における残差平方の予測値が返される。
(2)残差平方近似関数の平方根をとり、この関数名を標準偏差関数とし、この標準偏差関数をσ=S(X)とする。標準偏差関数にX:予定工期経過率を渡すことで、その予定工期経過率における標準偏差(実績進捗率の散らばり度合い)が返される。
残差平方近似関数に平方根を取ることで、標準偏差を返す関数を作れることは、[3-4.データの散らばりの傾向を計算する理由]で説明する。以下、具体的な処理を説明する。
(1)残差の平方に対して近似部品を利用して近似曲線を引く(この曲線を残差平方近似曲線と名付ける)。
図18A及び図18Bにおいて、(A)は、過去の案件の実績データの予定工期経過率[%]、実績進捗率[%]、予測値[%]、残差[%]、残差の平方[%2]を示している。(B)は、残差平方近似関数の候補を示している。
(多項式関数)2の関数を近似したい関数に指定している理由は以下の通りである。
1.案件の進捗率を近似するわけではないため、案件の進捗を表現するとされているバスモデル関数など特殊な関数を指定する必要がないため、出来るだけ単純な関数を指定している。
2.実績進捗率を近似する時、実績進捗率は予定工期経過率が進むに従って増加していくものだが、残差の平方は予定工期経過率が進むにしたがって増加したり減少したりする可能性があるため、残差の平方の増減の変化を捉えるために(多項式関数)2を採用している。
3.(多項式関数)2にすることで後に残差平方近似関数に平方根を取った(多項式関数)を標準偏差関数として利用するため。
残差平方近似関数候補ごとに以下の処理を行う。例として近似したい関数をy=(ax2+bx+c)2の場合を説明する。図18A及び図18Bにおいて、(C)は、近似部品に渡される情報(1)(近似曲線を引きたいデータ)、(D)は、近似部品に渡される情報(2)(近似したい関数)を示している。(E)は、近似部品から返ってくる情報を示しており、係数は、a=-0.0028,b=0.3209,c=2.1336となっている。
つぎに、AICを計算する。処理フローの(S3:実績中心近似曲線算出処理)と同様の処理を行うため、詳細な説明は省略する。
上記処理を残差の平方を近似する関数の候補すべてにおいて処理が終了した場合は、図19(A)に示すようなデータが取得される。
この例では、AICが最も小さい関数で、近似したい関数に係数がセットされたものを、図19(B)に示すように、残差平方近似関数y=(-0.0028x2+0.3209x+2.1336)2とする。以降、この(2次関数)2の形の関数のAICが最も小さかったという仮定の下で以下の処理のフローの説明を進めていく。残差平方近似関数をσ2=V(X)とする。この例では、V(X)=(-0.0028X2+0.3209X+2.1336)2となる。
図19(C)は、残差の平方に対して残差平方近似曲線V(X)を引いたグラフを示しており、横軸は、予定工期経過率[%]、縦軸は、残差の平方[%2]を示している。このように、近似曲線を引くことで、案件の開始から初期段階・後期段階は近似曲線からのずれが小さく、中期段階はずれが大きいなど、工期経過率に応じたデータのばらつきを考慮することができる。
(2)標準偏差関数を求める。
(1)で求めた残差平方近似関数のXに予定工期経過率を渡したときの出力値は単位が[%2]であるため、平方根を付けて単位が[%]の標準偏差関数に変換する。標準偏差関数S(X)の算出方法は、S(X)=√V(X)とする。本処理フローの例では、V(X)=(-0.0028X2+0.3209X+2.1336)2であるため、S(X)=-0.0028X2+0.3209X+2.1336となる。
図20(A)は、過去の案件の実績データの予定工期経過率、実績進捗率、予測値、残差、残差の平方に、残差の絶対値を加えたものを示している。図20(B)は、標準偏差関数V(X)を標準偏差曲線として表示したグラフを示しており、横軸は、予定工期経過率[%]、縦軸は、残差の絶対値[%2]を示している。残差の絶対値は、過去の案件の実績データと実績中心近似曲線とのズレの距離を意味する。なお、実際の計算処理では、過去の案件の実績データと実績中心近似関数による予測値の残差から残差の絶対値を計算することはないが、標準偏差曲線をグラフに表示する際の参考として記載している。
なお、残差の平方に近似曲線を引き、その近似関数に平方根を取ることの意味については、[3-4.データの散らばりの傾向を計算する理由]で詳しく説明する。
(S6:異常判定対象案件の予測値・閾値の計算処理)
図21~図24を参照して、異常判定対象案件の予測値・閾値の計算処理の詳細を説明する。これまでの処理により、実績進捗率の予測値を求める実績中心近似関数F(X)と標準偏差関数S(X)は準備されている。異常判定対象案件の予測値・閾値の計算処理では、過去の案件データは使用せず、異常判定対象案件の実績データを計算に用いる。異常判定対象案件の予測値・閾値の計算処理では、加工後の異常判定対象案件の実績データに対して、以下の処理を行う。
(1)予定工期経過率・実績中心近似関数F(X)を用いて、予測値を求める。
(2)予定工期経過率・標準偏差関数S(X)を用いて標準偏差(近似曲線からのズレの距離の予測値)を計算する。
(3)標準偏差に有意水準を元に算出される一定値を掛けた値の分だけ、予測値の上下に幅を持たせて上側閾値・下側閾値とする。
(1)予測値を求める。異常判定対象案件の予定工期経過率における実績進捗率の予測値を計算する。
図21(A)は、加工後の異常判定対象案件の実績データの案件コード、会計年月、予定工期経過率、実績進捗率に、予測値の列を追加したものである。予測値は、実績中心近似関数F(X)に、x=予定工期経過率として算出したものである。
図21(B)は、図21(A)の予測値をグラフ化したものであり、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]を示している。
(2)標準偏差を求める。加工後の異常判定対象案件の予定工期経過率における標準偏差を計算する。
図22(A)は、加工後の異常判定対象案件の実績データの案件コード、会計年月、予定工期経過率、実績進捗率、予測値に、標準偏差の列を追加したものである。標準偏差は、標準偏差関数S(X)にx=予定工期経過率として算出したものである。計算された標準偏差は、実績中心近似曲線から標準偏差だけ離れる範囲内に実績データが入る可能性が68%であるということを意味する。
図22(B)は、図22(A)の標準偏差をグラフ化したものであり、横軸は、予定工期経過率[%]、縦軸は、標準偏差[%2]を示している。
(3)閾値を求める。
図23(A)は、加工後の異常判定対象案件の月別実績データの案件コード、会計年月、予定工期経過率、実績進捗率、予測値、標準偏差に、上側閾値[%」、下側閾値[%」の列を追加したものである。
閾値の計算方法は、図23(B)に示すように、上側閾値=予測値+Zα/2×(標準偏差)、下側閾値=予測値-Zα/2×(標準偏差)で算出する。Zα/2は、標準正規分布の上側α/2%点の値を意味する。このαには、前提(1)にある異常判定定義マスタ106aに登録されているパラメータ設定(有意水準)の値を使用する。
図24(A)は、異常判定定義マスタ106aのデータ例を示す図であり、異常判定定義ID「JD001」には、{有意水準:0.1}のパラメータが設定されている。
例えば、有意水準αが0.1の場合は、α/2=0.05(5%)となり、Zα/2=1.645となる。この時、図24(B)において、異常判定対象案件B001の予定工期経過率40%のレコードに対して、上側閾値=28.678+1.645×10.415、下側閾値=28.678-1.645×10.415となる。実際の実績進捗率が下側閾値以上かつ上側閾値以下となる確率が90%程度だと解釈できる。逆にこの範囲を超えると異常だと判定される。
図24(C)は、図23(B)の予測値、上側閾値、下側閾値をグラフ化したものであり、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]を示している。なお、実績中心近似曲線と上側閾値、下側閾値のグラフを表示しているが、参考程度に表示しているだけである。
図24(D)は、有意水準とパーセント点を説明するための図である(https://ai-trend.jp/basic-study/normal-distribution/normal-distribution/)。
(S7:異常判定処理)
図25~図27を参照して、異常判定処理の詳細を説明する。異常判定処理では、以下の処理を行う。
(1)異常判定対象案件の月別実績データと前の処理で求めた閾値をもとに異常判定を行う。
(2)判定結果のデータを記憶部206のテーブル(不図示)に格納する。
以下、異常判定処理の具体的な処理を説明する。
(1)異常判定対象案件に対して、前の処理で求めた閾値と異常判定対象案件の実績進捗率の大小を比較することで、異常を判定する。
図25(A)は、異常判定対象案件の実績データの案件コード、会計年月、予定工期経過率、実績進捗率、予測値、標準偏差、上側閾値、下側閾値を示している。
図25(B)は、図25(A)の異常判定のグラフを示しており、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]を示しており、実績中心近似曲線、上側閾値、下側閾値、B001,B002がプロットされている。同図において、B001の予定工期経過率「40」、実績進捗率「60」は、上側閾値を超えているため異常と判定される。また、B002の予定工期経過率「57.143」、実績進捗率「20」は、下側上側閾値を下回ったため異常と判定される。例えば、上側閾値を超えた場合は、実績のかさましの不正の可能性が検知される。また、下側閾値を下回る場合は、進捗の遅延の可能性が検知される。
(2)判定結果データを判定結果テーブル106bに格納する。
図26は、判定結果データの例を示す図である。判定結果データは、案件コード、会計年月、予定工期経過率、実績進捗率、予測値、標準偏差、上側閾値、下側閾値、判定結果(FALSEorTRUE)を含んでいてもよい。異常だと判定されたデータは、判定結果を「TRUE」とし、それ以外は、「FALSE」とする。
異常を検知した場合には、異常検知のメッセージを表示する。図27は、異常検知のメッセージ例を示している。異常検知のメッセージでは、異常検知定義名、異常を検知した案件コード、計算手法、会計年度、実績進捗率、閾値からの解離度等が表示される。同図に示す例では、{異常検知定義:JD001 案件進捗アラート、案件:B001、会計年月:202203計算手法:近似曲線(有意水準:0.1)、実績進捗率:60%、会計年月202203の実績進捗率が上限(45.81%)を上回ったため、自動検出されました。基準値を14.19上回っています。}が表示されている。
(S8:表示用データの計算処理)
図28~図30を参照して、表示用データの計算処理を詳細に説明する。ここまでの処理で、過去の案件を元にした実績中心近似関数F(X)と標準偏差関数S(X)は求まっている状態である。表示用データの計算処理では、表示用(近似曲線を画面に表示する用)のデータを作成し、結果付属情報用のテーブルに格納する。
表示用データの計算処理では、以下の処理を行う。
(1)表示用のデータを表示する工期進捗率を求める。
(2)表示用のデータの近似曲線上の値、上側閾値・下側閾値の値を求める。
(3)近似曲線アルゴリズムの結果付属情報テーブルに結果を格納する。
以下、具体的な処理内容を説明する。
(1)表示用のデータの表示する工期進捗率を求める。
表示するデータの工期進捗率は、過去の案件データの工期進捗率の最小値と最大値を「滑らか度」というパラメータの値で分割したものである。図28は、過去の案件の実績データのグラフを示しており、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]を示しており、A001,A002,A003がプロットされている。
この予定工期経過率の範囲0~120%を滑らか度12等分割して表示用データの工期進捗率を準備する。滑らか度は前提(1)にある異常判定定義マスタ106aに登録されているパラメータ設定(滑らか度)の値を使用する。
図28(B)は、異常判定定義マスタ106aのデータ設定例を示している。同図に示す例では、異常判定定義ID「JD001」に、パラメータ「滑らか度:12」が設定されている。
図31で示しているが、表示用データが画面上に表示される時は、予測値・上側閾値・下側閾値は折れ線グラフで表示される可能性があるため、「滑らか度」と大きい値にするほど、折れ線グラフは曲線に近い滑らかな線となる。
0~120%を12等分割することで、図28(C)に示すような表示用データの工期進捗率を準備する。この例では、各工期進捗率の間隔は0~120%を12等分した10%であり、表示用データの点の数としては13点になる。
(2)表示用のデータの近似曲線上の値、上側閾値・下側閾値の値を求める。
過去の案件の実績データに対して処理を行った時に得られたF(X)、S(X)を用いて、表示用データの工期進捗率の時の近似曲線上の値、上側閾値・下側閾値の値を求める。異常判定対象案件の予測値・閾値の計算で行った処理と全く同じであるため、詳しい計算処理の説明は省略する。
計算処理後は、図29(A)に示すような表示用データとなり、予定工期経過率に、予測値、上側閾値、下側閾値の列が追加される。図29(B)は、図29(A)の表示用データをグラフ化(折れ線グラフ)したものであり、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]を示しており、予測値、上側閾値、下側閾値がプロットされている。グラフ上の白抜きの点の値が計算される。
グラフで見るとわかるように、上側閾値、下側閾値と実績中心近似曲線との幅は標準偏差関数を用いて計算されるため、以下の2つの特徴が反映された閾値となっている。
1.案件の初期や後期段階では近似曲線からずれる可能性が低い。これにより、近似曲線から少しでもずれた場合の異常性が高いため、閾値の幅は狭い。
2.案件の中期段階では近似曲線からずれる可能性が高い。これにより、正常であっても近似曲線からある程度ずれる可能性があり、多少ずれても異常性が低いため、閾値の幅は広い。
(3)近似曲線結果付属情報テーブル106cに格納する。
以下の表示用のデータを近似曲線アルゴリズムの結果付属情報テーブル(以下、「近似曲線結果付属情報テーブル」と呼ぶ)に格納する。近似曲線結果付属情報テーブル106cには、異常判定結果を画面上にグラフとして表示する際に補足情報として表示するデータが格納される。異常判定対象案件のデータ自体とは異なり、異常判定対象案件のデータと比較するためのデータが格納される。格納されるデータは過去の案件のデータのみをもとに算出されたデータである。
図30(A)は、表示用データのデータ例を示しており、図30(B)は、表示用データに基づいて近似曲線結果付属情報テーブル106c格納される近似曲線結果付属情報の例を示す図である。近似曲線結果付属情報は、実行履歴ID、行番号、X、Y、上側閾値、下側閾値の項目を備えている。
ここで、実行履歴IDは、異常判定の1度の実行につき自動で割り振られるID、行番号は、表示用データを行ごとに0から連番を振ったもの、Xは、表示用データのX軸の値に相当するもの、Yは、表示用データのY軸の値に相当するもの、上側閾値は、表示用データの上側閾値、下側閾値は、表示用データの下側閾値である。
以上、判定結果データ(図26参照)と近似曲線結果付属情報(図30(B)参照)を用いて、異常を検知した場合には、異常検知のメッセージと異常判定結果のグラフ(例えば、折れ線グラフ)を表示する。図31は、異常検知のメッセージ例(図27と同じ)と異常判定結果のグラフの例を示している。異常判定結果のグラフの例では、横軸は、予定工期経過率[%]、縦軸は、実績進捗率[%]となっており、予測値、閾値(上側、下側)、B001がプロットされている。B001は、判定結果データに基づいて表示される。予測値、閾値(上側、下側)は、近似曲線結果付属情報に基づいて表示される。
[3-3.過去の案件の月別実績データの加工方法の選択肢]
図32~図41を参照して、過去の案件の月別実績データの加工方法の選択肢について説明する(上記本発明の特徴1)。上述したように、異常判定定義マスタ106aでスケール統一項目を設定できるようになっている。
図32は、異常判定定義マスタ106aの設定例を示す図である。X軸スケール統一項目に設定される想定の項目は、予定工期OR実施期間、Y軸スケール統一項目に設定される想定の項目は、予算OR実績額である。図32に示す異常判定定義マスタ106aの設定例は、建設工事業の1例だが、その他業種で利用される想定もあるため、図33に他業種の場合の設定例を示す。
図33(A)は、システム開発業の場合の1例を示しており、X軸項目「経過工数」、Y軸項目「累計売上計上額」、X軸スケール統一項目「予定工数OR実績工数」、Y軸スケール統一項目「見積金額OR売上額」となっている。
ここで、[経過工数[人日]]は、システム開発を初めてから掛かった工数である。[累計売上計上額[万円]]は、経過工数が経った時点での売上に計上された金額である。[予定工数[人日]]は、システム開発開始前に決まる、開発完了までに要する予定の工数である。[実績工数[人日]]は、システム開発完了後に決まる、開発完了までに要した工数である。[見積金額[万円]]は、システム開発開始前に決まる、開発完了時に売上として計上される予定の金額である。[売上額[万円]]は、システム開発完了後に決まる、開発完了時に計上されている売上額である。
図33(B)は、企業研修業界の場合の1例を示しており、X軸項目「研修経過日数」、Y軸項目「学習定着率」、X軸スケール統一項目「終了予定日数OR実際所要日数」、Y軸スケール統一項目「目標定着率OR実際定着率」となっている。
ここで、[研修経過日数[日]]は、研修開始から経過した日数である。[学習定着率[%]]は、研修経過日数時点でのチェックテスト等により把握される定着率である。[終了予定日数[日]]は、研修経過開始前に決まる、研修終了までの予定に日数である。[実際所要日数[日]]は、研修終了後に分かる、研修に要した日数である。[目標定着率[%]]は、研修開始前に決まる、受講者に達成してほしい目標の定着率である。[実際定着率[%]]は、研修終了後に分かる、受講者の実際の定着率である。
その他、本異常検知システムのユーザの業界に従って、X軸項目・Y軸項目・X軸スケール統一項目・Y軸スケール統一項目は自由に設定される。
図34(A)は、過去の案件の月別実績データの例を示す図である。図34(B)は、過去の案件の予定・実績データの例を示している。
図35を参照して、過去の案件のデータの加工方法を4通り説明する。異常判定定義マスタ106aのパラメータ設定により4つのパターンABCDに分類する。
A.X軸スケール統一項目:実施期間、Y軸スケール統一項目:実績額の場合
B.X軸スケール統一項目:予定工期、Y軸スケール統一項目:実績額の場合
C.X軸スケール統一項目:実施期間、Y軸スケール統一項目:予算の場合
D.X軸スケール統一項目:予定工期、Y軸スケール統一項目:予算の場合
パターンABCDに以下のようにパターン名を名付ける。パターンAを、「予定工期・予算厳格型」、パターンBを、「予定工期柔軟・予算厳格型」、パターンCを、「予定工期厳格・予算柔軟型」、パターンDを「予定工期・予算柔軟型」とする。
「厳格」・「柔軟」とは、案件完了時に予定工期や予算通りに完了したかをそれぞれ、厳格・柔軟にチェックすることを意味する。以下、各パターンA~Dの例を説明する。
(パターンA.予定工期・予算厳格型(X軸スケール統一項目:実施期間、Y軸スケール統一項目:実績額の場合))
図36及び図37を参照して、パターンAの予定工期・予算厳格型を説明する。以下では、A003に加工を行った例を説明する。図36(A)は、A003の月別実績データ、図36(B)は、A003の予定・実績データの例を示している。A003の月別実績データに対して加工を行い、経過月数/実施期間により実施期間経過率、累計実績額/実績額により実績進捗率を算出すると、図36(C)のようになる。
全ての過去の案件の月別実績データに加工を行うと、図37(A)に示すようになる。図37(B)は、図37(A)の過去の案件の月別実績データをグラフ化した図であり、図38(C)は、表示用データの計算処理後のグラフを示している。
過去の案件のX軸の値の最大値は全て100%となるため、以降の処理で算出される閾値はX値が100%付近で収束する。このため、異常判定対象案件が開始前の工期通りに完了することを厳格にチェックできる。また、過去の案件のY軸の値の最大値は全て100%となるため、以降の処理で算出される閾値はY値が100%付近で収束する。このため、異常判定対象案件が開始前の予算通りに完了することを厳格にチェックできる。
(パターンB.予定工期柔軟・予算厳格型 (X軸スケール統一項目:予定工期、Y軸スケール統一項目:実績額の場合))
図38及び図39を参照して、パターンBの予定工期柔軟・予算厳格型を説明する。以下では、A003に加工を行った例を説明する。図38(A)は、A003の月別実績データ、図38(B)は、A003の予定・実績データの例を示している。A003の月別実績データに対して加工を行い、経過月数/予定工期により予定工期経過率、累計実績額/実績額により実績進捗率を算出すると、図38(C)のようになる。
全ての過去の案件の月別実績データに加工を行うと、図39(A)に示すようになる。図39(B)は、図39(A)の過去の案件の月別実績データをグラフ化した図であり、図39(C)は、表示用データの計算処理後のグラフを示している。
過去の案件のX軸の値の最大値は120%となるため、以降の処理で算出される閾値はX値が120%付近で収束する。このため、異常判定対象案件が多少の遅れで完了しても正常な範囲内だと判定できるようになる。また、過去の案件のY軸の値の最大値は全て100%となるため、以降の処理で算出される閾値はY値が100%付近で収束する。このため、異常判定対象案件が開始前の予算通りに完了することを厳格にチェックできる。
(パターンC.予定工期厳格・予算柔軟型(X軸スケール統一項目:実施期間、Y軸スケール統一項目:予算の場合))
図40及び図41を参照して、パターンCの予定工期厳格・予算柔軟型を説明する。以下では、A003に加工を行った例を説明する。図40(A)は、A003の月別実績データ、図40(B)は、A003の予定・実績データの例を示している。A003の月別実績データに対して加工を行い、経過月数/実施期間により実施期間経過率、累計実績額/予算により予算進捗率を算出すると、図40(C)のようになる。
全ての過去の案件の月別実績データに加工を行うと、図41(A)に示すようになる。図41(B)は、図41(A)の過去の案件の月別実績データをグラフ化した図であり、図41(C)は、表示用データの計算処理後のグラフを示している。
過去の案件のX軸の値の最大値は全て100%となるため、異常判定対象案件が開始前の予定工期通りに完了することを厳格にチェックできる。また、過去の案件の完了時の予算進捗率は案件によって様々であるため、案件完了時に予算進捗率が100%から多少離れても異常検知されずに済むようになっている。
(パターンD.予定工期・予算柔軟型(X軸スケール統一項目:予定工期、Y軸スケール統一項目:予算の場合)
図42及び図43を参照して、パターンDの予定工期・予算柔軟型を説明する。以下では、A003に加工を行った例を説明する。図42(A)は、A003の月別実績データ、図42(B)は、A003の予定・実績データの例を示している。A003の月別実績データに対して加工を行い、経過月数/予定工期により予定工期経過率、累計実績額/予算により予算進捗率を算出すると、図42(C)のようになる。
全ての過去の案件の月別実績データに加工を行うと、図43(A)に示すようになる。図43(B)は、図43(A)の過去の案件の月別実績データをグラフ化した図であり、図43(C)は、表示用データの計算処理後のグラフを示している。
過去の案件の完了時の予定工期経過率と予算進捗率は案件によってさまざまであるため、閾値についても予定工期経過率の後期段階では閾値の幅を持たせて計算される。
[3-4.残差の平方に近似曲線を引き、その近似関数に平方根を取ることの意味]
図44~図46を参照して、残差の平方に近似曲線を引き、その近似関数に平方根を取ることの意味を説明する。
図44は、一般的なデータの散らばりの推定方法を説明するための図である。図43において、残差は平均0の標準正規分布に従うと考えて、残差の分散はσ2=(残差平方和)/(データ数)で推定値が計算される。標準偏差は分散に平方根を取ったものになり、σ=√(残差平方和)/(データ数)で計算される。(A)に示すように、この時、残差が-σ~+σの範囲にある確率は68%であると解釈できる。
図45は、残差のグラフを示しており、横軸は予定工期経過率[%]、縦軸は予測値差[%」となっている。散らばりがこの範囲に入る確率が68%だと解釈できるため、+σ,-σを使えば、閾値範囲を構成することができる。
図46の(A)において、分散を推定する時に出てきた以下の式であるσ2=(残差平方和)/(データ数)は残差の平方の平均を求める式になっており、残差の平方をプロットしたグラフで見ると、y=aの形の直線のグラフで近似した時の係数aに相当する。
残差の範囲を求めるために使われているσは、aに平方根を取ったものになるので、残差の平方の近似関数に平方根を取ったものは標準偏差関数として利用できる。しかし、上記の計算では、予定工期経過率に応じた残差のばらつきを表現できていない(案件進捗の初期や後期段階では残差が小さくなり、中期では残差が大きくなるという特徴を表現できていない)。
そこで、y=aの形の直線のグラフで近似している部分を、(B)に示すような関数に置き換えることで、予定工期経過率に応じた残差のばらつきを表現できるようにした。このように、直線のグラフで近似していた部分に独自の計算方法を導入した。
以上説明したように、本実施の形態によれば、過去の案件の月別実績データについて、案件識別情報毎に、X軸項目を前記過去の案件の予定・実績データのX軸スケール統一項目で割った経過率と、Y軸項目を前記過去の案件の予定・実績データのY軸スケール統一項目で割った進捗率を算出して加工し、また、異常判定対象案件の月別実績データについて、案件識別情報毎に、X軸項目を前記異常判定対象案件の予定・実績データの予定期間又は終了目標期間で割った経過率と、Y軸項目を前記異常判定対象案件の予定・実績データの予算又は目標で割った進捗率を算出して加工するデータ加工部102bと、加工後の過去の案件の月別実績データの全データに対する実績中心近似曲線を算出する近似曲線算出部102cと、算出した実績中心近似曲線からの加工後の過去の案件の月別実績データの全データの散らばりを計算し、計算した散らばりの傾向を表現する標準偏差曲線を算出し、実績中心近似曲線と標準偏差曲線に基づいて、閾値を算出する閾値算出部102dと、加工後の異常判定対象案件の月別実績データを、算出した閾値と比較して異常判定を行う異常判定部102eと、を備えているので、近似曲線を用いて、過去の案件の実績データに基づいて、対象の案件の進捗の積み上がり方の異常を高精度に検知することが可能となる。
[4.国連が主導する持続可能な開発目標(SDGs)への貢献]
本実施形態により、業務効率化や企業の適切な経営判断を推進することに寄与することができるので、SDGsの目標8及び9に貢献することが可能となる。
また、本実施形態により、廃棄ロス削減や、ペーパレス・電子化を推進することに寄与することができるので、SDGsの目標12、13及び15に貢献することが可能となる。
また、本実施形態により、統制、ガバナンス強化に寄与することができるので、SDGsの目標16に貢献することが可能となる。
[5.他の実施形態]
本発明は、上述した実施形態以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施形態にて実施されてよいものである。
例えば、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。
また、本明細書中や図面中で示した処理手順、制御手順、具体的名称、各処理の登録データや検索条件等のパラメータを含む情報、画面例、データベース構成については、特記する場合を除いて任意に変更することができる。
また、異常検知システム100に関して、図示の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。
例えば、異常検知システム100が備える処理機能、特に制御部にて行われる各処理機能については、その全部又は任意の一部を、CPU及び当該CPUにて解釈実行されるプログラムにて実現してもよく、また、ワイヤードロジックによるハードウェアとして実現してもよい。尚、プログラムは、本実施形態で説明した処理を情報処理装置に実行させるためのプログラム化された命令を含む一時的でないコンピュータ読み取り可能な記録媒体に記録されており、必要に応じて異常検知システム100に機械的に読み取られる。すなわち、ROM又はHDD(Hard Disk Drive)などの記憶部などには、OSと協働してCPUに命令を与え、各種処理を行うためのコンピュータプログラムが記録されている。このコンピュータプログラムは、RAMにロードされることによって実行され、CPUと協働して制御部を構成する。
また、このコンピュータプログラムは、異常検知システム100に対して任意のネットワークを介して接続されたアプリケーションプログラムサーバに記憶されていてもよく、必要に応じてその全部又は一部をダウンロードすることも可能である。
また、本実施形態で説明した処理を実行するためのプログラムを、一時的でないコンピュータ読み取り可能な記録媒体に格納してもよく、また、プログラム商品として構成することもできる。ここで、この「記録媒体」とは、メモリーカード、USB(Universal Serial Bus)メモリ、SD(Secure Digital)カード、フレキシブルディスク、光磁気ディスク、ROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable and Programmable Read Only Memory)、CD-ROM(Compact Disk Read Only Memory)、MO(Magneto-Optical disk)、DVD(Digital Versatile Disk)、及び、Blu-ray(登録商標) Disc等の任意の「可搬用の物理媒体」を含むものとする。
また、「プログラム」とは、任意の言語又は記述方法にて記述されたデータ処理方法であり、ソースコード又はバイナリコード等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、OSに代表される別個のプログラムと協働してその機能を達成するものをも含む。なお、実施形態に示した各装置において記録媒体を読み取るための具体的な構成及び読み取り手順ならびに読み取り後のインストール手順等については、周知の構成や手順を用いることができる。
記憶部に格納される各種のデータベース等は、RAM、ROM等のメモリ装置、ハードディスク等の固定ディスク装置、フレキシブルディスク、及び、光ディスク等のストレージ手段であり、各種処理やウェブサイト提供に用いる各種のプログラム、テーブル、データベース、及び、ウェブページ用ファイル等を格納する。
また、異常検知システム100は、既知のパーソナルコンピュータ又はワークステーション等の情報処理装置として構成してもよく、また、任意の周辺装置が接続された当該情報処理装置として構成してもよい。また、異常検知システム100は、当該装置に本実施形態で説明した処理を実現させるソフトウェア(プログラム又はデータ等を含む)を実装することにより実現してもよい。
更に、装置の分散・統合の具体的形態は図示するものに限られず、その全部又は一部を、各種の付加等に応じて又は機能負荷に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。すなわち、上述した実施形態を任意に組み合わせて実施してもよく、実施形態を選択的に実施してもよい。