資料科學和機器學習面試問題

jianboy發表於2019-02-28

資料科學和機器學習面試問題

啊,可怕的機器學習面試啊。表面上,你覺得你知道一切......可當你使用它時,你會發現很多你都不會!

在過去的幾個月裡,我面試了一些涉及資料科學和機器學習的初級職位。為了讓你們更瞭解我的背景,我目前正處於研究生院機器學習和計算機視覺碩士課程的最後幾個月裡,我以前的大部分經驗都是研究/學術的,但是有 8 個月的時間是在初創公司(與 ML 無關)。這些職位包括資料科學、機器學習和自然語言處理或計算機視覺方面的專業工作。我面試了亞馬遜、特斯拉、三星、優步、華為等大公司。也面試了許多從早期到成熟和資金充足的初創公司。

今天我將與大家分享我被問到的所有面試問題以及如何處理這些問題。許多問題都是普遍問題和一些基礎理論,但其他許多問題都非常具有創造性和新奇。我將簡單列出最常見的那些,因為有很多關於這些基礎理論知識的線上資源,並且更深入地介紹一些不那麼常見和棘手的問題。我希望在閱讀這篇文章時,可以幫助你在機器學習面試中取得優異成績並獲得理想的工作!

我們來看看:

  • 偏差和方差之間的區別是什麼?
  • 什麼是梯度下降?
  • 解釋過擬合和欠擬合問題以及如何解決它們?
  • 如何解決資料高維度問題以及如何降維?
  • 什麼是正則化,我們為什麼要使用它,並提供一些常用方法的例子?
  • 什麼是主成分分析(PCA)?
  • 為什麼 ReLU 在神經網路中比 Sigmoid 更好、更經常使用?
  • 什麼是資料規範化以及我們為什麼需要它? 我覺得這一點很重要。資料歸一化是非常重要的預處理步驟,用於重新調整值以適應特定範圍,以確保在反向傳播期間更好的收斂。通常,它歸結為減去每個資料點的平均值併除以其標準偏差。如果我們不這樣做,那麼一些特徵(具有高階數的特徵)將在成本函式中加權更多(如果更高幅度的特徵變化 1%,那麼這種變化相當大,但對於較小的特徵,它是非常微不足道的)。資料規範化使所有特徵均等加權。
  • 解釋什麼是降維,什麼時候使用,以及使用它的好處? 降維是通過獲得資料集重要特徵的主要變數來減少所考慮的特徵變數數量的過程。特徵的重要性取決於特徵變數對資料的資訊表示的貢獻程度,並取決於您決定使用哪種技術。決定使用哪種技術歸結為反覆試驗和偏好。通常從線性技術開始,當結果表明不合適時,轉向非線性技術。降維的好處有:(1) 減少所需的儲存空間 (2) 加速計算(例如在機器學習演算法中),更少的維度意味著更少的計算,更少的維度可以允許使用在高維度不適合的演算法 (3) 刪除冗餘特徵,例如以平方米和平方英里儲存地形大小沒有任何意義(可能資料收集存在缺陷) (4) 將資料維度減少到 2D 或 3D 可能允許我們繪製影象和視覺化它,可以觀察影象,得出一些結論 (5) 太多的特徵或太複雜的模型可能導致過度擬合。
  • 如何處理資料集中丟失或損壞的資料? 您可以在資料集中找到丟失/損壞的資料,並丟棄這些行或列,或決定用其他值替換它們。在 Pandas 中,有兩個非常有用的方法:isnull() 和 dropna(),它們可以幫助您查詢丟失或損壞資料的資料列並刪除這些值。 如果要使用佔位符值(例如:0)填充無效值,可以使用 fillna() 方法。
  • 解釋這種聚類演算法? 我寫了一篇關於資料科學家需要知道的 5 種聚類演算法 的熱門文章,文章中用一些很棒的視覺化操作,解釋了什麼是聚類演算法。
  • 您將如何進行探索性資料分析(EDA)? EDA 的目標是在應用預測模型之前從資料中收集一些見解,即獲得一些資訊。基本上,您希望以_粗到細_的方式進行 EDA。我們首先獲得一些高階別的全域性見解。檢查一些不平衡的類。檢視每個類的均值和方差。檢視前幾行,瞭解它的全部內容。執行 pandas 命令 df.info() 以檢視哪些特徵是連續的,分類的,它們的型別(int,float,string)。接下來,刪除在分析和預測中不必要的列。這些可能只是看起來毫無用處的列,其中許多行具有相同的值(即它不會給我們提供太多資訊),或者它缺少很多值。我們還可以使用該列中最常見的值或中位數填寫缺失值。現在我們可以開始做一些基本的視覺化。從高維開始。對少量組進行分類,可以分別做條形圖。最終得到一些條形圖。看看這些條形圖的“一般特徵”。建立一些關於這些一般特徵的視覺化,以嘗試獲得一些基本見解。現在我們可以開始更具體了。一次建立兩個或三個特徵之間的視覺化。特徵如何相互關聯?您還可以執行 PCA( 主成分分析) 以檢視哪些功能包含最多資訊。將一些特徵組合在一起以檢視它們之間的關係。例如,當 A = 0 且 B = 0 時,類會發生什麼? A = 1 和 B = 0 怎麼樣?比較不同的特徵。例如,如果特徵 A 可以是“女性”或“男性”,那麼我們可以繪製特徵 A 根據他們留在哪個小屋,看看男性和女性是否留在不同的小屋中。除了條形圖,散點圖和其他基本圖之外,我們還可以繪製 PDF/CDF、疊加圖等。檢視一些統計資訊,如分佈列,p 值等。最後是構建 ML 模型的時候了。從樸素貝葉斯和線性迴歸等簡單的東西開始。如果您看到那些資料是高度非線性的,請使用多項式迴歸,決策樹或 SVM。可以根據 EDA 的重要性選擇功能。如果您有大量資料,可以使用神經網路。檢查 ROC 曲線、精確率和召回率。
  • 您如何知道應該使用哪種機器學習模型? 雖然人們應該始終牢記“無免費午餐定理”,但仍有一些一般性的指導方針。 我寫了一篇關於如何選擇合適的迴歸模型的文章這裡。這篇文章也寫得很好。
  • 為什麼我們使用卷積處理影象而不僅僅是 FC 層? 這個非常有趣,因為它不是公司通常會問的問題。 正如您所料,我從一家專注於計算機視覺的公司那裡得到了這個問題。 這個答案有 2 個部分。 首先,卷積保留並編碼了實際使用的影象空間資訊。 如果我們只使用 FC 層,我們將沒有相關的空間資訊。 其次,卷積神經網路 (CNN) 具有部分內建的平移方差,因為每個卷積核都充當它自己的濾波器/特徵檢測器。
  • 是什麼讓 CNNs 平移不變? 如上所述,每個卷積核都充當它自己的濾波器/特徵檢測器。 因此,假設您正在進行物件檢測,物件在影象中的位置並不重要,因為我們將以滑動視窗的方式對整個影象應用卷積。
  • 為什麼我們在分類 CNN 中有最大池化? 再次如您所料,這是計算機視覺中的一個角色。CNN 中的最大池化允許您減少計算,因為池化後的要素圖較小。 由於您正在進行最大程度的啟用,因此不會丟失過多的語義資訊。 還有一種理論認為,最大池化有助於為 CNN 提供更多的方差轉換。 看看這個來自 Andrew Ng 的關於最大池化的好處的精彩視訊。
  • 為什麼分段 CNN 通常具有編碼器 —— 解碼器樣式/結構? 編碼器 CNN 基本上可以被認為是特徵提取網路,而解碼器使用該資訊通過“解碼”特徵並且放大到原始影象大小來預測影象片段。
  • 殘留網路有什麼意義? 剩餘連線所做的主要事情是允許從先前層直接訪問功能。 這使得整個網路中的資訊傳播變得更加容易。 一個非常有趣的論文介紹瞭如何使用本地跳過連線為網路提供一種整體多路徑結構,為多個路徑提供在整個網路中傳播的功能。
  • 什麼是批處理歸一化?為什麼它有效? 訓練深度神經網路很複雜,因為每一層的輸入分佈在訓練期間隨著前一層的引數改變而改變。然後,我們的想法是將每層的輸入標準化,使得它們的平均輸出啟用函式為零,標準偏差為 1。這是針對每一層上的每個單獨的小批量進行的,即單獨計算該小批量的平均值和方差,然後進行歸一化。這類似於網路輸入的標準化。這有什麼用?我們知道將網路輸入規範化有助於它學習。但網路只是一系列層,其中一層的輸出成為下一層的輸入。這意味著我們可以將神經網路中的任何層視為較小的後續網路的第一層。考慮到作為一系列相互饋送的神經網路,我們在應用啟用函式之前規範化一層的輸出,然後將其饋送到下一層(子網路)。
  • 你會如何處理不平衡的資料集? 我有一篇文章 講到它! 請檢視第 #3 節:)
  • 你為什麼要使用許多小的卷積核心,比如 3x3 而不是幾個大核心? 這在 VGGNet 論文中得到了很好的解釋。 有兩個原因:首先,您可以使用幾個較小的核心而不是幾個較大的核心來獲取相同的感知欄位並捕獲更多的空間上下文,但是使用較小的核心則使用較少的引數和計算。 其次,因為對於較小的核心,您將使用更多的過濾器,您將能夠使用更多的啟用函式,因此您的 CNN 可以學習更具辨別力的對映函式。
  • **你有其他與此相關的專案嗎?**在這裡,您將真正瞭解您的研究與業務之間的聯絡。您是否有任何您所學到的技能或可能與您的業務或您申請的職位有關的技能? 它不必 100% 準確,只是以某種方式相關,以便您可以證明您將能夠直接貢獻大量的價值。
  • 解釋你目前的碩士研究? 什麼有用? 什麼沒有? 未來發展方向? 和上一個問題一樣!

資料科學和機器學習面試問題

結論

現在你們應該都瞭解了!我在申請資料科學和機器學習中的角色時遇到的所有面試問題。 我希望你喜歡這篇文章並學到一些新的有用的東西! 如果本文確實對你有用,請給我點個贊吧。

如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章