เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจัดการกับ Label Noise

นักวิเคราะห์ด้านความปลอดภัยไซเบอร์คนหนึ่งแจ้งว่าป้ายกำกับของคอมพิวเตอร์ต้นทาง 100 เครื่องแรกในชุดข้อมูลฝึกอาจมีข้อผิดพลาด เนื่องจากปัญหาฐานข้อมูล เธอหวังว่าจะยังใช้ข้อมูลนี้ได้เพราะป้ายกำกับส่วนใหญ่ยังถูกต้อง แต่ขอให้ถือว่าป้ายกำกับทั้ง 100 นั้นเป็น "noisy" โชคดีที่รู้วิธีจัดการกับปัญหานี้ด้วยการเรียนรู้แบบถ่วงน้ำหนัก (weighted learning) ข้อมูลที่มีปัญหาพร้อมใช้งานในพื้นที่ทำงานในรูปแบบ X_train, X_test, y_train_noisy, y_test เป้าหมายคือทดสอบว่าการเรียนรู้แบบถ่วงน้ำหนักช่วยเพิ่มประสิทธิภาพของตัวจำแนกประเภท GaussianNB() ได้หรือไม่ โดยใช้พารามิเตอร์เสริม sample_weight ซึ่งรองรับโดยเมธอด .fit() ของตัวจำแนกประเภทยอดนิยมส่วนใหญ่ ฟังก์ชัน accuracy_score() ถูกโหลดไว้ล่วงหน้าแล้ว ดูภาพด้านล่างเพื่อประกอบการทำความเข้าใจ

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การออกแบบ Machine Learning Workflows ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ฝึก GaussianNB() กับข้อมูลฝึกที่มีป้ายกำกับซึ่งอาจมีข้อผิดพลาด
  • รายงานความแม่นยำบนชุดข้อมูลทดสอบโดยใช้ accuracy_score()
  • สร้างค่าน้ำหนักที่กำหนดน้ำหนักให้ป้ายกำกับที่ถูกต้องมากกว่าป้ายกำกับที่มี noise เป็น 2 เท่า โดยค่าน้ำหนักนี้ใช้กับชุดข้อมูลฝึก
  • ฝึกโมเดลใหม่อีกครั้งโดยใช้ค่าน้ำหนักดังกล่าว แล้วรายงานความแม่นยำ

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Fit a Gaussian Naive Bayes classifier to the training data
clf = ____.____(____, y_train_noisy)

# Report its accuracy on the test data
print(accuracy_score(y_test, ____.____(X_test)))

# Assign half the weight to the first 100 noisy examples
weights = [____]*100 + [1.0]*(len(____)-100)

# Refit using weights and report accuracy. Has it improved?
clf_weights = GaussianNB().fit(X_train, y_train_noisy, ____=____)
print(accuracy_score(y_test, ____))
แก้ไขและรันโค้ด