R語言實現 黑箱方法 支援向量機

2021-10-02 03:29:42 字數 2637 閱讀 7865

read in data and examine structure

將輸入讀入到r中,確認接收到的資料具有16個特徵,這些特徵定義了每乙個字母的案例。

支援向量機學習演算法要求所有特徵都是數值型的,並且每乙個特徵需要壓縮到乙個相當小的區間中。

divide into training and test data

一部分作為訓練資料,一部分作為測試資料

letters_train 

letters_test

begin by training a ****** linear svm

#install.packages(『kernel』)

為了提供度量度量支援向量機效能的基準,我們從訓練乙個簡單的線性支援向量機分類器開始。

library(kernlab)

letter_classifier

kernel = "vanilladot")

ksvm函式預設使用高斯rbf核函式

vanilladot表示線性函式

這裡沒有提供任何資訊告訴我們模型在真實世界中執行的好壞,所以想下面我們用測試資料來研究模型的效能。

predictions on testing dataset

letter_predictions 

head(letter_predictions)

這裡我們用table函式對**值和真實值之間進行比較

對角線的值144、121.120.156和127表示的是**值與真實值相匹配的總記錄數。同樣,出錯的數目也列出來了。例如,位於行b和列d的值5表示有5種情況將字母d誤認為字母b。

單個地看每個錯誤型別,可能會揭示一些有趣的關於模型識別有困難的特定字母型別的模式,但這也是很耗費時間的。因此,我們可以通過計算整體的準確度來簡化我們的評估,即只考慮**的字母是正確的還是不正確的,並忽略錯誤的型別。

look only at agreement vs. non-agreement

construct a vector of true/false indicating correct/incorrect predictions

下面的命令返回乙個元素為true或者false值的向量,表示在測試資料集中,模型**的字母是否與真實的字母相符(即匹配)。

agreement
使用table()函式,我們看到,在4000個測試記錄中,分類器正確識別的字母有3357個:

以百分比計算,準確度大約為84%

之前的支援向量機模型使用簡單的線性核函式。通過使用一-個更複雜的核函式,我們可以將資料對映到乙個更高維的空間,並有可能獲得-乙個較好的模型擬合度。

然而,從許多不同的核函式進行選擇是具有挑戰性的。乙個流行的慣例就是從高斯rbf核函式開始,因為它已經被證明對於許多態別的資料都能執行得很好。我們可以使用ksvm()函式來訓練-乙個基於rbf的支援向量機,如下所示:

set.seed(12345)

letter_classifier_rbf

letter_predictions_rbf

最後,與我們的線性支援向量機的準確度進行比較:

通過簡單地改變核函式,我們可以將字元識別模型的準確度從84%提高到93%。如果這種效能水平對於光學字元識別程式仍不能令人滿意,那麼你可以測試其他的核函式或者通過改變成本約束引數c來修正決策邊界的寬度。

黑箱方法 支援向量機

支援向量機 support vector machine,svm 是corinna cortes和vapnik等於1995年首先提出的,它在解決小樣本 非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函式 擬合等其他機器學習問題中。svm幾乎可以適用於所有的學習任務,包括分類和數值 兩個...

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

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

R語言 支援向量機

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