SVM相關問題

2021-08-06 04:49:30 字數 4548 閱讀 7798

應聘資料探勘工程師或機器學習工程師,面試官經常會考量面試者對svm的理解。

以下是我自己在準備面試過程中,基於個人理解,總結的一些svm面試常考問題(想到會再更新),如有錯漏,請批評指正。(大神請忽視)

svm的原理是什麼?

svm是一種二類分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性分類器。(間隔最大是它有別於感知機)

(1)當訓練樣本線性可分時,通過硬間隔最大化,學習乙個線性分類器,即線性可分支援向量機;

(2)當訓練資料近似線性可分時,引入鬆弛變數,通過軟間隔最大化,學習乙個線性分類器,即線性支援向量機;

(3)當訓練資料線性不可分時,通過使用核技巧及軟間隔最大化,學習非線性支援向量機。

注:以上各svm的數學推導應該熟悉:硬間隔最大化(幾何間隔)---學習的對偶問題---軟間隔最大化(引入鬆弛變數)---非線性支援向量機(核技巧)。

svm為什麼採用間隔最大化?

當訓練資料線性可分時,存在無窮個分離超平面可以將兩類資料正確分開。

感知機利用誤分類最小策略,求得分離超平面,不過此時的解有無窮多個。

線性可分支援向量機利用間隔最大化求得最優分離超平面,這時,解是唯一的。另一方面,此時的分隔超平面所產生的分類結果是最魯棒的,對未知例項的泛化能力最強

然後應該藉此闡述,幾何間隔,函式間隔,及從函式間隔—>求解最小化1/2 ||w||^2 時的w和b。即線性可分支援向量機學習演算法—最大間隔法的由來。

為什麼要將求解svm的原始問題轉換為其對偶問題?

一、是對偶問題往往更易求解(當我們尋找約束存在時的最優點的時候,約束的存在雖然減小了需要搜尋的範圍,但是卻使問題變得更加複雜。為了使問題變得易於處理,我們的方法是把目標函式和約束全部融入乙個新的函式,即拉格朗日函式,再通過這個函式來尋找最優點。

二、自然引入核函式,進而推廣到非線性分類問題。

為什麼svm要引入核函式?

當樣本在原始空間線性不可分時,可將樣本從原始空間對映到乙個更高維的特徵空間,使得樣本在這個特徵空間內線性可分。

引入對映後的對偶問題:

在學習**中,只定義核函式k(x,y),而不是顯式的定義對映函式ϕ。因為特徵空間維數可能很高,甚至可能是無窮維,因此直接計算ϕ(x)·ϕ(y)是比較困難的。相反,直接計算k(x,y)比較容易(即直接在原來的低維空間中進行計算,而不需要顯式地寫出對映後的結果)。

核函式的定義:k(x,y)=,即在特徵空間的內積等於它們在原始樣本空間中通過核函式k計算的結果。

除了 svm 之外,任何將計算表示為資料點的內積的方法,都可以使用核方法進行非線性擴充套件。

svm rbf核函式的具體公式?

gauss徑向基函式則是區域性性強的核函式,其外推能力隨著引數σ的增大而減弱。

這個核會將原始空間對映為無窮維空間。不過,如果 σ 選得很大的話,高次特徵上的權重實際上衰減得非常快,所以實際上(數值上近似一下)相當於乙個低維的子空間;反過來,如果 σ 選得很小,則可以將任意的資料對映為線性可分——當然,這並不一定是好事,因為隨之而來的可能是非常嚴重的過擬合問題。不過,總的來說,通過調控引數σ ,高斯核實際上具有相當高的靈活性,也是使用最廣泛的核函式之一。

為什麼svm對缺失資料敏感?

這裡說的缺失資料是指缺失某些特徵資料,向量資料不完整。svm沒有處理缺失值的策略(決策樹有)。而svm希望樣本在特徵空間中線性可分,所以特徵空間的好壞對svm的效能很重要。缺失特徵資料將影響訓練結果的好壞。

svm是用的是哪個庫?sklearn/libsvm中的svm都有什麼引數可以調節?

用的是sklearn實現的。採用sklearn.svm.svc設定的引數。本身這個函式也是基於libsvm實現的(ps: libsvm中的二次規劃問題的解決演算法是smo)。

svc函式的訓練時間是隨訓練樣本平方級增長,所以不適合超過10000的樣本。

對於多分類問題,svc採用的是one-vs-one投票機制,需要兩兩類別建立分類器,訓練時間可能比較長。

sklearn.svm.svc(

c=1.0

, kernel='rbf'

, degree=3

, gamma='auto'

, coef0=0.0

, shrinking=true

, probability=false

,tol=0.001

, cache_size=200

, class_weight=none

, verbose=false

, max_iter=-1

, decision_function_shape=none

,random_state=none

)引數:

l  c:c-svc的懲罰引數c?預設值是1.0

c越大,相當於懲罰鬆弛變數,希望鬆弛變數接近0,即對誤分類的懲罰增大,趨向於對訓練集全分對的情況,這樣對訓練集測試時準確率很高,但泛化能力弱。c值小,對誤分類的懲罰減小,允許容錯,將他們當成雜訊點,泛化能力較強。

lkernel

:核函式,預設是

rbf,可以是

『linear』, 『poly』, 『rbf』, 『sigmoid』, 『precomputed』 

0 – 線性:u'v

1 – 多項式:(gamma*u'*v + coef0)^degree

2 – rbf函式:exp(-gamma|u-v|^2)

3 –sigmoid:tanh(gamma*u'*v + coef0)

ldegree

:多項式

poly

函式的維度,預設是

3,選擇其他核函式時會被忽略。

lgamma: 『rbf』,『poly』 和『sigmoid』的核函式引數。預設是』auto』,則會選擇1/n_features

lcoef0:核函式的常數項。對於『poly』和 『sigmoid』有用。

lprobability

:是否採用概率估計?

.預設為

false

lshrinking

:是否採用

shrinking heuristic

方法,預設為

true

ltol

:停止訓練的誤差值大小,預設為

1e-3

lcache_size

:核函式

cache

快取大小,預設為

200

lclass_weight

:類別的權重,字典形式傳遞。設定第幾類的引數c為

weight*c(c-svc

中的c)

lverbose

:允許冗餘輸出?

lmax_iter

:最大迭代次數。

-1為無限制。

ldecision_function_shape

:『ovo』, 『ovr』 or none, default=none3

lrandom_state

:資料洗牌時的種子值,

int值

主要調節的引數有:c、kernel、degree、gamma、coef0。

svm如何處理多分類問題?

一般有兩種做法:一種是直接法,直接在目標函式上修改,將多個分類面的引數求解合併到乙個最優化問題裡面。看似簡單但是計算量卻非常的大。

另外一種做法是間接法:對訓練器進行組合。其中比較典型的有一對一,和一對多

一對多,就是對每個類都訓練出乙個分類器,由svm是二分類,所以將此而分類器的兩類設定為目標類為一類,其餘類為另外一類。這樣針對k個類可以訓練出k個分類器,當有乙個新的樣本來的時候,用這k個分類器來測試,那個分類器的概率高,那麼這個樣本就屬於哪一類。這種方法效果不太好,bias比較高。

svm一對一法(one-vs-one),針對任意兩個類訓練出乙個分類器,如果有k類,一共訓練出c(2,k) 個分類器,這樣當有乙個新的樣本要來的時候,用這c(2,k) 個分類器來測試,每當被判定屬於某一類的時候,該類就加一,最後票數最多的類別被認定為該樣本的類。

SVM相關問題

1.為什麼要通過求解與原問題等價的對偶問題 dual problem 來得到原問題的解?原因主要有 1 對偶問題更容易求解 2 在對偶問題下可以很容易引入核函式,進而擴充套件到線性不可分的場景。詳見 理解svm的三層境界 2.lagrange duality與wolfe duality的區別何在?常...

svm相關概念

svm 遇到對手神經網路 二分類問題 裡面的min,是求離決策邊界最近的雷是哪個i 外面的max,是求哪組wb能使 雷 到邊界距離越大越好 y與y x 同正負,為正負1,y y x 恆大於0 可放縮使y y x 1,則min那項最小就為1 二分之一,求解方便 kkt對偶性質 先求min極小值,偏導 ...

svm相關知識

1.svm是一種二分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性分類器。2.支援向量機對噪音的敏感程度 當有少量噪音,噪音沒有成為支援向量時,噪音對模型不產生影響,具有很好的魯棒性 當有大量噪音,且噪音成為了支援向量,噪音對模型會有顛覆性的影響,不具備魯棒性 3.svm核函式意...