本部分主要解釋這麼幾個問題:
1. 從logistic regression到SVM
2. SVM和Large Margin Classfier
3. SVM的hypothetsis (
4. SVM的cost function(
5. kernel function
1.從logistic regression到SVM
我們在處理分類問題的時候,用到的最基本的代價函數是:
其中
如果
如果
在上面的cost function中,
用
其中,
那麼這個時候我們就得到了SVM的cost function:
更一般地,經過reparameterize我們可以有優化目標函數:
其中 C可近似地理解爲
(不妨揣測一下,把λ轉化成C的目的是爲了保持和d在bias variance上的一致性 同小 bias 同大 variance)
於是我們就得到了
1. SVM的原始hypothetsis:
注意:邏輯迴歸裏面的
2. 其cost function的一般形式
既然我們已經有了SVM的代價函數以後,我們接下來要做自然就是求這個函數的最小值了。
很顯然,由兩個
如果
如果
這樣子的話,我們的目標函數就直接變成了
我們的問題也就轉化成了一個有約束的線性規劃問題的求解:
2.SVM和Large Margin Classfier
在求解上面的這個優化問題時,我們可以得到一個很有意思的決策邊界。之所以說它有意思,是因爲對於訓練集中的兩類點來說,它到兩類點的margin都是比較大的。也就是說,兩類點到這個邊界的距離相對來講都是比較大的。
如果用兩類點到邊界的距離來構建一個二維座標平面的話,那麼兩類點到SVM決策邊界的距離就是最高的那個點。
於是,在C特別大的時候,我們可以把SVM 理解成一個 Large Margin Classfier
但這樣子的理解僅限於C特別大的情況,此時SVM是對噪聲非常敏感的,一個outlier 就可以引起SVM決策邊界的變化。
當C比較小的時候,SVM可以消除兩類問題的影響。一類是有噪聲的情況,還有一類是不同類別的點混雜在一起 not linearly seprateable的情況。
爲什麼SVM在C特別大的時候,可以理解成一個Large Margin Classfier?
要解釋清楚這個問題,我們先要解釋一下形如
向量的內積,代表的是一個向量在另一個向量上的投影距離與另外那個向量的長度的乘積。
清楚了向量內積的意義以後,我們可以知道:
於是,我們將前面的線性規劃問題改寫成向量的形式,有:
顯然,我們的目標其實可以轉化成爲求
不妨這樣子來考慮,在
又因爲向量
到此爲止,我們就解釋清楚了,爲什麼在C比較大的情況下,SVM可以看成是Larger Margin Classfier
此時,我們就解決了兩個問題:
1. 什麼是SVM(hypothesis & optimization ovjective)
2. SVM和Large Margin Classfier
3.kernel function
我們在做訓練器的分類的時候,我們其實是希望能夠找到一個比較合適的決策邊界來區分數據的類別。顯然,在Sigmoid function的情況下,我們的決策邊界就是
在SVM裏面我們怎麼找到這個決策邊界,我們引入了kernel,利用kernel來幫我們找到決策邊界,也就是幫助我們進行分類。
接下來我們就說一說kernel function的問題
- 什麼是kernel
- 爲什麼kernel提取新特徵能取得比較好的效果
- 怎麼使用kernel,它是如何幫我們找到決策邊界
%%1.什麼是kernel?
前面我們在解決複雜的非線性問題時,如果直接使用polynomial feature的形式問題的求解會變得很複雜,計算成本也會變得非常大,所以我們考慮通過在神經網絡裏面提取新的特徵的方式來求解。
而在這裏,我們換一種提取新特徵的方式,也就是使用kernel function來作爲新的特徵,也就是考慮我們的數據點和landmark
Gaussian kernel function 構建向量,用向量的長度作爲特徵來進行衡量,形如高斯分佈
f=similarity(x,l)=exp(−∥x−l∥22σ2)
其中,我們有f=(f1,f2,f3,...),l=(l(1),l(2),l(3),...) ,所以具體到每一個特徵分量fi ,我們有:
fi=similarity(x,l(i))=exp(−∥x−l(i)∥22σ2)=exp(∑ni=1(xj−l(i)j)2σ2) No kernel(linear kernel)
其實就是我們以前使用過的(線性)邏輯迴歸
h(x)={1,0,θTx≥0otherwise
%%2.爲什麼會有比較好的效果?
把點在座標面上的位置映射成距離一些kernel的遠近程度,將特徵
%%3.怎麼樣使用kernel
計算好
我們在使用kernel的時候有三個地方是需要注意的:
* 怎麼選擇landmarks
* 怎麼選擇similarity函數
* 怎麼計算
%% 怎麼選擇landmarks
將訓練集裏面的點作爲landmarks
e.g.
有m個樣本
對於一個新的數據
所以
4.SVM的hypothetsis 和 cost function
那麼我們就可以得到SVM在引入kernel以後的和hypothesise和training
Hypothesis: 給出
注意,
Training:
注意,懲罰項
因爲
將最後的懲罰項
至此,我們就解決了如何選擇landmark的問題
%%接下來考慮怎麼選擇similarity函數
前面已經提到過no kernel函數和Gaussin kernel。
no kernel的函數適用於特徵值多訓練樣本少的情況
Guassian kernel適用於特徵值少訓練樣本多的情況
polynomial kernel:
也還有string kernel/chi-squre kernel,histogram intersection kernel等等 ,但是這種一般都用的特別少
kernel函數的選擇有一個原則:並不是所有的
%%怎麼計算
我也很無奈啊,Ng的課程裏面也沒有說,我也很要查一查
SUMMARY
考慮一下我們前面已經提到過的分類器問題的hypothesis,我們可以提出一個比較一般的phypothesis形式:
在上面的公式中,
g代表的是一個處理函數,我們到目前位置學習到的是sigmoid function。
f 的分量是單個特徵f=(x1,x2,...,xn) ,也就是θTf=θ0+θ1x1+...+θnxn ,這就是我們的logistic regressionf 的分量是高次特徵f=(x1,x2,x1x2,x21,x22,...) ,也就是θTf=θ0+θ1x1+θ2x2+θ3x1x2+θ4x21+θ5x22+... f 的分量是多重的線性特徵f=g(\Theta^Tx)=(g(\Theta_1x),g(\Theta_2x),g(\Theta_3x),...)f=g(ΘTx)=(g(Θ1x),g(Θ2x),g(Θ3x),...) ,這就是Neural Networkf 的分量是kernel functionf=(f1,f2,f3,...)=(similarity(x,l(1)),similarity(x,l(2)),similarity(x,l(3)),...) ,這就是我們的SVM
小吐個槽:ml的這個課程裏面監督學習主要精力都是在講分類啊