天天看點

(Matlab)基于随機森林實作特征選擇降維及回歸預測

 💥💥💥💞💞💞歡迎來到本部落格❤️❤️❤️💥💥💥

🎉作者研究:🏅🏅🏅大學計算機專業,研究所學生電氣學碩。主要研究方向是電力系統和智能算法、機器學習和深度學習。目前熟悉python網頁爬蟲、機器學習、群智能算法、深度學習的相關内容。希望将計算機和電網有效結合!⭐️⭐️⭐️

                                    🎉🎉歡迎您的到來🎉🎉

                     ⛅⛅⛅ 📃個人首頁:電力系統科研室🌈🌈🌈

                    📚📚📚📋專欄目錄:電力系統與算法之美👨‍💻👨‍💻👨‍💻

【現在公衆号名字改為:荔枝科研社】

目錄

​​摘要:​​

​​1.随機森林:​​

​​2.随機森林的特征選取:​​

​​3.基于Matlab自帶的随機森林函數進行特征選取具體步驟​​

​​(1)加載資料​​

​​(2)首先建立随機森林并使用全部特征進行車輛經濟性預測​​

​​(3)使用随機森林進行特征選擇​​

​​(4)評價各個特征之間的相關性​​

​​(5)使用篩選後的特征進行測試​​

​​4.Matlab相關代碼​​

摘要:

示範如何通過Matlab自帶的随機森林函數進行特征選擇,篩選出大量特征資料中對于回歸預測最重要的特征,并對各特征進行重要性排序,充分反應不同特征的重要性。示範如何在種植随機樹林時為資料集選擇适當的拆分預測變量選擇技術。随機森林特征篩選一種特征選擇技術,特征選擇( Feature Selection )也稱特征子集選擇( Feature Subset Selection , FSS ),或屬性選擇( Attribute Selection )。是指從已有的M個特征(Feature)中選擇N個特征使得系統的特定名額最優化,是從原始特征中選擇出一些最有效特征以降低資料集次元的過程,是提高學習算法性能的一個重要手段,也是​​模式識别​​中關鍵的資料預處理步驟。對于一個學習算法來說,好的學習樣本是訓練模型的關鍵。

1.随機森林:

随機森林算法(Random Forest,RF)是一種 新型機器學習算法,是利用多棵決策樹對樣本進行訓練并內建預測的一種分類器,它采用Boot‐ strap重抽樣技術從原始樣本中随機抽取資料構 造多個樣本,然後對每個重抽樣樣本采用節點的 随機分裂技術構造多棵決策樹,最後将多棵決策樹組合,并通過投票得出最終預測結果。

(Matlab)基于随機森林實作特征選擇降維及回歸預測

根據下列​​算法​​而建造每棵樹 :

1.用N來表示訓練用例(樣本)的個數,M表示特征數目。

2.輸入特征數目m,用于确定​​決策樹​​上一個節點的決策結果;其中m應遠小于M。

3.從N個訓練用例(樣本)中以有放回抽樣的方式,取樣N次,形成一個​​訓練集​​(即bootstrap取樣),并用未抽到的用例(樣本)作預測,評估其誤差。

4.對于每一個節點,随機選擇m個特征,決策樹上每個節點的決定都是基于這些特征确定的。根據這m個特征,計算其最佳的分裂方式。

5.每棵樹都會完整成長而不會​​剪枝​​,這有可能在建完一棵正常樹狀分類器後會被采用)。

2.随機森林的特征選取:

随機森林算法利用 OOB 誤差計算特征變量相對重要性,并對特征變量進行排序和篩選,這一特點對于大量特征參與分類時非常适用,因為衆多特征之間的高相關性會産生高維問題,會顯著降低提取的精度。現階段機器學習模型的特征空間往往龐大且複雜,呈現出高維性、非線性等複雜特點,面對這樣的海量高維資料,剔除備援特征進行特征篩選,已成為當今資訊與科學技術面臨的重要問題之一。實際上,特征選擇正是從輸入特征中優選了重要性高、資訊量豐富的特征來提高地物資訊提取的精度,在遙感應用中有着重要的應用潛力。

在特征重要性的基礎上,特征選擇的步驟如下:

1.計算每個特征的重要性,并按降序排序

2.确定要剔除的比例,依據特征重要性剔除相應比例的特征,得到一個新的特征集

3.用新的特征集重複上述過程,直到剩下m個特征(m為提前設定的值

4.根據上述過程中得到的各個特征集和特征集對應的袋外誤差率,選擇袋外誤差率最低的特征集

3.基于Matlab自帶的随機森林函數進行特征選取具體步驟

(1)加載資料

加載Matlab自帶的資料集。建立一個随機森林預測模型,該模型根據汽車的氣缸數、發動機排量、馬力、重量、加速度、車型年份和原産國來預測汽車的燃油經濟性。使用Load函數進行資料的加載。

各單詞解釋:

【Cylinders,Displacement,Horsepower,Weight,Acceleration,Model_Year,Origin】

【氣缸數目,排量,馬力,重量,加速度,車輛年份,原産地】

(2)首先建立随機森林并使用全部特征進行車輛經濟性預測

使用templateTree和fitrensemble這兩個函數建立随機森林,并先使用全部的特征進行車輛經濟性進行預測。輸入為【氣缸數目,排量,馬力,重量,加速度,車輛年份,原産地】,輸出為【車輛經濟性】,随機森林中的決策樹數量設定為100。訓練模型并進行預測分析,具體結果如下,使用全部特征進行預測的準确度為87.1417.

(Matlab)基于随機森林實作特征選擇降維及回歸預測

(3)使用随機森林進行特征選擇

根據第二點所述,利用 OOB 誤差計算特征變量相對重要性,并對特征變量進行排序和篩選,編寫相關程式進行随機森林特征篩選,具體結果與各個特征變量的重要性情況如下所示:

(Matlab)基于随機森林實作特征選擇降維及回歸預測
(Matlab)基于随機森林實作特征選擇降維及回歸預測

(4)評價各個特征之間的相關性

當随機森林評價完成特征的重要性後,還需要對各個特征變量之間的相關性進行評估,以更加明顯的看出何種特征最能影響預測結果,使用皮爾遜系數作為各個特征變量之間的相關性評價名額,從下圖可以看出,越接近黃色表示相關性越強。

(Matlab)基于随機森林實作特征選擇降維及回歸預測

(5)使用篩選後的特征進行測試

綜合之前所有特征的重要性與相關性的重要性評價情況,使用【重量,車輛年份】這兩個特征進行回歸預測,也就是從7個特征降維到2個特征。建立随機森林進行回歸預測,其設定與之前的相同,同樣使用100棵樹。具體結果如下

(Matlab)基于随機森林實作特征選擇降維及回歸預測

可以看到,使用兩個特征進行預測的準确度為85.2077,與使用所有特征進行預測的準确度相差不大,這表明随機森林特征選擇方法有效的選擇出了最重要的特征,實作了從大量特征到少數重要特征的特征降維篩選,極大的降低了特征的備援性。

4.Matlab相關代碼

clc;
clear;
%% 導入資料(可替換為自己的資料)
load carbig
% 資料格式轉化
Cylinders = categorical(Cylinders);
Model_Year = categorical(Model_Year); 
Origin = categorical(cellstr(Origin));
X = table(Cylinders,Displacement,Horsepower,Weight,Acceleration,Model_Year,Origin); % 輸入資料彙總
% X中的列從左到右分别為:[氣缸數目,排量,馬力,重量,加速度,車型年份,原産地]
% MPC表示車輛的經濟性,也就是車輛經濟性預測值
%% 建立随機森林      

繼續閱讀