6 3 支援向量機演算法 下)

2021-07-14 11:53:41 字數 1985 閱讀 4481

svm演算法特性:

1.1 訓練好的模型的演算法複雜度是由支援向量的個數決定的,而不是由資料的維度決定的。所以svm不太容易產生overfitting

1.2 svm訓練出來的模型完全依賴於支援向量(support vectors), 即使訓練集裡面所有非支援向量的點都被去除,重複訓練過程,結果仍然會得到完全一樣的模型。

1.3 乙個svm如果訓練得出的支援向量個數比較小,svm訓練出的模型比較容易被泛化。

線性不可分的情況 (linearly inseparable case)

2.1 資料集在空間中對應的向量不可被乙個超平面區分開

2.2 兩個步驟來解決:

2.2.1 利用乙個非線性的對映把原資料集中的向量點轉化到乙個更高維度的空間中

2.2.2 在這個高維度的空間中找乙個線性的超平面來根據線性可分的情況處理

2.2.3 視覺化演示
2.3 如何利用非線性對映把原始資料轉化到高維中?

2.3.1 例子:

3維輸入向量:

轉化到6維空間 z 中去:

新的決策超平面:

解出w和b之後,並且帶入回原方程:

2.3.2 思考問題:

2.3.2.1: 如何選擇合理的非線性轉化把資料轉到高緯度中?

2.3.2.2: 如何解決計算內積時演算法複雜度非常高的問題?

2.3.3 使用核方法(kernel trick)

3.1 以下核函式和非線性對映函式的內積等同

3.2 常用的核函式(kernel functions)

h度多項式核函式(polynomial kernel of degree h):
高斯徑向基核函式(gaussian radial basis function kernel):

s型核函式(sigmoid function kernel):

如何選擇使用哪個kernel?

根據先驗知識,比如影象分類,通常使用rbf,文字不使用rbf

嘗試不同的kernel,根據結果準確度而定

3.3 核函式舉例:

假設定義兩個向量: x = (x1, x2, x3); y = (y1, y2, y3)

定義方程:f(x) = (x1x1, x1x2, x1x3, x2x1, x2x2, x2x3, x3x1, x3x2, x3x3)

k(x, y ) = ()^2

假設x = (1, 2, 3); y = (4, 5, 6).

f(x) = (1, 2, 3, 2, 4, 6, 3, 6, 9)

f(y) = (16, 20, 24, 20, 25, 36, 24, 30, 36)

= 16 + 40 + 72 + 40 + 100+ 180 + 72 + 180 + 324 = 1024

k(x, y) = (4 + 10 + 18 ) ^2 = 32^2 = 1024

同樣的結果,使用kernel方法計算容易很多

svm擴充套件可解決多個類別分類問題

對於每個類,有乙個當前類和其他類的二類分類器(one-vs-rest)

3 支援向量機

3.1 本質 基本模型是定義在特徵空間上的間隔最大的線性分類器。核技巧使之成為實質上的非線性分類器。學習策略是間隔最大化,可形式化為求解凸二次優化問題。等價於正則化的合頁損失函式的最小化問題。學習演算法是求解凸二次規劃的最優化演算法。理解支援向量機可以從簡至繁推進 線性可分支援向量機 硬間隔svm ...

02 37 支援向量機總結

目錄更新 更全的 機器學習 的更新 更有python go 資料結構與演算法 爬蟲 人工智慧教學等著你 支援向量機中有線性可分支援向量機 線性支援向量機 非線性支援向量機 線性支援回歸等演算法,算是前期比較繁瑣的乙個內容,如果感覺自己還是對間隔最大化 支援向量等知識點不太了解的,可以對著簡單的感知機...

2 支援向量機概念詳解

1.支援向量機概念 支援向量機 support vectormachine 是cortes和vapnik於1995年首先提出的,它在解決小樣本 非線性及高維模式識別中表現出許多特有的優勢,並能夠推廣應用到函式擬合等其他機器學習問題中 10 支援向量機方法是建立在統計學習理論的vc 維理論和結構風險最...