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

วิศวกรรมเชิงคุณลักษณะ: การสร้างตัวแปร การเข้ารหัส การปรับขนาด และการหลีกเลี่ยงการรั่วไหล

กำไร:

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

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

ทำไมต้องมีวิศวกรรม

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

การแปลงตัวแปรเด็ดขาดเป็นตัวเลข: การเข้ารหัส

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

การเข้ารหัสแบบร้อนแรง: เปิดคอลัมน์แยกต่างหากโดยมีค่า 0/1 สำหรับแต่ละหมวดหมู่ สำหรับ "เมือง" มีการสร้างคอลัมน์อิสตันบูล อังการา อิซเมียร์ หากลูกค้ามาจากอิสตันบูล เฉพาะคอลัมน์นั้นจะเป็น 1 เหมาะอย่างยิ่งเมื่อจำนวนหมวดหมู่น้อย หากมีหมวดหมู่มากเกินไป ระบบจะสร้างคอลัมน์หลายร้อยคอลัมน์ (ซึ่งเรียกว่า "การขยายขนาด")

การเข้ารหัสป้ายกำกับ: ให้ตัวเลขแก่แต่ละหมวดหมู่ (อิสตันบูล=0, อังการา=1) มันง่าย แต่อาจบังเอิญสอนโมเดลถึงลำดับ (เช่น อังการา > อิสตันบูล) ดังนั้นจึงใช้ด้วยความระมัดระวังในหมวดหมู่ที่ไม่เรียงลำดับ

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

การปรับขนาด: ตัวเลขจำนวนมากไม่ทำให้โมเดลมากเกินไป

โมเดลบางรุ่น (แบบอิงระยะทาง โมเดลเชิงเส้น โครงข่ายประสาทเทียม) มีความไวต่อขนาดของตัวแปร หาก "รายได้" (0-500,000) และ "อายุ" (0-100) อยู่ในรูปแบบเดียวกัน รายได้อาจครอบงำเพียงเพราะมันมากกว่า การปรับขนาดจะแก้ไขปัญหานี้ สองวิธีทั่วไป: การทำให้เป็นมาตรฐาน (แปลงแต่ละค่าเป็น "จำนวนส่วนเบี่ยงเบนมาตรฐานที่ห่างจากค่าเฉลี่ย") และการทำให้เป็นมาตรฐาน (การทำให้เป็นมาตรฐานขั้นต่ำ-สูงสุด - บีบอัดค่าให้อยู่ในช่วง 0-1) โมเดลแบบต้นไม้ (แผนผังการตัดสินใจ, ฟอเรสต์สุ่ม) เป็นโมเดลที่ไม่คำนึงถึงขนาด และไม่จำเป็นต้องมีการปรับขนาด

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

หัวใจของการรั่วไหลในด้านวิศวกรรมฟีเจอร์

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

วิธีการ

เพื่ออะไร

เสี่ยงต่อการรั่วไหล

หมายเหตุ

การเข้ารหัสที่ร้อนแรงเพียงครั้งเดียว

ตัวแปรที่มีไม่กี่หมวดหมู่

ต่ำ

ระเบิดขนาดได้หลายประเภท

การเข้ารหัสฉลาก

หมวดหมู่ที่เรียงลำดับ

ต่ำ

ไม่เป็นระเบียบสอนให้ผิดลำดับ

การเข้ารหัสเป้าหมาย

หลายหมวดหมู่ สัญญาณแรง

สูงมาก

เพียงจากการศึกษาใน CV

การทำให้เป็นมาตรฐาน

โมเดลเชิงเส้น/ระยะทาง

ปานกลาง

พารามิเตอร์ขึ้นอยู่กับการศึกษาเท่านั้น

คุณสมบัติหน้าต่างเวลา

อนุกรมเวลา

สูง

เพิ่มอนาคต

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

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

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

กรณีที่ 3 — ลืมปรับขนาด นักวิเคราะห์รายหนึ่งป้อนรายได้ (0-400,000) และอายุของลูกค้า (18-75) ลงในแบบจำลองตามระยะทางโดยไม่ต้องปรับขนาด โมเดลนี้มองที่รายได้เกือบทั้งหมด ทำลายผลกระทบด้านอายุ เมื่อเพิ่มการปรับขนาด การแบ่งส่วนก็มีความหมาย บทเรียน: การปรับขนาดไม่ได้ถูกละเลยในโมเดลระยะทาง/เชิงเส้น

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

1) การสร้างแนวคิดเชิงคุณลักษณะ (การกำจัดขึ้นอยู่กับคุณ):

บทบาทของคุณ: ผู้ช่วยด้านวิศวกรรมที่มีคุณสมบัติ คอลัมน์ df ของฉัน: Bir_date, Order_time (ประทับเวลา), Income_tl, Debt_tl, เมือง, product_category เป้าหมาย: "จะชำระคืนเงินกู้หรือไม่" (0/1) แนะนำคุณลักษณะ 15 ประการที่สามารถสร้างได้จากคอลัมน์เหล่านี้ ระบุความเสี่ยงของการรั่วไหล (ต่ำ/กลาง/สูง) แต่ละรายการ ทำเครื่องหมายผู้ที่มีข้อมูลในอนาคตอย่างชัดเจน

2) การเข้ารหัสที่ปลอดภัย (หลังการแยก):

เขียนโค้ดที่ร้อนแรงเข้ารหัส "เมือง" และ "product_category" สิ่งสำคัญ: ปรับการเข้ารหัสให้พอดีกับข้อมูลการฝึกอบรมเท่านั้น จากนั้นจึงแปลงข้อมูลการทดสอบ (ด้วย sklearn OneHotEncoder) อธิบายว่าคุณจัดการกับหมวดหมู่ที่มองไม่เห็น (handle_unknown) ในด้านการศึกษาอย่างไร

3) การแปลงแบบไม่มีรอยรั่วด้วยไปป์ไลน์:

ตั้งค่า sklearn Pipeline: ใช้ StandardScaler กับคอลัมน์ตัวเลข, OneHotEncoder กับคอลัมน์หมวดหมู่, เพิ่มตัวแยกประเภทที่ส่วนท้าย รับประกันว่าการเปลี่ยนแปลงทั้งหมดจะได้เรียนรู้หลังจากการแยกรถไฟ/การทดสอบ และจากการฝึกอบรมเท่านั้น อธิบายโค้ดและสาเหตุที่ไม่มีการรั่วไหล

4) คุณสมบัติกรอบเวลา (การควบคุมการรั่วไหล):

สร้างแอตทริบิวต์ "จำนวนคำสั่งซื้อในช่วง 30 วันที่ผ่านมา" สำหรับลูกค้าแต่ละราย แต่อย่ารวมข้อมูลหลังวันที่คาดการณ์ อธิบายทีละบรรทัดว่าโค้ดไม่ได้มองไปสู่อนาคต ฉันจะให้คอลัมน์วันที่อ้างอิง

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

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

เพิ่มคุณสมบัติที่ดีให้กับข้อมูลนี้

“ดี” ไม่มีคำจำกัดความ เป้าหมายไม่ชัดเจน ไม่มีการควบคุมการรั่วไหล AI สร้างฟีเจอร์แบบสุ่มหรืออาจรั่วไหล

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

บทบาทของคุณ: วิศวกรฟีเจอร์ เป้าหมาย: "เลิกใช้งานใน 30 วัน" (0/1) วันที่อ้างอิงโดยประมาณ: save_date มีประวัติการทำธุรกรรมใน df.Task: สร้าง 8 คุณสมบัติ ตอบคำถาม "ฉันมีข้อมูลนี้ในขณะที่คาดการณ์" สำหรับ EACH หรือไม่ การเพิ่มวันที่หลังวันที่อ้างอิงในฟีเจอร์กรอบเวลา เขียนโค้ดในลักษณะที่เข้ากันได้กับไปป์ไลน์ที่จะดำเนินการหลังจากส่วนการฝึก/การทดสอบ

ในที่นี้จะมีการกำหนดเป้าหมาย เวลาอ้างอิง และการควบคุมการรั่วไหลตั้งแต่ต้น

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

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

โดยสรุป

วิศวกรรมคุณลักษณะเป็นศิลปะในการสร้างสัญญาณที่มีความหมายจากข้อมูลดิบ และมักจะเป็นตัวกำหนดความสำเร็จของแบบจำลองมากกว่าอัลกอริทึม การเข้ารหัสหมวดหมู่ (one-hot, label, target), การปรับขนาดตัวเลข (มาตรฐาน, การทำให้เป็นมาตรฐาน) และการสร้างคุณสมบัติอนุพันธ์ที่มีความรู้เกี่ยวกับโดเมนเป็นเครื่องมือพื้นฐาน แต่ระยะนี้ก็เป็นหัวใจของการรั่วไหลเช่นกัน การเปลี่ยนแปลงทั้งหมดจะต้องเรียนรู้หลังจากแยกการฝึก/การทดสอบ และจากข้อมูลการฝึกเท่านั้น AI ก่อให้เกิดไอเดียมากมาย มันเป็นวิจารณญาณของมนุษย์ที่แยกแยะของมีค่าออกจากของอันตราย

งานสมัคร

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

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

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