หน่วย
1. ปัญญาประดิษฐ์เบื้องต้นในวิทยาศาสตร์ข้อมูลและการวิเคราะห์: ขั้นตอนการทำงาน บทบาท ขอบเขต การตรวจสอบความถูกต้อง และจริยธรรม 2. การรวบรวมข้อมูลและความเข้าใจแหล่งที่มา: สคีมา การสุ่มตัวอย่าง การรับรู้คุณภาพและการรั่วไหล 3. การล้างข้อมูลและการประมวลผลล่วงหน้า: ค่าที่หายไป ค่าผิดปกติ และการแปลงประเภท 4. การวิเคราะห์ข้อมูลเชิงสำรวจ (EDA): การแจกแจง ความสัมพันธ์ และข้อมูลเชิงลึกเบื้องต้น 5. วิศวกรรมเชิงคุณลักษณะ: การสร้างตัวแปร การเข้ารหัส การปรับขนาด และการหลีกเลี่ยงการรั่วไหล 6. การสร้างโมเดล: การนิยามปัญหา การเลือกอัลกอริทึม และการแบ่งการฝึกอบรม/การทดสอบ 7. การประเมินแบบจำลอง: การวัด การตรวจสอบข้าม และการเรียนรู้ขั้นสูง 8. การแสดงภาพและการเล่าเรื่อง: กราฟิกที่แม่นยำ กราฟิกที่เที่ยงตรง 9. การสร้างโค้ด: การวิเคราะห์โดยใช้ AI ด้วย Python (pandas) และ SQL 10. การรั่วไหลของข้อมูลและการทำซ้ำ: ภัยพิบัติเงียบและวินัย 11. มูลนิธิ MLOps จริยธรรม ความเป็นส่วนตัว และการวิเคราะห์อย่างมีความรับผิดชอบ
หน่วย 6 / 11

การสร้างโมเดล: การนิยามปัญหา การเลือกอัลกอริทึม และการแบ่งการฝึกอบรม/การทดสอบ

กำไร:

  • ความสามารถในการกำหนดประเภทของปัญหา (การจำแนก การถดถอย การจัดกลุ่ม) และเกณฑ์ความสำเร็จตามต้นทุนที่แท้จริงของงาน
  • ความสามารถในการแบ่งข้อมูลอย่างตรงไปตรงมา (โดยไม่ต้องสัมผัสชุดทดสอบ ตามลำดับเวลาในอนุกรมเวลา) และสร้างพื้นฐานการประเมินที่ปราศจากการรั่วไหล
  • ความสามารถในการเลือกแบบจำลองที่สามารถตีความได้โดยการเริ่มต้นด้วยพื้นฐานที่เรียบง่าย และเพิ่มความซับซ้อนเมื่อสมควรเท่านั้น

จนถึงตอนนี้เราได้รวบรวมข้อมูล ทำความสะอาด สำรวจ และสร้างฟีเจอร์ต่างๆ ทีนี้มาถึงการทำงานจริงการสร้างแบบจำลอง แบบจำลองคือโครงสร้างทางคณิตศาสตร์ที่เรียนรู้รูปแบบจากข้อมูลและสร้างการคาดการณ์สำหรับสถานการณ์ใหม่ แต่ส่วนที่สำคัญที่สุดในการสร้างแบบจำลองไม่ใช่ตัวโค้ด แต่เป็นการตัดสินใจสองประการที่เกิดขึ้นก่อนหน้า: การกำหนดปัญหาที่ถูกต้องและการแยกข้อมูลอย่างถูกต้อง AI เป็นที่ปรึกษาที่ทรงพลังในการเลือกอัลกอริทึม การเขียนโค้ด และการปรับพารามิเตอร์ แต่ขึ้นอยู่กับผู้ตัดสินใจว่าจะทำนายอะไรและความสำเร็จหมายถึงอะไร ปัญหาที่มีการกำหนดไว้ไม่ดีจะไม่ทำงานแม้จะมีแบบจำลองที่เขียนมาอย่างสมบูรณ์ก็ตาม

คำจำกัดความของปัญหาก่อน: เราคาดการณ์อะไร

งานการสร้างแบบจำลองทุกงานเริ่มต้นด้วยคำถาม และคำถามนี้จะกำหนดประเภทของแบบจำลอง การจัดประเภท — ผลลัพธ์เป็นหมวดหมู่: "ลูกค้ารายนี้จะออกหรืออยู่ต่อ", "ธุรกรรมนี้เป็นของปลอมหรือไม่" การถดถอย (ในภาษาอังกฤษ การถดถอย - ผลลัพธ์เป็นตัวเลข): ​​"บ้านหลังนี้มีมูลค่าเท่าไหร่", "เดือนหน้าจะมีคำสั่งซื้อกี่รายการ" การจัดกลุ่ม (การแบ่งข้อมูลที่ไม่มีป้ายกำกับออกเป็นกลุ่มทั่วไป): "ลูกค้าของฉันแบ่งออกเป็นกลุ่มทั่วไปกี่กลุ่ม"

ส่วนที่สองของคำชี้แจงปัญหาคือเกณฑ์ความสำเร็จ: โมเดลนี้ "ดี" หมายความว่าอย่างไร ในรูปแบบการฉ้อโกง การพลาดผู้ฉ้อโกงนั้นมีราคาแพงกว่าการบล็อกลูกค้าที่ซื่อสัตย์โดยไม่ได้ตั้งใจ ดังนั้นไม่ใช่ "ความแม่นยำทั่วไป" แต่เป็น "อัตราการจับผู้ฉ้อโกง" มาเป็นอันดับแรก หากคุณไม่กำหนดเกณฑ์นี้ตั้งแต่ต้น ร่วมกับเจ้าของธุรกิจ คุณจะพบกับโมเดลที่ "มีความแม่นยำสูง" ซึ่งใช้ไม่ได้ผล (เราจะเจาะลึกลงไปในเมตริกในหน่วยที่ 7)

ข้อควรระวัง: "ความถูกต้อง" อาจทำให้เข้าใจผิดได้ หากธุรกรรม 10 จาก 1,000 รายการเป็นการฉ้อโกง โมเดลโง่ที่ระบุว่า "ไม่มีการฉ้อโกง" จะให้ความแม่นยำ 99% แต่จะไม่จับผู้ฉ้อโกงแม้แต่คนเดียว เลือกเกณฑ์ความสำเร็จโดยพิจารณาจากต้นทุนที่แท้จริงของปัญหา

การแยกการฝึกอบรม/การทดสอบ: การตรวจสอบแบบจำลองอย่างตรงไปตรงมา

การทดสอบแบบจำลองด้วยข้อมูลที่ได้เรียนรู้ก็เหมือนกับการถามคำถามเดียวกันกับนักเรียนที่เขา/เธอเรียนในข้อสอบ เขาได้คะแนนสูงแต่ไม่ได้แสดงสิ่งที่เขารู้จริงๆ ดังนั้นเราจึงแบ่งข้อมูลออกเป็นสองส่วน (มักเป็นสามส่วน):

  • ชุดฝึกอบรม (ชุดฝึกอบรมเป็นภาษาอังกฤษ ปกติ 70-80%): โมเดลเรียนรู้เกี่ยวกับสิ่งนี้
  • ชุดทดสอบ (ชุดทดสอบ ปกติ 20-30%): โมเดลไม่เห็นสิ่งนี้เลย ประสิทธิภาพที่แท้จริงวัดได้ที่นี่
  • ชุดการตรวจสอบความถูกต้อง: ชุดระดับกลางที่ใช้สำหรับการตั้งค่าโมเดล (พารามิเตอร์ใดดีกว่า) เพื่อให้ชุดทดสอบ "สะอาด"

กฎพื้นฐานที่สุด: ห้ามสัมผัสชุดทดสอบระหว่างการฝึก การปรับขนาด การเขียนโค้ด การเลือกคุณสมบัติ - ทั้งหมดนี้เรียนรู้จากชุดการฝึก จากนั้นนำไปประยุกต์ใช้กับการทดสอบ (หลักการรั่วไหลจากหน่วยที่ 5) ชุดทดสอบเป็นครั้งแรกที่แบบจำลองมองเห็นโลกแห่งความเป็นจริง หากคุณเปิดเครื่องเร็วเกินไป คุณจะไม่มีวันรู้ถึงประสิทธิภาพที่แท้จริง

ข้อยกเว้นอนุกรมเวลา: หากข้อมูลของคุณขึ้นอยู่กับเวลา (ยอดขาย ตลาดหุ้น อุปสงค์) การแยกแบบสุ่มจะไม่เกิดขึ้น เพราะการแยกแบบสุ่มทำให้โมเดลมองเห็นอนาคตและทำนายอดีตได้ - นี่คือการรั่วไหล ให้แบ่งตามลำดับเวลาแทน: ฝึกกับช่วงเวลาเก่า ทดสอบกับช่วงเวลาใหม่

การเลือกอัลกอริทึม: จากง่ายไปซับซ้อน

ข้อผิดพลาดที่พบบ่อยที่สุดของผู้เริ่มต้นคือการเริ่มต้นด้วยโมเดลที่ซับซ้อนที่สุด แนวทางที่ถูกต้องนั้นตรงกันข้าม: ขั้นแรกให้สร้างพื้นฐานง่ายๆ "เดาชั้นเรียนส่วนใหญ่เสมอ" ในการจำแนกประเภท; "ประมาณค่าเฉลี่ยเสมอ" ในการถดถอย โมเดลโง่ๆ นี้ให้พื้นฐาน หากโมเดลจริงของคุณไม่ผ่านสิ่งนี้ แสดงว่ามีปัญหา จากนั้นไปยังโมเดลที่เรียบง่ายและตีความได้

รุ่น

ประเภทปัญหา

จุดแข็ง

ความอ่อนแอ

ข้อมูลพื้นฐาน (ส่วนใหญ่/เฉลี่ย)

ทั้งสองอย่าง

ให้เกณฑ์มาตรฐาน

ไม่เรียนรู้

การถดถอยโลจิสติก

การจำแนกประเภท

เรียบง่ายตีความได้

ความสัมพันธ์เชิงเส้นเท่านั้น

การถดถอยเชิงเส้น

การถดถอย

ง่ายรวดเร็ว

สมมติฐานเชิงเส้น

ต้นไม้ตัดสินใจ

ทั้งสองอย่าง

ตีความได้

ท่องจำง่าย

ป่าสุ่ม

ทั้งสองอย่าง

แข็งแรงทนทาน

ตีความได้น้อยลง

การเร่งการไล่ระดับสี (XGBoost ฯลฯ )

ทั้งสองอย่าง

แข็งแกร่งมาก

ปรับยาก เสี่ยงต่อการท่องจำ

กฎ: เลือกโมเดลที่ "ดีพอ" ที่ง่ายที่สุด ความสามารถในการตีความมีคุณค่ามากกว่าอำนาจในบริบททางธุรกิจส่วนใหญ่ เป็นการดีกว่าที่จะอธิบายการปฏิเสธสินเชื่อ "เนื่องจากอัตราส่วนหนี้สินต่อรายได้ของคุณสูง" มากกว่า "เพราะกล่องดำกล่าวไว้เช่นนั้น"

มินิเคสสามอัน

กรณีที่ 1 — คำจำกัดความของปัญหาไม่ถูกต้อง ทีมงานสร้างแบบจำลองการจำแนกประเภทโดยยึดตาม "ความพึงพอใจของลูกค้า" แต่เลือก "ความถูกต้อง" เป็นเกณฑ์ความสำเร็จ จากข้อมูลพบว่า 88% ของลูกค้าพึงพอใจ แบบจำลองนี้มีความแม่นยำ 88% โดยการเรียกทุกคนว่า "พอใจ" และไม่เคยจับคนที่ไม่พอใจได้ แม้ว่าเป้าหมายที่แท้จริงคือการตามหาพวกเขาก็ตาม บทเรียน: เลือกเกณฑ์ความสำเร็จตามวัตถุประสงค์ที่แท้จริง

กรณีที่ 2 — เวลารั่วในช่อง ในโครงการพยากรณ์ความต้องการ ข้อมูลจะถูกแบ่งแบบสุ่ม แบบจำลองนี้ให้ความแม่นยำ 93% แต่เกิดข้อผิดพลาดในการใช้งานจริง เนื่องจากในการฝึกอบรม โมเดลได้คาดการณ์ไว้ว่าในเดือนมกราคม จากนั้นในเดือนพฤศจิกายน พร้อมด้วยข้อมูลในเดือนธันวาคม ซึ่งมองเห็นอนาคตได้ เมื่อเราเปลี่ยนมาใช้การแบ่งตามลำดับเวลา ประสิทธิภาพจริงเพิ่มขึ้นเป็น 74% บทเรียน: การแบ่งตามลำดับเวลาในอนุกรมเวลา

กรณีที่ 3 — ความซับซ้อนที่ไม่จำเป็น นักวิเคราะห์รายหนึ่งเริ่มต้นโดยตรงกับโครงข่ายประสาทเชิงลึก ปรับจูนเป็นเวลาหลายสัปดาห์ และได้รับความแม่นยำ 81% จากนั้นเพื่อนร่วมงานคนหนึ่งได้รับ 80% ด้วยการถดถอยโลจิสติก 20 บรรทัด ซึ่งเร็วกว่ามาก ตีความได้ และบำรุงรักษาง่ายกว่ามาก บทเรียน: เริ่มต้นด้วยพื้นฐานและแบบจำลองง่ายๆ เพิ่มความซับซ้อนเมื่อสมควรได้รับ

เทมเพลตที่สามารถคัดลอกได้สี่แบบ

1) ชี้แจงคำจำกัดความของปัญหา:

บทบาทของคุณ: ที่ปรึกษาด้านการสร้างแบบจำลอง ช่วยฉันกำหนดงานนี้: “ฉันต้องการลดการเลิกจ้างของลูกค้า” ถามฉันและชี้แจง: (1) นี่คือการจำแนกประเภทหรือการถดถอย (2) ตัวแปรเป้าหมายคืออะไรกันแน่ และควรนิยามไว้อย่างไร (3) เกณฑ์ความสำเร็จควรเป็นอย่างไร และเพราะเหตุใด การตัดสินใจเป็นของฉัน คุณนำเสนอคำถามและตัวเลือก

2) ช่องการฝึกอบรม/การทดสอบที่ปลอดภัย:

แบ่ง df ของฉันออกเป็นการฝึกอบรม/การทดสอบ 80%/20% คงไว้ซึ่งการกระจายคลาส (stratify).random_state=42 นี่ไม่ใช่อนุกรมเวลา (การสังเกตอิสระ) พิมพ์อัตราส่วนชั้นเรียนของแต่ละชุดหลังการแบ่ง เพียงให้โค้ดแยกกับชุดทดสอบโดยไม่ต้องใช้การแปลงใดๆ

3) การแบ่งอนุกรมเวลา:

ข้อมูลจะขึ้นอยู่กับเวลา (คอลัมน์วันที่: order_date) ไม่ใช่การสุ่ม แบ่งตามลำดับเวลา: การฝึก 80% ที่เก่าที่สุด การทดสอบใหม่ล่าสุด 20% พิมพ์ช่วงวันที่ฝึกอบรมและทดสอบออกมา เพื่อที่ฉันจะได้ตรวจสอบได้ว่าอนาคตไม่รั่วไหล

4) การตั้งค่าพื้นฐาน:

ฉันมีปัญหาในการจำแนกประเภท (เป้าหมาย: ปั่น 0/1) ขั้นแรก สร้างพื้นฐาน: วัดความแม่นยำในการฝึกอบรม/การทดสอบด้วย DummyClassifier ซึ่งจะคาดการณ์คลาสส่วนใหญ่เสมอ จากนั้นฝึกการถดถอยโลจิสติกอย่างง่ายและเปรียบเทียบว่าเกินค่าพื้นฐานหรือไม่ แสดงหน่วยเมตริกของทั้งสองแบบเคียงข้างกัน

พรอมต์อ่อน / พรอมต์แข็งแกร่ง

พรอมต์ที่อ่อนแอ:

สร้างโมเดลที่ดีที่สุดด้วยข้อมูลนี้

"ดีที่สุด" ไม่ได้กำหนด; ไม่มีประเภทปัญหา ไม่มีเป้าหมาย ไม่มีเกณฑ์ความสำเร็จ และไม่มีกลยุทธ์การแบ่งแยก AI สร้างรูปแบบสุ่มที่อาจรั่ว

พรอมต์อันทรงพลัง:

บทบาทของคุณ: ผู้ช่วยนางแบบ ปัญหา: การจำแนกประเภท เป้าหมาย "ปั่น" (0/1) มีความไม่สมดุลของคลาส (~ 12% การปั่น) เกณฑ์ความสำเร็จ: การระลึกถึงผู้ที่ปั่นป่วนเป็นสิ่งสำคัญ การสังเกตข้อมูลโดยอิสระ (ไม่ใช่อนุกรมเวลา) งาน: (1) การแยกชั้น 80/20%, (2) พื้นฐาน DummyClassifier, (3) การถดถอยโลจิสติก, การเปลี่ยนแปลงทั้งหมดในไปป์ไลน์ และเรียนรู้จากการฝึกอบรมเท่านั้น อย่าสัมผัสชุดทดสอบก่อนที่จะแยก

ต่อไปนี้ประเภทของปัญหา ความไม่สมดุล เกณฑ์ และมาตรการวัดการรั่วไหลมีความชัดเจน

ข้อผิดพลาดทั่วไป

  • ไม่เลือกเกณฑ์ความสำเร็จตามวัตถุประสงค์ที่แท้จริง "ความถูกต้อง" ในข้อมูลที่ไม่สมดุลทำให้เข้าใจผิด หากคุณต้องการยึดครองชนกลุ่มน้อย การเรียกคืนจะต้องมาก่อน
  • การสัมผัสชุดทดสอบระหว่างการฝึก การปรับขนาด/การเข้ารหัสก่อนการแยกจะรั่วและซ่อนประสิทธิภาพที่แท้จริงไว้
  • การแยกแบบสุ่มในอนุกรมเวลา โมเดลมองเห็นอนาคต ล่มสลายในการผลิต การแบ่งตามลำดับเวลาเป็นสิ่งสำคัญ
  • กระโดดเข้าสู่โมเดลที่ซับซ้อนโดยไม่ต้องสร้างพื้นฐาน หากไม่มีการวัดประสิทธิภาพ คุณจะไม่มีทางรู้ได้ว่าโมเดลนั้นดีจริงหรือไม่
  • ละเลยการตีความ ในการตัดสินใจทางธุรกิจ โมเดลที่อธิบายได้ง่ายมักจะมีคุณค่ามากกว่ากล่องดำ
เคล็ดลับ: ก่อนที่คุณจะเริ่มสร้างแบบจำลอง ให้เขียนหนึ่งประโยค: “แบบจำลองนี้จะทำนาย _____ ความสำเร็จของแบบจำลองจะวัดโดยหน่วยวัด _____ เนื่องจากต้นทุนที่แท้จริงของงานคือ _____” หากคุณไม่สามารถกรอกประโยคนี้ได้ แสดงว่าคุณยังไม่พร้อมที่จะเขียนโค้ด

โดยสรุป

ส่วนที่สำคัญที่สุดของการสร้างแบบจำลองไม่ใช่โค้ด แต่เป็นการตัดสินใจที่เกิดขึ้นก่อนหน้า: การกำหนดปัญหาที่ถูกต้อง (การจำแนกประเภทหรือการถดถอย เป้าหมายคืออะไร เกณฑ์ความสำเร็จคืออะไร) และการแบ่งข้อมูลอย่างยุติธรรม (โดยไม่ต้องแตะชุดทดสอบ ตามลำดับเวลาในอนุกรมเวลา) เริ่มต้นด้วยพื้นฐานง่ายๆ เสมอและเพิ่มความซับซ้อนเมื่อสมควรได้รับเท่านั้น ความสามารถในการตีความมีความสำคัญมากกว่าอำนาจในบริบททางธุรกิจส่วนใหญ่ AI เป็นที่ปรึกษาที่ทรงพลังในการเลือกอัลกอริธึมและโค้ด แต่มนุษย์จะเป็นผู้ตัดสินใจว่าคุณคาดการณ์อะไรและเพราะเหตุใด

งานสมัคร

กำหนดปัญหาการทำนายและเขียนประโยคต่อไปนี้ให้สมบูรณ์: “แบบจำลองนี้จะทำนาย ___ (การจำแนกประเภท/การถดถอย) เป้าหมายคือ ___ เกณฑ์ความสำเร็จคือ ___ เพราะ ___” จากนั้นแบ่งข้อมูลตามกลยุทธ์ที่ถูกต้อง (ตามลำดับเวลาหากเป็นอนุกรมเวลา) สร้างเส้นฐาน และวัดว่ารูปแบบง่ายๆ ทำลายเส้นฐานนั้นหรือไม่

รายการตรวจสอบ

  • [ ] ฉันได้กำหนดประเภทของปัญหา (การจำแนกประเภท/การถดถอย) และเป้าหมายไว้อย่างชัดเจนหรือไม่
  • [ ] ฉันได้เลือกเกณฑ์ความสำเร็จตามต้นทุนจริงของงานหรือไม่
  • [ ] ฉันปล่อยชุดทดสอบทิ้งไว้โดยไม่มีใครแตะต้องระหว่างการฝึกหรือไม่?
  • [ ] ถ้าเป็นอนุกรมเวลา ต้องแบ่งตามลำดับเวลาหรือไม่?
  • [ ] ฉันได้สร้างพื้นฐานก่อนที่จะก้าวไปสู่โมเดลที่ซับซ้อนแล้วหรือยัง?