當前位置:
首頁 > 知識 > Reddit熱議:一道看似簡單的分類基礎問題,為何難倒一大片人?

Reddit熱議:一道看似簡單的分類基礎問題,為何難倒一大片人?

對於已經投入生產流程的二元分類器,應該如何解決數據不平衡的問題?這時無法增補數據,無法重新訓練,應該如何處理?這個看似簡單的基礎問題著實難倒了reddit上的一位網友,他在17次面試中,有15次被這個問題問倒,只好發到reddit上求助,結果引發熱烈討論。

在機器學習領域,二元分類器問題可以說是一個非常基礎的領域,基於二元分類器的模型,已經成為目前多個常見分類模型應用構建的基礎。但就是這樣一個基礎問題,最近卻難住了一位Reddit網友。

他自稱對「主要演算法和問題都有所了解,並在一些機器學習領域有所擅長」的情況下,被一個二元分類器問題難倒了。

百思不得其解的他將這個問題發到了reddit上求助,結果成了機器學習版面上的頭號熱帖。

對帖子內容和部分精彩討論進行了選編:

目前我正在機器學習領域內求職,在所從事的特定領域中,我對所有主要演算法都有所了解,並且能夠在特定問題(比如時間序列和回歸模型)上發揮作用。

在通用數據科學中,我已經能在大多數問題上方面很好地應對了(比如概率問題、概念問題,中心均值定理問題等等......)。

最近,我參加了5家公司的面試,在17位面試官(有兩位還是科技界的知名人士)中,有15位都向我提出了這個問題,這個問題真的難住了我,這裡向大家請教一下。問題是:

假設現在有一個二元分類器(邏輯回歸,神經網路等),應該如何處理在生產流程中產生的不平衡的數據集?

一個看似簡單

的面試基礎問題

為何難倒一大片人?

我必須承認,我不知道怎麼回答。我知道對於用來衡量模型的評估標準需要小心處理,應該注意精確度和召回率或roc,而不僅僅是精確度。

對於採樣策略,應該隨時進行改變,以反映每個分類。不過上面這些策略和過程都是在訓練過程中完成的。

一旦到了生產流程中,在這個問題上就要面臨不少困難的處境:

?如果不對訓練數據作一些加工,就沒有足夠的稀疏數據讓分類器從中學習到一些東西,這樣的話,分類器就只能預測密集數據的分類,往往達不到生產環境要求。

?如果對數據進行了加工,那麼面臨的情況可能是,訓練數據的分布和生產數據的分布是完全不同的,因此訓練出的模型不能很好地完成預測(至少我認為,在測試階段和生產階段的數據分布不同,會導致災難性的後果。

這個兩難困境要怎樣解決?為什麼面試官這麼喜歡問這個問題?

還有一些跟進問題和一些思路提示,比如:

如果情況確實如此,即數據集不平衡,而且你是在將二元分類器加入生產環節,並且使用了一段時間之後,經測試才發現預測效果不好,你會怎麼做?(我的回答是,回到訓練環節找問題,重新評估你想使用哪些特徵,或找到更多要訓練的數據)。

第二個問題是同一個面試官問的:如果現在說的是同一個模型呢,你怎麼辦?你現在無法獲得更多的數據,這時應該怎麼辦?(我的回答是:是不是考慮l1或l2正則化?但這些方法適用於任何數據集,而不是針對不平衡的數據。調節K層交叉檢驗的層數呢?好像也不管用.....)

我想是不是可以在訓練之後調整分類器,但在實際部署之前,調整到原始的數據分布,而不是在訓練期間使用的(下採樣或上採樣)分布?(我認為,在實際部署模型之前根據知識對模型進行的任何調整,都算是某種形式的再訓練。)

關於第二個問題,我之前確實遇到過

(https://stats.stackexchange.com/a/403244/89649)。它只適用於邏輯回歸,不適合任何其他二元分類器。那麼試試其他分類器怎麼樣?(在數據不平衡的情況下,邏輯回歸是不是唯一合適的演算法?)

網友熱議:這問題

我也經常問,沒有

標準答案,你答得不錯

Reddit網友顯然對這個問題並不陌生,在評論中對這個看似簡單的基礎問題展開了熱烈討論,其中有些人顯然是用這個問題面試過不少人,比如:

嗯。這個問題我在面試別人時問過不下20次。

我提出這個問題的主要目的是考察對追求訓練精度需求和基於精度的返回(roc)的理解。在採樣策略上,其實可以有很多不同選擇,包括上採樣和下採樣,這一點我覺得你理解得不錯。一些情況下需要進行數據增補,但一般只涉及少數圖像數據集。

最後是尋找損失函數。可以在少數分類錯誤時對模型進行懲罰,局部損失函數和焦點損失函可以稍有區別。當然你也可以說一些「找更多的數據」這樣的廢話,不過你的簡歷可能就要被刷了。

或者你可以說一些其他的內容,比如半監督學習什麼的。

還有的網友同樣從面試者角度出發,指出這個問題對於不同人群的側重點是不同的,並對提問者的回答表示了充分肯定。

不同人群關注側重點不同,看清自己的定位

你已經答得不錯了。我在面試時首先會問面試者錯誤分類成本是否也存在著不平衡。如果沒有,就沒有需要解決的問題了。

根據面試對象的不同,我認為你的回答的側重點也應該有所區別。比如:

統計學家最感興趣的是損失函數

商務人士最希望聽到對期望利潤的一些估計,以及分類損失函數。

工程師更希望獲得更高的精度、返回值等等,因為這些指標大部分解決的是數據不平衡的問題,他們不需要將時間浪費在自己不理解的與商業有關的損失函數和統計學概念上。

還有人表示,向求職者提出這個問題,實際上不是要對方給出答案,而是考察求職者的思維深度和廣度以及批判性的思維能力。看看,高度就是不一樣。

實際是考察思維深度和廣度,而不是答案本身。

這是一道非常好的面試問題,可以考察面試人的知識廣度和深度,以及批判性思維能力。

這個問題沒有任何萬能答案,可以100%適用所有情況,所以這個問題其實最終更目的多的是在討論,而不是追求答案。

面試者希望看到你提出一些想法,並解釋每個想法的優缺點,他們想深入了解你的一些想法,看看你對這個主題的理解程度究竟如何。然後拋出一些問題,看看你能思考到什麼程度。

有些問題,即使用了谷歌搜索,也仍然無法得出正確答案。這通常表明這個問題提得非常之好。

還有人認為,可能是在模型的選擇上出了問題,或者學習的特徵與任務實際不相適應。

是不是模型選擇有問題?

從面試問題的角度來看,我認為這個問題的重點是:仔細考察數據,不能將演算法視為黑盒子。

為什麼模型在生產過程中表現不佳?是否存在偏離數據(或錯誤數據)的異常值?訓練時的數據與生產過程中觀察到的數據遵循相同的分布嗎?這兩類數據很容易區分嗎?機器學習藝術的很大一部分是數據的可視化。

還有,你選擇的模型合適不合適?如果是二元分類任務,選擇支持向量機(SVM)可以增加魯棒性,因為它不僅適合單個超平面,而且可以最大化邊距。同樣,如果數據集太小,可以嘗試貝葉斯方法並使用強大的先驗數據。是否選擇或學習了與任務適合的特徵?

說白了,問這個問題是為了看看你以前是不是用過真實的數據

小夥伴們,不知你們對這個問題怎麼看,在面試中是否遇見過?你們又是怎麼回答的呢?

本文來源於Reddit

參考鏈接:

Reddit:

https://www.reddit.com/r/MachineLearning/comments/c1vxoc/d_17_interviews_4_phone_screens_13_onsite_5/?sort=top

選購數學科普正版讀物

嚴選「數學思維好物」

送給孩子的閱讀禮物|辦公室神器

有益孩子一生的玩具|居家高科技

走進數學:人物、趣談、科技、發展史

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

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


請您繼續閱讀更多來自 超級數學建模 的精彩文章:

每天吃吃吃和買買買的女生最漂亮,是因為
這是不是每天聽到鬧鐘響起時的你?非常真實了

TAG:超級數學建模 |