筆者最近在研究機器學習分析時,經常會遇到一個困惱的問題,就是不同演算法經常是散落在各種不同的套件,有在使用R作統計分析的讀者應該會了解這種困擾,為了跑不同機器學習的分析筆者必須去搜尋各種模型所需要的套件,但R的套件實在是非常的多,同一個演算法可能都能找到許多不同的套件可供使用,因此筆者就需要再進一步深入研究這些套件的差異以符合筆者的需求。

就當筆者深陷需要花很多時間搜尋需要功能套件時,筆者意外地在網路上搜尋到”caret”這個強大的套件,此套件的全名是” Classification And REgression Training”,從字面上就可以知道這個套件的功能在於解決機器學習模型訓練(迴歸 or 分類問題)的一個綜合性套件,此套件整合了絕大多數機器學習常用的演算法,例如:隨機森林、KNN、Adaboost等演算法,筆者接下來將針對caret常用的幾個功能做介紹。

Caret的主要功能有以下幾個:

1.Data splitting:資料分割

1.jpg

 

2.Pre-processing:資料的預處理

Creating Dummy Variables:在做線性回歸的時候,會需要把分類超過三類(>=3類)的自變項做虛擬變項的設定,不然線性迴歸會當成連續變項做分析

 

2.jpg

 

Zero- and Near Zero-Variance Predictors:針對資料當中的自變項,如果有整欄資料都是單一的常數或是變異很小,可以利用nearZeroVar()將其剔除

 

3.jpg

 

Identifying Correlated Predictors:辨識出自變項中具有高度相關性的變項

Linear Dependencies:辨識出自變項中是否具有線性組合

 

4.jpg

 

Centering and Scaling:資料的標準化,這邊示範的只是其中一個方式(caret還有提供其他方式),至於要標準化的原因,主要是不希望在建模時受到原始變項資料範圍的影響,這樣建模的效率才會提升。

 

5.jpg

 

3.Feature selection: 在進行機器學習演算的建模時,我們一般會選擇重要的變數來建模,而是想辦法從中得到與outcome有關的重要變項,這在機器學習被稱為特徵選擇(feature selection)。我們首先會將所有的變數都放進模型中,然後計算其效能(如誤差、預測率)和變數重要排序,然後保留最重要的幾個變數,再次計算效能,反覆運算後,找出最合適的變項數量以及變項。

 

6.jpg

 

筆者會在之後的文章針對要如何在caret進行不同演算法的建模做進一步的說明,主要會有兩個部分,模型的建模以及模型的調整與優化(Model tuning using resampling)

參考資料:https://topepo.github.io/caret/index.html

arrow
arrow
    全站熱搜

    晨晰部落格新站 發表在 痞客邦 留言(0) 人氣()