R語言使用支援向量機完成資料分類(SVM)

2021-08-02 04:56:49 字數 3316 閱讀 5323

說明

libsvm和svmlite都是非常流行的支援向量機工具,在r語言中,e1071包提供了libsvm的實現,klap包提供了對svmlite的實現。

繼續使用telecom churn資料集做為輸入資料來源來訓練向量機

匯入e1071包

library

(e1071)

使用svm函式訓練支援向量機,trainset資料集作為輸入資料集,churn是分類類別。

model = svm(churn ~.,data = trainset,kernel = "radial",cost = 1,gamma = 1/ncol(trainset))
使用summary( )得到model所有資訊

call:

svm(formula = churn ~ ., data = trainset, kernel = "radial", cost = 1, gamma = 1/ncol(trainset))

parameters:

svm-type: c-classification

svm-kernel: radial

cost: 1

gamma: 0.05882353

number of support vectors: 691

( 394

297 )

number of classes: 2

levels:

yes no

說明

支援向量機構建了乙個超平面(或者一組超平面),使得高維度空間內兩個類的邊緣間隔最大化。定義這些超平面的向量就被稱為支援向量,

支援向量機首先要構建乙個超平面能夠最大化距離,然後將定義擴充套件到非線性可分問題上,最後將資料對映到乙個高維度空間,使得資料能夠更容易被邊界分開。

svm的優勢在於利用了面向工程問題的核函式,能夠提供準確率非常高的分類模型,同時可以借助正則項避免模型的過度適應,使用者不用擔心區域性最優與多重共線性問題。svm的演算法的主要弊端是對模型進行訓練和測試的速度很慢,模型處理需要很長的時間。svm的結果也很難解釋,如何確定合適的核函式是乙個難點,而正則化也是使用者需要考慮的問題。

本例中通過訓練函式svm,使用者可以確定核函式,成本函式的gamma,對於核函式的選擇,預設選擇radial(徑向函式),使用者還可以選擇線性核函式,多項式函式,徑向基函式和sigmod核函式。gamma函式確定了分離平面的形狀,預設為函式維數的倒數(1/資料維度),提高gamma的值通常會增加支援向量的數量。考慮到成本函式,預設值通常為1,此時正則式也是常數,正則式越大,邊界越小。

選擇支援向量機的懲罰因子

支援向量機能夠通過最大化邊界得到乙個優化的超平面以完成對訓練資料的分離,不過有時演算法也允許被錯誤分類樣本的存在,懲罰因子能實現svm對分類數誤差及分離的控制。如果懲罰因子比較小,分類間隔會比較大(軟間隔),將產生比較多的被錯分樣本,相反當加大懲罰因子,會縮小分類間隔(硬間隔),從而減小錯分樣本。

呼叫subset函式獲得iris資料集中的species值為setosa和virginica,選擇樣例在sepal.width,sepal.width,species列的投影。

呼叫plot函式繪製散點圖

iris資料集子集散點圖

將懲罰因子設定為1,利用iris.subset資料集訓練svm,將支援向量用藍色的圈注標出來。

加分隔線:

將懲罰因子設定為10000,重新訓練乙個svm模型

懲罰因子原理

本節討論了懲罰因子大小對svm分類器的影響。我們首先選擇了乙個小的懲罰因子cost = 1來訓練svm,該分類器允許存在部分錯分樣本,分隔邊界屬於軟間隔,支援向量均用藍色圓圈進行標註,不同類別之間也增加了一條分隔線,出於選擇了乙個小的懲罰因子,造成圖中有乙個綠點(virginica)被錯誤的劃分到其它分類(setosa)

R語言 支援向量機

支援向量機可以想象成乙個平面,改平面定義了個資料點之間的界限,而這些資料點代表它們的特徵繪製多維空間中的樣本。支援向量機的目標是建立乙個稱為超平面的平面邊界,它使得任何乙個的資料劃分都是相當均勻的。支援向量機幾乎可以適用於所有的學習任務,包括分類 svm 數值 回歸 svr r 實現及引數說明 1 ...

支援向量機 R語言如何實現支援向量機?

支援向量機是幫助我們解決小樣本 非線性及高維資料的重要手段。1在r語言中,實現支援向量機的是e1071軟體包中的svm函式。首先,安裝並載入軟體包。2讀取資料集。gyyz data read.csv gyyz.csv head t 讀取資料集 gyyz data is rise as.factor ...

R語言調整支援向量機

說明 除了選擇不同的特徵集和核函式,還可以借助引數gamma以及懲罰因子來調整支援向量機的效能,可以寫乙個for函式來實現。svm提供了tune.svm函式簡化了這個過程。操作準備好訓練資料集trainset 使用tune.svm調整支援向量機 tuned tune.svm churn data t...