支援向量機可以想象成乙個平面,改平面定義了個資料點之間的界限,而這些資料點代表它們的特徵繪製多維空間中的樣本。支援向量機的目標是建立乙個稱為超平面的平面邊界,它使得任何乙個的資料劃分都是相當均勻的。支援向量機幾乎可以適用於所有的學習任務,包括分類
(svm)
、數值**、回歸
(svr)。
r
實現及引數說明
1)kernlab
包
函式ksvm()通過。call介面,使用bsvm和libsvm庫中的優化方法。對於分類,有c-svm分類演算法和v-svm分類演算法,同時還包括c分類器的有界約束的版本;對於回歸,提供了ε-svm回歸演算法和v-svm回歸演算法;對於多類分類,有一對一(one-against-one)方法和原生多類分類方法。
2)e1071包
使用libsvm庫中的優化方法。多分類通過一對一的投票機制(one-against-one voting scheme)實現。e1071包的tune()函式在指定的範圍內選取合適的引數。
3)klar包
klar對庫svmlight進行了簡單的包裝,提供了函式svmlight()以分類,視覺化。svmlight()支援c-svm進行分類,ε-svm進行回歸;以一對所有(one-against-all)進行多類分類。svmlight支援高斯核,多項式,線性和sigmoid核。svmlight()的引數形式為字串形式。
4)svmpath包
svmpath包裡的函式可用來選取支援向量機的cost引數c
核函式
:
linear
:使用它的話就成為線性向量機,效果基本等價於
logistic
回歸。但它可以處理變數極多的情況,例如文字挖掘。
polynomial:n
次多項式核函式,適用於影象處理問題。選擇
n的好方法是從
1(乙個線性模型
)開始,然後遞增至估計誤差不再改進為止。通常,相當小的數目就足夠了。
radial basis
,高斯核函式,最流行易用的選擇。引數包括了
sigma
,其值若設定過小,會有過度擬合出現。
sigmoid
:反曲核函式,多用於神經網路的啟用函式。實踐中,核函式的選擇一般並不導致結果準確率的很大差別
(也有特例!)。
引數說明:
kernel:核函式用於訓練和**。 該引數可以設定為類核心的任何函式,該函式計算兩個向量引數之間的特徵空間中的內積
c:違約成本(預設值:1)這是拉格朗日公式中正則項的'c'常數
nu:nu引數設定訓練誤差的上限和資料點分數的下限成為支援向量
**:
library(kernlab)
svm.model <- ksvm(species ~ ., data = iris, kernel = 'rbfdot')
predict(svm.model, iris[c(3, 10, 56, 68, 107, 120), ])
svm.t <- table(iris$species, predict(svm.model, iris, type = 'response'))
1 - sum(diag(svm.t))/sum(svm.t) # 計算誤差率
library(e1071)
model <- svm(species ~ ., data = iris, method = "c-classification",
kernel = "radial", cost = 10, gamma = 0.1)
summary(model)
svm.t <- table(iris$species, predict(model, iris, type = 'response'))
1 - sum(diag(svm.t))/sum(svm.t) # 計算誤差率
plot(model, iris, petal.width ~ petal.length, slice = list(sepal.width = 3, sepal.length = 4))
支援向量機 R語言如何實現支援向量機?
支援向量機是幫助我們解決小樣本 非線性及高維資料的重要手段。1在r語言中,實現支援向量機的是e1071軟體包中的svm函式。首先,安裝並載入軟體包。2讀取資料集。gyyz data read.csv gyyz.csv head t 讀取資料集 gyyz data is rise as.factor ...
R 支援向量機
支援向量機是乙個相對較新和較先進的機器學習技術,最初提出是為了解決二類分類問題,現在被廣泛用於解決多類非線性分類問題和回歸問題。其流行歸功於兩個方面,乙個方面,可以輸出比較準確的 結果 另一方面,模型基於比較優雅的數學理論。svm旨在在多維空間找到乙個能將全部樣本單元分成兩類的最優平面,這一平面應使...
R語言調整支援向量機
說明 除了選擇不同的特徵集和核函式,還可以借助引數gamma以及懲罰因子來調整支援向量機的效能,可以寫乙個for函式來實現。svm提供了tune.svm函式簡化了這個過程。操作準備好訓練資料集trainset 使用tune.svm調整支援向量機 tuned tune.svm churn data t...