攝影或3C

Python 機器學習: RandomForestRegressor 隨機森林迴歸器詳解; from sklearn.ensemble import RandomForestRegressor

基本概念

隨機森林迴歸器是一種集成學習方法,
通過建立多個決策樹並取平均值
來提高預測準確性並控制過擬合。
它的核心思想是”群體智慧”,
多棵樹共同決策比單一決策樹更準確。

主要參數解釋

核心參數

  • n_estimators (預設=100): 森林中樹的數量。
    增加此值可以提高模型性能,但也會增加計算時間。
  • max_depth (預設=None): 樹的最大深度。
    如果為None,則節點會一直擴展
    直到所有葉子都是純的或
    包含少於min_samples_split的樣本。
  • min_samples_split (預設=2):
    分割內部節點所需的最小樣本數。
    • 整數:最小樣本數
    • 浮點數:樣本比例
  • min_samples_leaf (預設=1): 葉子節點所需的最小樣本數,有助於平滑模型。
  • max_features (預設=1.0): 尋找最佳分割時考慮的特徵數:
    • “sqrt”:特徵總數的平方根
    • “log2″:特徵總數的對數
    • 1.0或None:使用所有特徵
    • 小數:使用該比例的特徵

抽樣相關參數

  • bootstrap (預設=True):
    是否使用bootstrap抽樣。
    True表示每棵樹都從訓練數據有放回抽樣,
    False則使用全部數據。
  • max_samples (預設=None):
    若bootstrap=True,
    從X抽取來訓練每個基本估計器的樣本數。
  • oob_score (預設=False):
    是否使用袋外樣本估計泛化分數(即驗證精度)。
    只在bootstrap=True時有效。

隨機性與並行處理

  • random_state (預設=None): 控制隨機性的種子,
    影響樣本的bootstrapping和特徵選擇的隨機性。
  • n_jobs (預設=None): 並行運行的作業數。-1表示使用所有處理器。


如何運作

  1. 隨機抽樣:若bootstrap=True,
    從訓練集隨機抽取N個樣本(有放回)建立n_estimators棵決策樹。
  2. 特徵隨機選擇:對每次分割,從全部特徵中隨機選擇max_features個特徵。
  3. 樹獨立生長:每棵樹獨立生長,沒有剪枝(除非指定參數)。
  4. 平均預測:預測時,所有樹的預測結果取平均值作為最終輸出。

重要屬性

  • feature_importances_:基於不純度的特徵重要性。
  • estimators_:擬合後的子估計器(樹)集合。
  • oob_score_:袋外估計獲得的訓練數據分數。

使用時機

  • 處理高維數據(多特徵)
  • 需要估計特徵重要性
  • 需要較好控制過擬合
  • 處理大量數據
  • 處理包含異常值的數據

調參技巧

  1. n_estimators:一般越大越好,但要考慮計算時間
  2. max_depth:控制過擬合的主要參數,建議調整範圍
  3. max_features:影響樹的多樣性,回歸問題常用默認值或1/3
  4. min_samples_leaf:較大值有助于防止過擬合

注意事項

  • 默認參數可能生成很大的樹,消耗大量內存
  • 特徵總是在每次分割時隨機排列
  • 雖然強大,但解釋性不如單一決策樹
  • 對於超大數據集,
    可考慮HistGradientBoostingRegressor作為替代

代碼示例

from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression

# 建立模型
regr = RandomForestRegressor(
    n_estimators=100,    # 樹的數量
    max_depth=10,        # 樹的最大深度
    min_samples_split=5, # 分割節點所需的最小樣本數
    random_state=42      # 隨機種子
)

# 擬合模型
regr.fit(X_train, y_train)

# 預測
y_pred = regr.predict(X_test)

from sklearn import linear_model,metrics
rf_r2 = metrics.r2_score(ytest, y_pred)
print(f"随机森林 R²: {rf_r2:.4f}")

隨機森林是機器學習中
最實用、最穩健的算法之一,
通常是回歸問題的首選模型之一。

推薦hahow線上學習python: https://igrape.net/30afN

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡