機器學習算法崗面試與提問總結


一.寫在前面

一個完整的機器學習工程師的面試過程主要有以下這些環節:自我介紹、項目介紹、算法推導和解釋、數據結構與算法題(寫代碼)。

關於自我介紹,主要就是簡單介紹下自己的教育背景,在校期間的研究方向和所做的項目以及在項目中所充當的角色等等,為之后的面試做個鋪墊,讓面試官從中捕捉點來問。

項目介紹是最為重要的,這也是體現你綜合實力的地方,對項目背景、項目實現的方案,項目所實現的東西都要了如指掌,做機器學習的,必然需要准備一到兩個重點的機器學習項目,可以是比賽,也可以是實驗室項目,關鍵是項目中間的技術細節都要了如指掌,比如你用了樹模型,就得知道所有樹模型相關的推導和原理,決不能含糊,一旦你說不太清楚,面試官就會對項目的真實性存疑。參加比賽應該是沒有實驗室項目的同學最佳的積累經驗的途徑,比較好的比賽平台有Kaggle、天池大數據、datacastle等

接下來就是機器學習算法原理和推導,這也是要重點去准備的,在面試前得達到,給你一張白紙,你可以把推導的每一步寫的清清楚楚的,推導的話面試常考邏輯回歸和SVM的推導,關於原理面試官常會問你幾個樹模型之間的對比等等等,其他的算法比如LR、SVM、EM、Adaboost、PageRank、 FFM、決策樹,隨機森林, GBDT , XGBoost 、推薦算法、聚類、CNN、RNN、LSTM、Word2Vec等等,以及他們的適用場景,再如一些機器學習的理論,非平衡問題、過擬合問題,交叉驗證問題,模型選擇問題,模型融合問題。

最后就是寫代碼了,很多非計算機出身的大都會栽在這個地方,代碼寫得少,訓練不到位,就會導致當場思路不清晰,不知從哪寫起,但目前市面上已經有很多專門為這塊總結的一些書籍,推薦使用《劍指offer》、《王道程序員求職寶典》等等,有時間的話再刷一下leetcode。排序算法、查找算法、二叉樹遍歷這些最基本的一定要很順溜的寫下來,其他的就看自己去拓展了。

二.問題總結

1.SVM

(1)簡單介紹SVM(詳細原理)

(2)SVM的推導,解釋原問題和對偶問題,SVM原問題和對偶問題的關系,KKT限制條件,KKT條件用哪些,完整描述;軟間隔問題,解釋支持向量、核函數(哪個地方引入、畫圖解釋高維映射,高斯核可以升到多少維,如何選擇核函數),引入拉格朗日的優化方法的原因,最大的特點,損失函數解釋。

(3)SVM與LR最大區別,LR和SVM對於outlier的敏感程度分析

(4)為什么要把原問題轉換為對偶問題?因為原問題是凸二次規划問題,轉換為對偶問題更加高效。為什么求解對偶問題更加高效?因為只用求解alpha系數,而alpha系數只有支持向量才非0,其他全部為0

(5)如何解決多分類問題、可以做回歸嗎,怎么做?

(6)機器學習有很多關於核函數的說法,核函數的定義和作用是什么?核函數和映射沒有關系,核函數就是內積。核函數只是用來計算映射到高維空間之后的內積的一種簡便方法。核函數的作用就是隱含着一個從低維空間到高維空間的映射,而這個映射可以把低維空間中線性不可分的兩類點變成線性可分的。

2.樹模型

(1)rf , gbdt 的區別; gbdt , xgboost 的區別(爛大街的問題最好從底層原理去分析回答)

(2)介紹決策樹

https://blog.csdn.net/zuolixiangfisher/article/details/89357557

(3)決策樹算法中缺失值怎么處理?

https://blog.csdn.net/u012328159/article/details/79413610

(4)決策樹處理連續值的方法?     (二分法切分點)

https://blog.csdn.net/u012328159/article/details/79396893

(5)解釋下隨機森林和gbdt的區別。gbdt的boosting體現在哪里。解釋下隨機森林節點的分裂策略,以及它和gbdt做分類有什么區別?哪個效果更好些?為什么?哪個更容易過擬合?為什么? 隨機森林的損失函數,和lr的優缺點對比, adaboost和隨機森林的比較,為了防止隨機森林過擬合可以怎么做

(6)SVM與隨機森林比較

 (a)不需要調節過多的參數,因為隨機森林只需要調節樹的數量,而且樹的數量一般是越多越好,而其他機器學習算法,比如SVM,有非常多超參數需要調整,如選擇最合適的核函數,正則懲罰等。

 (b)分類較為簡單、直接。隨機森林和支持向量機都是非參數模型(復雜度隨着訓練模型樣本的增加而增大)。相較於一般線性模型,就計算消耗來看,訓練非參數模型因此更為耗時耗力。分類樹越多,需要更耗時來構建隨機森林模型。同樣,我們訓練出來的支持向量機有很多支持向量,最壞情況為,我們訓練集有多少實例,就有多少支持向量。雖然,我們可以使用多類支持向量機,但傳統多類分類問題的執行一般是one-vs-all(所謂one-vs-all 就是將binary分類的方法應用到多類分類中。比如我想分成K類,那么就將其中一類作為positive),因此我們還是需要為每個類訓練一個支持向量機。相反,決策樹與隨機森林則可以毫無壓力解決多類問題。

 (c)比較容易入手實踐。隨機森林在訓練模型上要更為簡單。你很容易可以得到一個又好且具魯棒性的模型。隨機森林模型的復雜度與訓練樣本和樹成正比。支持向量機則需要我們在調參方面做些工作,除此之外,計算成本會隨着類增加呈線性增長。

 (d)小數據上,SVM優異,而隨機森林對數據需求較大。就經驗來說,我更願意認為支持向量機在存在較少極值的小數據集上具有優勢。隨機森林則需要更多數據但一般可以得到非常好的且具有魯棒性的模型。

(7)改變隨機森林的訓練樣本數據量,是否會影響到隨機森林學習到的模型的復雜度

       默認參數下模型復雜度是:O(MNlog(N)) , 其中 M 是樹的數目, N 是樣本數。

(8)RF 與 GBDT 區別,原理優缺點適用場景分析,哪個具備交叉驗證功能等

3.K-means

(1)k-means 聚類的原理以及缺點及對應的改進

(2)em 與 kmeans 的關系

(3)說說 Kmeans 算法, Kmeans 算法 K 怎么設置、適用什么樣數據集、怎么評價 Kmeans 聚類結果

(4)如何優化kmeans算法

4.貝葉斯

https://mp.weixin.qq.com/s?__biz=MzI5NDMzMjY1MA==&mid=2247484496&idx=1&sn=0b7f39979a43db19ad2ea752a63dcdba&scene=21#wechat_redirect

(1)朴素貝葉斯分類器原理以及公式,出現估計概率值為 0 怎么處理(拉普拉斯平滑),缺點

(2)貝葉斯分類,這是一類分類方法,主要代表是朴素貝葉斯,朴素貝葉斯的原理,重點在假設各個屬性類條件獨立。然后能根據貝葉斯公式具體推導。考察給你一個問題,如何利用朴素貝葉斯分類去分類,比如:給你一個人的特征,判斷是男是女,比如身高,體重,頭發長度等特征的的數據,那么你要能推到這個過程。給出最后的分類器公式。

(3)說說貝葉斯怎么分類啊?比如說看看今天天氣怎么樣?利用天氣的歷史數據,可以知道天氣類型的先驗分布,以及每種類型下特征數據(比如天氣數據的特征:溫度啊,濕度啊)的條件分布,這樣我們根據貝葉斯公式就能求得天氣類型的后驗分布了。

(4)貝葉斯分類器的優化和特殊情況的處理

5.機器學習理論

(1)機器學習中常用的損失函數有哪些?交叉熵有什么好處?(凸優化問題)

(2)判別模型與生成模型的本質區別是什么

https://mp.weixin.qq.com/s?__biz=MzI5NDMzMjY1MA==&mid=2247484941&idx=1&sn=fef53ebbac8ab52015328ef60ff4884d&scene=21#wechat_redirect

(3)分類模型和回歸模型的區別,分類模型可以做回歸分析嗎?反過來可以嗎?

https://blog.csdn.net/laobai1015/article/details/83059178

(4)k折交叉驗證 中k取值多少有什么關系 ?(知乎上有個問題討論了k值大小與bias和variance的關系)

(5)特征選擇方法有哪些?

方差選擇法、相關系數法、互信息法

(6)線性分類器與非線性分類器的區別及優劣?

如果模型是參數的線性函數,並且存在線性分類面,那么就是線性分類器,否則不是。SVM兩種都有(看線性核還是高斯核)。

線性分類器可解釋性好,計算復雜度較低,不足之處是模型的擬合效果相對弱些。常見的線性分類器有:LR,貝葉斯分類,單層感知機、線性回歸

非線性分類器效果擬合能力較強,不足之處是數據量不足容易過擬合、計算復雜度高、可解釋性不好。常見的非線性分類器:決策樹、RF、GBDT、多層感知機

SVM兩種都有(看線性核還是高斯核)

(7)特征比數據量還大時,選擇什么樣的分類器(線性or非線性)?

先思考為啥要用非線性?就是為了將低緯度數據映射到高維空間使其線性可分。現在已經是高緯度了當然選擇線性分類器。

(8)如何解決過擬合問題?L1和L2正則的區別,如何選擇L1和L2正則?

https://www.cnblogs.com/USTC-ZCC/p/10123610.html

(8)哪些機器學習算法不需要做歸一化處理?

答:在實際應用中,通過梯度下降法求解的模型一般都是需要歸一化的,比如線性回歸、logistic回歸、KNN、SVM、神經網絡等模型。但樹形模型不需要歸一化,如決策樹、隨機森林(Random Forest)。它們不關心變量的值,而是關心變量的分布和變量之間的條件概率,因為數值縮放不影響分裂點位置,對樹模型的結構不造成影響。

 

未完待續!!!

參考知乎:https://zhuanlan.zhihu.com/p/58434325


免責聲明!

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



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