1. 程式人生 > >機器學習工程師|資料科學家面試流程介紹(含面試題)

機器學習工程師|資料科學家面試流程介紹(含面試題)

問題導讀
1.機器學習工程師面試的流程是什麼?
2.本文典型的第一輪面試由哪三部分組成?
3.對於基本的常識問題你是否有更好的理解及答案?

一、面試流程介紹


對於招聘機器學習工程師或資料科學家來說,典型的過程有多輪。

基本篩選輪次 - 目標是檢查本輪中的最低適合度。
演算法設計回合 - 一些公司有這一輪,但大多數沒有。 這涉及檢查面試者的編碼/演算法技能。
ML案例研究 - 在這一輪中,你會得到一個關於機器學習的案例研究問題。 你必須在一小時內解決它。
招聘經理 - 面試通常是團隊中最資深的人或來自另一個團隊的非常資深的人,他們將檢查候選人是否符合公司範圍內的技術能力。 這通常是最後一輪。

典型的第一輪面試由三部分組成。 


首先,簡要介紹一下你自己。

其次,簡要介紹一下你的相關專案。

典型的面試官將首先詢問你的個人資料中的相關工作。 根據你過去的機器學習專案經驗,面試官可能會問你如何改進它。

比如說,你已經完成了推薦專案,面試官可能會問:

  • 你會如何改進推薦?

  • 你會怎麼做排名?

  • 你有沒有做過任何端到端的機器學習專案? 如果是,那麼面臨的挑戰是什麼? 你怎麼解決冷啟動的問題?

  • 你如何提高推薦速度?


之後(第三部分),面試官將按以下方式檢查你對機器學習的基本知識。

二、基本知識考驗

1:什麼是機器學習?
機器學習是一個研究領域,它使計算機能夠在沒有明確教授或程式設計的情況下從經驗中學習和改進。

在傳統程式中,規則被編碼用於程式以做出決策,但是在機器學習中,程式基於資料來學習以做出決策。



2.為什麼我們需要機器學習?
最直觀和突出的例子是自動駕駛汽車,但讓我們以更有條理的方式回答這個問題。 需要機器學習來解決分類如下的問題:

傳統解決方案需要長而複雜的規則並且需要經常進行手動調整的問題。此類問題的示例是垃圾郵件過濾器。你注意到一些詞語,如4U,促銷,信用卡,免費,驚人的等等,並發現該電子郵件是垃圾郵件。此列表可能非常長,並且一旦垃圾郵件傳送者注意到你開始忽略這些單詞,就可以更改此列表。用傳統的程式設計方法來解決這個問題變得很困難。機器學習演算法學會很好地檢測垃圾郵件並且工作得更好。

使用傳統方法完全沒有解決方案的複雜問題。語音識別是這類問題的一個例子。
機器學習演算法可以找到解決這些問題的好方法。


波動的環境:機器學習系統可以適應新資料,並學會在這組新資料中做得很好。

深入瞭解複雜的大量資料。例如,你的企業從客戶處收集大量資料。機器學習演算法可以找到對這些資料的見解,否則不容易弄清楚。

3.有監督和無監督學習有什麼區別? 舉兩個例子。
根據定義,監督和非監督學習演算法基於訓練時所需的監督進行分類。 監督學習演算法對標記的資料起作用,即資料具有所需的解決方案或標籤。

另一方面,無監督學習演算法對未標記資料起作用,這意味著資料不包含演算法學習所需的解決方案。

監督演算法示例:

  • 線性迴歸

  • 神經網路/深度學習

  • 決策樹

  • 支援向量機(SVM)

  • K-最近鄰居


無監督演算法示例:

  • 聚類演算法 - K均值,層次聚類分析(HCA)

  • 視覺化和降維 - 主成分降低(PCA)

  • 關聯規則學習


4.推薦系統是監督還是無監督學習?
推薦演算法很有意思,因為其中一些是受監督的,有些是無人監督的。 基於你的個人資料,之前的購買,網頁瀏覽量的推薦屬於有監督的學習。 但是有一些推薦基於熱銷產品,基於國家/地區的推薦,這些都是無監督學習。

5.解釋PCA?
PCA代表主成分分析。 PCA是一種減少資料維數的過程,它由許多相互嚴重或輕微相關的變數組成,同時儘可能保持資料的變化。 應用PCA的資料必須是縮放資料,並且PCA的結果對資料的相對縮放敏感。
640?wx_fmt=png 
例如,你在2D空間中擁有資料集,並且你需要選擇超平面來投影資料集。 必須選擇超平面,以使方差保持最大。 在圖中,當從一個表示轉換為另一個表示(從左到右)時,超級位置C1(實線)保留了資料集中的最大方差,而C2(虛線)保留了非常小的方差。

更詳細參考PCA-主成分分析詳解
連結: 

https://pan.baidu.com/s/12yN3poxkT6aoAENGI7wwfA

密碼: rk7n

6.你知道哪種監督學習演算法?
有許多監督學習演算法,如迴歸,決策樹,神經網路,SVM等。其中最受歡迎和簡單的監督學習演算法是線性迴歸。 讓我快速解釋一下。

假設我們需要根據一些歷史資料預測一個縣居民的收入。 線性迴歸可用於此問題。
線性迴歸模型是輸入特徵的線性函式,其中權重定義模型,偏差項如下所示。
640?wx_fmt=png 
在該等式中,y_hat是預測結果,x_i是輸入,並且theta_i是模型引數或權重。 theta_0是偏差。
通過評估均方根誤差(RMSE)來測量該模型的效能。 實際上,均方誤差最小化以找到值,以便MSE最小.MSE如下:

640?wx_fmt=png 

7.你能比較決策樹和線性迴歸嗎? 決策樹可以用於非線性分類嗎?
決策樹用於無監督和監督學習。 此外,它們還用於分類以及監督機器學習問題中的迴歸。 在決策樹中,我們通過拆分節點來形成樹。 最初,所有例項基於邊界被分成兩部分,使得任一側的例項是邊界,非常接近同一側的其他例項。 左側的例項應與左側的其他例項非常相似,右側的例項也是如此。

下圖顯示了最大深度2和最大深度3的決策樹; 可以看到,隨著決策樹的最大深度增加,可以更好地覆蓋可用資料。
640?wx_fmt=png不同深度的決策樹

值得強調的決策樹的另一個方面是決策樹的穩定性。 決策樹對資料集輪換很敏感。 下圖顯示了資料旋轉時決策樹的不穩定性。
640?wx_fmt=png 
資料輪換的決策樹靈敏度

首先,決策樹的決策邊界都是正交直線(所有的切分都和某一個座標軸垂直),這使得它們對資料集的旋轉很敏感。例如,圖顯示了簡單的線性可分資料集,在左側,決策樹很容易將其切分。但是在右側,資料集旋轉45°,決策樹出現了不必要的繞彎彎。儘管二者都很好地擬合了訓練集,很明顯右側的模型難以很好地一般化。一個解決方案是使用PCA,它可以使訓練集旋轉到最好的方向。

8.解釋過度擬合和欠擬合? 過度擬合的原因是什麼?
比如,張三和李四有兩個孩子參加數學考試。張三隻學習了補充的附加內容,李四從數學書中記住了問題和答案。現在,誰將在考試中取得成功?答案都不是。從機器學習術語來說,張三是欠擬合,李四過度擬合。

過度擬合是演算法無法推廣到不在訓練集中的新示例,同時該演算法對於訓練集合資料非常有效,因為李四可以回答書中的問題,但除了它之外什麼都沒有。另一方面,欠擬合指的是當模型沒有捕獲資料的基本趨勢(訓練資料和測試資料)時。一般來說,補救措施是選擇更好(更復雜)的機器學習演算法。

因此,欠擬合的模型是在訓練和測試資料中都表現不佳的模型。在開發機器學習演算法時,過度擬合對於保持標籤開啟非常重要。這是因為,通過直覺,如果模型非常適合訓練集,開發人員傾向於認為演算法執行良好,有時無法解釋過度擬合。當模型相對於訓練資料的數量和噪聲過於複雜時,會發生過度擬合。這也意味著該演算法不能很好地用於測試資料,可能是因為測試資料不是來自與訓練資料相同的分佈。以下是避免過度擬合的一些方法:

  • 簡化模型:正則化,由超引數控制

  • 收集更多訓練資料

  • 減少訓練資料中的噪音


以下是一些避免欠擬合的方法:

  • 選擇更強大的模型

  • 為學習演算法提供更好的特徵

  • 減少對模型的約束(減少正則化超引數)


9.什麼是交叉驗證技術?
讓我們瞭解驗證集是什麼,然後我們將進行交叉驗證。 在構建模型時,需要訓練集通過反向傳播來調整權重。 並且選擇這些權重使得訓練誤差最小。

現在需要資料來評估模型和超引數,這些資料不能與訓練集資料相同。 因此,訓練集資料的一部分被保留用於驗證,並且被稱為驗證集。 當測試不同的模型以避免通過保持單獨的驗證集在模型的驗證中浪費太多資料時,使用交叉驗證技術。 在交叉驗證技術中,訓練資料被分成互補子集,並且不同的訓練和驗證集用於不同的模型。

然後最後用測試資料測試最佳模型。

10.如何檢測過度擬合和欠擬合?
這是實際機器學習中最重要的問題之一。 為了回答這個問題,讓我們理解偏差和方差的概念。

為了得出演算法是否過度擬合或欠擬合的結論,需要找出訓練集錯誤(E_train)和交叉驗證集錯誤(E_cv)。 如果你的E_train很高並且E_cv也與E_train在同一範圍內,即E_train和E_cv都很高。 這是高偏差的情況,該演算法欠擬合。 在另一種情況下,例如,訓練集錯誤很低,但交叉驗證設定錯誤很高:E_train很低,E_cv很高。 這是高方差的情況,演算法過度擬合。

11.偏差和方差之間的權衡是什麼?
640?wx_fmt=png 

簡單來說,你可以理解一個非常簡單的演算法(不能捕捉到資料的基本細節),並且具有高偏差和非常複雜的演算法過度擬合併且具有高方差。 兩者之間必須保持平衡。 上圖描述了它們在它們之間的權衡方面的相關性。
更多相關內容,參考機器學習中偏差---方差之間的權衡嗎?
http://www.aboutyun.com/home.php?mod=space&uid=61&do=blog&id=3608

12.有一位同事聲稱他已經建立了分類器99.99%的準確率? 你會相信他嗎? 如果不是,你主要懷疑可能的原因是什麼? 你會如何解決它?
一般而言,99.99%的準確度非常高,應該被懷疑。 至少要仔細分析資料集以及對其周圍解決方案進行建模的任何流程。 我的主要懷疑是資料集和問題陳述。 例如:在一組手寫字元中,其中有0到9的數字,如果建立一個模型來檢測數字是否為5,一個總是將數字識別為8的錯誤模型也會給出90%的準確率。

13.解釋ROC曲線如何工作?

640?wx_fmt=png 

ROC代表接收器工作特性。 ROC曲線用於測量不同演算法的效能。 這是繪製真陽性率和假陽性率時曲線下面積的測量值。 更多的區域更好的模型。

14.解釋整合(ensemble)演算法?基本原理是什麼?
假設你向成千上萬的人提問,然後彙總答案,很多時候這個答案比專家的答案要好。 整合演算法基本上結合了不同學習演算法的預測,例如分類,迴歸等,以實現更高的準確性。 該聚合預測優於最佳個體預測器。 這組預測稱為ensemble(整合),該技術稱為整合學習。

15.比如,你有一個以城市id為特徵的資料集,你會怎麼做?
收集機器學習專案的資料時,需要從收集的資料中仔細選擇特徵。 城市ID只是一個序列號,除非另有說明,否則不代表城市的任何屬性,所以我只是從功能列表中刪除城市ID。

16.在資料集中,有一個特徵hour_of_the_day,從0到23.你認為它是否有問題?
此特徵無法原樣使用,因為hour_of_the_day可能意味著使用機器學習技術解決你的問題的某個約束,但是存在使用該特徵的缺陷。 考慮0和23,這兩個數字具有較大的數值差異,但事實上,它們在當天的實際發生時很接近,因此演算法可能不會產生期望的結果。 有兩種方法可以解決這個問題。 首先是應用週期為24(一天中的小時)的正弦函式,這將導致來自不連續資料的連續。

第二種方法是根據對問題領域的瞭解,將當天的小時數分為上午,下午,傍晚,夜晚等,或者分為高峰時段和非高峰時段。

17.如果你有一個較小的資料集,將如何處理?
有多種方法可以解決這個問題,比如:

  • 資料增加

  • 預訓練模型

  • 更好的演算法

  • 開始生成資料

  • 從網際網路下載


後續有時間會更新,大家敬請期待

每天進步一點點,歡迎關注公眾號
640?wx_fmt=jpeg

 ↑ 翹首以盼等你關注

轉載註明本文連結:
http://www.aboutyun.com/forum.php?mod=viewthread&tid=25226

----------------------------END----------------------------

1.about雲知識星球,分享經典資源,經驗,面試簡歷,知識總結等,推薦加入,老鐵打折絕對優惠。

640?wx_fmt=png

2.加好友領取機器學習專案資料,附上“機器學習”;加入星球亦可聯絡

640?wx_fmt=jpeg

 本公眾號精彩文章推薦: