0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Nhận Diện và Đối Phó với Hiện Tượng Data Drift trong Pipeline MLOps

Đăng vào 1 tháng trước

• 4 phút đọc

Giới Thiệu

Trong lĩnh vực học máy, có thể bạn đã từng trải qua tình trạng model hoạt động tốt vào một thời điểm nhưng lại trở nên kém hiệu quả theo thời gian. Hiện tượng này được gọi là data drift và thường xảy ra khi dữ liệu thay đổi, không còn phù hợp với model ban đầu. Bài viết này sẽ giúp bạn hiểu rõ hơn về hiện tượng data drift, tác động của nó, và cách tự động phát hiện dữ liệu bị drift trong pipeline MLOps.

Data Drift Là Gì?

Data drift đề cập đến sự thay đổi trong phân phối của dữ liệu theo thời gian. Khi chúng ta huấn luyện model học máy trên một tập dữ liệu cụ thể, các siêu tham số (hyperparameters) sẽ được điều chỉnh để phù hợp nhất với tập dữ liệu đó. Tuy nhiên, vì dữ liệu liên tục thay đổi, không có gì đảm bảo rằng tính chất thống kê của một tập dữ liệu mới sẽ tương đồng với tập dữ liệu cũ.

Ví Dụ Về Data Drift

  • Dữ liệu kinh doanh: Sự kiện không lường trước, như đại dịch COVID-19, có thể làm thay đổi dữ liệu một cách đột ngột.
  • Dữ liệu nhân khẩu học: Chiều cao của thanh thiếu niên tại Việt Nam sẽ có sự khác biệt rõ rệt giữa năm 2000 và 2020 do thay đổi về chế độ dinh dưỡng.

Sự thay đổi trong tính chất của dữ liệu đó được gọi chung là data drift.

Cách Phát Hiện Data Drift

Có nhiều phương pháp để phát hiện hiện tượng data drift, nhưng một trong những phương pháp hiệu quả và dễ hiểu nhất là sử dụng kiểm định Kolmogorov-Smirnov (K-S Test). Phương pháp này giúp xác định xem hai phân phối dữ liệu có khác nhau hay không. Ký hiệu cho sự khác biệt phân phối giữa hai mẫu là:

$$D_{KS} = \sup_{x} |F_{1}(x) - F_{2}(x)|$$

  • Trong đó:
    • $F_{1}(x)$ là hàm phân phối tích lũy của dữ liệu lịch sử.
    • $F_{2}(x)$ là hàm phân phối tích lũy của dữ liệu mới.

Nếu giá trị $D_{KS}$ lớn, đó là dấu hiệu rõ ràng cho thấy sự tồn tại của data drift.

Kiểm Định Giả Thuyết

Lập luận kiểm định sẽ được đưa ra như sau:

  • Giả thuyết không ($H_0$): Hai mẫu dữ liệu được lấy ra từ cùng một phân phối.
  • Giả thuyết thay thế ($H_1$): Hai mẫu dữ liệu không được lấy ra từ cùng một phân phối.

Data drift xảy ra khi chúng ta bác bỏ $H_0$ với p-value nhỏ hơn mức ý nghĩa đã chọn (ví dụ 0.05).

Phát Hiện Data Drift Với Python

Để phát hiện data drift, chúng ta có thể sử dụng thư viện scipy trong Python. Đây là một thư viện quen thuộc chứa nhiều hàm thống kê hữu ích.

Cài Đặt

Bạn có thể cài đặt thư viện này bằng cách sử dụng lệnh:

Copy
pip install scipy

Sử Dụng Hàm Kiểm Định

Lệnh kiểm định được thực hiện như sau:

Copy
from scipy import stats

test = stats.ks_2samp(df[column], df_new[column])
  • Ở đây, df là dữ liệu lịch sử và df_new là dữ liệu mới thu thập.
  • Biến test sẽ chứa kết quả của kiểm định.

Kiểm Tra P-value

P-value có thể được lấy ra từ test[1]. Nếu p-value nhỏ hơn 0.05, có thể xác nhận rằng có sự hiện diện của data drift:

Copy
if test[1] < 0.05:
    print("Data drift at column: ", column)

Tích Hợp Kiểm Định Vào Pipeline MLOps

Có thể tích hợp kiểm định vào quy trình MLOps, như sử dụng Apache Airflow:

python Copy
from airflow.decorators import task
from scipy import stats

@task.python(
    show_return_value_in_logs=True,
)
def detect_drift() -> bool:
    drift_columns = []
    for column in df.columns:
        test = stats.ks_2samp(df[column], df_new[column])
        if test[1] < 0.05:
            drift_columns.append(column)
    if drift_columns:
        print("Data drift detected in columns: ", drift_columns)
        mail_to_data_scientist()
        return True
    return False

Các Phương Pháp Sau Khi Phát Hiện Data Drift

Sau khi phát hiện có data drift, các nhà khoa học dữ liệu thường sẽ:

  • Huấn luyện lại mô hình với dữ liệu mới hoặc kết hợp dữ liệu cũ và mới.
  • Điều chỉnh các siêu tham số cho phù hợp với dữ liệu hiện tại.

Tùy thuộc vào tình hình cụ thể, quyết định sẽ được đưa ra bởi các nhà khoa học dữ liệu dựa trên trải nghiệm và hiểu biết của họ về dữ liệu.

Kết Luận

Trong một thế giới mà dữ liệu luôn thay đổi, việc theo dõi và phát hiện data drift là rất quan trọng. Hãy luôn sẵn sàng để điều chỉnh và tối ưu hóa model khi cần thiết để đáp ứng với sự thay đổi của dữ liệu.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào