機器學習常見面試題—支持向量機SVM


前言

總結了2017年找實習時,在頭條、騰訊、小米、搜狐、阿里等公司常見的機器學習面試題。

支持向量機SVM

關於min和max交換位置滿足的 d* <= p* 的條件並不是KKT條件

Ans:這里並非是KKT條件,要讓等號成立需要滿足strong duality(強對偶),之后有學者在強對偶下提出了KKT條件。KKT條件成立需要滿足constraint qualifications,而constraint qualifications之一就是Slater條件——即:凸優化問題,如果存在一個點x,使得所有等式約束都成立(即取嚴格不等號,不包括等號),則滿足Slater條件。SVM中此處,滿足Slater條件,等號可以成立

核函數是從高維空間構造超平面,是否會帶來高維計算代價的問題?

Ans:並不會。在線性不可分的情況下,SVM首先在低維空間中完成計算,然后通過核函數將輸入空間映射到高維特征空間,最終在高緯度空間中構造出最優分離超平面。

高斯核函數在方差參數δ上選取有什么影響?

Ans:如果δ選的很大,高次特征上的權重會衰減的非常快,此時相當於一個低維度的子空間;如果δ選的很小,則可以將任意的數據映射為線性可煩,但可能帶來非常嚴重的過擬合問題。

核函數的本質是什么?

Ans:①解決線性不可分問題 ②在低維上先進行計算,將實質的分類效果在高維上呈現,巧妙地避免了高維計算復雜性的問題。

在目標函數中,拉格朗日的參數α的取值有什么特點?

image

Ans:對於遠離平面的點為0;在邊緣線的值在 [0, 1/N]之間;對於outlier數據的值為1/N

KNN

如何理解kNN中的k的取值?

Ans :①選取較小的k值時,相當於用較小的領域中的訓練實例進行預測,“學習”近似誤差會減小,只有與輸入實例很相近的樣本才會對預測結果起作用。但是,“學習”的估計誤差會增大,整體模型會變得復雜,容易過擬合
②選取較大的k值是,相當於用較大的領域中的訓練實例進行預測,可以減少學習的估計誤差,但是近似誤差會增大,因為離輸入實例較遠的樣本也對預測結果起作用,容易使預測發生錯誤。k過大導致模型變得簡單。
③在選取k上,一般取比較小的值,並采用交叉驗證法進行調優。

在kNN的樣本搜索中,如何進行高效的匹配查找?

Ans :①線性掃描(數據多時,效率低)
②構建數據索引——Clipping和Overlapping兩種。前者划分的空間沒有重疊,如k-d樹;后者划分的空間相互交疊,如R樹。

那什么是KD樹?怎么構建的?

Ans:kd樹是對數據點在k維空間中划分的一種數據結構,主要用於多維空間關鍵數據的搜索。本質上,kd樹就是一種平衡二叉樹。
思想:先對計算各個維度的方差,選取最大方差的維度作為候選划分維度(方差越大,表示此維度上數據越分散);對split維度上的值進行排序,選取中間的點為node-data;按照split維度的node-data對空間進行一次划分;對上述子空間遞歸以上操作,直到空間只包含一個數據點。分而治之,且循環選取坐標軸

能簡單介紹一下KD樹的查找,以及增、刪、改的實現流程嗎?

Ans:先二叉查找,找到候選最近點;沿着路徑進行回溯,畫圓,是否父節點平面交割,以判斷是否需要進入另一個平面進行查找;依次回溯,畫圓,尋找最近點。
KD樹更適合用於訓練實例數遠大於空間維數時的k近鄰搜索。當維數超過20維時,KD數的檢索效率急劇下降,幾乎接近貪婪的線性掃描。因此出現對KD樹的改進——BBF算法,M樹,VP樹,MVP樹等高維空間索引樹。

邏輯斯諦回歸

LR為什么可以用來做CTR預估?

Ans:若把點擊的樣本作為正例,未點擊的樣本作為負例,則樣本的CTR就是樣本為正例的概率,LR可以輸出樣本為正例的概率,故可以解決此類問題。此外,LR相對於其他模型,求解簡單,可解釋強,方便並行

LR相對於線性回歸有什么優勢?

Ans:LR本質上還是線性回歸,但多了最后一層sigmoid函數的非線性映射。正是這這種映射,解決了線性回歸在整個實數域內敏感度一致的缺點。在分類任務中,需要控制在[0,1]之間。邏輯回歸曲線在z=0處很敏感,在z>>0和z<<0處,都不敏感。

LR與最大熵模型MaxEnt有什么關系?

Ans本質上沒有區別。LR是最大熵對應類別為二類時的特殊情況,也就意味着,當邏輯回歸類別擴展到多分類時,就是最大熵模型。

LR和SVM的區別和聯系?

Ans:①LR和SVM都可以處理分類問題,且一般都用於處理線性二分類問題(改進后,可處理多分類)
②都可以增加不同的正則化項,如L1、L2,在很多實驗中,算法結果很相近。(區別:LR是參數模型,SVM是非參數模型)
③從目標函數上看,LR采用logisticcal loss;SVM采用Hinge Loss。兩個損失函數的目的都是增加對分類影響較大的數據點的權重,減少與分類關系較小的數據點的權重
④SVM僅考慮support vectors,去學習分類器。LR是通過非線性映射,大大減少了離分類平面較遠的點的權重,相對提升了與分類最相關的數據點的權重
⑤LR的模型更加單,好理解,可解釋性搶,適合並行。SVM的理解和優化比較復雜,但是可以支持核函數,進行高維映射。
LR能做的,SVM也能做,但可能在准確率上有問題;SVM能做的,LR有的做不了

概括一下LR的思想

Ans: 邏輯回歸假設數據服從伯努利分布,通過極大化似然函數的方法,運用梯度下降來求解參數,達到將數據二分類的目的。

朴素貝葉斯

怎么理解朴素貝葉斯中的“朴素”?

因為它假定所有的特征在數據集中的作用是獨立同分布的,但這個假設在現實生活中很不真實,因此很“朴素”。

網頁搜索中的拼寫檢查可以基於貝葉斯實現,你怎么理解?

P(c|w) = P(w|c) * P(c) / P(w) → P(w|c) * P(c)

P(c)表示正確詞出現的概率,P(w)拼寫錯誤的詞。對大文本進行P(c)和P(w|c)的統計,對當前拼寫錯誤詞w的所有候選正確詞ci,取最大的排序列表。

決策樹

請問(決策樹、隨機森林,Boosting、Adaboot)GBDT和XGBoost的區別是什么?

Ans:①首先,隨機森林是一個包含多個決策樹的分類器;AdaBoost——即Adaptive Boosting(自適應增強),經典的AdaBoost算法只能處理采用指數損失函數的二分類學習任務,對異常點outlier比較敏感;GBDT指梯度上升決策樹算法,相當於融合決策樹和梯度上升的Boosting算法。
②xgboost類似gbdt的優化版,在精度和效率上都有了提升,具體優點包括:1.損失函數是用泰勒展開式二項逼近,而非gbdt的一階導數;2.對樹的結構進行了正則化約束,防止模型過度復雜,降低過擬合的可能性;3.節點分裂的方式不同,gbdt用的gini系數,xgboost是經過優化推導后的。

為什么梯度提升方法傾向選擇決策樹 (通常是CART樹) 作為基學習器?

Ans:這與決策樹自身的優點有關系:①決策樹可以認為是if-then規則集合,易於理解,可解釋性強,預測速度快。②相對於其他算法更少的特征工程,如可以不用做特征標准化,可處理缺失值,不用關心特征之間是否相互依賴。③決策樹能自動組合多個特征,輕松處理特征之間的交互關系,並且是非參數化的,不必擔心異常值或是否線性可分。

在GBDT中,如何抑制單棵決策樹的過擬合問題?

Ans:剪枝、限制樹的最大深度,限制葉子節點的最少樣本數量、限制幾點分裂時的最少樣本數量,吸收bagging思想對訓練樣本采樣、在學習單棵決策樹時只使用一部分樣本、借鑒隨機森林的思路在學習時只采樣一部分特征、在目標函數中添加正則項。

為什么xgboost要用泰勒展開,優勢在哪里?

Ans:xgboost使用了一階和二階偏導,二階導數有利於梯度下降的更快更准,使用泰勒展開取得二階導數形式,可以再不選定損失函數具體形式的情況下,用於算法優化分析。本質上把損失函數的選取和模型算法優化/參數選擇分開了,這種去耦合增加了xgboost的適用性。

Xgboost如何尋找最優特征?是有放回的,還是無放回的?

Ans:xgboost在訓練的過程中,給出各個特征的評分,以表明每個特征對模型訓練的重要性。xgboost利用梯度優化模型算法,樣本是不放回的。但xgboost支持子采樣——即每輪計算可以不使用全部樣本。

ID3和C4.5有什么區別?

Ans:①ID3采用信息熵的增益作為切分依據,傾向於選取特征值較多的屬性進行划分;C4.5采用信息熵的增益比作為切分依據,對較少特征數目的屬性有所偏好。

7.請談一談決策樹剪枝有哪些方法?

Ans:剪枝的作用是為了防止決策樹過擬合,有兩種思路:預剪枝(Pre-Pruning)后剪枝(Post-Pruning)
①預剪枝——指在構造決策樹的同時進行剪枝。在創建分支的過程中,為了避免過擬合,可以設定一個閾值,熵減少小於閾值時,則停止繼續創建分支。實際效果並不好
②后剪枝——指在決策樹構建完成之后回溯,進行剪枝。對擁有相同父節點的一組節點進行檢查,判斷如果將其合並,熵增加量是否小於某一閾值?是,則合並為一個節點,其中包含了所有可能的結果。后剪枝是刪除一些子樹,然后用葉子節點代替。此葉子節點的類別通過多數原則確定——用子樹中大多數訓練樣本所屬的類別來標識。算法包括Reduced-Error Pruning、Pessimistic Error Pruning(悲觀剪枝)
③預剪枝可能產生欠擬合的風險,后剪枝由於需要先生成完整的樹,再自底向上進行剪枝,因此花費的時間要久的多。

8. 決策樹怎么處理連續值和缺失值?

Ans:①連續值處理——采用連續屬性離散化技術,最簡答的方法是采用二分法進行處理(C4.5采用的機制)。對特征值進行升序排序,取兩個特征值之間的中點作為可能的分裂點,以此離散化。
缺失值處理——包含兩個待解決的問題:1. 如何在屬性值缺失的情況下,進行划分屬性的選擇?顯然,僅課根據在各屬性上沒有缺失值的樣本來選擇。2.給定划分屬性,若樣本在該屬性上的值缺失,如何對樣本進行划分?若樣本x在屬性A上的取值已知,則將x划入與其取值對應的子節點,且樣本權重在子節點中保持為Wx;若樣本x在屬性A上取值未知,則將x划入所有子節點,且樣本權重與屬性值Av對應的子節點中,調整為Rv*Wx。直觀上,就是讓同一個樣本以不同的概率划入到不同的子節點去。

Adaboost的集成效果為什么會比單個學習器效果好?怎么最大化其優勢?

Ans:①首先介紹一下boost的理論依據。假設單個學習器的錯誤率為:
image

假設錯誤率相互獨立,由Hoeffding不等式可以得到整體學習器的錯誤率:
image

由不等式右邊可知:如果學習器的數目T逐漸增大,那么整個學習器的錯誤率將指數級下降,甚至最終趨向於0
最大化優勢的核心在於:如何生成准確性又不是很差,並能保證多樣性的個體學習器?(保證錯誤率假設成立)。兩種方式:Boosting——個體學習器間存在強依賴關系,必須串行生成;Bagging——個體之間不存在強依賴關系,並行生成(如 隨機森林)

正則化

L1范數和L2范數的區別是什么?

image

Ans:①L1范數——指向量中各個元素的絕對值之和,又叫“稀疏規則算子”(Lasso regularization)。它可以實現特征的自動選擇,一般,大部分特征xy沒有多大關系,在最小化目標函數時,考慮這些額外的特征雖然能減少訓練誤差,但是在預測新樣本時,會干擾模型對正確結果的預測。L1算子可以學習去掉這些沒有信息的特征,讓其對應的權重為0。
L2范數——在回歸里面,又稱“嶺回歸”(Ridge Regression),有時也被稱為“權值衰減”(weight decay)。它可以解決過擬合,使得w的每個元素都很小(接近0),但不會置為0.
③加入正則相當於加入了一種先驗L1相當於加入了Laplacean先驗;L2相當於加入了Gaussian先驗。

機器學習中,為何要常對數據進行歸一化?

1. 歸一化能夠提高梯度下降的最優解求解速度。

詳細參考斯坦福視頻:https://class.coursera.org/ml-003/lecture/21

image
如上圖所示,藍色線代表特征等高線,X1和X2的特征區間相差很大,當使用梯度下降法求解時,很可能走“之字型”路線(垂直等高線),從而需要迭代很多次才能收斂;
歸一化后,等高線顯得很圓,梯度下降能很快收斂。

2. 歸一化,有可能提高精度

一些分類器需要計算樣本之間的距離(如kNN中的歐式距離)。如果一個特征值范圍非常大,那么距離計算就主要取決於這個特征。

  • 線性歸一

x = x - min(x) / max(x) - min(x)

  • 標准化歸一

x = x - μ / σ

  • 非線性歸一化
    經常用在數據分化比較大的情況,如log2,log10

哪些機器學習算法不需要做歸一化

概率模型(或樹形模型),如決策樹,隨機森林

為什么樹形結構不需要歸一化?

數值縮放,不影響分裂點的位置。

因為第一步都是按照特征值進行排序,排序不變,所屬的分支和分裂點就不會不同。一般樹形結構不能進行梯度下降
因為樹模型是階躍的,階躍點不可導,所以樹模型尋找最優點是通過尋找最優分裂點完成的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM