機器學習面試知識點總結(不斷補充中)

機器學習崗位的面試中一般會對一些常見的機器學習算法和思想進行提問,在平時的學習過程當中可能對算法的理論,注意點,區別會有必定的認識,可是這些知識可能不繫統,在回答的時候未必能在短期內答出本身的認識,所以將機器學習中常見的原理性問題記錄下來,保持對各個機器學習算法原理和特色的熟練度。html

·          無監督和有監督算法的區別?面試

有監督學習:對具備概念標記(分類)的訓練樣本進行學習,以儘量對訓練樣本集外的數據進行標記(分類)預測。這裏,全部的標記(分類)是已知的。所以,訓練樣本的岐義性低。算法

無監督學習:對沒有概念標記(分類)的訓練樣本進行學習,以發現訓練樣本集中的結構性知識。這裏,全部的標記(分類)是未知的。所以,訓練樣本的岐義性高。聚類就是典型的無監督學習。bootstrap

·          SVM 的推導,特性?多分類怎麼處理?網絡

  SVM是最大間隔分類器,幾何間隔和樣本的誤分次數之間存在關係,,其中app

從線性可分狀況下,原問題,特徵轉換後的dual問題,引入kernel(線性kernel,多項式,高斯),最後是soft margin機器學習

線性:簡單,速度快,可是須要線性可分函數

多項式:比線性核擬合程度更強,知道具體的維度,可是高次容易出現數值不穩定,參數選擇比較多。性能

高斯:擬合能力最強,可是要注意過擬合問題。不過只有一個參數須要調整。學習

多分類問題,通常將二分類推廣到多分類的方式有三種,一對一,一對多,多對多。

一對一:將N個類別兩兩配對,產生N(N-1)/2個二分類任務,測試階段新樣本同時交給全部的分類器,最終結果經過投票產生。

一對多:每一次將一個例做爲正例,其餘的做爲反例,訓練N個分類器,測試時若是隻有一個分類器預測爲正類,則對應類別爲最終結果,若是有多個,則通常選擇置信度最大的。從分類器角度一對一更多,可是每一次都只用了2個類別,所以當類別數不少的時候一對一開銷一般更小(只要訓練複雜度高於O(N)便可獲得此結果)

多對多:若干各種做爲正類,若干個類做爲反類。注意正反類必須特殊的設計。

·          LR 的推導,特性?

LR的優勢在於實現簡單,而且計算量很是小,速度很快,存儲資源低,缺點就是由於模型簡單,對於複雜的狀況下會出現欠擬合,而且只能處理2分類問題(能夠經過通常的二元轉換爲多元或者用softmax迴歸)

·          決策樹的特性?

決策樹基於樹結構進行決策,與人類在面臨問題的時候處理機制十分相似。其特色在於須要選擇一個屬性進行分支,在分支的過程當中選擇信息增益最大的屬性,定義以下  

          

在劃分中咱們但願決策樹的分支節點所包含的樣本屬於同一類別,即節點的純度愈來愈高。決策樹計算量簡單,可解釋性強,比較適合處理有缺失屬性值的樣本,可以處理不相關的特徵,可是容易過擬合,須要使用剪枝或者隨機森林。信息增益是熵減去條件熵,表明信息不肯定性較少的程度,信息增益越大,說明不肯定性下降的越大,所以說明該特徵對分類來講很重要。因爲信息增益準則會對數目較多的屬性有所偏好,所以通常用信息增益率(c4.5)

          

其中分母能夠看做爲屬性自身的熵。取值可能性越多,屬性的熵越大。

Cart決策樹使用基尼指數來選擇劃分屬性,直觀的來講,Gini(D)反映了從數據集D中隨機抽取兩個樣本,其類別標記不一致的機率,所以基尼指數越小數據集D的純度越高,通常爲了防止過擬合要進行剪枝,有預剪枝和後剪枝,通常用cross validation集進行剪枝。

連續值和缺失值的處理,對於連續屬性a,aD上出現的不一樣的取值進行排序,基於劃分點tD分爲兩個子集。通常對每個連續的兩個取值的中點做爲劃分點,而後根據信息增益選擇最大的。與離散屬性不一樣,若當前節點劃分屬性爲連續屬性,該屬性還能夠做爲其後代的劃分屬性。

·          SVMLR、決策樹的對比?

SVM既能夠用於分類問題,也能夠用於迴歸問題,而且能夠經過核函數快速的計算,LR實現簡單,訓練速度很是快,可是模型較爲簡單,決策樹容易過擬合,須要進行剪枝等。從優化函數上看,soft marginSVM用的是hinge loss,而帶L2正則化的LR對應的是cross entropy loss,另外adaboost對應的是exponential loss。因此LR對遠點敏感,可是SVMoutlier不太敏感,由於只關心support vectorSVM能夠將特徵映射到無窮維空間,可是LR不能夠,通常小數據中SVMLR更優一點,可是LR能夠預測機率,而SVM不能夠,SVM依賴於數據測度,須要先作歸一化,LR通常不須要,對於大量的數據LR使用更加普遍,LR向多分類的擴展更加直接,對於類別不平衡SVM通常用權重解決,即目標函數中對正負樣本代價函數不一樣,LR能夠用通常的方法,也能夠直接對最後結果調整(經過閾值),通常小數據下樣本維度比較高的時候SVM效果要更優一些。

·          GBDT 隨機森林的區別?

隨機森林採用的是bagging的思想,bagging又稱爲bootstrap aggreagation,經過在訓練樣本集中進行有放回的採樣獲得多個採樣集,基於每一個採樣集訓練出一個基學習器,再將基學習器結合。隨機森林在對決策樹進行bagging的基礎上,在決策樹的訓練過程當中引入了隨機屬性選擇。傳統決策樹在選擇劃分屬性的時候是在當前節點屬性集合中選擇最優屬性,而隨機森林則是對結點先隨機選擇包含k個屬性的子集,再選擇最有屬性,k做爲一個參數控制了隨機性的引入程度。

另外,GBDT訓練是基於Boosting思想,每一迭代中根據錯誤更新樣本權重,所以是串行生成的序列化方法,而隨機森林是bagging的思想,所以是並行化方法。

·          如何判斷函數凸或非凸?什麼是凸優化?

首先定義凸集,若是x,y屬於某個集合C,而且全部的也屬於c,那麼c爲一個凸集,進一步,若是一個函數其定義域是凸集,而且

          

則該函數爲凸函數。上述條件還能推出更通常的結果,

          

若是函數有二階導數,那麼若是函數二階導數爲正,或者對於多元函數,Hessian矩陣半正定則爲凸函數。

(也可能引到SVM,或者凸函數局部最優也是全局最優的證實,或者上述公式指望狀況下的Jessen不等式)

·          如何解決類別不平衡問題?

有些狀況下訓練集中的樣本分佈很不平衡,例如在腫瘤檢測等問題中,正樣本的個數每每很是的少。從線性分類器的角度,在用對新樣本進行分類的時候,事實上在用預測出的y值和一個y值進行比較,例如經常在y>0.5的時候判爲正例,不然判爲反例。概率反映了正例可能性和反例可能性的比值,閾值0.5剛好代表分類器認爲正反的可能性相同。在樣本不均衡的狀況下,應該是分類器的預測概率高於觀測概率就判斷爲正例,所以應該是時預測爲正例,這種策略稱爲rebalancing。可是訓練集並不必定是真實樣本整體的無偏採樣,一般有三種作法,一種是對訓練集的負樣本進行欠採樣,第二種是對正例進行升採樣,第三種是直接基於原始訓練集進行學習,在預測的時候再改變閾值,稱爲閾值移動。注意過採樣通常經過對訓練集的正例進行插值產生額外的正例,而欠採樣將反例劃分爲不一樣的集合供不一樣的學習器使用。

·          解釋對偶的概念。

一個優化問題能夠從兩個角度進行考察,一個是primal 問題,一個是dual 問題,就是對偶問題,通常狀況下對偶問題給出主問題最優值的下界,在強對偶性成立的狀況下由對偶問題能夠獲得主問題的最優下界,對偶問題是凸優化問題,能夠進行較好的求解,SVM中就是將primal問題轉換爲dual問題進行求解,從而進一步引入核函數的思想。

·          如何進行特徵選擇?

特徵選擇是一個重要的數據預處理過程,主要有兩個緣由,首先在現實任務中咱們會遇到維數災難的問題(樣本密度很是稀疏),若能從中選擇一部分特徵,那麼這個問題能大大緩解,另外就是去除不相關特徵會下降學習任務的難度,增長模型的泛化能力。冗餘特徵指該特徵包含的信息能夠從其餘特徵中推演出來,可是這並不表明該冗餘特徵必定沒有做用,例如在欠擬合的狀況下也能夠用過加入冗餘特徵,增長簡單模型的複雜度。

在理論上若是沒有任何領域知識做爲先驗假設那麼只能遍歷全部可能的子集。可是這顯然是不可能的,由於須要遍歷的數量是組合爆炸的。通常咱們分爲子集搜索和子集評價兩個過程,子集搜索通常採用貪心算法,每一輪從候選特徵中添加或者刪除,分別成爲前向和後先搜索。或者二者結合的雙向搜索。子集評價通常採用信息增益,對於連續數據每每排序以後選擇中點做爲分割點。

常見的特徵選擇方式有過濾式,包裹式和嵌入式,filter,wrapperembeddingFilter類型先對數據集進行特徵選擇,再訓練學習器。Wrapper直接把最終學習器的性能做爲特徵子集的評價準則,通常經過不斷候選子集,而後利用cross-validation過程更新候選特徵,一般計算量比較大。嵌入式特徵選擇將特徵選擇過程和訓練過程融爲了一體,在訓練過程當中自動進行了特徵選擇,例如L1正則化更易於得到稀疏解,而L2正則化更不容易過擬合。L1正則化能夠經過PGD,近端梯度降低進行求解。

·          爲何會產生過擬合,有哪些方法能夠預防或克服過擬合?

通常在機器學習中,將學習器在訓練集上的偏差稱爲訓練偏差或者經驗偏差,在新樣本上的偏差稱爲泛化偏差。顯然咱們但願獲得泛化偏差小的學習器,可是咱們事先並不知道新樣本,所以實際上每每努力使經驗偏差最小化。然而,當學習器將訓練樣本學的太好的時候,每每可能把訓練樣本自身的特色當作了潛在樣本具備的通常性質。這樣就會致使泛化性能降低,稱之爲過擬合,相反,欠擬合通常指對訓練樣本的通常性質還沒有學習好,在訓練集上仍然有較大的偏差。

欠擬合:通常來講欠擬合更容易解決一些,例如增長模型的複雜度,增長決策樹中的分支,增長神經網絡中的訓練次數等等。

過擬合:通常認爲過擬合是沒法完全避免的,由於機器學習面臨的問題通常是np-hard,可是一個有效的解必定要在多項式內能夠工做,因此會犧牲一些泛化能力。過擬合的解決方案通常有增長樣本數量,對樣本進行降維,下降模型複雜度,利用先驗知識(L1,L2正則化),利用cross-validationearly stopping等等。

·          什麼是誤差與方差?

泛化偏差能夠分解成誤差的平方加上方差加上噪聲。誤差度量了學習算法的指望預測和真實結果的偏離程度,刻畫了學習算法自己的擬合能力,方差度量了一樣大小的訓練集的變更所致使的學習性能的變化,刻畫了數據擾動所形成的影響,噪聲表達了當前任務上任何學習算法所能達到的指望泛化偏差下界,刻畫了問題自己的難度。誤差和方差通常稱爲biasvariance,通常訓練程度越強,誤差越小,方差越大,泛化偏差通常在中間有一個最小值,若是誤差較大,方差較小,此時通常稱爲欠擬合,而誤差較小,方差較大稱爲過擬合。

誤差:

方差:

·          神經網絡的原理,如何進行訓練?

神經網絡自發展以來已是一個很是龐大的學科,通常而言認爲神經網絡是由單個的神經元和不一樣神經元之間的鏈接構成,不夠的結構構成不一樣的神經網絡。最多見的神經網絡通常稱爲多層前饋神經網絡,除了輸入和輸出層,中間隱藏層的個數被稱爲神經網絡的層數。BP算法是訓練神經網絡中最著名的算法,其本質是梯度降低和鏈式法則。

·          介紹卷積神經網絡,和 DBN 有什麼區別?

卷積神經網絡的特色是卷積核,CNN中使用了權共享,經過不斷的上採用和卷積獲得不一樣的特徵表示,採樣層又稱爲pooling層,基於局部相關性原理進行亞採樣,在減小數據量的同時保持有用的信息。DBN是深度信念網絡,每一層是一個RBM,整個網絡能夠視爲RBM堆疊獲得,一般使用無監督逐層訓練,從第一層開始,每一層利用上一層的輸入進行訓練,等各層訓練結束以後再利用BP算法對整個網絡進行訓練。

·          採用 EM 算法求解的模型有哪些,爲何不用牛頓法或梯度降低法?

EM算法求解的模型通常有GMM或者協同過濾,k-means其實也屬於EMEM算法必定會收斂,可是可能收斂到局部最優。因爲求和的項數將隨着隱變量的數目指數上升,會給梯度計算帶來麻煩。

·          EM 算法推導解釋 Kmeans

k-means算法是高斯混合聚類在混合成分方差相等,且每一個樣本僅指派一個混合成分時候的特例。注意k-means在運行以前須要進行歸一化處理,否則可能會由於樣本在某些維度上過大致使距離計算失效。k-means中每一個樣本所屬的類就能夠當作是一個隱變量,在E步中,咱們固定每一個類的中心,經過對每個樣本選擇最近的類優化目標函數,在M步,從新更新每一個類的中心點,該步驟能夠經過對目標函數求導實現,最終可得新的類中心就是類中樣本的均值。

·          用過哪些聚類算法,解釋密度聚類算法。

k-means算法,聚類性能的度量通常分爲兩類,一類是聚類結果與某個參考模型比較(外部指標),另外是直接考察聚類結果(內部指標)。後者一般有DB指數和DIDB指數是對每一個類,找出類內平均距離/類間中心距離最大的類,而後計算上述值,並對全部的類求和,越小越好。相似k-means的算法僅在類中數據構成簇的狀況下表現較好,密度聚類算法從樣本密度的角度考察樣本之間的可鏈接性,並基於可鏈接樣本不斷擴展聚類蔟獲得最終結果。DBSCAN(density-based spatial clustering of applications with noise)是一種著名的密度聚類算法,基於一組鄰域參數進行刻畫,包括鄰域,核心對象(鄰域內至少包含個對象),密度直達(ji密度直達,表示ji的鄰域內,且i是一個核心對象),密度可達(ji密度可達,存在樣本序列使得每一對都密度直達),密度相連(xi,xj存在k,i,j均有k可達),先找出樣本中全部的核心對象,而後以任一核心對象做爲出發點,找出由其密度可達的樣本生成聚類蔟,直到全部核心對象被訪問過爲止。

·          聚類算法中的距離度量有哪些?

聚類算法中的距離度量通常用閩科夫斯基距離,在p取不一樣的值下對應不一樣的距離,例如p=1的時候對應曼哈頓距離,p=2的狀況下對應歐式距離,p=inf的狀況下變爲切比雪夫距離,還有jaccard距離,冪距離(閩科夫斯基的更通常形式),餘弦類似度,加權的距離,馬氏距離(相似加權)做爲距離度量須要知足非負性,同一性,對稱性和直遞性,閩科夫斯基在p>=1的時候知足讀來那個性質,對於一些離散屬性例如{飛機,火車,輪船}則不能直接在屬性值上計算距離,這些稱爲無序屬性,能夠用VDM(Value Diffrence Metrix),屬性u上兩個離散值a,b之間的VDM距離定義爲

            

其中表示在第i個簇中屬性ua的樣本數,樣本空間中不一樣屬性的重要性不一樣的時候能夠採用加權距離,通常若是認爲全部屬性重要性相同則要對特徵進行歸一化。通常來講距離須要的是類似性度量,距離越大,類似度越小,用於類似性度量的距離未必必定要知足距離度量的全部性質,例如直遞性。好比人馬和人,人馬和馬的距離較近,而後人和馬的距離可能就很遠。

·          解釋貝葉斯公式和樸素貝葉斯分類。

貝葉斯公式,,最小化分類錯誤的貝葉斯最優分類器等價於最大化後驗機率。

基於貝葉斯公式來估計後驗機率的主要困難在於,條件機率是全部屬性上的聯合機率,難以從有限的訓練樣本直接估計獲得。樸素貝葉斯分類器採用了屬性條件獨立性假設,對於已知的類別,假設全部屬性相互獨立。這樣,樸素貝葉斯分類則定義爲

           

若是有足夠多的獨立同分布樣本,那麼能夠根據每一個類中的樣本數量直接估計出來。在離散狀況下先驗機率能夠利用樣本數量估計或者離散狀況下根據假設的機率密度函數進行最大似然估計。樸素貝葉斯能夠用於同時包含連續變量和離散變量的狀況。若是直接基於出現的次數進行估計,會出現一項爲0而乘積爲0的狀況,因此通常會用一些平滑的方法,例如拉普拉斯修正,

           

這樣既能夠保證機率的歸一化,同時還能避免上述出現的現象。

·          L1L2正則化的做用,解釋。

L1正則化是在代價函數後面加上L2正則化是在代價函數後面增長了,二者都起到必定的過擬合做用,二者都對應必定的先驗知識,L1對應拉普拉斯分佈,L2對應高斯分佈,L1偏向於參數稀疏性,L2偏向於參數分佈較爲稠密。

  • TF-IDF是什麼?

  TF指Term frequecy,表明詞頻,IDF表明inverse document frequency,叫作逆文檔頻率,這個算法能夠用來提取文檔的關鍵詞,首先通常認爲在文章中出現次數較多的詞是關鍵詞,詞頻就表明了這一項,然而有些詞是停用詞,例如的,是,有這種大量出現的詞,首先須要進行過濾,好比過濾以後再統計詞頻出現了中國,蜜蜂,養殖且三個詞的詞頻幾乎一致,可是中國這個詞出如今其餘文章的機率比其餘兩個詞要高很多,所以咱們應該認爲後兩個詞更能表現文章的主題,IDF就表明了這樣的信息,計算該值須要一個語料庫,若是一個詞在語料庫中出現的機率越小,那麼該詞的IDF應該越大,通常來講TF計算公式爲(某個詞在文章中出現次數/文章的總詞數),這樣消除長文章中詞出現次數多的影響,IDF計算公式爲log(語料庫文章總數/(包含該詞的文章數)+1)。將二者乘乘起來就獲得了詞的TF-IDF。傳統的TF-IDF對詞出現的位置沒有進行考慮,能夠針對不一樣位置賦予不一樣的權重進行修正,注意這些修正之因此是有效的,正是由於人觀測過了大量的信息,所以建議了一個先驗估計,人將這個先驗估計融合到了算法裏面,因此使算法更加的有效。

  • 文本中的餘弦距離是什麼,有哪些做用?

  餘弦距離是兩個向量的距離的一種度量方式,其值在-1~1之間,若是爲1表示兩個向量同相,0表示兩個向量正交,-1表示兩個向量反向。使用TF-IDF和餘弦距離能夠尋找內容類似的文章,例如首先用TF-IDF找出兩篇文章的關鍵詞,而後每一個文章分別取出k個關鍵詞(10-20個),統計這些關鍵詞的詞頻,生成兩篇文章的詞頻向量,而後用餘弦距離計算其類似度。

  參考資料

  1.面試經驗分享之機器學習、大數據問題(本文中大部分問題就是這篇文章中的基礎部分的問題)

  2.統計學習方法(李航)

  3.機器學習(周志華)

  4.TF-IDF與與餘弦類似性的應用(阮一峯的網絡日誌)

  http://www.ruanyifeng.com/blog/2013/03/tf-idf.html

相關文章
相關標籤/搜索