1. 程式人生 > >支援向量機—SMO論文詳解(序列最小最優化演算法)

支援向量機—SMO論文詳解(序列最小最優化演算法)

SVM的學習演算法可以歸結為凸二次規劃問題。這樣的凸二次規劃問題具有全域性最優解,並且許多最優化演算法可以用來求解,但是當訓練樣本容量很大時,這些演算法往往變得非常低效,以致無法使用。論文《Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines》提出的SMO是針對SVM問題的Lagrange對偶問題開發的高效演算法。論文對很多計算細節予以忽略,而網上很多文章的解讀要麼不詳細,要麼使用了另外一套符號體系,不方便理解。本文將使用原論文的符號體系進行詳細解讀。


1. 問題概述

這裡寫圖片描述
支援向量機(SVM)的一大特點是最大化間距(max margin)。對於如上圖的二分類問題,雖然有很多線可以將左右兩部分分開,但是隻有中間的紅線效果是最好的,因為它的可活動範圍是最大的,從直觀上來說,很好理解。
對於線性二分類問題,假設分類面為

u=w⃗ x⃗ +b(1)
則margin為
m=1w2(2)

根據max margin規則和約束條件,得到如下優化問題,我們要求的就是引數 w⃗  b :
minw⃗ ,b12w⃗ 2subjecttoyi(w⃗ x⃗ ib)1,i,(3)

對於正樣本,類標號 yi 為+1,反之則為-1。根據拉格朗日對偶,公式(3)可以轉換為如下的二次規劃(QP)問題,其中 αi 為拉格朗日乘子。
minα⃗ Ψ(α⃗ )=minα⃗ 12i=1Nj=1Nyiyj(xi,xj)αiαji=1Nαi(4)
其中 N 為訓練樣本的數量,上式需要滿足不等式約束:
αi0,i(5)
還需要滿足等式約束:
i=1Nyiαi=0(6)
一旦求解出所有的拉格朗日乘子,則我們可以通過如下的公式得到分類面引數 w⃗  b
w⃗ =i=1Nyiαix⃗ i,b=w⃗ x⃗ kykforsomeαk>0.(7)
當然並不是所有的資料都可以完美的線性可分,可能有少量資料就是混在對方陣營,這時可以通過引入鬆弛變數 ξi 得到軟間隔形式的SVM:
minw⃗ ,b,ξ⃗ 12w⃗ 2+Ci=1Nξisubjecttoyi(w⃗ x⃗ ib)1ξi,i,(8)
其中的 ξi 為鬆弛變數,能假裝把錯的樣本分對, C 對max margin和max failures的trade off。對於這個新的優化問題,約束變成了一個box constraint:
0αiC,i(9)
而鬆弛變數 ξi 不再出現在對偶公式中了。
對於線性不可分的資料,可以用和函式 K 將其投影到高維空間,這樣就可分了,由此得到一般的分類面公式:
u=j=1NyjαjK(xj,x⃗ )b(10)
則最終需要求解的問題如下:
minα⃗ Ψ(α⃗ )=minα⃗ 12i=1Nj=

相關推薦

支援向量SMO論文序列最優化演算法

SVM的學習演算法可以歸結為凸二次規劃問題。這樣的凸二次規劃問題具有全域性最優解,並且許多最優化演算法可以用來求解,但是當訓練樣本容量很大時,這些演算法往往變得非常低效,以致無法使用。論文《Sequential Minimal Optimization:A Fast Algori

支援向量(SVM)原理

SVM簡介   支援向量機(support vector machines, SVM)是一種二分類模型,它的基本模型是定義在特徵空間上的間隔最大的線性分類器,間隔最大使它有別於感知機;SVM還包括核技巧,這使它成為實質上的非線性分類器。SVM的的學習策略就是間隔最大化,可形式化為一個求解凸二次規劃的問題,也等

支援向量4—序列最優化演算法

支援向量機的學習問題可以形式化為求解凸二次規劃問題。這樣的凸二次規劃問題具有全域性最優解,並且有許多最優化演算法可以用於這一問題的求解。但是當訓練樣本容量很大時,這些演算法往往變得非常低效,以致無法使用。所以學習一種快速實現演算法——序列最小最優化(sequential mi

短路演算法Dijkstra/Floyd/SPFA/A*演算法

最短路徑 在一個無權的圖中,若從一個頂點到另一個頂點存在著一條路徑,則稱該路徑長度為該路徑上所經過的邊的數目,它等於該路徑上的頂點數減1。由於從一個頂點到另一個頂點可能存在著多條路徑,每條路徑上所經過的邊數可能不同,即路徑長度不同,把路徑長度最短(即經過的邊數最少)的那

實驗吧 該題不簡單 OD flag 和分析內部演算法

這個題是偶然在實驗吧想起來做的題  本來打算的是分析一晚上的 但是發現經過這一段時間的學習 自己進步很大 然後在半小時的時候就做出來了這一道題 然後 分享給大家  實驗吧原題網址   這道題其實想做出來不難 但是分析演算法還是需要一些基礎的   點開就是這個樣子 隨便

Sequential Minimal OptimizationSMO序列優化演算法初探

什麼是SVM SVM是Support Vector Machine(支援向量機)的英文縮寫,是上世紀九十年代興起的一種機器學習演算法,在目前神經網路大行其道的情況下依然保持著生命力。有人說現在是神經網路深度學習的時代了,AI從業者可以不用瞭解像SVM這樣的古董了。姑且不說SVM是否

SVM中的訓練演算法序列最優化演算法SMO的讀書筆記

最近重看李航的統計學習方法,看SVM這章,細細的對了一下其中將SMO的這一張,記得去年這會兒看這本書的SMO這章還有點懵懵懂懂,並在書上寫了自己一些疑問的筆記,今年重新看發現之前的疑問不再是疑問了,於是做個筆記總結一下,總結一下。 首先線性可分支援向量機的構建條件是需要線性

支援向量SMO演算法原始碼分析1

支援向量機的理論支援在此不細說,可以參考李航的《統計學習》,還有西瓜書。 簡化版SMO演算法處理小規模資料集 SMO演算法是一種啟發式演算法。此簡化版首先在資料集上遍歷每一個alpha,然後在剩下的alpha集合中隨機選擇另一個alpha,從而建立alpha

支援向量SMO演算法實現原始碼逐條解釋

支援向量機號稱機器學習中最好的演算法——存在最優解,而且一般問題都可以得解。但是演算法需要的儲存空間和計算複雜度較大,不大適合大資料量的運算,不過經過platt發明的SMO簡化運算後,效率可以提高很多。以下是筆者用Matlab語言寫的支援向量機兩分類問題的原始碼,因為在網路

R-CNN論文學習筆記

R-CNN:基於候選區域的目標檢測 Region proposals 基本概念(看論文前需要掌握的): 1.cnn(卷積神經網路):CNN從入門到精通(初學者) 2.Selective search:選擇性搜素 3.warp:圖形region變換 4.Supervised pre-t

Attention is all you need 論文

一、背景 自從Attention機制在提出之後,加入Attention的Seq2Seq模型在各個任務上都有了提升,所以現在的seq2seq模型指的都是結合rnn和attention的模型。傳統的基於RNN的Seq2Seq模型難以處理長序列的句子,無法實現並行,並且面臨對齊的問題。 所以之後這類模型的發展大

SVM系列:深入解析 序列最優化SMO演算法

SMO演算法是幹啥的 首先要先搞明白一個基本的問題: SMO演算法是幹啥的? 通過前面的介紹,我們現在掌握了線性不可分支援向量機。其形式為如下的凸二次規劃: m

QAV250四軸穿越安裝全程多圖

QAV250四軸穿越機安裝全程詳解最近團隊準備使用輕型穿越機QAV250做實驗,本文記錄了QAV250的安裝過程,整理了開箱後較合理的安裝順序,以及各個步驟的注意事項,希望對有需要的朋友有所幫助。主要內容包括:系統基本配置QAV250機架安裝飛控及其部件安裝飛行前的準備一、基本配置機架QAV250機架×1動

支援向量數學證明與推導SVM

支援向量機(SVM) @(資料探勘)[svm] 一、線性可分支援向量機和硬間隔最大化 名詞解釋 線性可分:就是指給定一組資料集T={(x1,y1),(x2,y2),⋯,(x

支援向量SVM----學習筆記三程式碼實踐一高斯核函式

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.preprocessing import StandardScaler from sklearn.svm import SV

SVM支援向量-SKlearn實現與繪圖8

瞭解了SVM的基本形式與演算法實現,接下來用SKlearn實現支援向量機分類器.1.函式定義與引數含義先看一下SVM函式的完全形式和各引數含義:SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto’, coef0=0.0, shrink

特徵選擇之支援向量遞迴特徵消除SVM-RFE

支援向量機遞迴特徵消除(下文簡稱SVM-RFE)是由Guyon等人在對癌症分類時提出來的,最初只能對兩類資料進行特徵提取。它是一種基於Embedded方法。 支援向量機 支援向量機廣泛用於模式識別,機器學習等領域,SVM採用結構風險最小化原則,同時最小化

linux下Nginx配置文件(nginx.conf)配置設置windows用phpstudy集成

兩個 response 機制 .so 不用 filename 發送 php文件 code linux備份nginx.conf文件舉例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-2017111

java類型轉換自動轉換和強制轉換

代碼 oid 高精 log 相加 println 類型轉換詳解 範圍 void 自動轉換 class Hello { public static void main(String[] args) { //自動轉換 int a = 5; byte b = 6

Android熱修復技術原理最新全版本

總結 核心 桌面圖標 實時 開源 穩定性 安卓 定義 check 本文框架 什麽是熱修復? 熱修復框架分類 技術原理及特點 Tinker框架解析 各框架對比圖 總結 ??通過閱讀本文,你會對熱修復技術有更深的認知,本文會列出各類框架的優缺點以及技術原理,文章末尾簡單描述