【機器學習】SVM核函式的計算
在【機器學習】推導支援向量機SVM二分類中,我們已經推匯出線性核SVM的對偶優化問題:
J=\sum_i \alpha_i -\frac{1}{2}\sum_i \sum_j \alpha_i \alpha_jd_id_jk(x_i)^Tk(x_j) \\ =\sum_i \alpha_i -\frac{1}{2}\sum_i \sum_j \alpha_i \alpha_jd_id_jK(x_i,x_j) \\ subject to \sum\alpha_id_i=0,0\le \alpha_i \le C
在優化好
\alpha_i
拉格朗日量後,我們得到的w和b為:w=\sum\alpha_id_ix_i \\ b = -(y_1+y_{-1})/2
需要注意的是,w
的表示式中有x_i
。 我們引入核函式
K(x_i,x_j)
到SVM,必須注意到K(x_i,x_j)=\phi (x_i)^T \phi (x_j)
,也就是說理論上核函式應該能拆開。在引入核函式的前提下,w的表示式為w=\sum\alpha_id_i\phi(x_i)^T
我們已知幾個常用核函式,比如多項式核函式和徑向基核函式。多項式核函式的的定義為
K(x_i,x_j)=(x_i^Tx_j+1)^n
假設n=2,那麼拆開為K(x_i,x_j)=(x_i^T)^2x_j^2+2x_ix_j+1=[(x_i^T)^2,\sqrt{2}x_i^T,1][(x_j^T)^2,\sqrt{2}x_j^T,1]^T
這裡,我們可以確實求出w的值。 徑向基核函式定義為
K(x_i,x_j)=e^{-\frac{(x_i-x_j)^2}{\sigma^2}}=e^{-\frac{x_i^2}{\sigma^2}}e^{-\frac{x_j^2}{\sigma^2}}e^{\frac{x_i^Tx_j}{\sigma^2}} \\ = e^{-\frac{x_i^2}{\sigma^2}}e^{-\frac{x_j^2}{\sigma^2}}\sum_{k=0}^{\infty}{\frac{(2 x_i^Tx_j/\sigma^2)^k}{k!}}\\ = [e^{-\frac{x_i^2}{\sigma^2}},1, \sqrt{\frac{2}{1}}\frac{x_i}{\sigma},\sqrt{\frac{2^2}{2!}}(\frac{x_i}{\sigma})^2,...][e^{-\frac{x_j^2}{\sigma^2}},1, \sqrt{\frac{2}{1}}\frac{x_j}{\sigma},\sqrt{\frac{2^2}{2!}}(\frac{x_j}{\sigma})^2,...]^T
結果表明,\Phi(x)
函式是一個無限維度的函式。這說明,在工程上我們不一定能夠完美地拆開核函式為K(x_i,x_j)=\phi (x_i)^T \phi (x_j)
。之後還有很多各種型別的核函式,比如使用了tanh函式的核函式,這些核函式在工程上是很難拆分求解的,很難獲取\phi(x)
函式,亦難以求取w的確切值。 那麼如何求解引入複雜核函式的SVM呢?在優化求解J之後,我們可以獲取並儲存
\alpha_i
。由於SVM只有少量支援向量(資料)對決策超平面有決定作用,很多拉格朗日引數\alpha_i \rightarrow 0
,我們可以只儲存足夠大的\alpha_i
以及對應的訓練資料x_i
、標記d_i
,不直接計算出w的確切值,這在工程上是確實可行的。 當我們需要進行預測的時候,我們匯入
\alpha_i
,x_i
和d_i
,然後把新資料x代入核函式,計算y=\sum_i\alpha_id_iK(x_i,x)+b
即可。 相關文章
- Python機器學習筆記:SVM(2)——SVM核函式Python機器學習筆記函式
- [機器學習&資料探勘]SVM---核函式機器學習函式
- 《機器學習_07_03_svm_核函式與非線性支援向量機》機器學習函式
- SVM 的核函式選擇和調參函式
- 支援向量機 (二): 軟間隔 svm 與 核函式函式
- 核函式 多項式核函式 高斯核函式(常用)函式
- cuda 核函式函式
- 計算日期的函式函式
- Python機器學習筆記:SVM(1)——SVM概述Python機器學習筆記
- 核函式匯出的核矩陣性質的證明函式矩陣
- 從雲端計算到函式計算函式
- 機器學習:支援向量機(SVM)機器學習
- 機器學習——支援向量機(SVM)機器學習
- Python機器學習筆記:SVM(3)——證明SVMPython機器學習筆記
- 計算 CRC32 的逆函式函式
- 計算幾何常用的函式/方法函式
- 萬能的計算日期函式(轉)函式
- SNN 核函式的2種形狀函式
- 函式計算——應用初探函式
- Mysql中日期計算函式MySql函式
- 支援向量機(三)核函式函式
- 機器學習——支援向量機SVM(一)機器學習
- 基於函式計算的 BFF 架構函式架構
- matchTemplate函式各個方法的計算公式函式公式
- 外層函式的變數直接被巢狀函式引用計算函式變數巢狀
- 遷移 Express 到函式計算Express函式
- 溫溼度計算露點函式函式
- 《機器學習實戰》中的splitDataSet函式機器學習函式
- 計算誤差函式的積分--erf(x)函式
- 機器學習程式碼實現 SVM (5)機器學習
- 機器學習基本函式介紹機器學習函式
- pycuda-一些計算函式函式
- 函式計算-HelloWorld應用開發函式
- C語言程式設計>第八週 ② 編寫函式fun,函式的功能是:根據以下公式計算,計算結果作為函式值返回。C語言程式設計函式公式
- 陣列操作,計算組元素的極值函式陣列函式
- Shell 計算明天和昨天日期的函式(轉)函式
- SQL 10 函式 3 日期時間函式 - 5 計算日期差額SQL函式
- Python機器學習筆記——One Class SVMPython機器學習筆記