數據挖掘和機器學習的面試問題

數據挖掘和機器學習的面試問題

來自專欄 TensorFlowNews139 人贊了文章

作者 | Ray

【磐創AI導讀】:本文主要分享了機器學習需要注意的幾個面試問題。

在過去的幾個月里,我面試了許多公司涉及數據科學和機器學習的實習崗位。介紹一下我的背景,我研究生期間的方向是機器學習,計算機視覺,並且以前大部分時間都是在研究學術,但在早期有8個月的創業經歷(與ML無關)。我面試的崗位包括數據科學、傳統機器學習、自然語言處理或者是計算機視覺,並且面試的都是像亞馬遜、特斯拉、三星、Uber、華為這些大公司,也有許多創業公司。

今天,我將會分享所有我面試時遇到的問題,並分享如何去回答這些問題。這些問題中有些是比較正常的並且有一定的理論背景,但有一些問題則很有創新性。對於一些普通的面試題,我就簡單的列一下,因為這些題在網上都很容易找到。主要深入講解一下比較少見的面試。我希望閱讀這篇文章後,能夠幫助你在機器學習面試中表現的更好,並且找到你夢寐以求的工作。

讓我們開始吧:

1. 如何權衡偏差和方差?

2. 什麼是梯度下降?

3. 解釋一下過擬合和欠擬合,如何解決這兩種問題?

4. 如何處理維度災難?

5. 什麼是正則化項。為什麼要使用正則化,說出一些常用的正則化方法?

6. 講解一下PCA原理

7. 為什麼在神經網路中Relu激活函數會比Sigmoid激活函數用的更多?

8. 什麼是數據標準化,為什麼要進行數據標準化?

我認為這個問題需要重視。數據標準化是預處理步驟,將數據標準化到一個特定的範圍能夠在反向傳播中保證更好的收斂。一般來說,是將該值將去平均值後再除以標準差。如果不進行數據標準化,有些特徵(值很大)將會對損失函數影響更大(就算這個特別大的特徵只是改變了1%,但是他對損失函數的影響還是很大,並會使得其他值比較小的特徵變得不重要了)。因此數據標準化可以使得每個特徵的重要性更加均衡。

9. 解釋什麼是降維,在哪裡會用到降維,它的好處是什麼?

降維是指通過保留一些比較重要的特徵,去除一些冗餘的特徵,減少數據特徵的維度。而特徵的重要性取決於該特徵能夠表達多少數據集的信息,也取決於使用什麼方法進行降維。而使用哪種降維方法則是通過反覆的試驗和每種方法在該數據集上的效果。一般情況會先使用線性的降維方法再使用非線性的降維方法,通過結果去判斷哪種方法比較合適。而降維的好處是:

(1)節省存儲空間;

(2)加速計算速度(比如在機器學習演算法中),維度越少,計算量越少,並且能夠使用那些不適合於高維度的演算法;

(3)去除一些冗餘的特徵,比如降維後使得數據不會既保存平方米和平方英里的表示地形大小的特徵;

(4)將數據維度降到2維或者3維使之能可視化,便於觀察和挖掘信息。

(5)特徵太多或者太複雜會使得模型過擬合。

10. 如何處理缺失值數據?

數據中可能會有缺失值,處理的方法有兩種,一種是刪除整行或者整列的數據,另一種則是使用其他值去填充這些缺失值。在Pandas庫,有兩種很有用的函數用於處理缺失值:isnull()和dropna()函數能幫助我們找到數據中的缺失值並且刪除它們。如果你想用其他值去填充這些缺失值,則可以是用fillna()函數。

11. 解釋聚類演算法

請參考towardsdatascience.com/詳細講解各種聚類演算法

12. 你會如何進行探索性數據分析(EDA)?

EDA的目的是去挖掘數據的一些重要信息。一般情況下會從粗到細的方式進行EDA探索。一開始我們可以去探索一些全局性的信息。觀察一些不平衡的數據,計算一下各個類的方差和均值。看一下前幾行數據的信息,包含什麼特徵等信息。使用Pandas中的df.info()去了解哪些特徵是連續的,離散的,它們的類型(int、float、string)。接下來,刪除一些不需要的列,這些列就是那些在分析和預測的過程中沒有什麼用的。

比如:某些列的值很多都是相同的,或者這些列有很多缺失值。當然你也可以去用一些中位數等去填充這些缺失值。然後我們可以去做一些可視化。對於一些類別特徵或者值比較少的可以使用條形圖。類標和樣本數的條形圖。找到一些最一般的特徵。對一些特徵和類別的關係進行可視化去獲得一些基本的信息。然後還可以可視化兩個特徵或三個特徵之間的關係,探索特徵之間的聯繫。

你也可以使用PCA去了解哪些特徵更加重要。組合特徵去探索他們的關係,比如當A=0,B=0的類別是什麼,A=1,B=0呢?比較特徵的不同值,比如性別特徵有男女兩個取值,我們可以看下男和女兩種取值的樣本類標會不會不一樣。

另外,除了條形圖、散點圖等基本的畫圖方式外,也可以使用PDFCDF或者覆蓋圖等。觀察一些統計數據比如數據分布、p值等。這些分析後,最後就可以開始建模了。

一開始可以使用一些比較簡單的模型比如貝葉斯模型和邏輯斯諦回歸模型。如果你發現你的數據是高度非線性的,你可以使用多項式回歸、決策樹或者SVM等。特徵選擇則可以基於這些特徵在EDA過程中分析的重要性。如果你的數據量很大的話也可以使用神經網路。然後觀察ROC曲線、查全率和查准率。

13. 你是怎麼考慮使用哪些模型的?

其實這個是有很多套路的。我寫了一篇關於如何選擇合適的回歸模型,鏈接在這towardsdatascience.com/

14. 在圖像處理中為什麼要使用卷積神經網路而不是全連接網路?

這個問題是我在面試一些視覺公司的時候遇到的。答案可以分為兩個方面:首先,卷積過程是考慮到圖像的局部特徵,能夠更加準確的抽取空間特徵。如果使用全連接的話,我們可能會考慮到很多不相關的信息。其次,CNN有平移不變性,因為權值共享,圖像平移了,卷積核還是可以識別出來,但是全連接則做不到。

15. 是什麼使得CNN具有平移不變性?

正如上面解釋,每個卷積核都是一個特徵探測器。所以就像我們在偵查一樣東西的時候,不管物體在圖像的哪個位置都能識別該物體。因為在卷積過程,我們使用卷積核在整張圖片上進行滑動卷積,所以CNN具有平移不變性。

16. 為什麼實現分類的CNN中需要進行Max-pooling?

Max-pooling可以將特徵維度變小,使得減小計算時間,同時,不會損失太多重要的信息,因為我們是保存最大值,這個最大值可以理解為該窗口下的最重要信息。同時,Max-pooling也對CNN具有平移不變性提供了很多理論支撐,詳細可以看吳恩達的benefits of MaxPoolingcoursera.org/learn/conv

17. 為什麼應用於圖像切割的CNN一般都具有Encoder-Decoder架構?

Encoder CNN一般被認為是進行特徵提取,而decoder部分則使用提取的特徵信息並且通過decoder這些特徵和將圖像縮放到原始圖像大小的方式去進行圖像切割。

18. 什麼是batch normalization,原理是什麼?

Batch Normalization就是在訓練過程,每一層輸入加一個標準化處理。

深度神經網路之所以複雜有一個原因就是由於在訓練的過程中上一層參數的更新使得每一層的輸入一直在改變。所以有個辦法就是去標準化每一層的輸入。具體歸一化的方式如下圖,如果只將歸一化的結果進行下一層的輸入,這樣可能會影響到本層學習的特徵,因為可能該層學習到的特徵分布可能並不是正態分布的,這樣強制變成正態分布會有一定影響,所以還需要乘上γ和β,這兩個參數是在訓練過程學習的,這樣可以保留學習到的特徵。

來自網路

神經網路其實就是一系列層組合成的,並且上一層的輸出作為下層的輸入,這意味著我們可以將神經網路的每一層都看成是以該層作為第一層的小型序列網路。這樣我們在使用激活函數之前歸一化該層的輸出,然後將其作為下一層的輸入,這樣就可以解決輸入一直改變的問題。

19. 為什麼卷積核一般都是3*3而不是更大?

這個問題在VGGNet模型中很好的解釋了。主要有這2點原因:第一,相對於用較大的卷積核,使用多個較小的卷積核可以獲得相同的感受野和能獲得更多的特徵信息,同時使用小的卷積核參數更少,計算量更小。第二:你可以使用更多的激活函數,有更多的非線性,使得在你的CNN模型中的判決函數有更有判決性。

20. 你有一些跟機器學習相關的項目嗎?

對於這個問題,你可以從你做過的研究與他們公司的業務之間的聯繫上作答。 你所學到的技能是否有一些可能與他們公司的業務或你申請的職位有關? 不需要是100%相吻合的,只要以某種方式相關就可以。這樣有助於讓他們認為你可以在這個職位上所產生的更大價值。

21. 解釋一下你現在研究生期間的研究?平時都在做什麼工作?未來的方向是什麼?

這些問題的答案都跟20題的回答思路是一致的。

總結:

所有在我面試數據科學和機器學習崗位的時候遇到的面試題都在這裡了。希望你能喜歡這篇文章並能從中學到一些新的有用的知識!

【文中所含鏈接】:

[1] The 5 Clustering Algorithms Data Scientists Need to Know:towardsdatascience.com/

[2] select the proper regression model:

towardsdatascience.com/

[3] benefits of max-pooling.:

coursera.org/lecture/co

最後,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!http://www.tensorflownews.com。我們的公眾號:磐創AI。

推薦閱讀:

圖解線性代數:vector length and dot product
機器學習實戰(5):Logistic回歸
白話word2vec
GBDT演算法
wide&deep論文學習筆記

TAG:數據挖掘 | 機器學習 | 數據分析 |