iT邦幫忙

0

Day 20|集成學習首部曲:隨機森林(Random Forest)分類實戰與特徵重要性視覺化 標籤: Python、機器學習、Scikit-Learn、隨機森林、集成學習、新手入門 文章內容:

  • 分享至 

  • xImage
  •  

第二十天,我們要進入現代機器學習中最實用且強悍的技術——集成學習。,昨天學到的單一決策樹雖然直觀好懂,但容易受到極端值干擾且極易過擬合。為了解決這個缺點,隨機森林透過 Bagging策略同時訓練幾十甚至幾百棵決策樹,最後透過投票表決決定分類結果。今天我們建立純 Python 腳本 day20_random_forest.py,掌握隨機森林建模,並透過特徵重要性長條圖找出影響預測結果的關鍵變數。

第一部分
新建 day20_random_forest.py。首先載入經典的乳癌檢測資料集,選取多項生理特徵,切分訓練集與測試集,並建立隨機森林分類器:
https://ithelp.ithome.com.tw/upload/images/20261019/201844722veC3wquBR.png

第二部分
初始化 RandomForestClassifier。我們設定 n_estimators=100(建立 100 棵決策樹進行投票集成),並限制 max_depth=5 保持適當複雜度,接著進行模型訓練與預測成效評估:
https://ithelp.ithome.com.tw/upload/images/20261019/20184472ZW02oe3xtT.png

第三部分
隨機森林能夠評估每個特徵在所有樹中降低不純度(Gini Impurity)的總貢獻度,即 feature_importances_。我們擷取貢獻度最高的前 10 個核心特徵,並使用 Matplotlib 繪製水平長條圖:
https://ithelp.ithome.com.tw/upload/images/20261019/20184472fsgNsz3Ek6.png

第四部分
在終端機輸入 python day20_random_forest.py 執行驗證,確認模型準確率(通常可達 95% 以上)、Top 10 特徵權重正常輸出,且圖片 day20_rf_feature_importance.png 順利產出。按 Ctrl + S 儲存後推送到 GitHub 進行版本控制:
https://ithelp.ithome.com.tw/upload/images/20261019/20184472G6mVGuifcC.png

今日心得/遇到的問題
今天體驗了集成學習「隨機森林」的穩定與強大。相較於單一決策樹容易受噪訊影響,隨機森林透過兩層隨機性(隨機抽取樣本資料 + 隨機挑選特徵子集)大幅降低了模型的方差(Variance),在幾乎不調參的情況下就能取得極高準確率。此外,利用 feature_importances_ 可以快速對高維度資料進行特徵篩選(Feature Selection),在醫療檢驗或商業分析中能迅速辨識出「哪些指標才是主導判斷的關鍵因素」。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言