予測分析 (機械学習)
目次
概要
予測分析画面は、時系列タグデータを学習して将来値を予測し、異常値(異常診断)を検知します。オペレータが GUI で学習区間・サンプリング周期・アルゴリズムを選択するだけで、結果をチャートと表で即座に確認できます。
この画面は次の分析に使用します。
- 今後 N 時点のタグ値の予測(需要予測・生産量予測など)
- 過去データから統計的に逸脱した異常値の検知
- アラームルールのしきい値を決めるための基準分析
パス: 現在の統合サイドバーには標準メニューとして表示されない場合があります。内部 URL は /forecast/index で、画面タイトルは 機械学習 です。
本ドキュメントは予測・異常診断の付加画面を説明します。左メニューを基準とした運用フローは コンソール操作と共通画面 を先にご参照ください。
画面構成
┌──────────────────────────────────────────────────────────────────┐
│ 🧠 기계학습 │ ← ① 상단
├─────────────────────┬────────────────────────────────────────────┤
│ │ │
│ 📄 양식 │ 📈 기계학습 결과 │
│ ───────────────── │ ────────────────────────────────────────│
│ ◯ 대상 태그 선택 │ [학습 데이터] [이상진단 건수] [실행 시간] │ ← 요약 카드
│ • 태그명 입력 │ │
│ │ ┌──────────────────────────────────────┐ │
│ ◯ 데이터 구간 │ │ │ │
│ • 학습 구간 (날짜) │ │ 결과 차트 (520px) │ │
│ • 샘플링 주기 │ │ │ │
│ │ └──────────────────────────────────────┘ │
│ ◯ 기계학습 속성 │ │
│ • 예측 알고리즘 │ ◯ 예측 데이터 (테이블) │
│ • 예측 갯수 │ ◯ 이상진단 데이터 (테이블) │
│ • 이상진단 알고리즘 │ │
│ • 개연성 │ │
│ │ │
│ [🚀 기계학습 시작] │ │
└─────────────────────┴────────────────────────────────────────────┘
| 領域 | 位置 | 表示 |
|---|---|---|
| ① 上部 | 全幅 | ページタイトル |
| ② 左側 | col-lg-3 | フォーム(入力フォーム) — 4 fieldset + 開始ボタン |
| ③ 右側 | col-lg-9 | 機械学習結果 — サマリーカード3種 + チャート + 2つの結果テーブル |
上部 — ページタイトル
| 項目 | 表示 |
|---|---|
| ページタイトル | 🧠 「機械学習」 |
左側 — フォーム(入力フォーム)
左パネルのフォームは 4 グループ(<fieldset>)で構成されます。
1) 対象タグの選択
| 入力 | name | 幅 | placeholder | 説明 |
|---|---|---|---|---|
| タグ名 | tag_name | 250px (青ボーダー 2px) | 「タグ名を入力」 | 登録済みタグ一覧から自動補完で選択。選択と同時に hidden フィールド tag_id に保存 |
入力欄の右側には 🧭 アイコン + 「機械学習を実行するタグを選択してください。」という案内文が表示されます。
2) データ区間
| 入力 | name | 幅 | 説明 |
|---|---|---|---|
| 学習区間 | learning_time | 250px (中央揃え、太字) | 開始~終了日時。クリックすると日付範囲選択が表示。フォーム送信時は hidden フィールド learning_date_from / learning_date_to で送信 |
| サンプリング周期 | term | 200px | セレクタ — 「サンプリング周期」オプション (例: 1_MIN / 5_MIN / 30_MIN / 1_HOUR / 1_DAY などシステムに定義された周期一覧) |
サンプリングとは?
| オプション | 意味 |
|---|---|
| 原本(RAW) | すべてのデータポイントをそのまま学習 — データ量が多く変動の速いタグ向け |
| サンプリング(スナップショット) | 一定周期ごとに代表値1つを抽出して学習 — 長期間の学習・計算コストを削減 |
hidden セレクタで
sampling="LAST"が既定設定されます(最後の値を代表値として使用)。
3) 機械学習プロパティ
予測アルゴリズム (forecast_algorithm)
| オプション | ラベル | 特性 |
|---|---|---|
LINEAR_REGRESSION (既定) | Linear regression | 単純な線形トレンド — 高速で解釈が容易 |
ARIMA | Auto-regressive Integrated Moving Average | 時系列の自己相関・季節性を活用 |
SMO_REG | Support vector machine for regression | 非線形パターン、ノイズに強い |
GAUSSIAN_PROCESSES | Stochastic process | 確率的予測 + 不確実性の推定 |
予測件数 (forecast_count)
| 入力 | 幅 | 説明 |
|---|---|---|
| テキスト入力 | 200px (右揃え) | 予測する結果の件数(タイムスタンプ単位) |
例: サンプリング周期
1_HOUR+ 予測件数24= 今後24時間の予測
異常診断アルゴリズム (abnomal_algorithm)
| オプション | ラベル | 特性 |
|---|---|---|
EGADS (既定) | Seasonal-naive-based | 季節性を反映、運用データに一般的 |
DBSCAN | Cluster-based | クラスタから外れる点を異常値とする |
GAUSS_BASED | Statistical-based | 正規分布に基づく統計的異常値検知 |
HIL_OUT | Distance-based | 距離ベースの異常値 |
尤度フィルタ (probability_filter)
| 入力 | 幅 | 意味 |
|---|---|---|
| テキスト入力 | 200px (右揃え) | 0~1 のしきい値。尤度がこの値以上のデータのみを異常データと判定 |
例:
0.95を入力すると尤度 95% 以上の強い異常値のみを検知。値が小さいほど多くの異常値を捕捉しますが、誤検知が増えます。
4) 機械学習開始ボタン
| ボタン | 幅 | 動作 |
|---|---|---|
| 🚀 機械学習開始 | 250px (青) | 入力検証後、バックエンドに学習を要求。実行中は右側のチャート領域に進行状況を表示。完了すると結果チャートと2つのテーブルが埋まる |
右側 — 機械学習結果
サマリーカード3種
チャート上部の横型3分割カード(total_ml_co)。
| カード | ID | 表示 |
|---|---|---|
| 学習データ | result_learning_count | 学習に使用されたデータポイント数 |
| 異常診断件数 | result_abnomal_count | 検知された異常値の件数 |
| 実行時間 | result_text | 学習+予測処理に要した時間 |
実行前はすべて
-と表示されます。実行直後に自動で埋まります。
結果チャート
チャート領域(data_chart、幅 100% × 高さ 520px)に以下が1画面で描画されます。
| シリーズ | 意味 |
|---|---|
| 学習区間の実測値 | 入力した学習期間の原本時系列 |
| 予測値 | 学習後に予測した将来 N 時点 |
| 予測上限 (LIMIT_MAX) | 予測信頼区間の上限 |
| 予測下限 (LIMIT_MIN) | 予測信頼区間の下限 |
| 異常値マーカー | 異常診断で検知した時点に個別表示 |
チャートが空の場合は案内文が表示されます。
🤖 [機械学習イラスト]
対象タグを選択のうえ、機械学習を開始してください。
予測データテーブル
<fieldset> の 予測データ ラベル下のテーブル(forecast_data_table)。
| カラム | 幅 | 表示 |
|---|---|---|
| No. | 60px | 行番号 |
| タイムスタンプ | 200px | 予測時点 |
| 予測値 | 自動 | アルゴリズムが算出した予測値 |
| WEIGHT | 自動 | 予測の重み(アルゴリズムごとに意味が異なる) |
| LIMIT_MIN | 自動 | 予測下限 |
| LIMIT_MAX | 自動 | 予測上限 |
異常診断データテーブル
<fieldset> の 異常診断データ ラベル下のテーブル(abnomal_data_table)。
| カラム | 幅 | 表示 |
|---|---|---|
| No. | 60px | 行番号 |
| タイムスタンプ | 200px | 異常値が検知された時点 |
| 異常診断値 | 200px | その時点の実測値 |
| 尤度 (PROBABILITY) | 自動 | 異常値の確信度 (0~1、1 に近いほど強い異常値) |
予測・異常診断アルゴリズム選択ガイド
運用データに適したアルゴリズムを選ぶ際の参考にしてください。
予測アルゴリズム
| データ特性 | 推奨アルゴリズム |
|---|---|
| 単調な増加/減少トレンド | LINEAR_REGRESSION |
| 日/週単位の反復パターン | ARIMA |
| 非線形でノイズが大きいデータ | SMO_REG |
| 予測の不確実性も併せて確認したい場合 | GAUSSIAN_PROCESSES |
異常診断アルゴリズム
| データ特性 | 推奨アルゴリズム |
|---|---|
| 季節性のある一般的な運用データ | EGADS (既定) |
| 多次元クラスタ分析が適した多変量 | DBSCAN |
| 正規分布に近い安定データ | GAUSS_BASED |
| 点間距離ベース(大域/局所異常) | HIL_OUT |
尤度フィルタガイド
| 値 | 効果 |
|---|---|
0.5 | 弱い異常値まで検知 (誤検知の可能性 ↑) |
0.8 | 一般的な運用に適する |
0.95 | 強い異常値のみ検知 (確実な異常のみ) |
0.99 | 非常に強い異常値のみ (誤検知はほぼ無し、見逃しの可能性 ↑) |
活用シナリオ
| シナリオ | 設定例 |
|---|---|
| モータ温度の24時間予測 | タグ=MOTOR-001.TEMP / 学習 7日 / サンプリング 1時間 / LINEAR_REGRESSION / 予測 24件 |
| エネルギー消費の1週間予測 | タグ=POWER.kWh / 学習 30日 / サンプリング 1時間 / ARIMA / 予測 168件 |
| 品質測定値の異常値検知 | タグ=QUALITY.SCORE / 学習 14日 / サンプリング 5分 / EGADS / 尤度 0.9 |
| 振動センサの異常検出 | タグ=VIB-001.RMS / 学習 7日 / サンプリング RAW / DBSCAN / 尤度 0.95 |
| アラームしきい値の決定 | 安定運用1週間を学習 → GAUSS_BASED の LIMIT_MAX をアラームしきい値として採用 |
よくある質問
Q. 学習を開始しても結果がなかなか出ません。 A. 学習区間が長い、またはサンプリング周期が短いと時間がかかります。初回は学習区間を1~3日 + サンプリング周期1時間程度に軽く設定して時間を計測してください。
Q. 予測値が平坦になりすぎます。
A. 学習アルゴリズムが LINEAR_REGRESSION の場合は単調なトレンドのみを捉えます。周期性のあるデータであれば ARIMA に変更してみてください。
Q. 異常値が多すぎる / 少なすぎる。 A. 尤度フィルタ の値を調整してください。多すぎる場合は 0.9~0.95 に上げ、少なすぎる場合は 0.5~0.7 に下げてください。
Q. 学習区間が短いのは問題ですか? A. 学習区間が短すぎるとモデルが十分なパターンを学習できません。一般に 予測件数の10倍以上 を学習区間として設定することを推奨します。
Q. 結果テーブルの WEIGHT カラムは何を意味しますか? A. アルゴリズムによって異なります。回帰モデルでは予測の重み、確率モデルでは信頼度の尺度として使われます。一般のオペレータは LIMIT_MIN/LIMIT_MAX の信頼区間に着目していただければ十分です。
Q. 結果を他の人に渡したいのですが。 A. チャートはチャートのダウンロードアイコンから PNG 画像として、テーブルはブラウザの表コピーまたは右クリックメニューからコピーしてご利用ください。(CSV ダウンロードボタンは現在無効です)
Q. 同じタグで複数のアルゴリズムを比較したいです。 A. 各アルゴリズムで1回ずつ実行し、チャートの PNG を保存して外部ツールで並べて比較してください。異常診断アルゴリズムでは EGADS↔DBSCAN の比較がよく用いられます。
Q. 予測結果をアラームルールのしきい値として使えますか? A. はい。安定した学習結果の LIMIT_MAX/LIMIT_MIN を アラーム の EQL アラームしきい値に移して使うことで、統計ベースのしきい値を自動化できます。
Q. 学習結果を自動でアラームバンドに反映できますか?
A. はい。フロー の flow_update_tag_alarm_band_numeric ノードを結線して自動化できます。