Anomaly และ Outlier คืออะไร?

การตรวจจับความผิดปกติใน Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliers vs. Outliers

  • การตรวจจับ Anomaly: ตรวจหาจุดข้อมูลที่ผิดปกติ
  • Inliers:
    • จุดข้อมูล "ปกติ"
    • เป็นข้อมูลส่วนใหญ่
  • Outliers:
    • พบได้น้อยมาก
    • แตกต่างทางสถิติ

ตัวอย่าง Outlier 2 แบบ: ดอกทิวลิปสีแดงในทุ่งสีเขียว และไม้สีดำแยกออกจากกลุ่มไม้สีขาว

การตรวจจับความผิดปกติใน Python

โลกในฐานะ Anomaly

ดาวเคราะห์ทุกดวงเป็น Inliers

ภาพกาแล็กซีทางช้างเผือกจากระยะไกล

โลกเท่านั้นที่เป็น Outlier

ภาพโลกที่สะท้อนให้เห็นสัญญาณของสิ่งมีชีวิตผ่านชั้นบรรยากาศ

การตรวจจับความผิดปกติใน Python

นิยามทางสถิติ

  • แตกต่างผิดปกติ
  • มีคุณลักษณะต่างจากข้อมูลอื่นอย่างมีนัยสำคัญ
  • ผู้สังเกตเป็นผู้ตัดสินว่าจุดข้อมูลใดเป็น Outlier
การตรวจจับความผิดปกติใน Python

การประยุกต์ใช้การตรวจจับ Anomaly

ภาพข้อความว่า "security" พร้อมเคอร์เซอร์เมาส์วางอยู่เหนือ

การตรวจจับความผิดปกติใน Python

การประยุกต์ใช้การตรวจจับ Anomaly

ภาพมือสวมถุงมือสีฟ้าถือภาชนะเคมีขนาดเล็กบรรจุของเหลวสีฟ้า

การตรวจจับความผิดปกติใน Python

การประยุกต์ใช้การตรวจจับ Anomaly

ภาพชายส่งบัตร Visa ให้ผู้หญิงที่ถือเครื่องชำระเงิน

การตรวจจับความผิดปกติใน Python

ข้อมูลตัวอย่าง

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
การตรวจจับความผิดปกติใน Python

ผลกระทบต่อค่าเฉลี่ยและความแปรปรวน

ข้อมูลที่ไม่มี Outlier

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

ข้อมูลที่มี Outlier

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
การตรวจจับความผิดปกติใน Python

Anomaly ในข้อมูลฝึก

  • Anomaly ก่อให้เกิดสัญญาณรบกวน
  • อาจถูกตีความเป็นกลุ่มย่อยใหม่
  • ดึงความสนใจออกจากรูปแบบที่แท้จริง
การตรวจจับความผิดปกติใน Python

Outlier Detection vs. Novelty Detection

Outlier Detection

  • Outliers มีอยู่เฉพาะในข้อมูลฝึกเท่านั้น

Novelty Detection

  • Novelties มีอยู่เฉพาะในข้อมูลใหม่เท่านั้น
การตรวจจับความผิดปกติใน 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
การตรวจจับความผิดปกติใน 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')
การตรวจจับความผิดปกติใน Python

ผลลัพธ์ฮิสโตแกรม

ฮิสโตแกรมยอดขายสินค้า แท่งสีแดงและหางยาวด้านขวา

การตรวจจับความผิดปกติใน Python

พล็อต Scatterplot

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
การตรวจจับความผิดปกติใน Python

ผลลัพธ์ Scatterplot

Scatterplot แสดงกลุ่มจุดที่หนาแน่นในครึ่งล่างและกระจายตัวขึ้นด้านบน

การตรวจจับความผิดปกติใน Python

มาฝึกกันเถอะ!

การตรวจจับความผิดปกติใน Python

Preparing Video For Download...