「入門必讀」40個 機器學習/數據科學創業公司的面試問題

「入門必讀」40個 機器學習/數據科學創業公司的面試問題

本文提到的40個問題需三思而後答,它將直接檢驗你在機器學習/數據科學方面的基礎功。

目前看來,機器學習是下一次工業革命的驅動力。這意味著有許多創業公司正在尋找數據科學家。還有什麼比這個職位稱得上是一個更好的職業開端呢?

然而,成為數據科學家並非易事。顯然你需要為自己的想法、團隊和公司的夢想感到激動不已,你也需要知道在前路上需要解決的困難技術問題。你需要先詢問:這個創業公司做什麼,他們提供諮詢嗎?他們做機器學習產品嗎?在準備面試前找出這些問題的答案。

為幫助你準備下一次面試,我準備了也許會在面試中遇到的40個問題的列表,如果你能回答並理解這些問題,你會在面試中打一個漂亮仗。

注意:回答這些問題的關鍵是-對機器學習和相關統計概念有堅固紮實的理解

機器學習的面試問題

Q1:某訓練數據集擁有1000列和1百萬行,該數據集基於一個分類問題。你的經理要求你對數據集進行降維處理以減少計算時間。電腦也具有內存限制。你會怎麼做?你可以自由做出實際假設。

回答:在有限的內存中處理高維數據是一個費力的工作,你的面試官對此應該有深刻的認識。依照以下方式,你可以解決這個問題:

  1. 因為RAM比較小,電腦上其他應用程序應該關閉,包括瀏覽器,以便大多數內存可以得到應用。

  2. 隨機抽取一些數據集樣本,得到一個更小的數據集,例如,1000列和30萬行的大小,以此進行計算。

  3. 為了降維,數值變量和分類變量可以被分開,然後移除相關變量。對於數值變量,進行關聯性分析;對於分類變量,做卡方檢驗。

  4. 使用PCA,挑選可以解釋最大方差的成分。

  5. 使用在線學習算法,比如Vowpal Wabbit (在Python中可用)是一個可行的選項。

  6. 構造一個使用隨機梯度下降的線性模型也很有用。

  7. 利用商業理解去估計哪些預測器可以影響到因變量。但是這依賴於直覺,如果不能找到有用的預測器,能會造成信息的大量丟失。

Q2:在PCA中,轉置是必要的嗎?如果是,為什麼?如果你不轉置,會發生什麼?

回答:是的,轉置(正交)是必須的,因為可以最大化成分方差的差值,使得成分更容易解釋。PCA的目的就在於此:選擇更少的成分或者特徵來解釋數據集的最大方差。通過轉置,成分之間的相對位置不改變,只改變數據點的實際座標。

如果不轉置成分,PCA的效果減弱,我們需要選擇更多的成分來解釋數據集中的方差。

Q3:現有數據集,裡面有遺失數據,處於平均值左右1個標準差範圍。請問多少百分比數據未受影響,為什麼?

回答:本題提供了足夠的線索。數據圍繞著均值分佈。假設為正態分佈,在該分佈中,68%左右的數據分佈在1個標準差範圍內,其餘32%數據未受影響。所以32%的數據未受影響。

Q4:分析一個癌症檢測的數據集,你已經建立了分類模型,達到96%的精度,你為何對你的模型性能不滿意?你可以做什麼?

回答:如果已經處理了足夠的數據集,你應該能夠從非均衡數據中推論出癌症結果。在非均衡數據集中,精度不應該是性能的評判標準。因為96%可能僅僅是預測多數類的準確度,但我們感興趣的是少數類(4%),人們實際被確診為癌症的那部分類。因此,為了評估模型的性能,我們應該使用靈敏度(真正率)、特效度(真負率),F 指標來衡量分類器的分類性能。如果少數類效果被認為不好,我們可以採取以下措施:

  1. 使用欠採樣,過採樣或者SMOTE使數據均衡。

  2. 通過做可能性校準調整預測的臨界值,通過AUC-ROC曲線找到最優臨界值。

  3. 對類加權重所以少數類可以獲取更大的權重。

  4. 使用異常檢測。

Q5: 為什麼樸素貝葉斯這麼“簡單幼稚”?

回答:樸素貝葉斯這麼“幼稚”是因為假設所有數據集中的特徵都一樣重要且相互獨立。但在實際生活中假設不成立。

Q6:解釋樸素貝葉斯算法中的先驗概率,似然和邊際似然。

回答:先驗概率是數據集中相關變量(兩個之間)比率。這是不依靠其他信息,對類做出的最可能猜想,比如,在一個數據集中,相關數據是成對的(1或者0),1(垃圾郵件)的百分比是70%,0(不是垃圾郵件)的百分比是30%。因此,我們可以估算有70%概率新的郵件會被標記為垃圾郵件,這就是先驗概率。

似然是指在其他一些參數存在條件下,將給定觀察分類為1 的可能性。例如,似然是指單詞“Free”在垃圾郵件中被使用的概率。邊際似然是指單詞“Free”在任何郵件中被使用的概率。

Q7:處理一個時間序列數據,你的經理要求你構造一個高精度的模型。你從決策樹算法開始,因為它可以在多種數據上工作非常好。然後嘗試了一個時間序列迴歸算法,得到了比決策樹模型更高的精度。這可能嗎,為什麼?

回答:時間序列數據已知包含線性關係。從另一個方面來說,一個決策樹算法已知在檢測非線性關係上工作效果最好。決策樹不能提供穩定預測的原因是不能像迴歸模型那樣描述線性關係。因此我們知道:如果事先告知一個數據集滿足線性假設,那麼線性迴歸模型可以提供穩定的預測。

Q8: 目前你需要完成一個項目,幫助食品公司節省更多的資金。問題是食品公司的物流系統不能按時送到食物,因此使得顧客不滿意。為了提高滿意度,他們停止免費運輸食物,請問哪種算法可以幫助他們?

回答:你或許已經在腦海中默默瀏覽機器算法的列表,但請稍等,這些問題是來衡量你機器學習的基礎的。

這不是一個機器學習問題,這是一個常規的優化問題。一個機器學習算法包含三個要素:

  1. 該系統存在一個模式

  2. 你不能用數學解決它(即便使用指數方程)。

  3. 你擁有相關的數據

在考慮機器學習是否能夠解決問題的時候,確定這三個因素。

Q9:你的模型擁有低偏差但高方差,應該用什麼算法解決這一問題?

回答:低偏差是指模型預測值與實際值相近。換句話說,模型擁有足夠的彈性來模擬訓練數據分佈。當這聽起來似乎很成功時,請不要忘記,一個彈性的模型沒有泛化性。這意味著當這個模型在未知數據上測試時,結果令人失望。

在這樣的情況下,我們利用Bagging 算法(例如隨機森林)來處理高方差問題。Bagging算法利用放回隨機抽樣將數據集分為多個子集,這些樣例使用學習算法生成一系列模型。模型使用投票(分類)或平均(迴歸)用於組合預測。

同樣,為了與高方差做鬥爭,我們可以:

  1. 使用正則化技術,較高模型係數被懲罰,降低模型複雜度。

  2. 使用變量重要性圖表中前n個特徵。也許使用數據集中的所有變量,算法很難識別出有意義的信號。

Q10:一個數據集包含很多變量,其中一些高度相關。你的經理讓你做PCA,你會先移除關聯的變量嗎,為什麼?

回答:或許,你會說NO。但是那可能不正確。移除關聯變量對PCA有一個重大的影響,由於關聯變量的存在,由某個成分解釋的方差會膨脹。

例如,數據集中有3個變量,其中2個之間是相關的。如果你使用PCA,相比較於不相關變量,主要成分之間會顯示2倍方差。同樣,相關變量的相加讓PCA對於相關變量更加重視,這具有誤導性。

Q11: 經過幾個小時的工作,你非常希望得到一個高精度的模型。目前你已構造5個GBM模型,認為Boosting算法可以達到效果,但是沒有一個模型可以比基準指標高。因此你決定組合這些模型,雖然組合模型被認為可以得到高精確度,但是你又失敗了,你忘記了什麼?

回答:組合學習模型的基本思想為組合低質量學習模型來構造高質量學習模型。但這些學習模型可以產生更好的結果是因為各個模型不相關。因為我們使用的5個GBM模型,沒有任何精度的改進,意味著模型之間是相關的。對於相關的模型來說,所有的模型提供相同的信息。

例如,如果模型1將User1122分類為1,有很大機率模型2和3也這樣做,即便真實值是1。因此,組合學習模型是建立在組合不相關的模型以獲得更好的預測前提下的。

Q12: kNN為什麼與kmeans 聚類不一樣?

回答:不要被命名中的’k’所迷惑。這兩個算法的基本差異:kmeans本質上是無監督的,kNN本質上是有監督的。kmeans是一個聚類算法,kNN是一個分類或者回歸算法。

kmeans算法分割一個數據集為不同類,每個類由相同性質數據構成,數據點緊密相鄰。該算法嘗試在不同類之間創造足夠的分割性。因為無監督本質,類沒有標記。

kNN算法嘗試基於k個(可以是任何數值)相鄰數據分類沒有標記的觀察。這也是個很懶惰的模型因為涉及的模型訓練最少。因此,該算法不通過訓練數據來獲取未知數據的泛化模型。

Q13: 真正率 和 召回率 如何相關?寫出公式。

回答:真正率 = 召回率。兩個定義公式都是:

「入門必讀」40個 機器學習/數據科學創業公司的面試問題

Q14: 一個多重回歸模型,模型確定係數並不如你想的那樣好,為了改進,你移除了截距項,模型的確定係數從0.3變為0.8,這可能嗎,為什麼?

回答:有可能。我們需要理解在迴歸模型中截距項的重要性。截距項表明了不依賴任何獨立變量下的模型預測即平均預測。公式:

「入門必讀」40個 機器學習/數據科學創業公司的面試問題

當截距項存在,確定係數的數值評估模型相比較於平均模型的差距。當截距項不存在,確定係數不存在,模型不能做出這樣的判斷。因為分母變大,確定係數值就變大。

Q15: 在分析模型後,你的主管認為模型存在多重共線性,如何證明他是對的?在不損失任何信息的條件下,可以構造一個更好的模型嗎?

回答:為檢查多重共線性,我們可以構造一個相關係數矩陣來檢驗,然後移除含有75%以上相關性的變量(需設置一個主觀的閾值)。另外,可以通過計算VIF(方差膨脹因子)來檢測多重共線性的存在。VIF值<=4 意味著沒有多重共線性,VIF>=10暗示嚴重的多重共線性。同樣,我們可以使用公差作為多重共線性的指標。

但是,移除相關聯的變量可能會丟失信息。為了保留這些變量,我們可以使用懲罰迴歸模型比如嶺迴歸或者Lasso迴歸。同樣地,我們可以將一些隨機噪音添加到相關變量中因此兩個變量變得不一樣,但添加噪音可能會降低預測精確度,這個方法必須被謹慎使用。

Q16:為什麼嶺迴歸比Lasso迴歸更加好用?

回答:引用ISLR的作者 Hastie,Tibshirani所宣稱的:在少數幾個變量有大型或者中型影響的情況下,使用Lasso迴歸。在很多變量有小型或者中型的影響時,使用嶺迴歸。

概念上,Lasso迴歸(L1)會挑選變量,收縮參數;而嶺迴歸只做參數收縮,結果包含模型中的所有係數。當相關變量存在時,嶺迴歸也許是更好的模型,同樣地,嶺迴歸在最小二乘估計擁有更大方差時工作得最好。

因此,選用哪個迴歸算法,取決於模型的目標。

Q17: 全球氣候問題的上升導致了全球海盜數量的下降,這是否意味著海盜數量的下降導致了溫度的改變?

回答:這是一個典型的“因果關係和相關性”的問題。我們不能得出結論,海盜的減少導致了氣候的變化,因為這裡面可能有其他因素(潛在或者混淆的因素)影響這個現象。

因此,這裡可能存在全球平均氣溫和海盜數量的相關性,但是基於目前信息,我們不能說海盜死亡是因為全球氣溫升高。

Q18:你如何從數據集中挑選重要的變量,解釋你的方法?

回答:以下是可以使用的一些變量挑選的方法:

  1. 移除相關變量優先於挑選重要變量。

  2. 使用線性迴歸,基於p值挑選變量。

  3. 使用前向選擇,後向選擇和逐步選擇法。

  4. 使用隨機森林,Xgboost算法和繪製變量重要性圖。

  5. 使用Lasso迴歸。

  6. 衡量可使用特徵包含的信息,選擇最優的n個特徵。

Q19:在協方差和相關性的差別是什麼?

回答:相關性是協方差的標準化表達。

協方差難以比較,比如:計算工資和年齡的協方差,我們會得到難以比較的協方差,因為度量不同。為解決這個問題,我們計算相關性,得到分佈範圍-1和1之間的某個值,不需要考慮度量。

Q20:在連續和分類變量之間能獲取相關性嗎?如果可以,怎麼做?

回答:可以使用 ANCOVA(協方差分析)技術來提取絕對和分類變量的相關性。

Q21:都是基於樹算法,隨機森林(Random Forest)和GBM算法有什麼不一樣?

回答:基本差異在於,隨機森林算法使用Bagging技術做預測,GBM使用Boosting技術來做預測。

在Bagging算法中,數據集使用返回隨機抽樣被分為n個樣本集,然後使用學習算法在所有樣本上建立模型,得出的預測結果由投票或者平均機制組合。Bagging是平行進行的。

在Boosting算法中,在第一輪的預測之後,算法將未分類的預測權重加大,因此該預測可以在接下來的回合中被糾正。這種有序流程,不斷將未分類的預測權重加大直到觸發停止準則。

隨機森林(主要)通過降低方差改進模型的精確度,已生成樹不能幫助減少方差。GBM算法通過降低模型中的偏差和方差提高精確度。

Q22:使用二叉分類樹算法是很簡單的。你知道樹分裂怎樣發生,或樹是怎樣決策哪個變量在根部分裂,哪些變量在後繼節點分裂?

回答:分類樹在做決策時主要基於基尼係數和節點熵。簡而言之,樹算法會找到最可能的特徵,可以將數據集分到最純淨的子節點。

基尼係數表示:如果隨機從純淨群體中挑選2個樣本,他們同一個類的可能性為1。我們可如下計算基尼係數:

  • 為子節點計算基尼係數:使用公式為成功和失敗可能性的平方和

「入門必讀」40個 機器學習/數據科學創業公司的面試問題

  • 為分離計算基尼係數:使用分離的每個節點的加權基尼係數。

熵是對不純度的衡量,公式如下(對於二叉樹類型):

「入門必讀」40個 機器學習/數據科學創業公司的面試問題

p和q是該節點的成功和失敗的可能性。當一個節點是中性時,Entropy為0。當該節點的兩種可能性分別為50%-50%,該值最大。較小的Entropy是較好的。

Q23:使用10000個樹來建立隨機森林模型,你很滿意得到0.00的訓練誤差,但是驗證誤差為34.23,為什麼?你沒有很好地訓練你的模型嗎?

回答:模型過擬合。訓練誤差0.00意味著分類器模仿訓練數據模式到一定程度,而該模式在未知數據上不可用。因此當該分類器在未知數據上運行,不能找到對應模式,只能得到高誤差的預測。在隨機森林中,這往往因為使用超過必需數量的樹。為了避免這個問題,需要通過交叉驗證調整樹的數量。

Q24.目前數據集,p(變量數量)大於n (觀察樣本數量),為什麼OLS(普通最小二乘法)是一個不好的選擇,哪種方式會是比較好的?

回答:在高維數據集上,我們不能使用傳統迴歸方式,因為其假設是錯誤的。當p>n時,最小二次係數無法計算,方差是無限大。OLS不能被使用。

為了解決這個問題,我們可以使用懲罰迴歸方式比如:Lasso, LARS, 嶺迴歸,這些算法可以縮減參數,降低方差。更明確地,嶺迴歸在最小二乘估計有更高的方差的情況下工作最好。

其他的算法還包括子集迴歸和前向逐步迴歸。

Q25: 什麼是凸包(聯繫SVM考慮)?

回答:在線性分離數據中,凸包代表兩個數據點集外部邊界。一旦凸包被建立,我們可以得到最大間隔超平面(MMH),即兩個凸包的垂直平分線。MMH試圖創建兩個數據集中最大分離線。

Q26: 為什麼一位有效編碼增大數據集的維度,但是標籤編碼不會?

回答:不要被這個問題迷惑。這是個簡單的問題,考察兩個編碼方式的不同。

使用一位有效編碼,數據集維度(特徵)增加,因為編碼為分類變量的每個層次都建立一個新的變量。比如,有一個變量為顏色,這個變量有3個層次:紅色,藍色和綠色。一位有效編碼’Color’會生成三個新的變量,Color.red,Color.Blue和Color.Green,包含0和1值。

在標籤編碼中,分類變量選項被編碼為0和1,所以沒有新的變量生成。標籤編碼主要用於一位二進制變量。

Q27: 在時間序列數據集上使用交叉驗證方式可行嗎?k-fold或者LOOCV?

回答:都不行。

在時間序列問題中,K 折交叉驗證會有一些問題,因為在第4年或者第5年會存在一些模式而第3年不會。數據抽樣會分離這些趨勢,我們會止步於在過去年份的錯誤驗證。相反,我們可以使用正向推理策略,分為5折,如下所示:

  • fold 1 : 訓練集 [1], 測試集 [2]

  • fold 2 : 訓練集 [1 2], 測試集 [3]

  • fold 3 : 訓練集 [1 2 3], 測試集 [4]

  • fold 4 : 訓練集 [1 2 3 4], 測試集 [5]

  • fold 5 : 訓練集 [1 2 3 4 5], 測試集[6]

其中1,2,3,4,5代表年份。

Q28:數據集丟失了30%以上的數值,比如50個變量,8個變量的數值丟失了30%以上,你會如何處理?

回答:我們可以使用以下方法:

  1. 為丟失的數據設置一個新類別,丟失的數據也許能解釋一些趨勢;

  2. 移除他們

  3. 聯繫目標變量,細緻檢查這些數值分佈。如果發現任何模式,保留這些丟失的數值,賦予新的類別同時移除其他的數值。

Q29:“顧客購買了這個,也會購買另外一個……”作為亞馬遜上的推薦,是哪種算法的結果?

回答:這種推薦引擎的基本理念是協同過濾。

協同過濾算法將“用戶行為”作為推薦選項,分析其他用戶的行為和事件,包括交易歷史,排序,選擇和付款信息。其他用戶的行為和偏好在該項的表現被用於推薦給新的用戶。在這個例子中,該行為的特徵未知。

Q30:你如何理解類型1(type I) 和類型2(type II) 錯誤?

回答:類型1的錯誤:原假設為真,我們拒絕承認,也被稱為:假正;類型2錯誤:原假設為假,我們接受了,也被稱為:假負。

在混淆矩陣中,類型1的錯誤:將值分類為1,實際值為0;類型2錯誤:將數值分類為0,實際值為1。

Q31:處理一個分類問題,為了驗證,隨機抽樣訓練數據進行訓練和驗證。你很自信自己的模型能在未訓練數據上工作非常好因為你的驗證精度特別高。然而,你驗證後發現精度特別低?為什麼?

回答:在分類問題中,我們應該使用分層抽樣而不是隨機抽樣。隨機抽樣並不考慮目標類的百分比,另外,分層抽樣幫助保留目標變量在抽取樣本中的分佈。

Q32: 評估一個迴歸模型,可選用確定係數,校正確定係數和公差,你會選取哪一個?

回答:公差(1/VIF)被用作多重共線性指標,表示預測器方差無法被其他預測器所解釋的百分比。公差大是較好的.

我們會考慮使用校正確定係數而不是確定係數來評估模型擬合性能。因為當加入更多的變量時,確定係數提高與預測精確度的改進無關。但校正確定係數只有在額外變量提高模型精度時才會提高,否則不會改變。為校正確定係數設定一個閾值很困難因為每個數據集都不一樣。例如:基因突變數據集會有較低的校正確定係數,而且預測性能不錯。與股票市場數據相比較,較低校正確定係數暗示這個模型並不好。

Q33: 在k-means或者kNN中,使用歐幾里得距離來計算最近鄰之間的距離,為什麼不用mahattan距離?

回答:曼哈頓距離只計算水平或者垂直距離,具有維度限制。而歐幾里得度量可以用於任何空間計算距離。因為數據點會在任意維度上顯示,歐幾里得度量是切實可行的選擇。

舉例:想象棋盤(國際圍棋)上,大主教或者車所行進的距離可以用曼哈端距離計算,因為移動方向是水平和垂直的。

Q34: 像對待5歲小孩一樣向我解釋機器學習(machine learning)。

回答:這很簡單。這就像寶寶學習走路一樣,每次他們跌倒,他們學習(無意識地)& 明白到他們的腿應該伸直而不是彎曲。下一次他們跌倒,他們會感覺到疼,哭泣,但學會不要那樣站。為了避免那樣的疼痛,他們更加痛苦地嘗試。為了成功,他們甚至尋求門和牆或者身邊其他事情的幫助,這樣他們能站穩。

這是一個機器在它所處的環境中如何工作和發展的感性描述。

注意:這個面試問題考察將複雜問題用簡單的語言表達出來的能力。

Q35: 一個線性迴歸模型經常用校正確定係數或者F值來評價,如何評價一個邏輯迴歸模型?

回答:我們可以使用下面這些方式:

  1. 邏輯迴歸被用於預測可能性,可以使用AUC-ROC曲線,結合混淆矩陣去評估。

  2. 同樣的,校正確定係數

  3. 的意義相對於邏輯迴歸是AIC。AIC是擬合的度量值,以模型參數的數量作為懲罰項,因為我們傾向於擁有最小AIC值的模型。

  4. Null Deviance表示模型截距項能夠預測的結果。該值越小,模型越好。Residual Deviance表示添加不相關的變量,模型預測的結果。該值越小,模型越好。

Q36:如何為數據集挑選合適的算法?

回答:機器學習算法的選擇僅僅依靠數據的類型。如果數據集有線性關係,則線性迴歸是最好的算法。如果你需要進行圖像方面的工作,神經網絡將幫助你建立一個穩固的模型。

如果數據由非線性關係組成,那麼Boosting或者Bagging算法就是選擇之一。如果商業需求是構造可部署的模型,那傾向於使用迴歸或者決策樹模型(很方便解釋)而不是黑箱算法比如SVM,GBM等等。

簡而言之,沒有任何情境下都適用的算法。我們必須足夠謹慎並理解可以使用哪個算法。

Q37: 將一個分類變量對待為連續變量,可以得到一個更好的預測模型嗎?

回答:為了更好地預測,分類變量可以被考慮為連續變量:當變量本質上是有序的。

Q38: 什麼時候正則化是機器學習中的必須步驟?

回答:當模型過擬合或者欠擬合時,正則化是必須的。這個方式包含為目標函數引進更多特徵的成本,因此傾向於使很多變量的參數為零,以降低成本。這幫助減少模型複雜度,模型能夠得到更好的預測結果(泛化性)。

Q39:如何理解樸素貝葉斯中的偏差-方差均衡?

回答:模型產生的誤差可以分解為三個部分,如下列所示:

「入門必讀」40個 機器學習/數據科學創業公司的面試問題

偏差誤差(Bias):可以幫助衡量平均水平上預測的數值與實際值的差別。高偏差誤差意味著模型表現欠佳,會錯過重要趨勢。

方差誤差(Variance):衡量在同一預測結果之間的差異。高方差的模型意味著在訓練數據上過擬合,但在訓練數據之外的數據上表現很差。

Q40:普通最小二乘法( OLS)是線性迴歸,最大似然是邏輯迴歸。解釋這句話。

回答:概括地說,普通最小二乘法和最大似然是使用不同迴歸方式的方法去接近未知參數值。

普通最小二乘法用在線性迴歸中,以獲得真實值與預測值之間的最小距離的方式接近未知參數值。最大似然方式是幫助選擇參數值,該值能夠使模型能夠最大可能輸出觀察樣本。

結語

你也許能夠回答所有的問題,但是真正的價值在於理解然後應用。如果你對這些問題有困難,現在是學習而不是表現的時候。你應該一絲不苟地關注這些問題。

這些問題本意是想幫助你對不同類型問題加深瞭解,我相信這些問題可以讓你有足夠的好奇心去追尋更深層次的回答。如果你正在計劃這件事,那就是一個很好的信號。


原文:40 Interview Questions asked at Startups in Machine Learning / Data Science

相關推薦

推薦中...