我是標題黨【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配...