วิธีการดำเนินการด้านวิศวกรรมคุณสมบัติในคุณสมบัติที่ไม่รู้จัก?


19

ฉันมีส่วนร่วมในการแข่งขัน kaggle ชุดข้อมูลมีคุณลักษณะประมาณ 100 รายการและไม่เป็นที่รู้จักทั้งหมด โดยทั่วไปพวกเขาเป็นเพียงตัวเลข

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

คำตอบ:


19

คุณไม่จำเป็นต้องมีความรู้เกี่ยวกับโดเมน (ความรู้เกี่ยวกับความหมายของข้อมูลของคุณ) เพื่อทำวิศวกรรมฟีเจอร์ (ค้นหาวิธีที่ชัดเจนกว่าในการกำหนดกรอบข้อมูลของคุณ)


ดังที่Tu N. อธิบายไว้คุณสามารถค้นหาการรวมคุณสมบัติ "ที่รวดเร็วและสกปรก" ซึ่งอาจเป็นประโยชน์ได้อย่างง่ายดาย ได้รับการส่งออกและคุณลักษณะของแต่ละบุคคลxคุณสามารถใช้การแปลงต่อไปนี้x '{ E x , บันทึก( x ) , x 2 , x 3 , tanh ( x ) } การตรวจสอบอย่างรวดเร็วของประโยชน์ของการเปลี่ยนแปลงคือถ้าความสัมพันธ์ระหว่าง{ y , x }สูงกว่าความสัมพันธ์ระหว่างyxx{ex,log(x),x2,x3,tanh(x)}{y,x} }{y,x}

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

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

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


DD2

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

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

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


ในเนื้อหาที่เกี่ยวข้องฉันจะแนะนำวิดีโอต่อไปนี้เนื่องจากง่ายต่อการติดตาม


4

คุณสามารถใช้คุณสมบัติที่แตกต่างกันเช่นผลรวมของคุณสมบัติ: feat_1 + feat_2 + feat_3... หรือผลิตภัณฑ์ของสิ่งเหล่านั้น หรือคุณสามารถแปลงคุณสมบัติตามบันทึกหรือเลขชี้กำลัง, sigmoid ... หรือลดทอนคุณลักษณะตัวเลขให้เป็นหมวดหมู่ได้ มันเป็นพื้นที่ที่ไม่มีที่สิ้นสุดในการสำรวจ

ไม่ว่าจะเป็นการผสมผสานหรือการแปลงที่เพิ่มประสิทธิภาพการตรวจสอบข้ามหรือการทดสอบชุดของคุณคุณก็ควรใช้มัน


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

1

คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับตัวอย่างที่เฉพาะเจาะจงเกี่ยวกับคำสั่งต่อไปของคุณได้ไหม

The dataset has around 100 features and all are unknown (in terms of what actually they represent). Basically they are just numbers.

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

ข้อมูลแบบตารางมีการอธิบายในแง่ของการสังเกตหรืออินสแตนซ์ (แถว) ที่ประกอบด้วยตัวแปรหรือคุณลักษณะ (คอลัมน์) แอตทริบิวต์อาจเป็นคุณลักษณะ

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

ในการมองเห็นคอมพิวเตอร์ภาพคือการสังเกต แต่คุณสมบัติอาจเป็นเส้นตรงในภาพ

ในการประมวลผลภาษาธรรมชาติเอกสารหรือทวีตอาจเป็นข้อสังเกตและการนับวลีหรือคำอาจเป็นคุณลักษณะ

ในการรู้จำเสียงคำพูดอาจเป็นการสังเกต แต่คุณลักษณะอาจเป็นคำหรือฟอนิมเดี่ยว "

กรุณาเยี่ยมชม URL ต่อไปนี้เพื่อเพิ่มเติม:

ค้นพบคุณสมบัติของวิศวกรรม, วิธีการสร้างคุณสมบัติของวิศวกรและวิธีการใช้ประโยชน์จากมัน


แอ็ตทริบิวต์ในเคสของ OP ถูกลบล้างโดยไม่ระบุชื่อจนถึงจุดที่ความรู้โดเมนไม่สามารถใช้ได้ นี่เป็นเรื่องธรรมดาในการแข่งขัน Kaggle แต่รูปแบบทางวิศวกรรมที่ จำกัด ยังคงเป็นไปได้ โดยทั่วไปแล้วคุณสมบัติใหม่จะถูกสร้างขึ้นเป็นกลุ่มแล้วทดสอบเมื่อเทียบกับการใช้ความรู้เรื่องเพื่อเป็นแนวทางในการสร้างของพวกเขา ตัวอย่าง: kaggle.com/c/bnp-paribas-cardif-claims-management/data
Neil Slater

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