caret包應用之二 特徵選擇

2021-07-02 13:15:21 字數 1438 閱讀 4312

在進行資料探勘時,我們並不需要將所有的自變數用來建模,而是從中選擇若干最重要的變數,這稱為特徵選擇(feature selection)。一種演算法就是後向選擇,即先將所有的變數都包括在模型中,然後計算其效能(如誤差、**精度)和變數重要排序,然後保留最重要的若干變數,再次計算效能,這樣反覆迭代,找出合適的自變數數目。這種演算法的乙個缺點在於可能會存在過度擬合,所以需要在此演算法外再套上乙個樣本劃分的迴圈。在caret包中的rfe命令可以完成這項任務。

首先定義幾個整數,程式必須測試這些數目的自變數.

subsets = c(20,30,40,50,60,70,80)
然後定義控制引數,functions是確定用什麼樣的模型進行自變數排序,本例選擇的模型是隨機森林即rffuncs,可以選擇的還有lmfuncs(線性回歸),nbfuncs(樸素貝葉斯),treebagfuncs(裝袋決策樹),caretfuncs(自定義的訓練模型)。

method是確定用什麼樣的抽樣方法,本例使用cv即交叉檢驗, 還有提公升boot以及留一交叉檢驗loocv

ctrl= rfecontrol(functions = rffuncs, method = "cv",verbose = false, returnresamp = "final")
最後使用rfe命令進行特徵選擇,計算量很大,這得花點時間

profile = rfe(newdata3, mdrrclass, sizes = subsets, rfecontrol = ctrl)
觀察結果選擇50個自變數時,其**精度最高

print(profile)
20   0.8200 0.6285    0.04072 0.08550         

30 0.8200 0.6294 0.04868 0.10102

40 0.8295 0.6487 0.03608 0.07359

50 0.8313 0.6526 0.04257 0.08744 *

60 0.8277 0.6447 0.03477 0.07199

70 0.8276 0.6449 0.04074 0.08353

80 0.8275 0.6449 0.03991 0.08173

94 0.8313 0.6529 0.03899 0.08006

用圖形也可以觀察到同樣結果

plot(profile)
下面的命令則可以返回最終保留的自變數

profile$optvariables

caret包應用之二 特徵選擇

在進行資料探勘時,我們並不需要將所有的自變數用來建模,而是從中選擇若干最重要的變數,這稱為特徵選擇 feature selection 一種演算法就是後向選擇,即先將所有的變數都包括在模型中,然後計算其效能 如誤差 精度 和變數重要排序,然後保留最重要的若干變數,再次計算效能,這樣反覆迭代,找出合適...

《特徵工程三部曲》之二 特徵選擇

特徵選擇能剔除不相關 irrelevant 或亢餘 redundant 的特徵,從而達到減少特徵個數,提高模型精確度,減少執行時間的目的。另一方面,選取出真正相關的特徵簡化了模型,使研究人員易於理解資料產生的過程。資料預處理完成之後,我們需要選擇有意義的特徵,輸入機器學習的演算法和模型進行訓練,通常...

Dubbo擴充套件點應用之二負載均衡

負載均衡其本質就是將請求分攤到多個操作單元上進行,從而共同完成工作任務。其策略主要用於客戶端春常在多個提供者時根據演算法選擇某個提供者。在集群負載均衡時,dubbo提供了多種均衡策略 包括隨機 輪詢 最少活躍呼叫數 一致性hash等 預設為隨機呼叫 具體可參考dubbo官網 配置負載均衡,既可以在服...