日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【scikit-learn基础】--『监督学习』之 随机森林回归

發布時間:2024/1/3 windows 29 coder
生活随笔 收集整理的這篇文章主要介紹了 【scikit-learn基础】--『监督学习』之 随机森林回归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨機森林回歸Random Forest Regression)是一種在機器學習領域廣泛應用的算法,由美國科學家 Leo Breiman 在2001年提出。
它是一種集成學習方法,通過整合多個決策樹的預測結果來提高預測精度和穩定性。

隨機森林回歸適用于各種需要預測連續數值輸出的問題,
如金融領域的股票價格預測、客戶信用評分,醫療領域的疾病診斷和藥物發現等。

1. 算法概述

隨機森林回歸算法通過引入隨機性來構建多個決策樹,再通過對這些樹的預測結果進行平均或投票來得出最終的預測結果。
這里的隨機性主要體現在兩個方面:一是訓練樣本的隨機選取,二是在訓練過程中特征的隨機選取。

隨機森林的算法過程并不復雜,主要的步驟如下:

  1. 從原始訓練集中隨機選擇一部分樣本,構成一個新的子樣本集。這樣可以使得每棵決策樹都在不同的樣本集上進行訓練,增加模型的多樣性。
  2. 對于每個決策樹的每個節點,在選擇最佳劃分特征時,只考慮隨機選擇的一部分特征。這樣可以防止某些特征對整個模型的影響過大,提高模型的魯棒性。
  3. 在每個子樣本集上使用某種決策樹算法構建一棵決策樹。決策樹的生長過程中,通常采用遞歸地選擇最佳劃分特征,將數據集劃分為不純度最小的子集。
  4. 通過上述步驟生成的大量決策樹最終組合成隨機森林。

上面第一,第二步驟中的隨機性就是隨機森林這個名稱的由來。

2. 創建樣本數據

這次的回歸樣本數據,我們用 scikit-learn 自帶的樣本生成器來生成回歸樣本。
關于樣本生成器的內容,可以參考:TODO

from sklearn.datasets import make_regression

# 回歸樣本生成器
X, y = make_regression(n_features=4, n_informative=2)

每個樣本有4個特征。

3. 模型訓練

訓練之前,為了減少算法誤差,先對數據進行標準化處理。

from sklearn import preprocessing as pp

# 數據標準化
X = pp.scale(X)
y = pp.scale(y)

接下來分割訓練集測試集

from sklearn.model_selection import train_test_split

# 分割訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)

然后用scikit-learn中的RandomForestRegressor模型來訓練:

from sklearn.ensemble import RandomForestRegressor

# 定義隨機森林回歸模型
reg = RandomForestRegressor(max_depth=2)

# 訓練模型
reg.fit(X_train, y_train)

# 在測試集上進行預測
y_pred = reg.predict(X_test)

RandomForestRegressor的主要參數包括:

  1. n_estimators:森林中決策樹的數量。默認值為100,表示這是森林中樹木的數量,即基評估器的數量。但是,任何模型都有決策邊界,當n_estimators達到一定的程度之后,隨機森林的精確性往往不再上升或開始波動。同時,n_estimators越大,需要的計算量和內存也越大,訓練的時間也會越來越長。
  2. max_depth:樹的最大深度。默認是None,與剪枝相關。設置為None時,樹的節點會一直分裂,直到每個葉子都是“純”的,或者葉子中包含于min_samples_split個樣本。可以從3開始嘗試增加,觀察是否應該繼續加大深度。
  3. min_samples_split:在葉節點處需要的最小樣本數。默認值是2,指定每個內部節點(非葉子節點)包含的最少的樣本數。
  4. min_samples_leaf:每個葉子結點包含的最少的樣本數。參數的取值除了整數之外,還可以是浮點數。如果參數的值設置過小會導致過擬合,反之就會欠擬合。
  5. min_weight_fraction_leaf:葉子節點所需要的最小權值。
  6. max_features:用于限制分枝時考慮的特征個數。超過限制個數的特征都會被舍棄。此參數可以設為整數、浮點數、字符或None,默認為'auto'。
  7. max_leaf_nodes:最大葉子節點數,整數,默認為None。這個參數通過限制樹的最大葉子數量來防止過擬合,如果設置了一個正整數,則會在建立的最大葉節點內的樹中選擇最優的決策樹。
  8. min_impurity_decrease:如果分裂指標的減少量大于該值,則進行分裂。
  9. min_impurity_split:決策樹生長的最小純凈度。默認是0。

最后驗證模型的訓練效果:

from sklearn import metrics

# 在測試集上進行預測
y_pred = reg.predict(X_test)

mse, r2, m_error = 0.0, 0.0, 0.0
y_pred = reg.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
r2 = metrics.r2_score(y_test, y_pred)
m_error = metrics.median_absolute_error(y_test, y_pred)

print("均方誤差:{}".format(mse))
print("復相關系數:{}".format(r2))
print("中位數絕對誤差:{}".format(m_error))

# 運行結果
均方誤差:0.0918182629293023
復相關系數:0.9137032593574914
中位數絕對誤差:0.17199566634564867

從預測的誤差來看,訓練的效果非常好

有同樣的數據試了下上一篇介紹的決策樹回歸算法,發現還是隨機森林回歸的效果要好一些。
決策數回歸的模型效果:

from sklearn.tree import DecisionTreeRegressor
from sklearn import metrics

# 定義決策樹回歸模型
reg = DecisionTreeRegressor(max_depth=2)

# 訓練模型
reg.fit(X_train, y_train)

# 在測試集上進行預測
y_pred = reg.predict(X_test)


mse, r2, m_error = 0.0, 0.0, 0.0
y_pred = reg.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
r2 = metrics.r2_score(y_test, y_pred)
m_error = metrics.median_absolute_error(y_test, y_pred)

print("均方誤差:{}".format(mse))
print("復相關系數:{}".format(r2))
print("中位數絕對誤差:{}".format(m_error))

# 運行結果
均方誤差:0.1681399575883647
復相關系數:0.8419711956126009
中位數絕對誤差:0.36483491370039456

從運行結果來看,決策樹回歸的誤差比隨機森林回歸要大不少。

4. 總結

隨機森林回歸算法的優勢主要在于可以有效地處理大量的輸入變量,并且可以處理非線性關系和交互作用,
同時 ,由于它是集成學習方法,所以可以有效地減少過擬合和欠擬合的問題,提高預測的準確性。

此外,在訓練過程中,它可以自動進行特征選擇和降維,幫助找到最重要的特征,
還可以處理缺失值和異常值,不需要進行特殊的數據預處理。

然而,隨機森林回歸算法也有一些劣勢,
首先,它的訓練過程相對較慢,尤其是在數據集較大或特征維度較高的情況下;
其次,在某些情況下,它可能過于依賴輸入數據的隨機性,導致預測結果的不穩定。
此外,隨機森林算法在處理那些需要精確控制的問題時可能效果不佳

總結

以上是生活随笔為你收集整理的【scikit-learn基础】--『监督学习』之 随机森林回归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。