การทดสอบข้อมูล

การพัฒนาโมเดล Machine Learning สำหรับ Production

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

การทดสอบความถูกต้องของข้อมูลและ schema

  • การทดสอบความถูกต้องของข้อมูล ตรวจหาค่าที่หายไป ความไม่สอดคล้อง และข้อมูลผิดปกติ
    • เช่น การตรวจจับ outlier
  • การทดสอบ schema ตรวจสอบรูปแบบและประเภทข้อมูลที่คาดหวัง

    • เช่น ตรวจสอบว่า "time to value" เป็น integer ที่วัดเป็นวินาที ไม่ใช่นาที
  • เครื่องมืออย่าง Great Expectations ช่วยทำให้กระบวนการนี้เป็นอัตโนมัติ

โลโก้ Great Expectations

การพัฒนาโมเดล Machine Learning สำหรับ Production

เกินกว่าการทดสอบพื้นฐาน

  • การทดสอบข้อมูลและ schema ตรวจสอบปัญหาพื้นฐาน
  • การทดสอบที่ซับซ้อนกว่า เช่น expectation tests ใช้ตรวจสอบปัญหาที่ลึกขึ้น
    • ตรวจสอบว่าค่าอยู่ในช่วงที่กำหนด
    • ตรวจสอบรูปแบบหรือแนวโน้มที่รู้จัก
การพัฒนาโมเดล Machine Learning สำหรับ Production

Expectation tests

  • เป็นการทดสอบความถูกต้องของข้อมูลประเภทหนึ่ง
  • ตรวจสอบว่าข้อมูลตรงกับ "ความคาดหวัง" ที่ผู้ใช้หรือระบบกำหนดไว้
    • เช่น คาดว่าเวลาที่ใช้บนเว็บไซต์อยู่ที่ประมาณ 4 นาที โดยมีค่าเบี่ยงเบนมาตรฐาน 1 นาที
    • เช่น คาดว่าวันที่นัดหมายของผู้ป่วยในอดีตต้องอยู่ก่อนเวลาปัจจุบัน
การพัฒนาโมเดล Machine Learning สำหรับ Production

Feature importance tests

  • Feature importance tests ระบุ feature ที่สำคัญที่สุดในโมเดล ML
  • ตัวอย่าง: Permutation importance
    • สุ่มสลับค่า feature แล้วดูว่าประสิทธิภาพของโมเดลลดลงมากแค่ไหน

แผนภูมิแท่ง

การพัฒนาโมเดล Machine Learning สำหรับ Production

ตัวอย่าง permutation importance

ตั้งค่า:

import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importance
# Train a random forest classifier (assuming we have some data)
model = RandomForestClassifier().fit(X_train, y_train)

รันการทดสอบ permutation importance:

# Calculate feature importances using permutation importance
results = permutation_importance(model, X_test, y_test, n_repeats=10, random_state=42)
# Print the feature importances
feature_names = ['feature_1', 'feature_2', 'feature_3', ...]
importances = results.importances_mean
for i in range(len(feature_names)):
    print(f'{feature_names[i]}: {importances[i]}')
การพัฒนาโมเดล Machine Learning สำหรับ Production

การตรวจหา data drift

Data drift

  • บางครั้งเรียกว่า feature drift
  • การเปลี่ยนแปลงในการกระจายของข้อมูล input ของโมเดล
  • เช่น ผู้ใช้เริ่มใช้คำใหม่ที่เกี่ยวกับสินค้าใหม่ แต่ chatbot ยังไม่รู้จักคำนั้น

Label drift

  • การเปลี่ยนแปลงในการกระจายของ label
  • เช่น ผู้ใช้เปลี่ยนจากถามเรื่องการคืนสินค้า มาถามสถานะการคืนสินค้าแทน
การพัฒนาโมเดล Machine Learning สำหรับ Production

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

การพัฒนาโมเดล Machine Learning สำหรับ Production

Preparing Video For Download...