ยูทิลิตี้ของคุณสมบัติวิศวกรรม: เหตุใดจึงสร้างคุณลักษณะใหม่ตามคุณลักษณะที่มีอยู่


30

ฉันมักจะเห็นผู้คนสร้างคุณลักษณะใหม่ขึ้นอยู่กับคุณสมบัติที่มีอยู่ในปัญหาการเรียนรู้ของเครื่อง ตัวอย่างเช่นที่นี่: https://triangleinequality.wordpress.com/2013/09/08/basic-feature-engineering-with-the-titanic-data/คนได้พิจารณาขนาดของครอบครัวเป็นคุณลักษณะใหม่ตาม ตามจำนวนพี่น้องพี่น้องสตรีและผู้ปกครองซึ่งเป็นคุณลักษณะที่มีอยู่แล้ว

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


คำตอบ:


30

ตัวอย่างที่ใช้ง่ายที่สุดในการอธิบายสิ่งนี้คือปัญหา XOR (ดูภาพด้านล่าง) ลองนึกภาพว่าคุณได้รับข้อมูลที่ประกอบด้วยการประสานงานและyและคลาสไบนารีเพื่อทำนาย คุณสามารถคาดหวังว่าอัลกอริทึมการเรียนรู้เครื่องของคุณจะค้นหาขอบเขตการตัดสินใจที่ถูกต้องด้วยตัวเอง แต่ถ้าคุณสร้างฟีเจอร์เพิ่มเติมz = x yปัญหาจะกลายเป็นเรื่องไม่สำคัญเนื่องจากz > 0ให้เกณฑ์การตัดสินใจเกือบสมบูรณ์แบบสำหรับการจัดหมวดหมู่ เลขคณิต!xyz=xyz>0

ปัญหาแฮคเกอร์

ดังนั้นในหลายกรณีคุณอาจคาดหวังได้จากอัลกอริทึมในการค้นหาวิธีแก้ปัญหาหรือโดยการใช้คุณสมบัติทางวิศวกรรมคุณสามารถทำให้ปัญหาง่ายขึ้น ปัญหาง่าย ๆ คือการแก้ปัญหาที่ง่ายขึ้นและเร็วขึ้นและต้องการอัลกอริทึมที่ซับซ้อนน้อยลง อัลกอริทึมแบบง่ายมักจะมีประสิทธิภาพมากขึ้นผลลัพธ์มักจะสามารถตีความได้มากขึ้นพวกเขาสามารถปรับขนาดได้มากขึ้น (ทรัพยากรการคำนวณน้อยกว่าเวลาในการฝึกอบรม ฯลฯ ) และพกพา คุณสามารถหาตัวอย่างและคำอธิบายเพิ่มเติมในการพูดคุยที่ยอดเยี่ยมโดยVincent D. Warmerdam ที่ได้รับจากการประชุม PyData ในลอนดอนในลอนดอน

ยิ่งกว่านั้นอย่าเชื่อทุกสิ่งที่นักการเรียนรู้ของเครื่องบอกคุณ ในกรณีส่วนใหญ่อัลกอริทึมจะไม่ "เรียนรู้ด้วยตนเอง" คุณมักจะมีเวลา จำกัด ทรัพยากรกำลังการคำนวณและข้อมูลมักมีขนาด จำกัด และมีเสียงดังไม่ได้ช่วยอะไร

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

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


ขอบคุณมันอธิบายได้ดีมากและน่าสนใจมาก!
Matthieu Veron

ฉันพบคำตอบของคุณดีมาก แต่ฉันคิดว่ามันดีกว่าที่จะมีคุณสมบัติสักเล็กน้อย โดยเฉพาะฉันคิดว่าคุณสมบัติทางวิศวกรรมในแง่ของเงื่อนไขการโต้ตอบไม่ได้ลดความซับซ้อนของอัลกอริธึมเช่น RFs (แม้ว่ามันจะยังสามารถช่วยได้) เนื่องจาก RFs จะจับเงื่อนไขการโต้ตอบในระดับหนึ่งด้วยตนเอง แจ้งให้เราทราบหากฉันพลาดสิ่งสำคัญ แต่ใช่ในงานวิศวกรรมคุณสมบัติทั่วไปช่วยลดความยุ่งยากและช่วยสิ่งต่างๆมากมาย
Poete Maudit

@PoeteMaudit มันเป็นความจริงที่ต้นไม้การตัดสินใจ (และดังนั้น RF) สร้างแบบจำลองการโต้ตอบขนาดใหญ่หนึ่งครั้ง แต่เป็นการโต้ตอบบางประเภทไม่ใช่ทุกการโต้ตอบที่เป็นไปได้ ยิ่งไปกว่านั้นวิศวกรรมคุณลักษณะไม่เพียง แต่เกี่ยวกับการโต้ตอบ
ทิม

แน่นอนฉันเห็นด้วยกับคะแนนของคุณ ประการแรก RFs นั้นเป็นแบบปฏิสัมพันธ์ชนิดหนึ่ง (คุณหมายถึงส่วนใหญ่ x * y?) ประการที่สองวิศวกรรมฟีเจอร์นั้นไม่เพียง แต่เกี่ยวกับการโต้ตอบเท่านั้น
Poete Maudit

14

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

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

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


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

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

1
อย่างไรก็ตามนี่เป็นศิลปะมากกว่าวิทยาศาสตร์ ในตอนท้ายคุณจะต้องตรวจสอบประสิทธิภาพของฟีเจอร์ที่สร้างขึ้นด้วยมือของคุณโดยการทดสอบแบบจำลองของคุณในชุดทดสอบด้วยโปรโตคอลทดลองที่ไม่เอนเอียง ...
Daniel López

3

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

  1. Y=1

ขอบเขตวงกลม

x1x2y=x0+c1x1+c2x2y=x0+c1x12+c2x22

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

  2. ในโลกแห่งความเป็นจริงคุณจะไม่ได้รับชุดข้อมูลเดียวที่ Kaggle มอบให้ แต่คุณจะได้รับข้อมูลจากทั่วทุกที่ ตัวอย่างเช่นหากคุณต้องการทำนายการขัดสีของลูกค้าสำหรับ บริษัท ค้าปลีกออนไลน์เช่น Amazon คุณมีข้อมูลกลุ่มประชากรของลูกค้าข้อมูลธุรกรรมการซื้อ คุณต้องสร้างฟีเจอร์มากมายจากแหล่งต่าง ๆ ในกรณีนี้คุณจะพบว่ามีฟีเจอร์ที่มีประโยชน์มากมายที่สามารถรับ / รวมจากระดับธุรกรรม ตามที่ Andrew Ng กล่าวไว้: บ่อยครั้งความสามารถในการทำวิศวกรรมคุณลักษณะจะกำหนดความสำเร็จหรือความล้มเหลวของโครงการเรียนรู้ของเครื่อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.