Trong thế giới dữ liệu rộng lớn, việc xác định và xử lý dữ liệu ngoại lai (outliers) đóng vai trò then chốt để đảm bảo tính chính xác và độ tin cậy của các mô hình dự đoán cũng như các báo cáo kinh doanh. Bài viết này sẽ cung cấp một cái nhìn toàn diện về outliers, tầm quan trọng của việc xử lý chúng và các phương pháp thực tiễn để loại bỏ outliers, đặc biệt với việc sử dụng MySQL.
Mục Lục
Outliers (Dữ liệu ngoại lai) là gì?
Outliers là những điểm dữ liệu khác biệt đáng kể so với phần lớn các điểm dữ liệu còn lại trong tập dữ liệu. Sự khác biệt này có thể thể hiện qua giá trị hoặc thuộc tính. Để dễ hình dung, hãy xem xét các ví dụ sau:
- Dữ liệu 2 chiều:
Ví dụ về Outliers cho dữ liệu 2 chiều
Alt text: Biểu đồ phân tán thể hiện dữ liệu ngoại lai (outliers) trong không gian hai chiều.
- Dữ liệu 1 chiều:
Ví dụ về Outliers cho dữ liệu 1 chiều
Alt text: Phân bố dữ liệu một chiều minh họa các giá trị ngoại lai nằm ngoài phạm vi phân bố chính.
Ví dụ thực tế:
- Trong một lớp học, hầu hết học sinh đạt điểm từ 5 đến 7, nhưng có một học sinh đạt điểm 1 và một học sinh đạt điểm 10. Điểm 1 và 10 là outliers.
- Một công ty B2B có nhiều khách hàng, nhưng có một khách hàng đến từ nước ngoài với hành vi mua hàng khác biệt. Khách hàng này có thể xem là một outlier về thuộc tính khách hàng.
Outliers dựa thuộc tính của dữ liệu
Alt text: Minh họa dữ liệu ngoại lai dựa trên sự khác biệt về thuộc tính trong tập dữ liệu.
Tại sao cần xác định và loại bỏ outliers?
Dữ liệu ngoại lai có thể xuất hiện do nhiều nguyên nhân khác nhau:
- Lỗi nhập liệu: Sai sót trong quá trình nhập hoặc chỉnh sửa dữ liệu (ví dụ: thêm/thiếu số 0).
- Dữ liệu ảo: Giá trị được tạo ra để thử nghiệm hoặc làm mồi nhử (ví dụ: giá nhà ảo).
- Sự kiện bất thường: Các yếu tố bên ngoài ảnh hưởng đến dữ liệu (ví dụ: doanh số tăng đột biến do sự kiện cộng đồng).
Việc xử lý outliers phụ thuộc vào nguyên nhân và mục đích sử dụng dữ liệu:
- Loại bỏ: Cần thiết để tăng độ chính xác của mô hình/báo cáo khi outliers là do lỗi hoặc dữ liệu ảo.
- Giữ lại: Có thể hữu ích để phát hiện tiềm năng mới (ví dụ: phân tích nguyên nhân doanh số tăng đột biến).
Phương pháp xác định Outliers: Extreme Value Analysis
Trong bài viết này, chúng ta tập trung vào việc xác định outliers dựa trên giá trị quá cao hoặc quá thấp so với phần lớn dữ liệu. Phương pháp được sử dụng là Extreme Value Analysis, xác định các điểm dữ liệu có giá trị cực trị so với giá trị trung bình.
Ví dụ: Sử dụng bộ dữ liệu SuperStore Sales để tìm outliers dựa trên tổng giá trị hóa đơn tại mỗi bang.
Ví dụ về Outliers cho dữ liệu 1 chiều
Alt text: Mô tả phương pháp phân tích giá trị cực trị (Extreme Value Analysis) trong việc xác định outliers.
Các bước xác định Outliers
-
Phác họa dữ liệu (Visualize/plot data): Sử dụng biểu đồ để phát hiện outliers (ví dụ: dashboard Tableau).
-
Tính tổng giá trị (Sum): Tính tổng giá trị cần phân tích (ví dụ: tổng giá trị mỗi order).
-
Tính giá trị trung bình (Average/Mean) và độ lệch chuẩn (Standard Deviation): Xác định giá trị trung tâm và độ phân tán của dữ liệu.
Outliers dựa thuộc tính của dữ liệuAlt text: Giải thích mối quan hệ giữa độ lệch chuẩn (Standard Deviation) và phân bố dữ liệu.
-
Tính giá trị biên (Upper/Lower whisker): Xác định ngưỡng trên và ngưỡng dưới để phân biệt dữ liệu chuẩn và outliers.
Upper_whisker = AVG + STDV * StepsLower_whisker = AVG – STDV * Steps
Trong đó,
Stepslà một số tự nhiên, thường bắt đầu với 3 (tương đương 3 độ lệch chuẩn). -
Xác định outliers: So sánh giá trị của mỗi điểm dữ liệu với giá trị biên. Nếu nằm ngoài khoảng giữa Upper và Lower whisker, đó là outlier.
If Sum_sale > Upper_whisker or Sum_sale < Lower_whisker then ‘Outlier’ else ‘Expected’
-
Tính toán sau khi loại bỏ outliers: Thực hiện lại các phép tính cần thiết sau khi đã loại bỏ outliers.
-
Kiểm tra và điều chỉnh giá trị Step: So sánh kết quả trước và sau khi loại bỏ outliers, đồng thời xem xét số lượng dữ liệu còn lại. Điều chỉnh giá trị
Stepsđể tăng/giảm số lượng dữ liệu nếu cần thiết.
Hướng dẫn xác định và loại bỏ outliers bằng SQL
Đoạn mã SQL dưới đây minh họa cách xác định và loại bỏ outliers bằng MySQL, sử dụng CTE (Common Table Expression):
-- Bước 0: Sử dụng Tableau dashboard để trực quan hóa dữ liệu (đã thực hiện)
-- Bước 1: Tính tổng giá trị mỗi order
WITH sales_per_order AS (
SELECT
Order_ID,
State,
SUM(Sales) AS total_order_sales
FROM
your_table -- Thay 'your_table' bằng tên bảng của bạn
GROUP BY
Order_ID,
State
),
-- Bước 2: Tính avg và standard deviation dựa trên total_order_sales và State
avg_std AS (
SELECT
State,
SUM(total_order_sales) AS sum_sales,
COUNT(*) AS number_of_orders,
AVG(total_order_sales) AS avg_sales,
STDDEV(total_order_sales) AS std_sales
FROM
sales_per_order
GROUP BY
State
),
-- Bước 3: Tính Upper whisker và Lower whisker mỗi state
-- upper_whisker = avg + std * steps
-- lower_whisker = avg - std * steps
-- Mặc định steps = 3
upper_lower_whisker AS (
SELECT
State,
std_sales,
avg_sales,
number_of_orders,
(avg_sales + std_sales * 3) AS upper_whisker,
CASE
WHEN (avg_sales - std_sales * 3) < 0 THEN 0
ELSE (avg_sales - std_sales * 3)
END AS lower_whisker
FROM
avg_std
),
-- Bước 4: Xác định order là outliers
-- So sánh total_order_sales với upper và lower
find_outliers AS (
SELECT
spo.Order_ID,
spo.State,
spo.total_order_sales,
ulh.number_of_orders,
ulh.avg_sales,
ulh.std_sales,
ulh.upper_whisker,
ulh.lower_whisker,
CASE
WHEN spo.total_order_sales > ulh.upper_whisker OR spo.total_order_sales < ulh.lower_whisker THEN 'Outlier'
ELSE 'Expected'
END AS Outlier_status
FROM
sales_per_order AS spo
LEFT JOIN
upper_lower_whisker AS ulh
ON
spo.State = ulh.State
)
-- Bước 5: Tính lại giá trị trung bình của mỗi order sau khi loại bỏ các outliers (chỉ giữ lại Expected)
SELECT
State,
number_of_orders,
std_sales,
upper_whisker,
lower_whisker,
avg_sales,
AVG(total_order_sales) AS avg_sales_no_outliers,
COUNT(*) AS new_number_of_orders,
(COUNT(*) / number_of_orders) * 100 AS remaining_data
FROM
find_outliers
WHERE
Outlier_status = 'Expected'
GROUP BY
State,
number_of_orders;
Sau khi chạy đoạn mã trên, bạn sẽ thấy giá trị trung bình mỗi hóa đơn giảm đáng kể ở nhiều bang sau khi loại bỏ outliers. Bạn có thể kiểm tra và so sánh kết quả với dashboard Tableau để xác định những order nào đã bị loại bỏ.
Tổng kết và thực hành
Bài viết này đã cung cấp kiến thức cơ bản về outliers, tầm quan trọng của việc xử lý chúng và các bước thực tế để xác định và loại bỏ outliers bằng phương pháp Extreme Value Analysis và SQL.
Bài tập thực hành:
Sử dụng bộ dữ liệu SuperStore Sales, hãy thực hiện phân tích outliers với câu hỏi sau:
“Tính trung bình tổng giá trị mỗi order của mỗi tháng trong năm.”
Chúc bạn thành công!
