1. 程式人生 > >資料探勘(機器學習)面試--SVM面試常考問題

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

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

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

轉載請註明出處:blog.csdn.net/szlcw1

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)=<ϕ(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.0kernel='rbf'degree=3gamma='auto'coef0=0.0shrinking=Trueprobability=False,tol=0.001cache_size=200class_weight=Noneverbose=Falsemax_iter=-1decision_function_shape=None,random_state=None)

引數:

l  C:C-SVC的懲罰引數C?預設值是1.0

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

kernel:核函式,預設是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)

degree:多項式poly函式的維度,預設是3,選擇其他核函式時會被忽略。

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

coef0 :核函式的常數項。對於‘poly’和 ‘sigmoid’有用。

probability是否採用概率估計?.預設為False

shrinking:是否採用shrinking heuristic方法,預設為true

tol停止訓練的誤差值大小,預設為1e-3

cache_size:核函式cache快取大小,預設為200

class_weight:類別的權重,字典形式傳遞。設定第幾類的引數Cweight*C(C-SVC中的C)

verbose:允許冗餘輸出?

max_iter:最大迭代次數。-1為無限制。

decision_function_shape‘ovo’, ‘ovr’ or None, default=None3

random_state:資料洗牌時的種子值,int

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

SVM如何處理多分類問題?

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

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

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

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


參考資料:

李航《統計學習方法》(強烈推薦)

周志華《機器學習》

部分資料整理於網上。

支援向量機: Kernel  http://blog.pluskid.org/?p=685&cpage=1

相關推薦

資料機器學習面試--SVM面試問題

應聘資料探勘工程師或機器學習工程師,面試官經常會考量面試者對SVM的理解。 以下是我自己在準備面試過程中,基於個人理解,總結的一些SVM面試常考問題(想到會再更新),如有錯漏,請批評指正。(大神請忽視) 轉載請註明出處:blog.csdn.net/szlcw1 SVM的原

帶你入門Python資料機器學習附程式碼、例項

作者:韋瑋來源:Python愛好者社群本文共7800字,建議閱讀10+分鐘。本文結合程式碼例項待

走在前往架構師的路上專注於分散式計算,大資料資料機器學習演算法等領域的研究

新書<<深度剖析Hadoop HDFS>>釋出上市,此書源自於筆者部落格,重新經過整理,完善而成,此書的定位並不是一本純原始碼分析的書籍,其中有許多筆者在工作和學習中對於HDFS的一些有趣的看法和理解。 連結: 淘寶京東 (adsbygoog

【強烈推薦】:關於系統學習資料Data Mining的一些建議!!

微信公眾號 關鍵字全網搜尋最新排名 【機器學習演算法】:排名第一 【機器學習】:排名第一 【Python】:排名第三 【演算法】:排名第四 關於資料探勘 提到收據挖掘(Data Mining, DM),很多想學習的同學大多數都會問我: 什麼是資料探勘? 怎麼培養資料分析的能力? 如何成為一名資料科學家? (

未明學院活動:機器學習熱門專案開始報名,一次收穫資料&機器學習技能、行業專案經歷!

隨著大資料時代的到來,金融、通訊、網際網路等越來越多的行業需要資料科學方面的人才。在數聯尋英2016年釋出的《大資料人才報告》中表明,現階段我國大資料人才僅有 46 萬,在未來 3-5 年內大資料人才缺口將高達 150 萬。 缺口的逐漸增大,大資料人才的薪資也跟著水漲船高。據某權威招聘

資料-實用機器學習技術》下載

2018年11月01日 21:13:05 qq_43580805 閱讀數:4 標籤: 程式設計 資料

Python資料機器學習_通訊信用風險評估實戰(4)——模型訓練與調優

系列目錄: 訓練資料拆分 把訓練資料拆分為訓練集和交叉驗證集,比例為7:3。x_train和y_train用來訓練模型,x_test和y_test用來交叉驗證。 data_train = data_train.set_index('Us

Python資料機器學習技術入門實戰

課程主講簡介: 韋瑋,企業家,資深IT領域專家/講師/作家,暢銷書《精通Python網路爬蟲》作者,阿里雲社群技術專家。 以下內容根據主講嘉賓視訊分享以及PPT整理而成。 本次課程包含了五個知識點: 1.資料探勘與機器學習技術簡介   2.Python資料預

機器學習_3】常見術語區別(人工智慧&資料&機器學習&統計模型等)

1.人工智慧&資料探勘&機器學習&深度學習&統計模型 人工智慧:是一個大的概念,是讓機器像人一樣思考甚至超越人類。 資料探勘:有目的地從現有大資料中提取資料的模式(pattern)和模型(model)。——比較偏向探索性分析,不是強烈的目的導向,只是能發現多少發現多少。 資料

資料機器學習基本演算法總結

在這種學習模式下,輸入資料作為對模型的反饋,不像監督模型那樣,輸入資料僅僅是作為一個檢查模型對錯的方式,在強化學習下,輸入資料直接反饋到模型,模型必須對此立刻作出調整。常見的應用場景包括動態系統以及機器人控制等。常見演算法包括Q-Learning以及時間差學習(Temporal difference le

人工智慧、大資料、雲端計算、資料機器學習概述

一、人工智慧、大資料、雲端計算:https://blog.csdn.net/zw0pi8g5c1x/article/details/80027593 二、資料探勘與機器學習:https://blog.csdn.net/xiaogss/article/details/79316063 資料探勘

Python資料機器學習_通訊信用風險評估實戰(2)——資料預處理

系列目錄: 資料說明 通過對讀取資料的實踐,下面是資料集檔案對應讀取後的DataFrame說明。 資料檔案 DataFrame DataTech_Credit_Train_Communication1.txt train

python/pandas資料十四-groupby,聚合,分組級運算

groupby import pandas as pd df = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'],

python/pandas資料十四-groupby,聚合,分組級運算---很全

groupby import pandas as pd df = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'],

資料機器學習中距離和相似度公式

距離:閔可夫斯基距離公式,也叫 Lp 範數: 當p=1時,變為曼哈頓距離公式,也即 L1範數: 當p=2時,變為歐式距離公式,也即 L2範數: 衡量空間中點的絕對距離,對絕對數值敏感。 相似性: 餘弦相似: 皮爾遜相關係數,即相關分析中的相關係數,對兩個個體的向

18名校資料機器學習課程資源彙總

轉自:http://suanfazu.com/discussion/27/18%E5%90%8D%E6%A0%A1%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E5%8F%8A%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A

資料機器學習,人工智慧的簡單區別分析

資料探勘(data mining),機器學習(machine learning),和人工智慧(AI)的區別是什麼? 資料科學(data science)和商業分析(business analytics)之間有什麼關係?本來我以為不需要解釋這個問題的,到底資料探勘(data mining),機器學習(machi

【免費課程】小白學資料機器學習

浩彬老撕的新書《小白學資料探勘與機器學習》正式發售啦!!!隨書配套了37節(660分鐘以上)免費

資料機器學習,自然語言處理這三者是什麼關係?

資料探勘與機器學習是兩個不同的概念; 資料探勘中使用到機器學習的各種工具,而自然語言處理也是是一種機器學習的方式,屬於資料探勘的範疇。 資料探勘(英語:Data mining),又譯為資料探勘、資料採礦。它是資料庫知識發現 (英語:Knowledge-Discovery i

帶你看資料機器學習-廈大EDP上課出勤預測

開發十年,就只剩下這套架構體系了! >>>