資料探勘 機器學習面試 SVM常考問題

2021-09-10 17:25:41 字數 3605 閱讀 7248

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

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

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

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

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

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

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

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

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

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

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

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

引入對映後的對偶問題:

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

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

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

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

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

這裡說的缺失資料是指缺失某些特徵資料,向量資料不完整。svm沒有處理缺失值的策略(決策樹有)。而svm希望樣本在特徵空間中線性可分,所以特徵空間的好壞對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)

引數:lc: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是二分類,所以將此而分類器的兩類設定為目標類為一類,其餘類為另外一類。這樣針對k個類可以訓練出k個分類器,當有乙個新的樣本來的時候,用這k個分類器來測試,那個分類器的概率高,那麼這個樣本就屬於哪一類。這種方法效果不太好,bias比較高。

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

資料探勘(機器學習)面試 SVM面試常考問題

應聘資料探勘工程師或機器學習工程師,面試官經常會考量面試者對svm的理解。以下是我自己在準備面試過程中,基於個人理解,總結的一些svm面試常考問題 想到會再更新 如有錯漏,請批評指正。大神請忽視 svm的原理是什麼?svm是一種二類分類模型。它的基本模型是在特徵空間中尋找間隔最大化的分離超平面的線性...

資料探勘面試之SVM

svm 上 理論知識 本文簡單講述了svm的一些小問題 0x00 前言 0x01 初始svm 問題1 你能給我講講什麼是svm嗎?回答 svm是一種二分類模型,它的基本模型是在特徵空間中尋找間隔最大化的分割超平面的線性分類器。如在下面的兩個類別中 暫且稱兩個類為黃球和紅球 我們要將其分割開的方式有多...

資料探勘 機器學習 大資料比賽羅列

最近自己想參加一些如題型別的比賽,卻發現找不到。自己知道的比賽平台要麼已經截止報名,要麼就是快結束了,內心真是一萬匹馬在奔騰。好不容易選了個阿里 的比賽,花了兩天時間初步實現了一種方法,提交結果還不錯,至少能進二期,卻發現由於自己沒看比賽規則,需要那啥實名驗證,而被直接淘汰。想想就心酸。看來有必要整...