Anomalies và outliers là gì?

Phát hiện bất thường với Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inlier vs. outlier

  • Phát hiện bất thường: phát hiện điểm dữ liệu bất thường
  • Inliers:
    • Điểm dữ liệu “bình thường”
    • Chiếm đa số
  • Outliers:
    • Rất hiếm
    • Khác biệt về thống kê

Hai ví dụ về outlier: một bông tulip đỏ giữa cánh đồng xanh và một que đen đơn lẻ tách khỏi nhóm que trắng

Phát hiện bất thường với Python

Trái Đất như một bất thường

Mọi hành tinh đều là inlier

Ảnh Dải Ngân Hà nhìn từ rất xa.

Chỉ Trái Đất là outlier

Hình Trái Đất cho thấy có sự sống qua bầu khí quyển như thấu kính.

Phát hiện bất thường với Python

Định nghĩa thống kê

  • Khác biệt bất thường
  • Có đặc trưng khác biệt đáng kể
  • Người phân tích quyết định một điểm có là outlier không
Phát hiện bất thường với Python

Ứng dụng của phát hiện bất thường

Hình chữ “security” với con trỏ chuột di lên trên.

Phát hiện bất thường với Python

Ứng dụng của phát hiện bất thường

Hình bàn tay đeo găng xanh cầm lọ hóa chất chứa dung dịch xanh.

Phát hiện bất thường với Python

Ứng dụng của phát hiện bất thường

Hình một người đàn ông đưa thẻ Visa cho một phụ nữ cầm máy thanh toán.

Phát hiện bất thường với Python

Ví dụ dữ liệu

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Phát hiện bất thường với Python

Mean và variance bị ảnh hưởng

Dữ liệu đã loại bỏ outlier

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

Dữ liệu có outlier

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Phát hiện bất thường với Python

Bất thường trong dữ liệu huấn luyện

  • Bất thường tạo nhiễu
  • Dễ bị nhầm là một nhóm con mới
  • Làm lệch sự chú ý khỏi mẫu thực
Phát hiện bất thường với Python

Outlier vs. novelty detection

Phát hiện outlier

  • Outlier chỉ có trong dữ liệu huấn luyện

Phát hiện novelty

  • Novelty chỉ xuất hiện trong dữ liệu mới
Phát hiện bất thường với Python

Tóm tắt 5 số

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
Phát hiện bất thường với Python

Vẽ histogram

import numpy as np
import matplotlib.pyplot as plt

# Tìm căn bậc hai của độ dài sales
n_bins = np.sqrt(len(sales))
# Ép kiểu về số nguyên
n_bins = int(n_bins)


# Vẽ biểu đồ plt.figure(figsize=(8, 4)) plt.hist(sales, bins=n_bins, color='red')
Phát hiện bất thường với Python

Histogram thu được

Histogram doanh số sản phẩm với cột đỏ và đuôi phải dài.

Phát hiện bất thường với Python

Vẽ scatterplot

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Phát hiện bất thường với Python

Scatterplot thu được

Biểu đồ phân tán cho thấy đám điểm dày ở nửa dưới và thưa dần về phía trên.

Phát hiện bất thường với Python

Ayo berlatih!

Phát hiện bất thường với Python

Preparing Video For Download...