1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        機器學習模型調優(yōu)的三大改進策略!

        共 3018字,需瀏覽 7分鐘

         ·

        2021-09-27 17:29

        轉自 | 機器之心


        無論是 Kaggle 競賽還是工業(yè)部署,機器學習模型在搭建起來之后都面臨著無盡的調優(yōu)需求。在這個過程中我們要遵循怎樣的思路呢?


        如果準確性不夠,機器學習模型在真實世界就沒有什么實用性了。對于開發(fā)者們來說,如何提高性能是非常重要的工作,本文將介紹一些常用策略,包括選擇最佳算法、調整模型設置和特征工程。

        如果你學習過正確的教程,很快就能訓練起自己的第一個機器學習模型。然而想要在第一個模型上跑出很好的效果是極難的。在模型訓練完后,我們需要花費大量時間進行調整以提高性能。不同類型的模型有不同的調優(yōu)策略,在本文中,我們將介紹模型調優(yōu)的常用策略。

        模型好不好?

        在模型調優(yōu)之前,我們首先需要知道現(xiàn)在的模型性能是好是壞。如果你不知道如何衡量模型的性能,可以參考:

        • https://www.mage.ai/blog/definitive-guide-to-accuracy-precision-recall-for-product-developers

        • https://www.mage.ai/blog/product-developers-guide-to-ml-regression-model-metrics


        每個模型都有基線指標。我們可以使用「模式類別」作為分類模型的基線指標。如果你的模型優(yōu)于基準線,那么恭喜你,這是一個好的開始。如果模型能力還沒有達到基準水平,這說明你的模型還沒有從數(shù)據(jù)中獲得有價值的見解(insight)。為了提高性能,還有很多事情要做。

        當然還有一個情況就是模型的表現(xiàn)「太過優(yōu)秀」了,比如 99% 的準確率和 99% 的召回率。這并不是什么好事,可能表示你的模型存在一定的問題。一個可能的原因是「數(shù)據(jù)泄露」,我們將在「消除數(shù)據(jù)泄漏功能」部分討論如何解決此問題。

        改進模型的策略

        一般來說,模型調優(yōu)有 3 個方向:選擇更好的算法,調優(yōu)模型參數(shù),改進數(shù)據(jù)。

        比較不同算法

        比較多個算法是提高模型性能的一個簡單的想法,不同的算法適合不同類型的數(shù)據(jù)集,我們可以一起訓練它們,找到表現(xiàn)最好的那個。例如對于分類模型,我們可以嘗試邏輯回歸、支持向量機、XGBoost、神經網(wǎng)絡等。


        圖源:https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html

        超參數(shù)調優(yōu)

        超參數(shù)調優(yōu)是一種常用的模型調優(yōu)方法。在機器學習模型中,學習過程開始之前需要選擇的一些參數(shù)被稱為超參數(shù)。比如決策樹允許的最大深度,以及隨機森林中包含的樹的數(shù)量。超參數(shù)明顯影響學習過程的結果。調整超參數(shù)可以讓我們在學習過程中很快獲得最佳結果。


        我們非常建議使用公開可用的庫幫助進行超參數(shù)調整,例如 optuna。

        用召回率換精度

        對于分類模型,我們通常用 2 個指標來衡量模型的性能:精度和召回率。根據(jù)問題的不同,你可能需要優(yōu)化召回率或精度中的一個。有一種快速的方法來調整模型以在兩個指標之間進行權衡。分類模型預測標簽類別的概率,因此我們可以簡單地修改概率閾值來修改召回率和精度。

        例如,如果我們建立一個模型來預測乘客在泰坦尼克號沉船事故中是否生還,該模型可以預測乘客生還或死亡的概率。果概率高于 50%,模型將預測乘客會幸存,反之乘客死亡。如果我們想要更高的精度,我們可以增加概率閾值。然后,該模型將預測較少的乘客幸存,但會更精確。


        特征工程

        除了選擇最佳算法和調優(yōu)參數(shù)外,我們還可以從現(xiàn)有數(shù)據(jù)中生成更多特征,這被稱為特征工程。

        創(chuàng)建新的特征

        構建新的特征需要一定的領域知識和創(chuàng)造力。這是一個構建新特征的例子:

        • 創(chuàng)建一個功能來計算文本中的字母數(shù)。

        • 創(chuàng)建一個功能來計算文本中的單詞數(shù)。

        • 創(chuàng)建一個理解文本含義的特征(例如詞嵌入)。

        • 過去 7 天、30 天或 90 天的聚合用戶事件計數(shù)。

        • 從日期或時間戳特征中提取「日」、「月」、「年」和「假期后的天數(shù)」等特征。


        使用公共數(shù)據(jù)集來增加訓練數(shù)據(jù)

        當你窮盡從現(xiàn)有數(shù)據(jù)集中生成新特征的想法時,另一個想法是從公共數(shù)據(jù)集中獲取特征。假如你正在構建一個用來預測用戶是否會轉換為會員的模型,可用的數(shù)據(jù)集中卻沒有太多的用戶信息,只有「電子郵件」和「公司」屬性。那么你就可以從第三方獲取用戶和公司以外的數(shù)據(jù),如用戶地址、用戶年齡、公司規(guī)模等等,這些數(shù)據(jù)可以用于豐富你的訓練數(shù)據(jù)。


        特征選擇

        添加更多特征并不總是好的。去除不相關和嘈雜的特征有助于減少模型訓練時間并提高模型性能。scikit-learn 中有多種特征選擇方法可以用來去除不相關的特征。

        刪除數(shù)據(jù)泄露(data leakage)特征

        正如上文提到的,一種場景是模型的性能「非常好」。但是在部署模型并在生產中使用這些模型時,性能會變得很差。造成這個問題的原因可能是「數(shù)據(jù)泄露」,這是模型訓練的一個常見陷阱。數(shù)據(jù)泄露是指使用一些發(fā)生在目標變量之后的特征,并包含目標變量的信息。然而現(xiàn)實生活中的預測不會有那些數(shù)據(jù)泄露特征。

        例如想要預測用戶是否會打開電子郵件,特征可能就包括用戶是否點擊了電子郵件。模型一旦看到用戶點擊了它,那么就預測用戶 100% 會打開它。然而在現(xiàn)實生活中,我們無法知道是否有人在打開電子郵件之前沒有點擊它。

        我們可以使用 SHAP 值 debug 數(shù)據(jù)泄露問題,用 SHAP 庫繪制圖表可以顯示出影響最大的特征以及它們如何定向影響模型的輸出。如果特征與目標變量高度相關并且權重非常高,那么它們可能是數(shù)據(jù)泄露特征,我們可以將它們從訓練數(shù)據(jù)中刪除。


        更多數(shù)據(jù)

        獲取更多訓練數(shù)據(jù)是提高模型性能一種明顯而有效的方法。更多的訓練數(shù)據(jù)能夠讓模型找到更多見解,并獲得更高的準確率。



        那么,什么時候該停止調優(yōu)了?

        你需要知道如何開始,也需要知道在何時停止,很多時候怎樣才算足夠是一個難以回答的問題。模型的提升仿佛是無限的,沒有終點:總會有新想法帶來新數(shù)據(jù)、創(chuàng)建新功能或算法的新調整。首先,最低限度的標準是模型性能至少應優(yōu)于基線指標。一旦滿足了最低標準,我們應該采用以下流程來改進模型并判斷何時停止:

        • 嘗試所有改進模型的策略。

        • 將模型性能與你必須驗證的其他一些指標進行比較,以驗證模型是否有意義。

        • 在進行了幾輪模型調整后,評估一下繼續(xù)修改和性能提升百分點之間的性價比。

        • 如果模型表現(xiàn)良好,并且在嘗試了一些想法后幾乎沒有繼續(xù)改進,請將模型部署到生產過程中并測量實際性能。

        • 如果真實條件下的性能和測試環(huán)境中類似,那你的模型就算可以用了。如果生產性能比訓練中的性能差,則說明訓練中存在一些問題,這可能是因為過擬合或者數(shù)據(jù)泄露。這意味著還需要重新調整模型。


        結論

        模型調優(yōu)是一個漫長而復雜的過程,包含模型的重新訓練、新想法的試驗、效果評估和指標對比。通過本文介紹的思路,希望你可以將自己的機器學習技術提升到更高的水平。

        原文鏈接:
        https://m.mage.ai/how-to-improve-the-performance-of-a-machine-learning-ml-model-409b05b2a5f

        往期精彩:

         時隔一年!深度學習語義分割理論與代碼實踐指南.pdf第二版來了!

         我工作第五年的學習與讀書之法

        瀏覽 60
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男女色情18岁网站在线观看 | 国产精品一区在线观看 | 一本色道加勒比精品一区二区 | chinese搓澡工gayxvideos | 日韩成人AV电影网 | 久久人妻无码毛片A片麻豆 | 日韩成人高清 | 男女在线观看 | 爱爱内含光无删减床戏 | 午夜福利一二三区 |