SVM從入門到精通 一

2021-09-20 05:14:58 字數 2099 閱讀 4985

我是標題黨【doge】······

最近在看svm演算法的原理,之前只知道用,但是對理論推導並不是很明白,這次算是複習一下,加深理解。

要深入理解svm,首先要從感知機說起。

什麼是感知機呢?

感知機(perceptron)是二類分類的線性分類模型。

假設輸入空間為χ⊆

rnχ⊆rn

,輸出空間是y=

−1,+

1y=−1,+1

.由輸入空間到輸出空間的如下函式f(

x)=s

ign(

ω⋅x+

b)f(x)=sign(ω⋅x+b)

稱為感知機。

也就是說,我的ωω

引數和b

b引數,確定了乙個分離超平面,將訓練資料集劃分為兩個部分,分別為正類和負類。因此,我們需要知道ωω

和b的值,確定這個超平面,那麼來了乙個新的資料,通過計算和這個超平面的距離,就知道它屬於哪個類別了。

因此,我們的任務就變成了求ωω

和bb的值是什麼,從而確定分離超平面。

在這裡,我們有乙個前提條件,就是資料集是線性可分的

那麼如何求這兩個引數呢?我們需要確定乙個學習策略,即定義經驗損失函式並將其極小化。也就是我們常說的loss.

在感知機中,我們選擇的loss為誤分類點到超平面的總距離,讓這個總距離最小,這就是我們的優化目標。特徵空間中任意一點x0

x0到超平面的距離為:

1∥ω∥|ω⋅

x0+b

|1‖ω‖|ω⋅x0+b|

對於誤分類的資料 (

xi,y

i)(xi,yi)

來說, yi

(ω⋅x

+b)<

0yi(ω⋅x+b)<0

.因此,誤分類點到分類超平面的距離就是 −

1∥ω∥

yi|ω

⋅x+b

|−1‖ω‖yi|ω⋅x+b|

因此,所有誤分類點到分類超平面的距離就是: −

1∥ω∥

∑xi∈

myi(

ω⋅x+

b)−1‖ω‖∑xi∈myi(ω⋅x+b)

由於 1

∥ω∥1‖ω‖

為常數,因此不考慮它。於是,我們得到了感知機的損失函式: l

(ω,b

)=−∑

xi∈m

yi(ω

⋅xi+

b)l(ω,b)=−∑xi∈myi(ω⋅xi+b)

且該損失函式關於 ω

ω和b連續可導。

有了學習策略,也就是我們的經驗函式,接下來就是學習演算法了。我們將學習問題轉化為了優化問題,解決方法就是隨機梯度下降(sgd),這裡不展開說了。

對於感知機,學習演算法有原始形式對偶形式

那麼,對偶形式就可以如下表示了:

1. 引數為αα

,b,賦初值為0.

2. 在訓練集中選取資料(x

i,yi

)(xi,yi)

3. 如果(∑

nj=1

αjyj

xj⋅x

+b)<=

0(∑j=1nαjyjxj⋅x+b)<=0:

αi←α

i+ηαi←αi+η b

←b+η

yib←b+ηyi

4. 轉2,直到沒有誤分類的點。

對偶形式中,訓練集僅以內積的形式出現,為了方便,可以預先算出來儲存下來,這個矩陣就是gram矩陣

g=[xi⋅x

j]n×

ng=[xi⋅xj]n×n

首先,感知機應用場景為,資料集是線性可分的,這是前提。

感知機的經驗損失函式為誤分類點到分離超平面的距離和,讓這個距離和達到最小。

感知機學習得到的分離超平面並不唯一,有無窮多解。解由於初值不同或者迭代順序不同而可能有所不同。

學習演算法為隨機梯度下降.有原始形式和對偶形式。

Zabbix從入門到精通(一)

zabbix可以說是乙個非常優秀的開源網管系統,即使是現在的很多大廠商使用的還是zabbix做監控,或者針對zabbix進行二次開發。需要詳細了解zabbix的可以去它的官網去了解,這裡就不多說了。zabbix,本文主要介紹怎麼快速搭建zabbix,這裡主要介紹部署包安裝zabbix,也是最簡單的一...

flutter從入門到精通一

flutter 是 google 開源的 ui 工具包,幫助開發者通過一套 庫高效構建多平台精美應用,支援移動 web 桌面和嵌入式平台 flutter是基於dart語言開發的,我們將首先通過幾章節介紹下dart語言,再詳細的學習flutter 1.dart裡面是有型別的,並且具有型別校驗校驗 如果...

webpack從入門到精通(一)

1.webpack的使用背景 目前國內前端開發都是基於模組化的 2.webpack的作用有哪些 3.webpack四大核心理念 entry,output,loaders,plugins 4.使用webpack的方法 webpack命令列 webpack配置檔案 webpack腳手架 webpack配...