การทดสอบโมเดล

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

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

ความเป็นธรรมระดับบุคคล vs ระดับกลุ่ม

ความเป็นธรรมระดับบุคคล

ปฏิบัติต่อบุคคลที่มีลักษณะคล้ายกันอย่างเท่าเทียมกัน

  • เช่น มอบโอกาสงานที่ใกล้เคียงกันแก่ผู้ที่มีประสบการณ์คล้ายกัน

ความเป็นธรรมระดับกลุ่ม

ปฏิบัติต่อกลุ่มต่าง ๆ อย่างเท่าเทียมกัน

  • เช่น ไม่เลือกปฏิบัติต่อบุคคลจากกลุ่มเชื้อชาติหรือชาติพันธุ์ใดในโมเดลรับสมัครนักศึกษา
การพัฒนาโมเดล Machine Learning สำหรับ Production

Holdout testing

  • Holdout testing ตรวจสอบความน่าเชื่อถือของโมเดลโดยใช้ชุดข้อมูลแยกต่างหาก
  • ประเมินประสิทธิภาพบนข้อมูลที่ไม่ได้ใช้เทรน เหมือนช่วงฝึกโมเดล
  • ตรวจจับปัญหา เช่น overfitting หรือ underfitting

หุ่นยนต์กำลังวิเคราะห์ข้อมูล

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

การตรวจหา model drift

Concept drift

  • การเปลี่ยนแปลงความสัมพันธ์ระหว่าง feature และ response
    • เช่น อัลกอริทึมวิเคราะห์ความรู้สึก
      • คำบางคำอาจเปลี่ยนความหมาย (เช่น คำว่า "sick" กลายเป็นความหมายดี)

Prediction drift

  • การเปลี่ยนแปลงในการกระจายของผลการทำนายของโมเดล
    • เช่น การหยุดให้บริการชั่วคราวทำให้ intent "outage" ของ chatbot เพิ่มขึ้น
    • ไม่มีสิ่งผิดปกติโดยตรง แต่ drift นี้อาจทำให้ผู้ใช้ได้รับการตอบสนองช้าลง
การพัฒนาโมเดล Machine Learning สำหรับ Production

ตัวอย่างการตรวจหา model drift

การตั้งค่า:

# Import necessary libraries and split data
X_train, X_test, y_train, y_test = ...

การฝึกโมเดล:

# Train a classifier on the training data
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)

# Calculate the accuracy on test data
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

การทดสอบ drift ในภายหลัง:

X_test_drift = X_test + 1.0  # Simulate data drift
# Calculate the accuracy on drifted data
y_pred_drift = clf.predict(X_test_drift)
accuracy_drift = accuracy_score(
    y_test, y_pred_drift)
print(f"Accuracy with drift: {accuracy_drift}")

# Drift detection threshold based on the accuracy
drift_threshold = accuracy * 0.9

# Check for drop in accuracy on the drifted data
if accuracy_drift < drift_threshold:
    print("Concept drift detected!")
else:
    print("No concept drift detected.")
การพัฒนาโมเดล Machine Learning สำหรับ Production

ต้นทุนของโมเดลซับซ้อน vs โมเดล baseline

  • โมเดลที่ซับซ้อนมีต้นทุนสูงและส่งผลต่อประสิทธิภาพของโมเดล
  • Latency วัดเวลาในการประมวลผล input หนึ่งรายการและสร้างผลการทำนาย
  • Throughput วัดจำนวนการทำนายที่โมเดลสามารถทำได้ในช่วงเวลาหนึ่ง
  • ทดสอบ latency และ throughput เพื่อกำหนดระดับความซับซ้อนที่เหมาะสมของโมเดล
  • เป้าหมายคือสมดุลระหว่างความแม่นยำและประสิทธิภาพ
การพัฒนาโมเดล Machine Learning สำหรับ Production

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

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

Preparing Video For Download...