在機器學習中,有許多方法來構建產品或解決方案,每種方法都假設不同的東西。很多時候,如何識別哪些假設是合理的并不明顯。剛接觸機器學習的人會犯錯誤,事后想想,這些錯誤往往會讓人覺得愚蠢。我列了一個清單,上面列出了機器學習工程師新手最常犯的錯誤。希望你能從這些常見的錯誤中吸取教訓,創建更健壯的解決方案,從而帶來真正的價值。
1. 默認的損失函數
均方誤差非常大!這確實是一個令人驚訝的默認設置,但在實際應用中,這種現成的損失函數很少適合于你試圖解決的業務問題。
以欺詐檢測為例。為了與商業目標保持一致,你真正想要的是按因欺詐而損失的金額比例來對假陰性樣本進行懲罰。使用均方誤差可能會得到不錯的結果,但永遠不會得到最好的結果。
要點:始終建立一個自定義的損失函數,密切配合你的解決方案目標。
2. 對所有問題使用一種算法/方法
許多人完成他們的第一個教程,并立即開始使用他們在每個用例中所學到的相同算法。它很熟悉,他們認為它和其他算法一樣有效。這是一個糟糕的假設,將導致糟糕的結果。
讓你的數據為你選擇模型。一旦你預處理了你的數據,把它輸入到許多不同的模型中,看看結果是什么。你將對什么模型工作得最好和什么模型工作得不太好有一個很好的概念。
要點:如果你發現自己一次又一次地使用相同的算法,這可能意味著你沒有得到最好的結果。
3. 忽略離群點
離群點值可能很重要,也可能完全被忽略,這取決于上下文。以污染預測為例??諝馕廴究赡軙霈F大的峰值,觀察它們并了解其原因是一個好主意。在某些類型的傳感器錯誤導致的異常值的情況下,忽略它們并從數據中刪除它們是安全的。
從模型的角度來看,有些模型比其他模型對異常值更敏感。以Adaboost為例,它將這些異常值視為“困難”案例,并對異常值施加極大的權重,而決策樹可能只是將每個異常值作為一個錯誤分類。
要點:在開始工作之前,一定要仔細查看數據,確定是否應該忽略或更仔細地查看離群值。
4. 沒有適當的處理周期特征
一天中的幾個小時,一周中的幾天,一年中的幾個月,以及風向都是周期性的。許多新的機器學習工程師認為,不能將這些特征轉換成一種表示形式,這種表示形式可以保存諸如小時23和小時0之類的信息,它們彼此之間很近,距離也不遠。
按照小時的例子,處理這個問題的最好方法是計算sin和cos分量,這樣就可以用(x,y)的圓坐標來表示循環特征。在這個表示小時中,23和0在數字上是相鄰的,就像它們應該的那樣。
要點:如果你有循環特征,而你沒有轉換它們,你就是在給你的模型垃圾數據。
5. 做L1/L2正則化但是沒有標準化
L1和L2正則化對大系數不利,是正則化線性回歸或邏輯回歸的常用方法,然而,許多機器學習工程師并沒有意識到在應用正則化之前對特征進行標準化的重要性。
假設你有一個以事務為特征的線性回歸模型。標準化所有的特征,并將它們放在平等的基礎上,這樣正則化在你的所有特征上都是一樣的。不要用美分表示某些特征,而用美元表示其他特征。
要點:正則化很好,但是如果你沒有標準化特征,它會讓你頭疼
6. 將線性回歸或邏輯回歸的系數解釋為特征重要性
線性回歸通常為每個系數返回p值。這些系數很多時候會使機器學習新手認為對于線性模型來說,系數的值越大,特征越重要。因為變量的尺度改變了系數的絕對值,所以這并是不正確的。如果特征是共線的,系數可以從一個特征轉移到另一個特征。數據集的特征越多,特征越有可能是共線性的,對特征重要性的簡單解釋就越不可靠。
要點:理解什么特征對結果最重要是重要的,但不要假設你可以查看系數來得到,系數通常不會告訴你事情的全貌。
做幾個項目,得到好的結果,感覺就像贏了一百萬美元。你努力工作,你有結果證明你做得很好,但就像其他任何行業一樣,魔鬼是在細節中,甚至花哨的情節可以隱藏偏見和錯誤。這個列表并不是面面俱到的,只是讓讀者思考一下你的解決方案中可能隱藏的所有小問題。為了獲得好的結果,遵循你的過程是很重要的,并且要反復檢查你沒有犯一些常見的錯誤。
-
機器學習
+關注
關注
66文章
8425瀏覽量
132770
發布評論請先 登錄
相關推薦
評論