การเลือกคุณสมบัติพร้อมป่าสุ่ม


16

ฉันมีชุดข้อมูลที่มีตัวแปรทางการเงินเป็นส่วนใหญ่ (คุณสมบัติ 120 ตัวอย่าง 4k) ซึ่งส่วนใหญ่มีความสัมพันธ์สูงและมีเสียงดังมาก (ตัวชี้วัดทางเทคนิคเป็นต้น) ดังนั้นฉันต้องการเลือกสูงสุด 20-30 สำหรับใช้ในภายหลังกับการฝึกอบรมแบบจำลอง - เพิ่ม / ลด)

ฉันกำลังคิดเกี่ยวกับการใช้ฟอเรสต์แบบสุ่มเพื่อจัดอันดับคุณลักษณะ มันเป็นความคิดที่ดีไหมที่จะใช้มันซ้ำ ๆ ? ตัวอย่างเช่นสมมติว่าในรอบแรกฉันลดระดับที่แย่ที่สุด 20% ที่สองเช่นกันไปเรื่อย ๆ จนกว่าฉันจะได้รับคุณสมบัติตามที่ต้องการ ฉันควรใช้การตรวจสอบข้ามกับ RF หรือไม่ (เป็นเรื่องง่ายสำหรับฉันที่จะไม่ใช้ CV เพราะมันเป็นสิ่งที่ RF ทำอยู่แล้ว)

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

ยังไงก็ตามแบบจำลองที่ฉันต้องการลองหลังจากการเลือกคุณสมบัติคือ: SVM, ตาข่ายประสาท, การถดถอยแบบถ่วงน้ำหนักในพื้นที่และฟอเรสต์แบบสุ่ม ฉันทำงานเป็นหลักใน Python


2
ต้องการเชื่อมต่อเพื่อแลกเปลี่ยนข้อมูลเชิงลึก ฉันกำลังทำงานกับสิ่งที่คล้ายกัน
user670186

มีเหตุผลใดที่ไม่มีใครแนะนำให้ใช้built-inคุณลักษณะของRandomForestClassifierใน sklearnชื่อfeature_importances_.... คุณจะเห็นมันในลิงค์
Candic3

ระวังเพราะmulticollinearityสามารถบิดเบือนความสำคัญของคุณสมบัติและการเลือกคุณสมบัติ ตรวจสอบ ที่นี่
Candic3

ระวังอัลกอริทึมเริ่มต้น: parrt.cs.usfca.edu/doc/rf-importance/index.html
ทิม

คำตอบ:


12

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

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

สรุป:

ขั้นที่ 1 : หากฟีเจอร์ X2 ปรากฏในต้นไม้ 25% จากนั้นให้ทำคะแนน มิฉะนั้นอย่าพิจารณาจัดอันดับคุณลักษณะเนื่องจากเราไม่มีข้อมูลเพียงพอเกี่ยวกับประสิทธิภาพ

ขั้นตอนที่2 : ตอนนี้กำหนดคะแนนประสิทธิภาพของต้นไม้ทุกต้นที่ X2 ปรากฏขึ้นเพื่อ X2 และเฉลี่ยคะแนน ตัวอย่างเช่น: perf (Tree1) = 0.85 perf (Tree2) = 0.70 perf (Tree3) = 0.30

จากนั้นความสำคัญของคุณสมบัติ X2 = (0.85 + 0.70 + 0.30) / 3 = 0.6167

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

เกี่ยวกับวิธีการค้นหาวิธีการเรียกซ้ำของคุณน่าจะเป็นวิธีการเลือกอันดับต้น ๆ

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


ขอบคุณสำหรับการป้อนข้อมูล (0.85+0.70+0.30)/3 = 0.6167ไม่ต้องการที่จะชี้ให้เห็นว่า
Hendy

5
หากคุณทำงานกับ python คุณสามารถใช้ความสำคัญของตัวแปรที่คำนวณใน sklearn โดยตรงเมื่อเรียกฟอเรสต์แบบสุ่ม
เกา

5

ฉันมีชุดข้อมูลที่มีตัวแปรทางการเงินเป็นส่วนใหญ่ (คุณสมบัติ 120 ตัวอย่าง 4k) ซึ่งส่วนใหญ่มีความสัมพันธ์สูงและมีเสียงดังมาก (ตัวชี้วัดทางเทคนิคเป็นต้น) ดังนั้นฉันต้องการเลือกสูงสุด 20-30 สำหรับใช้ในภายหลังกับการฝึกอบรมแบบจำลอง - เพิ่ม / ลด)

ตัวอย่าง 4k นั้นไม่เพียงพอที่จะประเมินสิ่งที่ซับซ้อนมาก - คุณต้องใช้โมเดลที่เป็นไปได้ง่ายที่สุด (การถดถอยเชิงเส้น / โลจิสติกเชิงเส้น SVM) และตัวแปรจำนวนน้อย

เนื่องจากข้อมูลของคุณมีเสียงดังและมีความสัมพันธ์กัน PCA น่าจะเป็นทางออกที่ดีที่สุดของคุณ [เป็นการระบุสัญญาณทั่วไปที่มีค่าเฉลี่ยมากกว่าตัวบ่งชี้แต่ละตัว]

การทำให้เป็นมาตรฐาน L2 (สำหรับตัวแบบเชิงเส้น) จะช่วยหาค่าเฉลี่ยของสัญญาณรบกวนเช่นถ้าคุณมีสำเนาที่มีเสียงดังของสัญญาณเดียวกันการทำให้เป็นมาตรฐานของ l2 จะทำให้น้ำหนักเหมือนกัน - โดยเฉลี่ยค่าตัวแปร n เหล่านั้น]

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