資料探勘和機器學習的面試問題

資料探勘和機器學習的面試問題

在過去的幾個月裡,我面試了許多公司涉及資料科學和機器學習的實習崗位。介紹一下我的背景,我研究生期間的方向是機器學習,計算機視覺,並且以前大部分時間都是在研究學術,但在早期有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. 解釋聚類演算法

請參考(https://towardsdatascience。com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68——詳細講解各種聚類演算法)

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

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

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

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

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

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

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

其實這個是有很多套路的。我寫了一篇關於如何選擇合適的迴歸模型,連結在這(https://towardsdatascience。com/selecting-the-best-machine-learning-algorithm-for-your-regression-problem-20c330bad4ef)。

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

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

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

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

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

Max-pooling可以將特徵維度變小,使得減小計算時間,同時,不會損失太多重要的資訊,因為我們是儲存最大值,這個最大值可以理解為該視窗下的最重要資訊。同時,Max-pooling也對CNN具有平移不變性提供了很多理論支撐,詳細可以看吳恩達的benefits of MaxPooling(https://www。coursera。org/learn/convolutional-neural-networks/lecture/hELHk/pooling-layers)。

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:https://towardsdatascience。com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68

[2] select the proper regression model:

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

[3] benefits of max-pooling。:

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

你也許還想

● 一文徹底搞懂BP演算法:原理推導+資料演示+專案實戰(上篇)

● TensorFlow + Keras 實戰 YOLO v3 目標檢測圖文並茂教程(文末有驚喜)

● 入門 | Tensorflow實戰講解神經網路搭建詳細過程