ความสำคัญของฟีเจอร์ใน Random Forest
ข้อดีอย่างหนึ่งของวิธีการแบบ tree-based คือความสามารถในการดึง feature importances ออกมาได้ ซึ่งเป็นวิธีวัดเชิงปริมาณว่าแต่ละฟีเจอร์มีส่วนช่วยในการพยากรณ์มากน้อยเพียงใด ข้อมูลนี้ช่วยให้เราโฟกัสไปที่ฟีเจอร์ที่ดีที่สุด รวมถึงช่วยตัดฟีเจอร์ที่ไม่มีประโยชน์ออก เพื่อไม่ให้โมเดลรับข้อมูลที่ไม่จำเป็น
โมเดล tree ใน sklearn มี property ชื่อ .feature_importances_ ที่เข้าถึงได้หลังจาก fit โมเดลแล้ว ซึ่งเก็บค่าคะแนนความสำคัญของแต่ละฟีเจอร์ไว้ จากนั้นต้องใช้ np.argsort() เพื่อเรียงลำดับ index ของฟีเจอร์ตามความสำคัญ แล้วนำไปสร้างกราฟแท่งแสดง feature importances จากมากไปน้อย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning สำหรับการเงินด้วย Python
คำแนะนำการฝึกหัด
- ใช้ property
feature_importances_ของโมเดล random forest (rfr) เพื่อดึงค่าความสำคัญของฟีเจอร์มาเก็บในตัวแปรimportances - ใช้
argsortของ numpy เพื่อหา index ของฟีเจอร์ที่เรียงจากมากไปน้อย แล้วบันทึกไว้ในตัวแปรsorted_index - กำหนด xtick labels เป็นชื่อฟีเจอร์ในตัวแปร
labelsโดยใช้ listsorted_indexโดยfeature_namesต้องแปลงเป็น numpy array ก่อน จึงจะสามารถ index ด้วยsorted_indexได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Get feature importances from our random forest model
importances = rfr.____
# Get the index of importances from greatest importance to least
sorted_index = ____(importances)[::-1]
x = range(len(importances))
# Create tick labels
labels = np.array(____)[____]
plt.bar(x, importances[sorted_index], tick_label=labels)
# Rotate tick labels to vertical
plt.xticks(rotation=90)
plt.show()