ยินดีด้วย คุณทำให้โมเดลยูนิคอร์นใช้งานได้แล้ว โมเดลของคุณควรทำงานทุกวันตลอด 24 ชั่วโมงโดยไม่มีปัญหาใดๆ เพื่อให้คุณใช้งานได้จริง คุณต้องตรวจสอบไปป์ไลน์แมชชีนเลิร์นนิง (ML) ด้วย
เขียนสคีมาข้อมูลเพื่อตรวจสอบข้อมูลดิบ
หากต้องการตรวจสอบข้อมูล คุณควรตรวจสอบข้อมูลอย่างต่อเนื่องกับที่คาดไว้ ค่าทางสถิติโดยการเขียนกฎที่ข้อมูลต้องเป็นไปตาม คอลเล็กชันนี้ เรียกว่าสคีมาข้อมูล กำหนดสคีมาข้อมูลโดยทำตามวิธีต่อไปนี้ ขั้นตอนเหล่านี้:
ทำความเข้าใจช่วงและการกระจายของจุดสนใจ ตามหมวดหมู่ ในการทำความเข้าใจชุดของค่าที่เป็นไปได้
เข้ารหัสความเข้าใจลงในสคีมาข้อมูล ต่อไปนี้เป็นตัวอย่างของ กฎ:
- ตรวจสอบว่าคะแนนที่ผู้ใช้ส่งอยู่ในช่วง 1 ถึง 5 เสมอ
- ตรวจสอบว่าคำว่า the ปรากฏบ่อยที่สุด (สำหรับข้อความภาษาอังกฤษ ฟีเจอร์)
- ตรวจสอบว่าฟีเจอร์เชิงหมวดหมู่แต่ละรายการมีการตั้งค่าเป็นค่าจากชุดคงที่ ของค่าที่เป็นไปได้
ทดสอบข้อมูลกับสคีมาข้อมูล สคีมาของคุณควรรับข้อมูล ข้อผิดพลาด เช่น
- ความผิดปกติ
- ค่าที่ไม่คาดคิดของตัวแปรกลุ่ม
- การกระจายข้อมูลที่ไม่คาดคิด
เขียนการทดสอบ 1 หน่วยเพื่อตรวจสอบวิศวกรรมฟีเจอร์
แม้ว่าข้อมูลดิบอาจผ่านสคีมาข้อมูล แต่โมเดลจะไม่มีการฝึก เกี่ยวกับข้อมูลดิบ แต่โมเดลจะฝึกตามข้อมูลที่แสดงในฟีเจอร์ เหนือระดับ ตัวอย่างเช่น โมเดลของคุณจะฝึกโดยใช้ฟีเจอร์ตัวเลขมาตรฐาน แทนที่จะเป็นข้อมูลดิบที่เป็นตัวเลข เนื่องจากข้อมูลเชิงวิศวกรรมคุณลักษณะอาจมี ต่างจากข้อมูลดิบที่ป้อน คุณต้องตรวจสอบข้อมูลทางวิศวกรรมของฟีเจอร์ แยกต่างหากจากการตรวจสอบข้อมูลดิบที่ป้อน
เขียนการทดสอบ 1 หน่วยตามความเข้าใจของคุณเกี่ยวกับข้อมูลที่ออกแบบโดยฟีเจอร์ ตัวอย่างเช่น คุณสามารถเขียนการทดสอบ 1 หน่วยเพื่อตรวจสอบเงื่อนไข เช่น ดังต่อไปนี้:
- คุณลักษณะที่เป็นตัวเลขทั้งหมดจะมีการปรับขนาด เช่น ระหว่าง 0 ถึง 1
- เข้ารหัสแบบฮอตเดียว เวกเตอร์จะมีเฉพาะศูนย์ 1 และ N-1 เดียวเท่านั้น
- การกระจายข้อมูลหลังการเปลี่ยนรูปแบบจะเป็นไปตามความคาดหวัง ตัวอย่างเช่น หากคุณใช้ค่ามาตรฐานโดยใช้ค่ามาตรฐาน ค่าเฉลี่ยของค่า ค่ามาตรฐาน Z ควรเป็น 0
- ค่าผิดปกติ ได้รับการจัดการ เช่น การปรับขนาด หรือการตัด
ตรวจสอบเมตริกสำหรับชิ้นส่วนข้อมูลที่สำคัญ
ในบางครั้ง ภาพรวมที่ประสบความสำเร็จจะคลุมเครือชุดย่อยที่ไม่สำเร็จ กล่าวคือ โมเดลที่มีเมตริกโดยรวมที่ดีอาจยัง สามารถคาดการณ์ ที่ได้ผลสำหรับ ในบางสถานการณ์ เช่น
โมเดลยูนิคอร์นของคุณทำงานได้ดีโดยรวม แต่ทำงานได้ไม่ดีเมื่อ เพื่อทำการคาดคะเนสำหรับทะเลทรายสะฮารา
หากคุณเป็นวิศวกรที่พอใจกับ AUC โดยรวมที่ยอดเยี่ยม คุณอาจจะไม่พบปัญหาของโมเดลในทะเลทรายสะฮารา หากต้อง การคาดคะเนที่ดีสำหรับทุกภูมิภาคนั้นสำคัญ ดังนั้นคุณจะต้องติดตาม ประสิทธิภาพสำหรับทุกภูมิภาค ชุดย่อยของข้อมูล เช่น ชุดข้อมูลที่เกี่ยวข้อง จนถึงทะเลทรายสะฮาราจะเรียกว่าชิ้นข้อมูล
ระบุส่วนของข้อมูลที่สนใจ จากนั้นเปรียบเทียบเมตริกรูปแบบสำหรับส่วนแบ่งข้อมูลเหล่านี้กับเมตริกสำหรับ ทั้งชุดข้อมูลได้ ตรวจสอบว่าโมเดลทำงานได้ดีในทุกส่วนของข้อมูล ช่วยลดอคติได้ โปรดดู ความยุติธรรม: การประเมินการให้น้ำหนักพิเศษ เพื่อดูข้อมูลเพิ่มเติม
ใช้เมตริกที่ได้จากธุรกิจจริง
เมตริกโมเดลไม่จำเป็นต้องวัดผลกระทบในชีวิตจริงของโมเดลเสมอไป ตัวอย่างเช่น การเปลี่ยนไฮเปอร์พารามิเตอร์อาจเพิ่ม AUC ของโมเดล การเปลี่ยนแปลงมีผลต่อประสบการณ์ของผู้ใช้หรือไม่ หากต้องการวัดผลกระทบที่เกิดขึ้นจริง คุณต้องมีสิ่งต่อไปนี้ เพื่อกำหนดเมตริกแยกกัน ตัวอย่างเช่น คุณอาจสำรวจผู้ใช้ของโมเดลของคุณ เพื่อยืนยันว่าเห็นยูนิคอร์นจริงๆ เมื่อโมเดลคาดการณ์ไว้ว่า ต้องการ
ตรวจสอบความคลาดเคลื่อนระหว่างการฝึกและการให้บริการ
ความคลาดเคลื่อนของการให้บริการการฝึก หมายความว่าข้อมูลที่ป้อนระหว่างการฝึกจะแตกต่างกัน จากข้อมูลป้อนเข้าของคุณในการแสดง ตารางต่อไปนี้อธิบาย ความคลาดเคลื่อนที่สำคัญ 2 ประเภท ได้แก่
ประเภท | คำจำกัดความ | ตัวอย่าง | โซลูชัน |
---|---|---|---|
สคีมาบิดเบือน | ข้อมูลที่ป้อนการฝึกและการแสดงผลไม่สอดคล้องกับสคีมาเดียวกัน | รูปแบบหรือการกระจายของข้อมูลการแสดงผลมีการเปลี่ยนแปลง ขณะที่โมเดลของคุณฝึกกับข้อมูลเก่าต่อไป | ใช้สคีมาเดียวกันเพื่อตรวจสอบความถูกต้องของข้อมูลการฝึกและการแสดงผล ตรวจสอบว่าคุณได้ตรวจหาสถิติที่ไม่ได้ตรวจสอบโดย สคีมา เช่น เศษส่วนของค่าที่หายไป |
ลักษณะบิดเบี้ยว | ข้อมูลที่สร้างขึ้นนั้นมีความแตกต่างกันระหว่างการฝึกและการแสดงผล | โค้ดวิศวกรรมฟีเจอร์มีความแตกต่างกันระหว่างการฝึกและการให้บริการ ซึ่งสร้างข้อมูลทางวิศวกรรมในรูปแบบต่างๆ | ใช้กฎทางสถิติเดียวกันในการฝึก ซึ่งคล้ายกับความบิดเบือนของสคีมา และให้บริการข้อมูลเชิงวิศวกรรม ติดตามหมายเลข ของจุดสนใจที่ตรวจพบ และอัตราส่วนของตัวอย่างเอียงต่อจุดสนใจ |
สาเหตุของความคลาดเคลื่อนระหว่างการฝึกทำงานอาจเป็นแค่เล็กน้อย คำนึงอยู่เสมอว่ามีข้อมูลใดบ้างสำหรับโมเดลของคุณในเวลาการคาดการณ์ ในระหว่างการฝึก ให้ใช้เฉพาะฟีเจอร์ที่คุณมีเมื่อแสดงโฆษณาเท่านั้น
วันที่แบบฝึกหัด: ตรวจสอบความเข้าใจ
สมมติว่าคุณมีร้านค้าออนไลน์และต้องการคาดการณ์ จำนวนเงินที่คุณจะได้รับในแต่ละวัน เป้าหมาย ML ของคุณคือการคาดการณ์ทุกวัน โดยใช้จำนวนลูกค้าเป็นฟีเจอร์
เฉลย: ปัญหาคือคุณไม่ทราบ จำนวนลูกค้า ณ เวลาการคาดการณ์ ก่อนยอดขายของวันนั้นๆ เสร็จสมบูรณ์ ฟีเจอร์นี้จึงไม่เป็นประโยชน์ แม้ว่าฟีเจอร์นี้จะ คาดการณ์รายได้รายวันได้เป็นอย่างดี และเมื่อคุณ ฝึกโมเดลและรับเมตริกการประเมินที่น่าทึ่ง (เช่น 0.99 AUC) ให้ดูฟีเจอร์ประเภทเหล่านี้ ที่เพิ่มไปยังป้ายกำกับของคุณได้
ตรวจหาการรั่วไหลของป้ายกำกับ
การรั่วไหลของป้ายกำกับหมายความว่า ป้ายกำกับข้อมูลจากการสังเกตการณ์โดยตรงที่คุณ การพยายามคาดการณ์ได้ป้อนฟีเจอร์การฝึกของคุณโดยไม่ตั้งใจ ป้ายกำกับ การรั่วไหลในบางครั้ง ก็ทำได้ยากมาก
แบบฝึกหัด: ตรวจสอบความเข้าใจ
สมมติว่าคุณสร้างโมเดลการจัดประเภทแบบไบนารีเพื่อคาดการณ์ ผู้ป่วยรายใหม่เป็นมะเร็ง โมเดลของคุณใช้ฟีเจอร์ดังต่อไปนี้
- อายุของผู้ป่วย
- เพศของผู้ป่วย
- ภาวะทางการแพทย์ที่ผ่านมา
- ชื่อโรงพยาบาล
- สัญญาณชีพ
- ผลการทดสอบ
- การถ่ายทอดทางพันธุกรรม
ป้ายกำกับมีดังนี้
- บูลีน: ผู้ป่วยเป็นมะเร็งไหม
คุณต้องแบ่งพาร์ติชันข้อมูลอย่างระมัดระวัง เพื่อให้แน่ใจว่าชุดการฝึกของคุณเหมาะสม แยกต่างหากจากชุดการตรวจสอบความถูกต้องและชุดทดสอบ โมเดลจะดำเนินการ มากดีกับชุดการตรวจสอบและชุดทดสอบ เมตริกต่างๆ ได้แก่ สุดยอดมาก โมเดลนี้ส่งผลร้ายแรงต่อผู้ป่วยรายใหม่ ในโลกแห่งความเป็นจริง
เฉลย: ฟีเจอร์หนึ่งของโมเดลคือชื่อโรงพยาบาล โรงพยาบาลบางแห่งเชี่ยวชาญด้านการรักษาโรคมะเร็ง ในระหว่างการฝึกอบรม โมเดลก็ได้เรียนรู้อย่างรวดเร็วว่าผู้ป่วยที่ได้รับการมอบหมายให้กับโรงพยาบาลบางแห่ง มีแนวโน้มที่จะเป็นมะเร็ง ชื่อโรงพยาบาลจึงกลายเป็นคุณลักษณะที่มีน้ำหนักมาก
ในช่วงอนุมาน ผู้ป่วยส่วนใหญ่ยังไม่ได้รับมอบหมายไปยังโรงพยาบาล อย่างไรก็ตาม วัตถุประสงค์ของโมเดลก็คือการวินิจฉัยการมีอยู่หรือ ไม่มีมะเร็ง แล้วใช้การวินิจฉัยดังกล่าวเพื่อกำหนดคนไข้ ไปยังโรงพยาบาลที่เหมาะสม ดังนั้น ในระหว่างการอนุมาน ฟีเจอร์ชื่อโรงพยาบาลยังไม่พร้อมใช้งานและระบบบังคับโมเดล เพื่อพึ่งพาฟีเจอร์อื่นๆ
ตรวจสอบอายุโมเดลตลอดไปป์ไลน์
หากข้อมูลการแสดงผลพัฒนาไปตามเวลา แต่โมเดลของคุณไม่ได้ฝึกเป็นประจำ คุณจะเห็นว่าคุณภาพของโมเดลลดลง ติดตามเวลาตั้งแต่โมเดลถูก ฝึกใช้ข้อมูลใหม่และตั้งค่าอายุเกณฑ์สำหรับการแจ้งเตือน นอกจากการตรวจสอบ อายุของโมเดลขณะให้บริการ คุณควรตรวจสอบอายุของโมเดลตลอดไปป์ไลน์ เพื่อดักจับแผงขายท่อส่งน้ำมัน
ทดสอบว่าน้ำหนักและเอาต์พุตของโมเดลนั้นคงที่ในเชิงตัวเลข
ระหว่างการฝึกโมเดล น้ำหนักและเอาต์พุตของเลเยอร์ไม่ควรเป็นแบบ NaN (ไม่ใช่ตัวเลข) หรือ Inf (อนันต์) เขียนการทดสอบเพื่อตรวจหาค่า NaN และ Inf ของน้ำหนักและเอาต์พุตของเลเยอร์ นอกจากนี้ ให้ทดสอบว่าเอาต์พุตของเลเยอร์มากกว่าครึ่งหนึ่งไม่ใช่ 0
ตรวจสอบประสิทธิภาพของโมเดล
เครื่องมือทำนายลักษณะยูนิคอร์นของคุณได้รับความนิยมมากกว่าที่คาดไว้ คุณ การรับคำขอการคาดการณ์จำนวนมาก และข้อมูลการฝึกที่มากขึ้น คุณคิดว่า ถือว่าเยี่ยมไปเลย จนกว่าคุณจะรู้ว่าโมเดลของคุณใช้หน่วยความจำมากขึ้นเรื่อยๆ และเวลาในการฝึกอบรม คุณตัดสินใจที่จะตรวจสอบประสิทธิภาพของโมเดลโดยทำตาม ขั้นตอนเหล่านี้:
- ติดตามประสิทธิภาพของโมเดลตามเวอร์ชันของโค้ด โมเดล และข้อมูล การติดตามดังกล่าว ช่วยให้คุณระบุสาเหตุที่แท้จริงที่ทำให้ประสิทธิภาพลดลงได้
- ทดสอบขั้นตอนการฝึกต่อวินาทีสำหรับโมเดลเวอร์ชันใหม่เทียบกับ เวอร์ชันก่อนหน้าและตามเกณฑ์ที่กำหนด
- ตรวจจับการรั่วไหลของหน่วยความจำโดยการตั้งค่าเกณฑ์การใช้งานหน่วยความจำ
- ตรวจสอบเวลาในการตอบกลับของ API และติดตามเปอร์เซ็นไทล์ของ API ขณะที่การตอบกลับจาก API บางครั้งคุณอาจควบคุมไม่ได้ การตอบสนองช้าอาจทำให้ เมตริกในชีวิตจริงที่ไม่ดี
- ตรวจสอบจำนวนคำค้นหาที่ได้รับต่อวินาที
ทดสอบคุณภาพของโมเดลสดกับข้อมูลที่แสดง
คุณตรวจสอบโมเดลแล้ว แต่ถ้าเป็นสถานการณ์ในชีวิตจริง เช่น ยูนิคอร์น ที่เปลี่ยนไปหลังจากบันทึกข้อมูลการตรวจสอบความถูกต้องหรือไม่ จากนั้นคุณภาพของ รูปแบบที่แสดงจะมีประสิทธิภาพลดลง อย่างไรก็ตาม คุณภาพการทดสอบในการแสดงโฆษณานั้นเป็นเรื่องยากเนื่องจาก ข้อมูลในชีวิตจริงจะไม่มีป้ายกำกับไว้เสมอไป หากข้อมูลการแสดงผลไม่มีป้ายกำกับ ให้พิจารณาการทดสอบเหล่านี้
ตรวจสอบโมเดลที่แสดงความเอนเอียงทางสถิติที่มีนัยสำคัญในการคาดการณ์ โปรดดู การจัดประเภท: การคาดการณ์ การให้น้ำหนักพิเศษ
ติดตามเมตริกการใช้งานจริงสำหรับโมเดลของคุณ เช่น หากคุณจะจัดประเภท ให้เปรียบเทียบการคาดคะเนของคุณกับสแปมที่ผู้ใช้รายงาน
ลดความแตกต่างที่อาจเกิดขึ้นระหว่างการฝึกและข้อมูลการแสดงผลโดย กำลังแสดงโมเดลเวอร์ชันใหม่จากคำค้นหาบางส่วน ขณะที่ตรวจสอบ รูปแบบการแสดงผลใหม่ของคุณ ค่อยๆ เปลี่ยนคำค้นหาทั้งหมดไปที่เวอร์ชันใหม่
เมื่อใช้การทดสอบเหล่านี้ อย่าลืมตรวจดูการเสื่อมสภาพทั้งอย่างฉับพลันและช้าใน คุณภาพการคาดการณ์
การสุ่ม
ทำให้ไปป์ไลน์การสร้างข้อมูลทำซ้ำได้ เช่น ต้องการเพิ่มฟีเจอร์ เพื่อดูว่าจะส่งผลต่อคุณภาพของโมเดลอย่างไร เพื่อการทดสอบที่เป็นธรรม ชุดข้อมูลของคุณควร เหมือนกัน ยกเว้นฟีเจอร์ใหม่นี้ ในกรณีดังกล่าว ตรวจสอบให้แน่ใจว่าได้สุ่มสร้างข้อมูลที่สร้างขึ้นได้ เชิงกำหนด:
- Seed เครื่องมือสร้างหมายเลขสุ่ม (RNG) Seeding ช่วยให้แน่ใจว่า RNG จะแสดงค่าเดียวกันในลำดับเดียวกันทุกครั้งที่คุณเรียกใช้ โดยสร้าง ชุดข้อมูลของคุณ
- ใช้คีย์แฮชแบบไม่เปลี่ยนแปลง การแฮชเป็นวิธีการทั่วไปในการแยกส่วน หรือข้อมูลตัวอย่าง คุณสามารถแฮชแต่ละตัวอย่าง และใช้จำนวนเต็มที่ได้เพื่อ ตัดสินใจว่าจะวางตัวอย่างในฝั่งใด ข้อมูลป้อนเข้าสำหรับฟังก์ชันแฮช ไม่ควรเปลี่ยนทุกครั้งที่คุณเรียกใช้โปรแกรมการสร้างข้อมูล อย่าใช้ หรือหมายเลขแบบสุ่มในแฮชของคุณ ตัวอย่างเช่น สร้างแฮชอีกครั้งตามคำขอ
วิธีก่อนหน้านี้ใช้กับทั้งการสุ่มตัวอย่างและการแยกข้อมูลของคุณ
ข้อควรพิจารณาสำหรับการแฮช
ลองจินตนาการอีกครั้งว่าคุณกำลังรวบรวมคำค้นหาและใช้การแฮช เพื่อรวมหรือยกเว้นข้อความค้นหา หากคีย์แฮชใช้เพียงคําค้นหา จากนั้นในข้อมูลหลายวัน คุณจะรวมเสมอ คำค้นหานั้นหรือยกเว้นคำค้นหาเสมอ รวมทุกครั้งหรือยกเว้นเสมอ ข้อความค้นหาไม่ถูกต้องเนื่องจาก
- ชุดการฝึกจะเห็นชุดคำค้นหาที่หลากหลายน้อยลง
- ชุดการประเมินของคุณจะยากกว่าปกติ เนื่องจากจะไม่ ทับซ้อนกับข้อมูลการฝึกของคุณ ในความเป็นจริง ขณะให้บริการ คุณจะ ได้เห็นการเข้าชมแบบสดบางส่วนในข้อมูลการฝึก ดังนั้น ควรสะท้อนถึงสิ่งนั้น
คุณสามารถแฮชคำค้นหา + วันที่แทน ซึ่งจะส่งผลให้มีการแฮชอื่น ในแต่ละวัน
![รูปที่ 7 ภาพเคลื่อนไหวแสดงวิธีการแฮชเฉพาะใน
การค้นหาจะทำให้ข้อมูลเข้าสู่ที่เก็บข้อมูลเดียวกันในแต่ละวัน แต่การแฮช
ในข้อความค้นหาบวกกับเวลาในการค้นหาจะทำให้ข้อมูลไปยัง
ในแต่ละวัน ที่เก็บข้อมูล 3 ประเภท ได้แก่ การฝึก การประเมิน และ
ไม่สนใจ](https://developers.google.cn/static/machine-learning/crash-course/images/hashing_on_query.gif?authuser=0000&hl=th)