15年軟體架構師經驗總結:在ML領域,初學者踩過的5個坑

選自towardsdatascience

作者:Agnis Liukis

機器之心編譯

編輯:楊陽

如果你要構建你的第一個模型,請注意並避免這些問題。

資料科學和機器學習正變得越來越流行,這個領域的人數每天都在增長。這意味著有很多資料科學家在構建他們的第一個機器學習模型時沒有豐富的經驗,而這也是錯誤可能會發生的地方。

近日,軟體架構師、資料科學家、Kaggle 大師 Agnis Liukis 撰寫了一篇文章,他在文中談了談在機器學習中最常見的一些初學者錯誤的解決方案,以確保初學者瞭解並避免它們。

15年軟體架構師經驗總結:在ML領域,初學者踩過的5個坑

Agnis Liukis 擁有超過 15 年的軟體架構和開發經驗,他熟練掌握 Java、JavaScript、Spring Boot、React。JS 和 Python 等語言。此外,Liukis 還對資料科學和機器學習感興趣,他多次參加 Kaggle 比賽並取得好成績,已達到 Kaggle 比賽大師級別。

以下為文章內容:

在機器學習領域,這 5 個坑,你踩過嗎?

1、在需要的地方沒有使用資料歸一化(

data normalization)

對資料進行歸一化操作,然後獲取特徵,並將其輸入到模型中,讓模型做出預測,這種方法是很容易的。但在某些情況下,這種簡單方法的結果可能會讓人失望,因為它缺少一個非常重要的部分。

一些型別的模型需要資料歸一化,如線性迴歸、經典神經網路等。這類模型使用特徵值去乘訓練值的權重。在非歸一化特徵的情況下,一個特徵值的可能範圍可能不同於另一個特徵值的可能範圍。

假設一個特徵的值在 [0,0。001] 範圍內,另一個特徵的值在 [100000,200000] 範圍內。對於使兩個特徵同等重要的模型,第一個特徵的權重將比第二個特徵的權重大 1 億倍。巨大的權重可能會給模型帶來嚴重問題,比如存在一些異常值的時候。此外,估計各種特徵的重要性變得困難,因為權重大可能意味著特徵很重要,但也可能只是意味著其特徵值很小。

歸一化後,所有特徵的值都在相同的範圍內,通常為 [0,1] 或 [-1,1]。在這種情況下,權重將在相似的範圍內,並與每個特徵的實際重要性密切對應。

總的來說,在需要的地方使用資料歸一化將產生更好、更準確的預測。

2、認為特徵越多越好

有人可能會認為加入所有特徵是一個好主意,認為模型會自動選擇並使用最好的特徵。實際上,這種想法很難成真。

模型的特徵越多,過擬合的風險越大。即使在完全隨機的資料中,模型也能夠找到一些特徵(訊號),儘管有時較弱,有時較強。當然,隨機噪聲中沒有真實訊號。但如果我們有足夠多的噪聲列,則該模型有可能根據檢測到的故障訊號使用其中的一部分。當這種情況發生時,模型預測質量將會降低,因為它們一定程度上基於隨機噪聲。

現在有許多技術幫助我們進行特徵選擇。但你要記住,你需要解釋你擁有的每一個特徵,以及為什麼這個特徵會幫助你的模型。

3. 在需要外推的情況下,使用基於樹的模型

基於樹的模型易於使用,功能強大,這也是其受歡迎的原因。然而,在某些情況下,使用基於樹的模型可能是錯誤的。

基於樹的模型無法外推,這些模型的預測值永遠不會大於訓練資料中的最大值,而且在訓練中也永遠不會輸出比最小值更小的預測值。

在某些任務中,外推能力可能非常重要。例如,如果該模型預測股票價格,那麼未來股票價格可能會比以往任何時候都高。在這種情況下,基於樹的模型將無法直接使用,因為它們的預測幾乎會超過最高歷史價格。

這個問題有多種解決方案,一種解決方案是預測變化或差異,而不是直接預測價值。另一種解決方案是為此類任務使用不同型別的模型。線性迴歸或神經網路就可以進行外推。

4、在不需要的地方使用資料歸一化

之前文章談到了資料歸一化的必要性,但情況並非總是如此,基於樹的模型不需要資料歸一化。神經網路可能也不需要明確的歸一化,因為有些網路內部已經包含歸一化層,例如 Keras 庫的 BatchNormalization 操作。

在某些情況下,即使是線性迴歸也可能不需要資料歸一化,這是指所有特徵都已處於類似的值範圍,並且具有相同的含義。例如,如果模型適用於時間序列資料,並且所有特徵都是同一引數的歷史值。

5. 在訓練集和驗證集 / 測試集之間洩漏資訊

造成資料洩漏比人們想象的要容易,考慮以下程式碼段:

15年軟體架構師經驗總結:在ML領域,初學者踩過的5個坑

資料洩漏的示例特性

實際上,這兩種特徵(sum_feature 和 diff_feature)都不正確。它們正在洩漏資訊,因為在拆分到訓練集 / 測試集後,具有訓練資料的部分將包含來自測試的一些資訊。這將導致更高的驗證分數,但當應用於實際的資料模型時,效能會更差。

正確的方法是首先將訓練集 / 測試集分開,然後才應用特徵生成功能。通常,分別處理訓練集和測試集是一種很好的特徵工程模式。

在某些情況下,可能需要在兩者之間傳遞一些資訊 —— 例如,我們可能希望在測試集和訓練集上使用相同的 StandardScaler。

總而言之,從錯誤中吸取教訓是件好事,希望上述所提供的錯誤示例能幫助到你。

原文連結:https://towardsdatascience。com/5-typical-beginner-mistakes-in-machine-learning-3544bd4109b

THE END

轉載請聯絡本公眾號獲得授權

投稿或尋求報道:content@jiqizhixin。com

TAG: 歸一化模型特徵資料可能