R語言數據挖掘實踐——支持向量機的常用函數

機器學習 R語言 數據挖掘 技術 數據分析和挖掘 數據分析和挖掘 2017-09-05

R語言數據挖掘實踐——支持向量機的常用函數

e1071包是R語言中用於支持向量機建模與分析的軟件包,其主要用於支持向量機的模型構建,提供核心函數svm()來建立支持向量機的基礎模型,並且可輔助使用predict()函數及fitted()函數來利用所建立模型進行分類。

下載安裝相應的軟件包,加載後即可使用

>install.packages("e1071")

>library(e1071)

svm()函數

svm()函數是用來建立支持向量機模型的核心函數,它可以用來建立一般情況下的迴歸模型,也可以用來建立判別分類模型以及密度估計模型。函數svm()基本使用格式有兩種。

第一種函數使用格式如下:

svm(formula, data=NULL,...,subset,na.action=na.omit,scale=TRUE)

其中,formula代表函數模型形式,data代表模型中包含的有變量的一組可選格式數據。

第二種函數使用格式如下:

svm(x,y=NULL,scale=TRUE,type=NULL,kernel="radial",degree=3,gamma=if(is.vector(x)) 1 else 1 / ncol(x),

coef0=0,cost=1,nu=0.5, class.weights=NULL,cachesize=40,tolerance=0.001,epsilon=0.1,shrinking=TRUE,

cross=0,probability=FALSE,fitted=TRUE,seed=1L,..., subset,na.action=na.omit)

其中,x可以是一個數據矩陣,也可以是一個數據向量,一個稀疏矩陣。y是對於x數據的結果標籤,它既可以是字符向量也可以為數量向量。

type是指建立模型的類別。支持向量機模型通常可以用作分類模型、迴歸模型或者異常檢測模型。type可取的值有:C-classification、nu-classification、one-classification、eps-classification、nu-regression。在這5種類型中,前3種是針對字符型結果變量的分類方式,其中第3種方式是邏輯判別,即判別結果輸出所需判別的樣本是否屬於該類別;而後兩種則是針對數量型結果變量的分類方式。

kernel是指在模型建立過程中使用的核函數。支持向量機模型的建模過程中為了解決線性不可分的問題,提高模型預測精度,通常會使用核函數對原始特徵進行變換,提高原始特徵維度。

svm()函數中的kernel參數有4個可選核函數,分別為線性核函數linear、多項式核函數polynomial()、徑向基核函數radial basis()以及神經網絡核函數sigmoid()。識別率最高、性能最好地是徑向基核函數,其次是多項式核函數,而最差的是神經網絡核函數。

核函數有兩種主要類型——局部性核函數和全局性核函數,徑向基核函數是一個典型的局部性核函數,而多項式核函數則是一個典型的全局性核函數。

我們需要知道的是,局部性核函數僅僅在測試點附近小領域內數據點有影響,其學習能力強、泛化性能較弱;而全局性核函數則相對來說泛化性能較強、學習能力較弱。

在選擇所適用的核函數時,我們可以逐一試用並比較結果。取預測結果最好地模型所適用的核函數。

degree參數是指核函數多項式內積函數中的參數,默認值為3。

gamma參數是指核函數中除線性內積函數以外的所有函數的參數,默認值為1。

coef()參數是指核函數中多項式內積函數與sigmoid內積函數中的參數,默認值為0。

nu參數是用於nu-classification、nu-regression和one-classification迴歸類型中的參數。

下面介紹svm()函數在對數據建立模型後所輸出的結果:

  1. SV即support vectors,就是支持向量機中最核心的支持向量;

  2. Index所包含的結果是模型中支持向量在樣本數據中的位置,簡而言之就是支持向量是樣本數據的第幾個樣本。

值得注意的是,在利用svm()函數建立支持向量機模型時,使用標準化後的數據建立的模型效果更好。

plot函數

將svm()函數所得支持向量機模型放入plot()函數,則可以生成一個來自於根據各個類別和支持向量機建立的支持向量分類模型的輸入數據散點圖,同時還可以繪製出各個類別的分類圖。

plot()函數在應用於svm()輸出結果時的基本使用格式如下:

plot(x, data, formula,fill=TRUE,grid=50,slice=list(),symbolPalette=palette(),avSymbol="x",

dataSymbol="o",...)

其中,x是指利用svm()函數所建立的支持向量機模型;data是指繪製支持向量機分類圖所採用的數據,該數據格式應與模型建立過程中所使用的數據格式一致;formula參數是用來觀察任意兩個特徵維度對模型分類的相互影響;fill參數為邏輯參數,當為TRUE時,所繪製的圖像具有背景色,反之沒有,默認值為TRUE;symbolPalette參數主要用於決定分類點以及支持向量的顏色;svSymbol參數主要決定支持向量的形狀;dataSymbol參數主要決定數據散點圖的形狀。

相關推薦

推薦中...