ふくふくHukuhuku Inc.
EP.01Anomaly 10分公開: 2026-05-10

異常検知の基本:3σ・四分位法と「正常」の定義

「outlier」は数学では「正常から外れた値」だが、ビジネスでは「対処すべき値」に変換しないと意味がない。本シリーズの開幕として、異常検知の3つの問い ── 何を異常とみなすか・どう検出するか・誰が対処するか ── を整理する。

#異常検知#outlier#
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

異常検知(Anomaly Detection / Outlier Detection)── データの中から「普段と違う」点を見つける技術。不正検知・故障予測・ 障害対応・データ品質まで応用範囲は広い。本シリーズでは古典統計手法から Isolation Forest・LOF・オートエンコーダまで、現場で本当に使われる手法を1つずつ扱います。

異常検知が答えるべき3つの問い

  1. 1何を異常とみなすか:絶対値の高低 / 普段との乖離 / 関係性の崩壊 / 前兆パターン
  2. 2どう検出するか:統計的手法 / 機械学習 / ルールベース / ハイブリッド
  3. 3誰がいつ対処するか:自動アクション / オペレーター通知 / 経営判断 ── 検出の先のフローまで設計

1. 3σ rule(最も古く、最も誤用される手法)

「平均 ± 3標準偏差を外れたら異常」正規分布であれば、99.7%のデータが ±3σ に収まることを前提にしています。実装は最も簡単。

3σ rule で異常検知
Python
import numpy as np
def detect_3sigma(values: np.ndarray) -> np.ndarray:    """True/False 配列を返す(True が異常)"""    mu, sigma = values.mean(), values.std()    return np.abs(values - mu) > 3 * sigma
3σ の落とし穴

実データの多くは正規分布ではありません。売上・滞在時間・課金額のように 裾が重い分布(log-normal や Pareto)では、3σ rule は明らかに正常な値も異常と判定してしまう。さらに、外れ値自体が平均と分散を引っ張るmasking)ため、本物の異常が見逃される。

2. IQR ベース(Tukey's fence)

より実践的なのが IQR(Interquartile Range) ベースの手法。Q1(25%点)と Q3(75%点)の幅 = IQR を使い、Q1 - 1.5×IQR 未満 / Q3 + 1.5×IQR 以上を異常とする。外れ値の影響を受けないため安定。

IQR rule で異常検知
Python
def detect_iqr(values: np.ndarray, k: float = 1.5) -> np.ndarray:    q1, q3 = np.percentile(values, [25, 75])    iqr = q3 - q1    lower, upper = q1 - k * iqr, q3 + k * iqr    return (values < lower) | (values > upper)

k=1.5 が標準ですが、保守的に拾いたければ k=3.0(外れ値スコア)に上げる。 EP.05 のボックスプロットの「」表示はこれを使っています。

3. Modified Z-score(MAD ベース)

3σ の改良版標準偏差の代わりに MAD(Median Absolute Deviation) を使うことで、外れ値の影響を受けにくくする。

Modified Z-score
Python
def detect_modified_z(values: np.ndarray, threshold: float = 3.5) -> np.ndarray:    median = np.median(values)    mad = np.median(np.abs(values - median))    if mad == 0:        return np.zeros(len(values), dtype=bool)    modified_z = 0.6745 * (values - median) / mad    return np.abs(modified_z) > threshold

古典手法の使い分け

手法前提強み弱み
正規分布実装最易裾の重い分布で破綻
IQR対称分布安定、ボックスプロットと一致強い歪みでも限界あり
Modified Z対称分布、外れ値多めOKMAD でロバスト計算コストやや増
% タイルなし実装最易、定義明快「外れ値」の理論的保証なし

本シリーズのロードマップ

全 10 話の構成
EPテーマ
01古典手法(本記事)
02Z-score / Modified Z-score の使い分け
03Isolation Forest と LOF(教師なし機械学習)
04時系列の異常検知:STL分解 / Prophet
05多変量異常検知:PCA / Mahalanobis 距離
06オートエンコーダによる異常検知
07ストリーミング異常検知(リアルタイム)
08異常検知の評価指標(ラベルなし / ありのケース)
09ビジネス活用:不正検知・故障予測・SRE
10異常検知パイプラインの構築・運用

次回予告

EP.02 では Z-score の改良版を深掘り。Modified Z-score だけでなく、 Z-score業務文脈での閾値設計を扱います。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp