總結:算法工程師面試史上出現過的10大經典面試題(含答案)

前言

最近好久都沒有發技術了,今天給大家分享10個算法工程師基本上都要學習的10個比較基礎但是很經典的面試題。還有上次有老鐵私信我抽書多久發的事情,這個我在8月24日已經寄出去了,再稍等一下,我長這麼大答應的事情沒有掉鏈子的。

總結:算法工程師面試史上出現過的10大經典面試題(含答案)

十個經典面試題

1、你會在時間序列數據集上使用什麼交叉驗證技術?是用k倍或LOOCV?

都不是。對於時間序列問題,k倍可能會很麻煩,因為第4年或第5年的一些模式有可能跟第3年的不同,而對數據集的重複採樣會將分離這些趨勢,而我們最終可能只是需要對過去幾年的進行驗證,這就不能用這種方法了。相反,我們可以採用如下所示的5倍正向鏈接策略:

fold 1 : training [1], test [2]

fold 2 : training [1 2], test [3]

fold 3 : training [1 2 3], test [4]

fold 4 : training [1 2 3 4], test [5]

fold 5 : training [1 2 3 4 5], test [6]

1,2,3,4,5,6代表的是年份。


2、你有1000列和1百萬行的訓練數據集,這個數據集是基於分類問題的。要求你來降低該數據集的維度以減少模型計算時間,但你的機器內存有限。你會怎麼做?(你可以自由做各種實際操作假設。)

你的面試官應該非常瞭解很難在有限的內存上處理高維的數據。以下是你可以使用的處理方法:

  1. 由於我們的RAM很小,首先要關閉機器上正在運行的其他程序,包括網頁瀏覽器等,以確保大部分內存可以使用。
  2. 我們可以隨機採樣數據集。這意味著,我們可以創建一個較小的數據集,比如有1000個變量和30萬行,然後做計算。
  3. 為了降低維度,我們可以把數值變量和分類變量分開,同時刪掉相關聯的變量。對於數值變量,我們將使用相關性分析;對於分類變量,我們可以用卡方檢驗。
  4. 另外,我們還可以使用PCA(主成分分析),並挑選可以解釋在數據集中有最大偏差的成分。
  5. 利用在線學習算法,如VowpalWabbit(在Python中可用)是一個不錯的選擇。
  6. 利用Stochastic GradientDescent(隨機梯度下降法)建立線性模型也很有幫助。
  7. 我們也可以用我們對業務的理解來估計各預測變量對響應變量的影響的大小。但是,這是一個主觀的方法,如果沒有找出有用的預測變量可能會導致信息的顯著丟失。


3、全球平均溫度的上升導致世界各地的海盜數量減少。這是否意味著海盜的數量減少引起氣候變化?

不能夠這樣說。這是一個“因果關係和相關性”的經典案例。全球平均溫度和海盜數量之間有可能有相關性,但基於這些信息,我們不能說因為全球平均氣溫的上升而導致了海盜的消失。我們不能斷定海盜的數量減少是引起氣候變化的原因,因為可能有其他因素(潛伏或混雜因素)影響了這一現象。

總結:算法工程師面試史上出現過的10大經典面試題(含答案)

4、給你一個數據集,這個數據集有缺失值,且這些缺失值分佈在離中值有1個標準偏差的範圍內。百分之多少的數據不會受到影響?為什麼?

約有32%的數據將不受缺失值的影響。因為,由於數據分佈在中位數附近,讓我們先假設這是一個正態分佈。我們知道,在一個正態分佈中,約有68%的數據位於跟平均數(或眾數、中位數)1個標準差範圍內,那麼剩下的約32%的數據是不受影響的。因此,約有32%的數據將不受缺失值的影響。


5、你意識到你的模型受到低偏差和高方差問題的困擾。那麼,應該使用哪種算法來解決問題呢?為什麼?

可以使用bagging算法(如隨機森林)。因為,低偏差意味著模型的預測值接近實際值,換句話說,該模型有足夠的靈活性,以模仿訓練數據的分佈。這樣貌似很好,但是別忘了,一個靈活的模型沒有泛化能力,意味著當這個模型用在對一個未曾見過的數據集進行測試的時候,它會令人很失望。在這種情況下,我們可以使用bagging算法(如隨機森林),以解決高方差問題。bagging算法把數據集分成重複隨機取樣形成的子集。然後,這些樣本利用單個學習算法生成一組模型。接著,利用投票(分類)或平均(迴歸)把模型預測結合在一起。另外,為了應對大方差,我們可以:

1.使用正則化技術,懲罰更高的模型係數,從而降低了模型的複雜性。2.使用可變重要性圖表中的前n個特徵。可以用於當一個算法在數據集中的所有變量裡很難尋找到有意義信號的時候。
總結:算法工程師面試史上出現過的10大經典面試題(含答案)

6、協方差和相關性有什麼區別?

相關性是協方差的標準化格式。協方差本身很難做比較。例如:如果我們計算工資($)和年齡(歲)的協方差,因為這兩個變量有不同的度量,所以我們會得到不能做比較的不同的協方差。為了解決這個問題,我們計算相關性來得到一個介於-1和1之間的值,就可以忽略它們各自不同的度量。

7、真陽性率和召回有什麼關係?寫出方程式。

真陽性率=召回。它們有相同的公式(TP / TP + FN)。


8、Gradient boosting算法(GBM)和隨機森林都是基於樹的算法,它們有什麼區別?

最根本的區別是,隨機森林算法使用bagging技術做出預測;而GBM是採用boosting技術做預測的。在bagging技術中,數據集用隨機採樣的方法被劃分成n個樣本。然後,使用單一的學習算法,在所有樣本上建模。接著利用投票或者求平均來組合所得到的預測。bagging是平行進行的,而boosting是在第一輪的預測之後,算法將分類出錯的預測加高權重,使得它們可以在後續一輪中得到校正。這種給予分類出錯的預測高權重的順序過程持續進行,一直到達到停止標準為止。隨機森林通過減少方差(主要方式)提高模型的精度。生成樹之間是不相關的,以把方差的減少最大化。在另一方面,GBM提高了精度,同時減少了模型的偏差和方差。

9:“買了這個的客戶,也買了......”亞馬遜的建議是哪種算法的結果?

這種推薦引擎的基本想法來自於協同過濾。協同過濾算法考慮用於推薦項目的“用戶行為”。它們利用的是其他用戶的購買行為和針對商品的交易歷史記錄、評分、選擇和購買信息。針對商品的其他用戶的行為和偏好用來推薦項目(商品)給新用戶。在這種情況下,項目(商品)的特徵是未知的。


10、我知道校正R2或者F值是用來評估線性迴歸模型的。那用什麼來評估邏輯迴歸模型?

我們可以使用下面的方法:

1.由於邏輯迴歸是用來預測概率的,我們可以用AUC-ROC曲線以及混淆矩陣來確定其性能。

2.此外,在邏輯迴歸中類似於校正R2的指標是AIC。AIC是對模型係數數量懲罰模型的擬合度量。因此,我們更偏愛有最小AIC的模型。

3.空偏差指的是隻有截距項的模型預測的響應。數值越低,模型越好。殘餘偏差表示由添加自變量的模型預測的響應。數值越低,模型越好。


分享到:


相關文章: