異常と外れ値とは?

Anomaly Detection in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

インライヤー vs. アウトライヤー

  • 異常検知: 異常なデータ点を検出する
  • インライヤー:
    • 「通常」のデータ点
    • 大多数を占める
  • アウトライヤー:
    • ごくまれに発生
    • 統計的に異なる

2つの外れ値の例: 緑の畑の中の赤いチューリップと、白い棒の群れから離れた1本の黒い棒

Anomaly Detection in Python

異常としての地球

すべての惑星はインライヤー

とても遠方から見た天の川銀河の画像。

地球だけがアウトライヤー

地球の大気をレンズのように示し、生命の存在を示唆する地球の印象的な画像。

Anomaly Detection in Python

統計的定義

  • 異常に異なる
  • 特徴が大きく異なる
  • 外れ値かどうかは観察者が判断
Anomaly Detection in Python

異常検知の活用例

「security」という文字にマウスポインタが重なっている画像。

Anomaly Detection in Python

異常検知の活用例

青い手袋の手が青い液体の入った小さな薬品容器を持つ画像。

Anomaly Detection in Python

異常検知の活用例

男性が女性にVisaカードを渡し、女性が決済端末を持っている画像。

Anomaly Detection in Python

例のデータ

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Anomaly Detection in Python

平均と分散への影響

外れ値を除去したデータ

numbers_a = pd.Series([24, 46, ...])
numbers_a.mean()
33.33
numbers_a.var()
114.5

外れ値を含むデータ

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Anomaly Detection in Python

学習データ中の異常

  • 異常はノイズを生む
  • 新しいサブグループと誤認されうる
  • 本来のパターンを覆い隠す
Anomaly Detection in Python

外れ値検知と新奇検知

外れ値検知

  • 外れ値は学習データにのみ存在

新奇検知

  • 新奇は新しいデータにのみ存在
Anomaly Detection in Python

5数要約

import pandas as pd

big_mart = pd.read_csv("big_mart.csv")
sales = big_mart['sales']
sales.describe()
count     8523.000000
mean      2181.288914
std       1706.499616
min         33.290000
25%        834.247400
50%       1794.331000
75%       3101.296400
max      13086.964800
Anomaly Detection in Python

ヒストグラムを描く

import numpy as np
import matplotlib.pyplot as plt

# Find the square root of the length of sales
n_bins = np.sqrt(len(sales))
# Cast to an integer
n_bins = int(n_bins)


# Plot plt.figure(figsize=(8, 4)) plt.hist(sales, bins=n_bins, color='red')
Anomaly Detection in Python

生成されたヒストグラム

赤いビンで右に長い尾をもつ製品売上のヒストグラム。

Anomaly Detection in Python

散布図を描く

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Anomaly Detection in Python

生成された散布図

下半分に点群が密集し、上に向かうほど疎になる散布図。

Anomaly Detection in Python

Passons à la pratique !

Anomaly Detection in Python

Preparing Video For Download...