1. 程式人生 > >機器學習公開課筆記(7):支援向量機

機器學習公開課筆記(7):支援向量機

支援向量機(Support Vector Machine, SVM)

考慮logistic迴歸,對於$y=1$的資料,我們希望其$h_\theta(x) \approx 1$,相應的$\theta^Tx \gg 0$; 對於$y=0$的資料,我們希望$h_\theta(x) \approx 0$,相應的$\theta^Tx \ll 0$。每個資料點的代價為: $$-\left[y\log(h_\theta(x))+(1-y)\log(1-h\theta(x))\right]$$當$y=1$時其代價$cost_1(z)=-\log(\frac{1}{1+e^{-z}})$;當$y=0$時其代價$cost_0(z)=-\log(1-\frac{1}{1+e^{-z}})$,分別如圖1左右所示。

圖1 當$y=1$和$y=0$單個數據點的代價隨$z$的變化

logistic迴歸的假設為$$\min\limits_\theta \frac{1}{m}\left[\sum\limits_{i=1}^{m}y^{(i)}(-\log(h_\theta(x^{(i)}))) + (1-y^{(i)})(-\log(1-h_\theta(x^{(i)})))\right] + \frac{\lambda}{2m}\sum\limits_{j=1}^{n}\theta_{j}^2$$通過去掉$\frac{1}{m}$並且將$A+\lambda B$的形式變為$CA+B$的形式,可以得到SVM的假設為$$\min\limits_\theta C\left[\sum\limits_{i=1}^{m}y^{(i)}cost_1(\theta^Tx^{(i)}) + (1-y^{(i)})cost_0(\theta^Tx^{(i)})\right] + \frac{1}{2}\sum\limits_{j=1}^{n}\theta_{j}^2$$

最大間隔(Large Margin Intuition)

對於$y=1$的資料,我們希望$\theta^Tx \ge 1$而不僅僅是$\ge 0$; 對於$y=0$的資料,我們希望$h_\theta(x) \leq -1$而不僅僅是$< 0$。當C很大時,由於$CA+B$要取最小值,因此$A\approx 0$,從而SVM最大化間隔問題變為\begin{align*}&\min\limits_\theta\frac{1}{2}\sum\limits_{j=1}^{n}\theta_j^{2}\\ &s.t.\quad\begin{cases}\theta^{T}x^{(i)}\geq 1 \quad y^{(i)}=1\\\theta^{T}x^{(i)}\leq -1 \quad y^{(i)}=0\end{cases}\end{align*}

圖2 支援向量機最優超平面和最大Margin(兩條虛線之間的距離),支撐向量指的是位於兩條虛線上的點(在高維空間中,每個點可以看作是從原點出發的向量,所以這些點也稱為向量)

引數C表示對錯誤的容忍程度,C值越大表示越不能容忍錯誤分類,容易出現過擬合現象(如圖3所示).


圖3 引數C對分類的影響,C越大越不能容忍錯誤分類;反之能夠接受少量錯誤分類.

Kernel

對於低維空間中線性不可分的情況,可以通過增加高階多項式項將其對映到高維空間,使得在高維空間中通過一個超平面可分(如圖4所示)。Kernel解決如何選擇合適的高維特徵問題,對於任意低維資料點x,定義它與低維空間中預先選定的標記點$l^{(i)}$(landmarks)之間的相似性為$$f_i=similarity(x, l^{(i)})=exp\left(-\frac{||x-l^{(i)}||^2}{2\sigma^2}\right)$$這樣當有k個landmarks時,我們將得到k個新的特徵$f_i$,這樣就將低維空間的點x投射為高維(k維)空間中一個點。如果x距離$l^{(i)}$非常近,即$x\approx l^{(i)}$, 則相似性$f_i\approx 1$; 否則如果x距離$l^{(i)}$非常遠,則相似性$f_i\approx 0$。接下來一個問題是如何選擇landmarks,一種做法是選擇所有的m個樣本點作為landmarks,這樣對於具有n個特徵的資料點$x^{(i)}$,通過計算$f_i$,將得到一個具有m維空間的資料點$f^{(i)}$。


圖4 通過kernel函式將低維線性不可分資料投射到高維空間從而使得線性可分. 

SVM with kernels

假設(Hypothesis):給定資料點$x$,計算新的特徵$f$。當$\theta^Tf \geq 0$時,預測$y=1$;反之,預測$y=0$。

訓練(Training):$$\min\limits_\theta C\left[\sum\limits_{i=1}^{m}y^{(i)}cost_1(\theta^Tf^{(i)}) + (1-y^{(i)})cost_0(\theta^Tf^{(i)})\right] + \frac{1}{2}\sum\limits_{j=1}^{n}\theta_{j}^2$$

引數C($\approx\frac{1}{\lambda}$)的影響:

  • large C: low bias, high variance
  • small C: high bias, low variance

引數$\sigma^2$的影響:

  • large $\sigma^2$:high bias, low variance ($f_i$ vary more smoothly)
  • small $\sigma^2$:low bias, high variance ($f_i$ vary less smoothly)

支援向量機實踐

實際應用中不會要求自己實現SVM,更多是呼叫執行緒的庫例如liblinear,libsvm等來求解。需要指定引數C和kernel函式。

Linear kernel: 不指定kernel,即“No kernel”,也稱為“linear kernel”(用於特徵n較大,同時example數m較小時).

Gaussian kernel: $f_i=exp\left(-\frac{||x-l^{(i)}||^2}{2\sigma^2}\right)$,其中$l^{(i)}=x^{(i)}$,需要指定引數$\sigma^2$(用於n較小,m較大時)。注意在使用Gaussian kernel之前需要對資料進行feature scaling.

其他常見的kernel包括

  • Polynomal kernel:$k(x, l) = (\alpha x^Tl+c)^{d}$,其中可調節引數包括坡度$\alpha$,常量$c$和多項式度$d$
  • string kernel: 對字串直接進行變換,不需要將字串數值化,具體公式見wikipedia:string kernel
  • chi-square kernel:$k(x, y)=1-\sum\limits_{k=1}^{n}\frac{(x_k-y_k)^2}{\frac{1}{2}(x_k+y_k)}$
  • histogram intersection kernel:$k(x, y) = \sum\limits_{k=1}^{n}\min(x_k, y_k)$

 多元分類:採用one-vs-all的方法,對於k個分類,需要訓練k個svm.

logistic迴歸和SVM

當n較大時($n\geq m$, n=10000, m = 1000),使用logistic迴歸或者SVM(with linear kernel)

當n較小,m中等時(n=10-1000, m = 10-100000),使用SVM(with Gaussian kernel)

當n較小, m較大時(n=1-1000, m = 500000),增加新的特徵,然後適用logistic迴歸或者SVM(with linear kernel)

神經網路在各類n, m情況下都工作的很好,缺陷是訓練速度比較慢

參考文獻

[1] Andrew Ng Coursera 公開課第七週

[4] Hofmann T, Schölkopf B, Smola A J. Kernel methods in machine learning[J]. The annals of statistics, 2008: 1171-1220.

相關推薦

機器學習開課筆記(7)支援向量

支援向量機(Support Vector Machine, SVM) 考慮logistic迴歸,對於$y=1$的資料,我們希望其$h_\theta(x) \approx 1$,相應的$\theta^Tx \gg 0$; 對於$y=0$的資料,我們希望$h_\theta(x) \approx 0$,相應的$\

機器學習開課筆記(8)k-means聚類和PCA降維

K-Means演算法 非監督式學習對一組無標籤的資料試圖發現其內在的結構,主要用途包括: 市場劃分(Market Segmentation) 社交網路分析(Social Network Analysis) 管理計算機叢集(Organize Computer Clusters) 天文學資料分析(A

機器學習開課筆記(1)機器學習簡介及一元線性迴歸

初步介紹 監督式學習: 給定資料集並且知道其正確的輸出應該是怎麼樣的,即有反饋(feedback),分為 迴歸 (Regressioin): map輸入到連續的輸出值。 分類 (Classification):map輸出到離散的輸出值。 非監督式學習: 給定資料集,並不知道其正確的輸出是什麼,

機器學習開課筆記(6)應用機器學習的建議

應用機器學習的建議 1. 評估學習演算法 在實際中應用學習演算法時,如何評估一個學習演算法的好壞?進一步地,如果學習的演算法的效果不太好,如何改進學習演算法?例如,對於一個簡單的線性擬合模型,改進演算法效果的策略包括: 採用更多的訓練例項訓練模型 採用更小的特徵集合 增加額外的特徵 嘗試高次項

機器學習開課筆記(10)大規模機器學習

批梯度下降 (Batch Gradient Descent) 以線性迴歸為例,用梯度下降演算法進行引數更新的公式為$$\theta_j=\theta_j-\alpha\frac{1}{m}\sum\limits_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$可

機器學習開課筆記(9)異常檢測和推薦系統

異常檢測(Anomaly Detection) 基本假設:多數情況下資料點落入正常的取值範圍,但是當異常行為發生時,資料點的取值落入正常取值範圍之外(如圖1所示)。所以可以利用高斯分佈,計算行為發生的概率,如果是概率小於給定閾值,則認為發生了異常行為。基本過程是利用訓練資料點建立模型$p(x)$,對於新的資

機器學習開課筆記(5)神經網路(Neural Network)——學習

這一章可能是Andrew Ng講得最不清楚的一章,為什麼這麼說呢?這一章主要講後向傳播(Backpropagration, BP)演算法,Ng花了一大半的時間在講如何計算誤差項$\delta$,如何計算$\Delta$的矩陣,以及如何用Matlab去實現後向傳播,然而最關鍵的問題——為什麼要這麼計算?前面計算

機器學習開課筆記(2)多元線性迴歸

多元線性迴歸 一元線性迴歸只有一個特徵$x$,而多元線性迴歸可以有多個特徵$x_1, x_2, \ldots, x_n$ 假設 (Hypothesis):$h_\theta(x)=\theta^Tx=\theta_0x_0+\theta_1x_1+\ldots+\theta_nx_n$ 引數 (Para

機器學習開課筆記(4)神經網路(Neural Network)——表示

動機(Motivation) 對於非線性分類問題,如果用多元線性迴歸進行分類,需要構造許多高次項,導致特徵特多學習引數過多,從而複雜度太高。 神經網路(Neural Network) 一個簡單的神經網路如下圖所示,每一個圓圈表示一個神經元,每個神經元接收上一層神經元的輸出作為其輸入,同時其輸出訊號到下一

讀書筆記-《機器學習》第六章支援向量

支援向量機訓練完成後,大部分的訓練樣本都不需要保留,最終模型僅與支援向量有關 SMO的基本思路是先固定xi之外的所有引數,然後求xi上的極值。由於存在約束,因此SMO每次選擇兩個變數並固定其他引數

吳恩達機器學習作業(五)支援向量

目錄 1)資料預處理 2)Scikit-learn支援向量機 3)決策邊界比較 4)非線性SVM 5)最優超引數 6)垃圾郵件過濾器 在本練習中,我們將使用支援向量機(SVM)來構建垃圾郵件分類器。 我們將從一些簡單的2D資料集開始使用SVM來檢視它們的工作原理。

林軒田--機器學習技法--SVM筆記2--對偶支援向量(dual+SVM)

對偶支援向量機 咦?怎麼還有關於支援向量機的內容,我們不是在上一講已經將支援向量機解決了麼?怎麼又引入了對偶這個概念? 1.動機 我們在上一講已經講過,可以使用二次規劃來解決支援向量機的問題。如果現在想要解決非線性的支援向量機的問題,也很簡單,如下圖所

機器學習開課筆記第九周之大數據梯度下降算法

機器學習 nbsp gradient min 三種 依次 再看 獲得 mini 一,隨機梯度下降法(Stochastic Gradient Descent) 當訓練集很大且使用普通梯度下降法(Batch Gradient Descent)時,因為每一次\(\theta\)

廣義線性模型 - Andrew Ng機器學習開課筆記1.6

sans luci art 能夠 tro ron 便是 import grand 在分類問題中我們如果: 他們都是廣義線性模型中的一個樣例,在理解廣義線性模型之前須要先理解指數分布族。 指數分

Andrew Ng 機器學習筆記 11 支援向量(Support Vector Machine)

構建支援向量機 1.替換邏輯迴歸函式 2.去除多餘的常數項 1/m 3.正則化項係數的處理 大間距分類器 SVM決

斯坦福機器學習開課筆記 十三 推薦系統

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                授課老師:Andrew Ng1、problem formulation(問題產生)在平時購物的時候我們都會看到網站把向我們推薦的商品放在醒目位置,其實這就是推薦

【Andrew NG 機器學習開課】CS229Introduction、Linear Regression

這份筆記來源於Andrew NG在Coursera上的公開課和講義。 Introduction 機器學習問題 (一)有監督學習(Supervised Learning) 基本思想是:given the right answer for each example i

機器學習筆記09支援向量(二)-核函式(Kernels)

核函式是 SVM 的最重要的部分,我們可以通過設定不同的核函式來創造出非常複雜的、非線性的支援向量機。 1.核(Kernel) 首先來看看什麼是核函式。如圖所示,假設有一個樣本 x 有兩個特徵 x1,x2,我們可以根據與地標(landmarks) l(1),

斯坦福機器學習開課筆記(十五)--[應用]照片OCR技術

1、problem description and pipeline(問題描述和流水線) OCR是optical character recognition的縮寫,翻譯過來就是光學字元辨識。照片中的OCR技術其實就是識別中照片中存在的字元,例如下面這幅圖: 關於過程

斯坦福機器學習開課筆記(十三)--推薦系統

授課老師:Andrew Ng 1、problem formulation(問題產生) 在平時購物的時候我們都會看到網站把向我們推薦的商品放在醒目位置,其實這就是推薦系統。現在考慮一個電影推薦系統的例子,我們擁有一些使用者對於一些電影的評分,如下: 從上面可以看到,使