當前位置:
首頁 > 知識 > 【乾貨】數據科學與機器學習面試指南

【乾貨】數據科學與機器學習面試指南

 

George Seif 最近分享了他在找工作時遇到的常見的面試問題,並與大家分享如何處理這些問題,23道面試題讓你熟悉機器學習、數據科學常見知識點,建議大家學習和收藏。




作者

 | 

George Seif


編譯 | 專知


參與 | Sanglei, Shengsheng




添加微信:MLAPython



(姓名-單位-方向)


即可加入機器學習交流群



Data Science and Machine Learning Int

erview Questions


數據科學與機器學習面試指南




啊!可怕的機器學習面試。面試前你可能覺得你自己什麼都知道,直到你被測試的時候才發現情況並沒有你想像的那麼簡單!但是你大可不必擔心!


 


在過去的幾個月里,我也面試了許多涉及數據科學和機器學習初級職位的

公司

。先透露一點我的學習背景,在一年前,我剛攻讀完機器學習和計算機視覺的碩士學位,這些學習經歷主要還是偏向研究/學術方面的。但是在最近的8個月我在一家創業公司工作。我主要的學習和工作包括數據科學、機器學習和自然語言處理或計算機視覺專業。我面試了亞馬遜( Amazon )、特斯拉( Tesla )、三星( Samsung )、優步( Uber )、華為( Huawei )等大公司,也面了大大小小的許多初創企業。




今天我將與大家分享我被問到的所有面試問題以及如何處理這些問題

。許多問題都是很常見的和有成熟的理論支撐,但也有許多問題都很有挑戰性。我將簡單地列出一些最常見的問題,這些問題的答案很容易找到相關的解答資源,除此之外我還將更深入地討論一些不那麼常見和棘手的問題。我希望在閱讀這篇文章後,你能在機器學習面試中取得優異成績,並找到你夢想中的工作!




我們接著將深入探討:




  • 偏插(Bias)和方差(Variance)之間的權衡是什麼?



  • 什麼是梯度下降(gradientdescent)?



  • 解釋什麼是過擬合(over-fitting)和欠擬合(under-fitting)以及如何控制它們?



  • 你如何對抗維度的災難?



  • 什麼是正則化(regularization),我們為什麼使用它,並給出一些常見方法的例子?



  • 解釋主成分分析( PCA )?



  • 為什麼ReLU在神經網路中比Sigmoid更好、更常用?



  • 什麼是數據正則化/歸一化(normalization)?為什麼我們需要它?



我覺得這一點很重要。數據歸一化是非常重要的預處理步驟,用於重新縮放輸入的數值以適應特定的範圍,從而確保在反向傳播期間更好地收斂。一般來說採取的方法都是減去每個數據點的平均值併除以其標準偏差。如果我們不這樣做,那麼一些特徵(那些具有高幅值的特徵)將在cost函數中得到更大的加權(如果較高幅值的特徵改變1 %,則該改變相當大,但是對於較小的特徵,該改變相當小)。數據歸一化使所有特徵的權重相等。






  • 解釋降維(dimensionality reduction),降維在哪裡使用,降維的好處是什麼?


降維是通過獲得一組基本上是重要特徵的主變數來減少所考慮的特徵變數的過程。特徵的重要性取決於特徵變數對數據信息表示的貢獻程度,以及決定使用哪種技術。決定使用哪種技術取決於試錯和偏好。通常從線性技術開始,當結果表明擬合不足時,就轉向非線性技術。


數據集降維的好處可以是:


( 1 )減少所需的存儲空間。


( 2 )加快計算速度(例如在機器學習演算法中),更少的維數意味著更少的計算,並且更少的維數可以允許使用不適合大量維數的演算法。


( 3 )去除冗餘特徵,例如在以平方米和平方英里存儲地形尺寸方面沒有意義(可能數據收集有缺陷)。


( 4 )將數據的維數降低到2D或3D可以允許我們繪製和可視化它,可能觀察模式,給我們提供直觀感受。


( 5 )太多的特徵或太複雜的模型可以導致過擬合。






  • 如何處理數據集中丟失或損壞的數據(missing or corrupted)?


您可以在數據集中找到丟失/損壞的數據,然後刪除這些行或列,或者決定用其他值替換它們。在Pandas中,有兩種非常有用的方法:

 

isnull ( )和dropna ( )

,它們將幫助您查找丟失或損壞數據的數據列並刪除這些值。如果要用佔位符值(例如0 )填充無效值,則可以使用fillna ( )方法。






  • 解釋這個聚類演算法?


我寫了一篇關於數據科學家需要了解的5種聚類演算法的文章《數據科學家需要知道的五種聚類方法》

The5 Clustering Algorithms Data Scientists Need to Know

,用了一些很直觀的可視化方法詳細解釋了所有這些演算法。


https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68





  • 您將如何進行探索性數據分析(Exploratory Data Analysis, EDA )?


EDA是指對已有的數據(特別是調查或觀察得來的原始數據)在盡量少的先驗假定下進行探索,通過作圖、製表、方程擬合、計算特徵量等手段探索數據的結構和規律的一種數據分析方法。特別是當我們對這些數據中的信息沒有足夠的經驗,不知道該用何種傳統統計方法進行分析時,探索性數據分析就會非常有效。






  • 您如何知道應該使用哪種機器學習模型?


雖然我們應該永遠記住「沒有免費午餐定理」,但有一些一般的指導方針。我在這裡寫了一篇關於如何選擇合適回歸模型的文章《Selecting the best Machine Learning algorithm for your regressionproblem》


原文鏈接:

https://towardsdatascience.com/selecting-the-best-machine-learning-algorithm-for-your-regression-problem-20c330bad4ef









  • 為什麼我們對圖像使用卷積而不僅僅是FC層?


這個很有趣,因為公司通常不會問這個問題。正如你所料,我是從一家專註於計算機視覺的公司那裡得到這個問題的。這個答案有兩部分。首先,

卷積保存、編碼和實際使用來自圖像的空間信息

。如果我們只使用FC層,我們將沒有相對的空間信息。其次,

卷積神經網路( CNNs )具有部分內建的平移不變性,因為每個卷積核充當其自身的濾波器/特徵檢測器。






  • 什麼使CNNs具有平移不變性(translation invariant)?


如上所述,每個卷積核充當它自己的濾波器/特徵檢測器。假設您正在進行目標檢測,目標在圖像中的位置並不重要,因為無論如何,我們將在整個圖像中以滑動窗口的方式應用卷積。






  • 為什麼分類CNNs模型中需要max-pooling?


正如你所期望的那樣,這是計算機視覺中的一個角色。

CNN中的最大池化允許您減少計算量

,因為池化後feature maps變小了。您不會丟失太多的語義信息,因為您正在進行最大程度的激活。還有一種理論認為,最大池化對CNNs的平移不變性有一定的貢獻。看看吳恩達關於最大池化好處的視頻。


https://www.coursera.org/learn/convolutional-neural-networks/lecture/hELHk/pooling-layers





  • 為什麼在圖像分割中CNNs通常具有編碼器-解碼器結構?


編碼器CNN基本上可以被認為是特徵提取網路,而解碼器使用該信息通過「解碼」特徵並放大到原始圖像大小來預測圖像分割區域。






  • 殘差網路(Residual Network)的意義是什麼?


殘差連接的主要作用是允許當前層的輸入特徵能夠利用來自之前多個層的信息。這使得信息在整個網路中的傳播更加容易。關於這一點的一篇非常有趣的論文展示了如何使用local跳躍連接為網路提供一種集成多路徑結構,從而為特徵提供多條路徑以在整個網路中傳播。《Residual Networks Behave Like Ensembles of Relatively ShallowNetworks》


https://arxiv.org/abs/1605.06431






  • 什麼是批標準化(Batch Normalization)?它為什麼起作用?


訓練深層神經網路是複雜的,因為每一層的輸入分布在訓練期間隨著前一層的參數改變而改變。然後,其思想是以這樣一種方式對每一層的輸入進行歸一化,即它們具有零的平均輸出激活和1的標準偏差。這是針對每一層處的每一個單獨的微批次進行的,即,單獨計算該微批次的平均值和方差,然後歸一化。這類似於網路輸入的標準化。這有什麼幫助?我們知道,對網路輸入進行規範化有助於網路學習。但是網路只是一系列層,其中一層的輸出成為下一層的輸入。這意味著我們可以把神經網路中的任何層看作是較小的後續網路的第一層。我們把它看作是一系列相互饋入的神經網路,在應用激活函數之前,先對一個層的輸出進行歸一化,然後再將其饋入下一層(子網路)。







  • 如何處理不平衡的數據集(imbalanced dataset)?


我有一篇關於這個的文章的第三條!《7 Practical Deep Learning Tips》https://towardsdatascience.com/7-practical-deep-learning-tips-97a9f514100e


        




  • 為什麼要使用許多小卷積核(如3x 3 )而不是幾個大卷積核?


這在VGGNet的原始論文中得到了很好的解釋。原因有二:首先,您可以使用幾個較小的核而不是幾個較大的核來獲得相同的感受野並捕獲更多的空間上下文,但是使用較小的內核時,您使用的參數和計算量較少。其次,因為使用更小的核,您將使用更多的濾波器,您將能夠使用更多的激活函數,從而使您的CNN學習到更具區分性的映射函數。


https://arxiv.org/pdf/1409.1556.pdf






  • 你還做過其他與你申請職位相關的項目嗎?


您將真正在您的研究和他們的業務之間建立聯繫。您所做的任何事情或學到的任何技能是否可能與他們的業務或您申請的角色相關聯?它不一定是100 %準確的,只是某種程度上相關,這樣你就可以表明你將能夠直接增加很多價值。






  • 解釋你現在的碩士研究內容?什麼有效?什麼沒有效果?未來方向?


和上一個問題一樣!



總結


看吧!這就是我申請數據科學和機器學習崗位時遇到的所有面試問題。希望你能喜歡並有所收穫。別忘了點贊。




原文鏈接:


https://towardsdatascience.com/why-go-large-with-data-for-deep-learning-12eee16f708




喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |