集成學習之隨機森林

目錄

一、集成學習的含義

二、集成學習的代表

三、集成學習的應用

1、分類問題集成。(基學習器是分類模型)

2、回歸問題集成。(基學習器是回歸模型)

3、特征選取集成。

四、Bagging之隨機森林

1、隨機森林是有多個決策樹,我們將他們構成出森林。

2、隨機森林總共有四個特點:

(1)數據采樣隨機

(2)特征選取隨機

(3)森林

(4)基分類器為決策樹

3、隨機森林的生成步驟

1、對原始數據集進行隨機采樣

2、每個基分類器獲取不同的數據集,每個數據的的特征也是隨機抽取的

3、將隨機抽取的數據及特征傳遞給決策樹進行訓練

4、通過強分類器投票,選出性能指標占比最多的作為結果(例如結果中很多預測的是0,那么最終就會通過強分類器預測為0)

五、Bagging之隨機森林的優缺點(集成學習的共有優點)

1、具有極高的準確率

2、隨機性的引入,使得隨機森林的抗噪聲能力很強

3、隨機性的引入,使得隨機森林不容易過擬合

4、能夠處理很高維度的數據,不用做特征選擇

5、容易實現并行化計算

6、缺點

六、隨機森林模型的簡單使用

1、隨機森林模型的參數


一、集成學習的含義

集成學習是將多個基學習器進行組合,來實現比單一學習器顯著優越的學習性能。

這里的每個基學習器可以是任意機器學習的模型,可以是線性回歸、邏輯回歸、KNN、決策樹等模型,基學習器可以使用單一模型組合,也可以使用多模型隨機組合。

使用訓練數據進行模型訓練,然后將測試集的數據傳入,選擇結果。

二、集成學習的代表

.bagging方法:典型的是隨機森林方法

.boosting方法:典型的Xgboost

.stacking方法:堆疊模型

三、集成學習的應用

1、分類問題集成。(基學習器是分類模型)

2、回歸問題集成。(基學習器是回歸模型)

3、特征選取集成。

(場景:當我們的數據集特別大時,就會有很多的特征,那么這些特征對分離結果的影響有多大,我們可以計算該特征與分類結果之間的相關系數來進行估量,在隨機森林模型中可以對每個特征進行特征選取,它可以內部對每個特征量化一個指標,最終結果會選擇盡可能多的相關性比較大的特征。)

所以集成學習之隨機森林既可以做分類問題也可以做回歸問題。

四、Bagging之隨機森林

1、隨機森林是有多個決策樹,我們將他們構成出森林。

2、隨機森林總共有四個特點:

(1)數據采樣隨機

假設我們有一個數據集,那么針對每一個基分類器,我們都會隨機抽取一定比例(例如80%)的數據做為訓練集,其余作為測試集,特別要注意,針對每一個基分類器都是隨機抽取,這保證了我們的數據會被充分使用,同時隨機抽取會最大程度的覆蓋所有可能的情況。

(2)特征選取隨機

針對同一個數據集,那么我們每次選取數據時,會隨機抽取80%(這時認為根據實際情況設定的)的特征,那么對于每個數據集的特征選取會出現有的數據集抽到很差的特征那么該數據集展現的性能就會很差,如果抽取到的都是好的特征,那么模型的性能也會很好。

(3)森林

有多個決策樹,所以稱之為森林。

(4)基分類器為決策樹

每個決策樹學習的數據都是不同的。

3、隨機森林的生成步驟

1、對原始數據集進行隨機采樣

2、每個基分類器獲取不同的數據集,每個數據的的特征也是隨機抽取的

3、將隨機抽取的數據及特征傳遞給決策樹進行訓練

4、通過強分類器投票,選出性能指標占比最多的作為結果(例如結果中很多預測的是0,那么最終就會通過強分類器預測為0)

五、Bagging之隨機森林的優缺點(集成學習的共有優點)

1、具有極高的準確率

2、隨機性的引入,使得隨機森林的抗噪聲能力很強

數據的隨機抽取會使得某些基分類器抽取到噪聲數據,也會有抽取不到噪聲數據的基分類器,因為噪聲數據出現的概率占少數,所以在強分類器投票選擇時,這些抽取到噪聲的基分類器對我們最終分類結果的影響特別小,因此我們的抗噪聲能力特別強。

3、隨機性的引入,使得隨機森林不容易過擬合

因為隨機森林的結果是由多個決策樹決定的,所以不容易出現過擬合,過擬合的表現是在訓練集上表現得很好,但是在測試集上得效果很差,產生原因是由于受單一數據影響太大,而隨機森林會根據多個結果共同決定基本不會出現過擬合得情況。

4、能夠處理很高維度的數據,不用做特征選擇

不用做特征選取的原因,很差的特征對決策樹的影響很小,因為即使是很差的特征,我們每個基分類器抽取是隨機的,不會有很多分類器抽到這個差的特征,所以對最終結果的影響不大,就不用去特意選擇特征。

5、容易實現并行化計算

隨機森林的結構是由多個基分類器構成,那么每個基分類器都可以部署在一個單獨的服務器上,多個分類器可以放在多個服務器上,實現了多個分類器同時訓練,并行計算。

6、缺點

1、當隨機森林中的決策樹的個數很多時,訓練時需要的空間和時間會比較大。

2、隨機森林模型還有許多不好解釋的地方,有點像個黑盒模型。

六、隨機森林模型的簡單使用

1、隨機森林模型的參數

class?sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’,?criterion=’gini’,?max_depth=None,?min_samples_split=2,?min_samples_leaf=1,?min_weight_fraction_leaf=0.0,?max_features=’auto’,?max_leaf_nodes=None,?min_impurity_decrease=0.0,?min_impurity_split=None,?bootstrap=True,?oob_score=False,?n_jobs=None,?random_state=None,?verbose=0,?warm_start=False,?class_weight=None)

隨機森林重要的一些參數:

1.n_estimators?:(隨機森林獨有)

????????隨機森林中決策樹的個數。

????????在0.20版本中默認是10個決策樹;

????????在0.22版本中默認是100個決策樹;

2.?criterion?:(同決策樹)

節點分割依據,默認為基尼系數。

可選【entropy:信息增益】

3.max_depth:(同決策樹)【重要】

????????default=(None)設置決策樹的最大深度,默認為None。

(1)數據少或者特征少的時候,可以不用管這個參數,按照默認的不限制生長即可

(2)如果數據比較多特征也比較多的情況下,可以限制這個參數,范圍在10~100之間比較好

4.min_samples_split?:?(同決策樹)【重要】

????????這個值限制了子樹繼續劃分的條件,如果某節點的樣本數少于設定值,則不會再繼續分裂。默認是2.如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則建議增大這個值。

5.min_samples_leaf?:(同決策樹)【重要】

????????這個值限制了葉子節點最少的樣本數,如果某葉子節點數目小于樣本數,則會和兄弟節點一起被剪枝。 默認是1,可以輸入最少的樣本數的整數,或者最少樣本數占樣本總數的百分比。如果樣本量不大,不需要管這個值。如果樣本量數量級非常大,則推薦增大這個值。

?【葉是決策樹的末端節點。 較小的葉子使模型更容易捕捉訓練數據中的噪聲。 一般來說,我更偏向于將最小葉子節點數目設置為大于50。在你自己的情況中,你應該盡量嘗試多種葉子大小種類,以找到最優的那個。】

【比如,設定為50,此時,上一個節點(100個樣本)進行分裂,分裂為兩個節點,其中一個節點的樣本數小于50個,那么這兩個節點都會被剪枝】

6.min_weight_fraction_leaf?:?(同決策樹)

????????這個值限制了葉子節點所有樣本權重和的最小值,如果小于這個值,則會和兄弟節點一起被剪枝。 默認是0,就是不考慮權重問題。一般來說,如果我們有較多樣本有缺失值,或者分類樹樣本的分布類別偏差很大,就會引入樣本權重,這時我們就要注意這個值了。【一般不需要注意】

7.max_features?:?(隨機森林獨有)【重要】

????????隨機森林允許單個決策樹使用特征的最大數量。選擇最適屬性時劃分的特征不能超過此值。

當為整數時,即最大特征數;當為小數時,訓練集特征數*小數;if “auto”, then max_features=sqrt(n_features).If “sqrt”, then max_features=sqrt(n_features).If “log2”, then max_features=log2(n_features).If None, then max_features=n_features.

【增加max_features一般能提高模型的性能,因為在每個節點上,我們有更多的選擇可以考慮。 然而,這未必完全是對的,因為它降低了單個樹的多樣性,而這正是隨機森林獨特的優點。 但是,可以肯定,你通過增加max_features會降低算法的速度。 因此,你需要適當的平衡和選擇最佳max_features。】

8.max_leaf_nodes:(同決策樹)

????????????????通過限制最大葉子節點數,可以防止過擬合,默認是"None”,即不限制最大的葉子節點數。如果加了限制,算法會建立在最大葉子節點數內最優的決策樹。如果特征不多,可以不考慮這個值,但是如果特征分成多的話,可以加以限制,具體的值可以通過交叉驗證得到。

【比如,一顆決策樹,如果不加限制的話,可以分裂100個葉子節點,如果設置此參數等于50,那么最多可以分裂50個葉子節點】

9.min_impurity_split:(同決策樹)

????????這個值限制了決策樹的增長,如果某節點的不純度(基于基尼系數,均方差)小于這個閾值,則該節點不再生成子節點。即為葉子節點 。一般不推薦改動默認值1e-7。

10.bootstrap=True(隨機森林獨有)

????????是否有放回的采樣,按默認,有放回采樣

11.?n_jobs=1:

????????并行job個數。這個在是bagging訓練過程中有重要作用,可以并行從而提高性能。1=不并行;n:n個并行;-1:CPU有多少core,就啟動多少job。

2、代碼簡單實現

(1)導入必要的庫

import pandas as pd

(2)數據讀取及預處理

data=pd.read_csv('./data/spambase.csv')x=data.iloc[:,:-1]
y=data.iloc[:,-1]

3、數據集劃分

from sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test= \train_test_split(x,y,test_size=0.2,random_state=2)

4、模型導入訓練

from sklearn.ensemble import RandomForestClassifierrf=RandomForestClassifier(n_estimators=100,max_features='auto',# max_leaf_nodes=50,random_state=4
)rf.fit(x_train,y_train)

5、模型效果預測

from sklearn import metrics# 自測
train_predicted=rf.predict(x_train)
print(metrics.classification_report(y_train,train_predicted))
# cm_plot(y_train,train_predicted)# 測試集test_predicted=rf.predict(x_test)
print(metrics.classification_report(y_test,test_predicted))
# cm_plot(y_test,test_predicted)

6、數據可視化

import matplotlib.pyplot as pltimportances=rf.feature_importances_
im=pd.DataFrame(importances,columns=['importances'])clos=data.columns
clos_1=clos.values
clos_2=clos_1.tolist()
clos=clos_2[0:-1]
im['clos']=closim=im.sort_values(by=['importances'],ascending=False)[:10]index=range(len(im))
plt.yticks(index,im.clos)
plt.barh(index,im['importances'])
plt.show()

7、最終效果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73903.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

矩陣期望 E 的含義:概率

矩陣期望 E 的含義:概率 期望的含義 在概率論和統計學中,數學期望(或均值,簡稱期望)是試驗中每次可能結果的概率乘以其結果的總和,是最基本的數學特征之一,它反映隨機變量平均取值的大小。用公式表示,如果離散型隨機變量 X X X 可能取值為 x i x_

Qt Graphics View

Graphics View框架是用來處理大量2D圖形對象的,適合需要高效管理和交互的場景,比如繪圖軟件、地圖編輯或者游戲。它和QPainter的區別在于,Graphics View提供了更高級別的對象管理,而QPainter更偏向于直接繪制。 一、核心組件 ?Q…

卷積神經網絡 - 卷積層(具體例子)

為了更一步學習卷積神經網絡之卷積層,本文我們來通過幾個個例子來加深理解。 一、灰度圖像和彩色圖像的關于特征映射的例子 下面我們通過2個例子來形象說明卷積層中“特征映射”的概念,一個針對灰度圖像,一個針對彩色圖像。 例子 1&#x…

xlsx.utils.json_to_sheet函數詳解

xlsx.utils.json_to_sheet 是 xlsx 庫中的一個實用函數,用于將 JSON 數據轉換為 Excel 工作表對象。這個函數非常有用,尤其是在你需要從數據庫或其他數據源獲取數據并將其導出到 Excel 文件時。 函數簽名 XLSX.utils.json_to_sheet(data, opts)data&am…

2025-03-17 學習記錄--C/C++-PTA 習題4-7 最大公約數和最小公倍數

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、題目描述 ?? 習題4-7 最大公約數和最小公倍數 本題要求兩個給定正整數的最大公約數和最小公倍數。 輸入格式: 輸入在一…

【源碼閱讀】多個函數抽象為類(實現各種類型文件轉為PDF)

目錄 一、原始函數二、類三、轉換過程 一、原始函數 最開始就是寫了幾個函數(包括doc、excel、ppt類型的文件)轉換為pdf,需要將這些函數形成一個類。相似的一類函數就可以組成一個實現特定功能的類 import subprocess import pandas as pd i…

VSCode擴展工具Copilot MCP使用教程【MCP】

MCP(Model Context Protocol,模型上下文協議) ,2024年11月底,由 Anthropic 推出的一種開放標準,旨在統一大型語言模型(LLM)與外部數據源和工具之間的通信協議。本文章教你使用VSCode…

【leetcode100】搜索插入位置

1、題目描述 給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。 請必須使用時間復雜度為 O(log n) 的算法。 示例 1: 輸入: nums [1,3,5,6], target 5 輸出: 2…

【小白向】Word|Word怎么給公式標號、調整公式字體和花括號對齊

【小白向】Word|Word怎么給公式標號、調整公式字體和花括號對齊 我的版本:Word 2021 如需快速查看關鍵步驟,請直接閱讀標紅部分。 如果遇到無法調整的情況,可以直接下載我的示例文檔進行參考:花括號和其他的示例公式.…

【算法day15】最接近的三數之和

最接近的三數之和 給你一個長度為 n 的整數數組 nums 和 一個目標值 target。請你從 nums 中選出三個整數,使它們的和與 target 最接近。 這里是引用 返回這三個數的和。 假定每組輸入只存在恰好一個解。 https://leetcode.cn/problems/3sum-closest/submissions/61…

Blender-MCP服務源碼5-BlenderSocket插件安裝

Blender-MCP服務源碼5-BlenderSocket插件安裝 上一篇講述了Blender是基于Socket進行本地和遠程進行通訊,現在嘗試將BlenderSocket插件安裝到Blender中進行功能調試 1-核心知識點 將開發的BlenderSocket插件安裝到Blender中 2-思路整理 1)將SocketServe…

【MySQL數據庫】存儲過程與自定義函數(含: SQL變量、分支語句、循環語句 和 游標、異常處理 等內容)

存儲過程:一組預編譯的SQL語句和流程控制語句,被命名并存儲在數據庫中。存儲過程可以用來封裝復雜的數據庫操作邏輯,并在需要時進行調用。 類似的操作還有:自定義函數、.sql文件導入。 我們先從熟悉的函數開始說起: …

ASP3605抗輻照加固同步降壓調節器——商業航天電源芯片解決方案新選擇

ASP3605企業宇航級型號ASP3605S2U通過SEU≥75 MeVcm/mg與SEL≥75 MeVcm/mg抗輻射測試。其輸入電壓4V至15V,輸出電流5A,支持多相級聯與冗余設計,適用于衛星、航天器電源系統。 面向航天場景的核心功能設計 1. 抗輻射與可靠性保障 單粒子效應…

使用fastapi部署stable diffusion模型

使用vscode運行stable diffusion模型,每次加載模型都需要10分鐘,為算法及prompt調試帶來了極大麻煩。使用jupyter解決自然是一個比較好的方案,但如果jupyter由于種種原因不能使用時,fastapi無疑成為了一個很好的選擇。 參考github…

2025-03-16 學習記錄--C/C++-PTA 習題4-4 特殊a串數列求和

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、題目描述 ?? 習題4-4 特殊a串數列求和 給定兩個均不超過9的正整數a和n,要求編寫程序求aaaaaa?aa?a&#x…

ffmpeg庫視頻硬編碼使用流程

?一、硬件編碼核心流程? ?硬件設備初始化 // 創建CUDA硬件設備上下文? AVBufferRef *hw_device_ctx NULL; av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_CUDA, NULL, NULL, 0);// 綁定硬件設備到編碼器上下文? codec_ctx->hw_device_ctx av_buffer_…

【設計模式】3W 學習法全面解析 7 大結構型模式:Java 實戰 + 開源框架應用

3W 學習法總結結構型模式(附 Java 代碼實戰及開源框架應用) 結構型模式 主要關注 類與對象的組合,確保不同組件之間能夠高效協作,提高系統的靈活性和可維護性。本文采用 3W 學習法(What、Why、How)&#x…

在大數據開發中ETL是指什么?

hello寶子們...我們是艾斯視覺擅長ui設計和前端數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在數字經濟時代,數據已成為企業最核心的資產。然而,分散在業務系統、日志文件…

前端面試項目拷打

Axios相關 1.在Axios二次封裝時,具體封裝了哪些內容,如何處理請求攔截和響應攔截? axios二次封裝的目的:為了統一處理請求和響應攔截器、錯誤處理、請求超時、請求頭配置等,提高代碼可維護性和復用性。 首先創建axios…

「JavaScript深入」Server-Sent Events (SSE):輕量級實時通信技術

Server-Sent Events(SSE) SSE 的特點1. 單向通信2. 簡單易用,瀏覽器原生支持3. 持久連接4. 純文本傳輸5. 自動重連機制6. 輕量級協議 SSE 的實現服務器端實現(Node.js 示例)1. HTTP 響應頭設置2. 數據推送模式3. 服務器…