ยินดีด้วย คุณได้ติดตั้งใช้งานโมเดลยูนิคอร์นแล้ว โมเดลควรทำงานตลอด 24 ชั่วโมงทุกวันโดยไม่มีปัญหาใดๆ คุณต้องตรวจสอบไปป์ไลน์แมชชีนเลิร์นนิง (ML) เพื่อให้มั่นใจว่าไปป์ไลน์จะทำงานได้
เขียนสคีมาข้อมูลเพื่อตรวจสอบข้อมูลดิบ
หากต้องการตรวจสอบข้อมูล คุณควรตรวจสอบข้อมูลอย่างต่อเนื่องเทียบกับค่าทางสถิติที่คาดไว้โดยการเขียนกฎที่ข้อมูลต้องเป็นไปตามนั้น ชุดกฎนี้เรียกว่าสคีมาข้อมูล กำหนดสคีมาข้อมูลโดยทำตาม ขั้นตอนต่อไปนี้
ทำความเข้าใจช่วงและการกระจายของฟีเจอร์ สําหรับฟีเจอร์เชิงหมวดหมู่ ให้ทําความเข้าใจชุดค่าที่เป็นไปได้
เข้ารหัสความเข้าใจของคุณลงในสคีมาข้อมูล ตัวอย่างของ กฎมีดังนี้
- ตรวจสอบว่าคะแนนที่ผู้ใช้ส่งมาอยู่ในช่วง 1-5 เสมอ
- ตรวจสอบว่าคำว่า the ปรากฏบ่อยที่สุด (สำหรับฟีเจอร์ข้อความภาษาอังกฤษ)
- ตรวจสอบว่าฟีเจอร์เชิงหมวดหมู่แต่ละรายการตั้งค่าเป็นค่าจากชุดค่าที่เป็นไปได้ที่กำหนดไว้
ทดสอบข้อมูลกับสคีมาข้อมูล สคีมาควรตรวจหาข้อผิดพลาดของข้อมูล เช่น
- ความผิดปกติ
- ค่าที่ไม่คาดคิดของตัวแปรเชิงหมวดหมู่
- การกระจายข้อมูลที่ไม่คาดคิด
เขียนการทดสอบ 1 หน่วยเพื่อตรวจสอบความถูกต้องของการออกแบบฟีเจอร์
แม้ว่าข้อมูลดิบอาจผ่านสคีมาข้อมูล แต่โมเดลจะไม่ได้รับการฝึก จากข้อมูลดิบ แต่โมเดลจะฝึกกับข้อมูลที่ได้รับการออกแบบฟีเจอร์ เช่น โมเดลจะฝึกกับฟีเจอร์ตัวเลขที่ปรับให้เป็นมาตรฐาน แทนที่จะเป็นข้อมูลตัวเลขดิบ เนื่องจากข้อมูลที่ได้รับการออกแบบฟีเจอร์อาจแตกต่างจากข้อมูลอินพุตดิบมาก คุณจึงต้องตรวจสอบข้อมูลที่ได้รับการออกแบบฟีเจอร์แยกต่างหากจากการตรวจสอบข้อมูลอินพุตดิบ
เขียนการทดสอบหน่วยตามความเข้าใจเกี่ยวกับข้อมูลที่ได้รับการออกแบบฟีเจอร์ เช่น คุณสามารถเขียนการทดสอบหน่วยเพื่อตรวจสอบเงื่อนไขต่างๆ เช่น เงื่อนไขต่อไปนี้
- ฟีเจอร์ที่เป็นตัวเลขทั้งหมดจะได้รับการปรับขนาด เช่น ระหว่าง 0 ถึง 1
- เวกเตอร์เข้ารหัสแบบ One-hot มีค่า 1 เพียงค่าเดียวและมีค่า 0 จำนวน N-1 ค่า
- การกระจายข้อมูลหลังการเปลี่ยนรูปแบบเป็นไปตามที่คาดไว้ เช่น หากคุณแปลงข้อมูลให้เป็นมาตรฐานโดยใช้คะแนน Z ค่าเฉลี่ยของคะแนน Z ควรเป็น 0
- ค่าผิดปกติ จะได้รับการจัดการ เช่น โดยการปรับขนาด หรือการตัด
ตรวจสอบเมตริกสำหรับกลุ่มข้อมูลที่สำคัญ
บางครั้งความสำเร็จโดยรวมอาจบดบังความล้มเหลวในส่วนย่อย กล่าวคือ โมเดลที่มีเมตริกโดยรวมดีอาจยังคงให้การคาดการณ์ที่แย่ใน บางสถานการณ์ เช่น
โมเดลยูนิคอร์นของคุณทำงานได้ดีโดยรวม แต่ทำงานได้ไม่ดีเมื่อ ทำการคาดการณ์สำหรับทะเลทรายซาฮารา
หากคุณเป็นวิศวกรที่พึงพอใจกับ AUC โดยรวมที่ยอดเยี่ยม คุณอาจไม่สังเกตเห็นปัญหาของโมเดลในทะเลทรายซาฮารา หากการคาดการณ์ที่แม่นยำสำหรับทุกภูมิภาคเป็นสิ่งสำคัญ คุณก็ต้องติดตามประสิทธิภาพของทุกภูมิภาค ส่วนย่อยของข้อมูล เช่น ส่วนที่สอดคล้องกับทะเลทรายซาฮารา เรียกว่าชิ้นข้อมูล
ระบุกลุ่มข้อมูลที่สนใจ จากนั้นเปรียบเทียบเมตริกของโมเดลสำหรับข้อมูลที่แบ่งส่วนเหล่านี้กับเมตริกของชุดข้อมูลทั้งหมด การตรวจสอบว่าโมเดลทํางานได้ดีในทุกกลุ่มข้อมูล จะช่วยกําจัดอคติ ดูข้อมูลเพิ่มเติมได้ที่ ความเป็นธรรม: การประเมินอคติ
ใช้เมตริกในโลกแห่งความเป็นจริง
เมตริกของโมเดลไม่ได้วัดผลกระทบในโลกแห่งความเป็นจริงของโมเดลเสมอไป ตัวอย่างเช่น การเปลี่ยนไฮเปอร์พารามิเตอร์อาจเพิ่ม AUC ของโมเดล แต่การเปลี่ยนแปลงดังกล่าวส่งผลต่อประสบการณ์ของผู้ใช้อย่างไร หากต้องการวัดผลลัพธ์ในโลกแห่งความเป็นจริง คุณต้องกําหนดเมตริกแยกต่างหาก ตัวอย่างเช่น คุณอาจสำรวจผู้ใช้โมเดล เพื่อยืนยันว่าผู้ใช้เห็นยูนิคอร์นจริงๆ เมื่อโมเดลคาดการณ์ว่าผู้ใช้จะเห็น
ตรวจสอบความคลาดเคลื่อนระหว่างการฝึกและการให้บริการ
ความคลาดเคลื่อนระหว่างการฝึกและการแสดง หมายความว่าข้อมูลอินพุตระหว่างการฝึกแตกต่าง จากข้อมูลอินพุตในการแสดง ตารางต่อไปนี้อธิบายความเบ้ 2 ประเภทที่สำคัญ
ประเภท | คำจำกัดความ | ตัวอย่าง | โซลูชัน |
---|---|---|---|
ความคลาดเคลื่อนของสคีมา | ข้อมูลอินพุตสำหรับการฝึกและการแสดงผลไม่เป็นไปตามสคีมาเดียวกัน | รูปแบบหรือการกระจายข้อมูลการแสดงโฆษณาเปลี่ยนแปลง ในขณะที่โมเดลยังคงฝึกกับข้อมูลเก่า | ใช้สคีมาเดียวกันเพื่อตรวจสอบข้อมูลการฝึกและข้อมูลการแสดง ตรวจสอบว่าคุณได้ตรวจสอบสถิติที่ไม่ได้ตรวจสอบโดย สคีมาของคุณแยกต่างหากแล้ว เช่น เศษส่วนของค่าที่ขาดหายไป |
ความเบ้ของฟีเจอร์ | ข้อมูลที่ได้รับการออกแบบจะแตกต่างกันระหว่างการฝึกและการแสดง | โค้ดการออกแบบฟีเจอร์จะแตกต่างกันระหว่างการฝึกและการแสดงผล ซึ่งจะสร้างข้อมูลที่ออกแบบแตกต่างกัน | ใช้กฎทางสถิติเดียวกันในการฝึก และแสดงข้อมูลที่ได้รับการออกแบบ เช่นเดียวกับความเบี่ยงเบนของสคีมา ติดตามจำนวน ฟีเจอร์ที่ตรวจพบว่ามีความเอนเอียง และอัตราส่วนของตัวอย่างที่เอนเอียงต่อฟีเจอร์ |
สาเหตุของความคลาดเคลื่อนระหว่างการฝึกและการให้บริการอาจเป็นเรื่องเล็กน้อย พิจารณาเสมอว่าโมเดลของคุณมีข้อมูลใดบ้างในเวลาที่ทำการคาดการณ์ ในระหว่างการฝึก ให้ใช้เฉพาะฟีเจอร์ที่คุณจะใช้ได้เมื่อแสดงโฆษณา
แบบฝึกหัด: ทดสอบความเข้าใจ
สมมติว่าคุณมีร้านค้าออนไลน์และต้องการคาดการณ์ ว่าคุณจะทำเงินได้เท่าใดในวันหนึ่งๆ เป้าหมาย ML ของคุณคือการคาดการณ์รายได้รายวัน โดยใช้จำนวนลูกค้าเป็นฟีเจอร์
คำตอบ: ปัญหาคือคุณไม่ทราบ จำนวนลูกค้าในเวลาที่คาดการณ์ ก่อนที่ยอดขายของวันจะ เสร็จสมบูรณ์ ดังนั้น ฟีเจอร์นี้จึงไม่มีประโยชน์ แม้ว่าฟีเจอร์นี้จะ คาดการณ์รายได้รายวันของคุณได้อย่างแม่นยำก็ตาม ในทำนองเดียวกัน เมื่อคุณ ฝึกโมเดลและได้รับเมตริกการประเมินที่ยอดเยี่ยม (เช่น 0.99 AUC) ให้มองหาฟีเจอร์ประเภทนี้ที่อาจส่งผลต่อป้ายกำกับ
ตรวจสอบการรั่วไหลของป้ายกำกับ
การรั่วไหลของป้ายกำกับหมายความว่าป้ายกำกับความจริงพื้นฐานที่คุณพยายามคาดการณ์ได้เข้าสู่ฟีเจอร์การฝึกโดยไม่ตั้งใจ บางครั้งการตรวจหาการรั่วไหลของป้ายกำกับก็เป็นเรื่องยากมาก
แบบฝึกหัด: ทดสอบความเข้าใจ
สมมติว่าคุณสร้างโมเดลการจัดประเภทแบบไบนารีเพื่อคาดการณ์ว่าผู้ป่วยใหม่ในโรงพยาบาลเป็นโรคมะเร็งหรือไม่ โมเดลของคุณใช้ฟีเจอร์ต่างๆ เช่น
- อายุของผู้ป่วย
- เพศของผู้ป่วย
- ภาวะทางการแพทย์ก่อนหน้า
- ชื่อโรงพยาบาล
- สัญญาณชีพ
- ผลการทดสอบ
- กรรมพันธุ์
ป้ายกำกับมีดังนี้
- บูลีน: ผู้ป่วยเป็นมะเร็งไหม
คุณต้องแบ่งพาร์ติชันข้อมูลอย่างระมัดระวังเพื่อให้มั่นใจว่าชุดการฝึกจะแยกออกจากชุดการตรวจสอบและชุดทดสอบอย่างชัดเจน โมเดลทํางานได้ดีอย่างยิ่งในชุดการตรวจสอบและชุดทดสอบ โดยเมตริกนั้นยอดเยี่ยม น่าเสียดายที่โมเดลนี้ทำงานได้แย่มากกับผู้ป่วยใหม่ ในโลกแห่งความเป็นจริง
คำตอบ: ฟีเจอร์อย่างหนึ่งของโมเดลคือชื่อโรงพยาบาล โรงพยาบาลบางแห่งมีความเชี่ยวชาญในการรักษาโรคมะเร็ง ในระหว่างการฝึก โมเดลได้เรียนรู้ อย่างรวดเร็วว่าผู้ป่วยที่ส่งตัวไปยังโรงพยาบาลบางแห่งมีแนวโน้ม อย่างมากที่จะเป็นโรคมะเร็ง ดังนั้น ชื่อโรงพยาบาลจึงกลายเป็นฟีเจอร์ที่มีน้ำหนักสูง
ในเวลาที่ทำการอนุมาน ผู้ป่วยส่วนใหญ่ยังไม่ได้รับการส่งตัวไปยังโรงพยาบาล ท้ายที่สุดแล้ว จุดประสงค์ของโมเดลคือการวินิจฉัยว่ามีหรือไม่มี โรคมะเร็ง แล้วใช้การวินิจฉัยนั้นเพื่อส่งผู้ป่วยไปยัง โรงพยาบาลที่เหมาะสม ด้วยเหตุนี้ ฟีเจอร์ชื่อโรงพยาบาลจึงยังไม่พร้อมใช้งานในระหว่างการอนุมาน และโมเดลจึงต้องอาศัยฟีเจอร์อื่นๆ
ตรวจสอบอายุของโมเดลตลอดทั้งไปป์ไลน์
หากข้อมูลการแสดงโฆษณามีการเปลี่ยนแปลงเมื่อเวลาผ่านไป แต่คุณไม่ได้ฝึกโมเดลซ้ำเป็นประจำ คุณภาพของโมเดลก็จะลดลง ติดตามเวลาตั้งแต่มีการฝึกโมเดล อีกครั้งในข้อมูลใหม่ และตั้งค่าอายุขั้นต่ำสำหรับการแจ้งเตือน นอกจากการตรวจสอบอายุของโมเดลในเวลาที่แสดงแล้ว คุณควรตรวจสอบอายุของโมเดลตลอดทั้งไปป์ไลน์ เพื่อตรวจหาการหยุดชะงักของไปป์ไลน์
ทดสอบว่าน้ำหนักและเอาต์พุตของโมเดลมีความเสถียรเชิงตัวเลข
ในระหว่างการฝึกโมเดล น้ำหนักและเอาต์พุตเลเยอร์ไม่ควรเป็น NaN (ไม่ใช่ตัวเลข) หรือ Inf (อนันต์) เขียนการทดสอบเพื่อตรวจสอบค่า NaN และ Inf ของน้ำหนักและเอาต์พุตเลเยอร์ นอกจากนี้ ให้ทดสอบว่าเอาต์พุตมากกว่าครึ่งหนึ่งของเลเยอร์ไม่ใช่ 0
ตรวจสอบประสิทธิภาพของโมเดล
เครื่องมือทำนายการปรากฏตัวของยูนิคอร์นได้รับความนิยมมากกว่าที่คาดไว้ คุณได้รับคำขอการคาดการณ์จำนวนมากและข้อมูลการฝึกที่มากขึ้น คุณอาจคิดว่าดีจนกระทั่งรู้ว่าโมเดลใช้หน่วยความจำและเวลาในการฝึกมากขึ้นเรื่อยๆ คุณตัดสินใจที่จะตรวจสอบประสิทธิภาพของโมเดลโดยทำตามขั้นตอนต่อไปนี้
- ติดตามประสิทธิภาพของโมเดลตามเวอร์ชันของโค้ด โมเดล และข้อมูล การติดตามดังกล่าว ช่วยให้คุณระบุสาเหตุที่แน่ชัดของการลดประสิทธิภาพได้
- ทดสอบขั้นตอนการฝึกต่อวินาทีสำหรับโมเดลเวอร์ชันใหม่เทียบกับเวอร์ชันก่อนหน้าและเทียบกับเกณฑ์คงที่
- ตรวจหาหน่วยความจำรั่วโดยการตั้งค่าเกณฑ์สำหรับการใช้หน่วยความจำ
- ตรวจสอบเวลาในการตอบกลับของ API และติดตามเปอร์เซ็นไทล์ แม้ว่าเวลาในการตอบกลับของ API อาจอยู่นอกเหนือการควบคุมของคุณ แต่การตอบกลับที่ช้าอาจทำให้เมตริกในโลกแห่งความเป็นจริงไม่ดี
- ตรวจสอบจำนวนคำค้นหาที่ตอบต่อวินาที
ทดสอบคุณภาพของโมเดลที่ใช้งานจริงในข้อมูลที่แสดง
คุณได้ตรวจสอบโมเดลแล้ว แต่จะเกิดอะไรขึ้นหากสถานการณ์ในโลกแห่งความเป็นจริง เช่น พฤติกรรมของยูนิคอร์น เปลี่ยนไปหลังจากบันทึกข้อมูลการตรวจสอบแล้ว จากนั้นคุณภาพของโมเดลที่ แสดงจะลดลง อย่างไรก็ตาม การทดสอบคุณภาพในการแสดงโฆษณานั้นทำได้ยากเนื่องจาก ข้อมูลในโลกแห่งความเป็นจริงไม่ได้ติดป้ายกำกับเสมอไป หากไม่ได้ติดป้ายกำกับข้อมูลการแสดงผล ให้พิจารณาการทดสอบต่อไปนี้
ตรวจสอบโมเดลที่แสดงอคติทางสถิติที่สำคัญในการคาดการณ์ ดู การจัดประเภท: การคาดการณ์ อคติ
ติดตามเมตริกในโลกแห่งความเป็นจริงสำหรับโมเดล เช่น หากคุณจัดประเภทจดหมายขยะ ให้เปรียบเทียบการคาดการณ์กับจดหมายขยะที่ผู้ใช้รายงาน
ลดความแตกต่างที่อาจเกิดขึ้นระหว่างข้อมูลการฝึกและข้อมูลการแสดงผลโดย แสดงผลโมเดลเวอร์ชันใหม่ในเศษส่วนของคำค้นหา เมื่อตรวจสอบความถูกต้องของโมเดลการแสดงโฆษณาใหม่แล้ว ให้ค่อยๆ เปลี่ยนคำค้นหาทั้งหมดเป็นเวอร์ชันใหม่
ในการใช้การทดสอบเหล่านี้ โปรดอย่าลืมตรวจสอบทั้งการลดคุณภาพการคาดการณ์อย่างฉับพลันและการลดลงอย่างช้าๆ
การสุ่ม
ทำให้ไปป์ไลน์การสร้างข้อมูลของคุณทำซ้ำได้ สมมติว่าคุณต้องการเพิ่มฟีเจอร์ เพื่อดูว่าฟีเจอร์ดังกล่าวส่งผลต่อคุณภาพของโมเดลอย่างไร ชุดข้อมูลควรเหมือนกันทุกประการ ยกเว้นฟีเจอร์ใหม่นี้ เพื่อให้การทดสอบเป็นไปอย่างยุติธรรม ด้วยเหตุนี้ โปรดตรวจสอบว่าการสุ่มใดๆ ในการสร้างข้อมูลสามารถกำหนดได้ แน่นอน
- เริ่มต้นโปรแกรมสร้างตัวเลขสุ่ม (RNG) การเริ่มต้นช่วยให้ RNG แสดงค่าเดียวกันตามลำดับเดิมทุกครั้งที่คุณเรียกใช้ ซึ่งจะสร้างชุดข้อมูลใหม่
- ใช้คีย์แฮชที่ไม่เปลี่ยนแปลง การแฮชเป็นวิธีทั่วไปในการแยก หรือสุ่มตัวอย่างข้อมูล คุณสามารถแฮชตัวอย่างแต่ละรายการ และใช้จำนวนเต็มที่ได้เพื่อ ตัดสินใจว่าจะวางตัวอย่างไว้ในชุดข้อมูลใด อินพุตของฟังก์ชันแฮช ไม่ควรเปลี่ยนแปลงทุกครั้งที่คุณเรียกใช้โปรแกรมสร้างข้อมูล อย่าใช้เวลาปัจจุบันหรือตัวเลขสุ่มในแฮช เช่น หากต้องการสร้างแฮชใหม่ตามต้องการ
แนวทางข้างต้นใช้ได้ทั้งกับการสุ่มตัวอย่างและการแยกข้อมูล
ข้อควรพิจารณาสำหรับการแฮช
ลองนึกภาพอีกครั้งว่าคุณกำลังรวบรวมคำค้นหาใน Search และใช้การแฮช เพื่อรวมหรือยกเว้นคำค้นหา หากคีย์แฮชใช้เฉพาะการค้นหา ในข้อมูลหลายวัน คุณจะรวมการค้นหานั้นเสมอหรือยกเว้นการค้นหานั้นเสมอ การรวมหรือยกเว้นคำค้นหาเสมอเป็นสิ่งที่ไม่ควรทำเนื่องจากเหตุผลต่อไปนี้
- ชุดการฝึกจะเห็นชุดคำค้นหาที่หลากหลายน้อยลง
- ชุดการประเมินจะยากโดยไม่จำเป็นเนื่องจากไม่ได้ ทับซ้อนกับข้อมูลการฝึก ในความเป็นจริงแล้ว ในเวลาที่แสดงโฆษณา คุณจะ เห็นการเข้าชมจริงบางส่วนในข้อมูลการฝึก ดังนั้นการ ประเมินควรสะท้อนให้เห็นถึงสิ่งนั้น
แต่คุณสามารถแฮชในคำค้นหา + วันที่ของคำค้นหา ซึ่งจะทำให้เกิดการแฮชที่แตกต่างกันในแต่ละวัน
