提高機器學習模型準確率的八大方法

2021-09-25 00:12:57 字數 2928 閱讀 4655

想要提高模型的效能有時會是一件難度不小的事情。如果你也遇到過類似的情況,相信一定會認同我這一看法。在一一嘗試畢生所學的對策和演算法之後,依然沒能夠提高模型的準確率,這時,一種陷入困境的無助感就會湧上心頭。事實上,百分之九十的資料科學家就是在這一階段選擇了放棄。

但是,好戲這才開始!正是這一點劃清了平凡的資料科學家與非凡的資料科學家的界限。你是不是也夢想著成為一名卓越的資料科學家呢?

如果是的話,你就需要有這八種可靠的方式來重構你的模型方法了。建立可**模型的途徑有多種多樣,沒有定法,但是,如果你按照我的方式(分享如下)進行,你的模型準確率一定可以得到提高(條件是你的資料足以對其做出**)。

模型開發周期要經歷不同的階段,始於資料收集,終於模型建立。

然而,在探索資料變數關係之前,我強烈建議你最好先進行假設生成,這是**建模中最被忽視的乙個步驟。

行業資訊一直是很重要的,那麼,它們是如何發揮作用的呢?

如果後期想要構建更好的特徵,思考和獲取資訊是很有幫助的,它會使特徵不因為資料組中現有的資料而產生偏差。通常,正是這關鍵的一步使模型的準確率大大提高了。

這一階段,你要針對具體的問題採取結構化思考的方式,也就是在思考過程中考慮到某個特定問題裡所有可能的方面。

好的,那麼現在讓我們再深入一點,探尋一下提高模型準確性的有效辦法。

1.獲取更多資料

擁有更多的資料在任何時候都不壞,更多的資料就能讓其「為自己代言」,而不是僅僅依賴於作的假設和弱小的相互關係。獲取更多資料會使模型更完善更準確。

但是我很清楚,有時候對於增加資料我們也無能為力。例如:在資料科學競賽中,我們除了增加訓練資料的規模以外別無選擇。因此在進行公司專案時,只要有可能,還是建議大家盡可能獲得更多的資料,這會減少因資料組有限而帶來的麻煩。

2.處理缺失值和異常值

訓練資料中意外的缺失值和異常值通常會降低模型的準確率,或使模型產生的結果出現偏差,最終導致**不准。這是因為我們沒能夠準確地分析這一行為以及它與其他變數的關係。因此,認真對待缺失值和異常值非常重要。

請仔細看下面的圖表。它表明,如果出現缺失資料,女性打板球的機率就和男性的基本持平。但是,看一下第二行(姓名稱謂是「小姐」後的處理缺失資料),我們就可以看到女性與男性相比打板球的成功率更高。

由上,我們可以看到,缺失資料對模型準確率會產生反作用。幸運的是,我們有很多方法處理缺失值和異常值:

3.特徵工程

這一步驟有利於從現有資料中提煉出更多資訊,新的資訊會根據新特徵得以提煉出來,這些資訊更能夠解釋訓練資料的變化。因此,一定會使模型準確率更高。

特徵工程受到假設生成的重要影響,合理的假設可以產生顯著的特徵。所以,我通常建議將**時間投入於假設生成的過程。特徵工程流程可分為以下兩步:

a) 將乙個變數的範圍從原始範圍變為從零到一,這叫做資料規範化。例如:如果乙個資料組第乙個變數以公尺計算,第二個變數以厘公尺計算,第三個變數以千公尺計算,這時,我們在應用任何演算法之前,必須以同樣的單位來規範這些變數。

b) 一些演算法很適合處理正態分佈的資料,因此,我們必須消除變數的偏差值。消除偏差值的方法有取對數, 做平方根,或者取倒數。

c)有時,對數字資料進行分箱也是很奏效的方法,這種方法也能處理異常值。數值資料通過分組為箱會變得更加離散。這叫做資料的離散化。

4.特徵選擇

特徵選擇是乙個找到屬性的最佳子集的過程,它更好地解釋了目標變數與變數間的關係。

你可以基於很多類似的標準來選擇有用的特徵,例如:

5.多種演算法

使用正確的機器學習演算法是實現更高準確率的理想方法。然而,說起來容易做起來卻難。

直覺是基於經驗和不懈的實踐得到的,一些演算法相比其他的演算法會更適合某種資料組。因此,我們應該盡可能應用所有的相關模型去檢查其運**況。

6.演算法除錯

我們知道機器學習演算法主要靠引數,引數影響機器學習過程的結果。

除錯參量的目標就是發現每個引數的最佳值來提高模型的準確性。要想除錯這些引數,你就一定要深入理解引數的意義和它們對模型的影響,你可以通過一系列執行良好的模型來重複這一過程。

例如:在隨機森林演算法中,我們有很多引數例如max_features, number_trees, random_state, oob_score等等。直覺性的優化這些引數值會使模型更好、更準確。

7.整合方法

這是在資料科學競賽中最常用的方法,通過結合多種弱模型的結果以產生更佳結果。可以通過很多方式實現,如:

bagging (bootstrap aggregating)

boosting

將整合方法應用於提高模型的準確度一直都是很好的想法。原因有二:

注意:

到此,我們已經了解到一些可以提高模型準確性的一些方法。然而,模型準確率更高執行結果卻不一定更好(由於有看不見的資料點)。有時,模型準確率的提公升也會是由過度擬合產生的。

8.交叉驗證

為了找到問題的最佳答案,我們必須使用交叉驗證的方法。交叉驗證是資料建模中最重要的乙個概念。它指的是保留乙個不用於訓練的模型樣本,檢測該樣本的模型然後再最終確定模型。

9.尾註

**建模的過程很繁瑣。然而, 如果你能靈活思考,你就可以輕易超越你的對手。簡單來說,多思考這八個步驟。一旦得到資料組就遵循這些方法,你就一定會形成乙個可靠的機器學習模型。然而,只有在你能單獨掌握這些步驟之後這八個步驟才能對你有所裨益。例如:了解多種機器學習演算法才能建成乙個整合模型。

本文中,我分享了八種可提高**模型準確率的方法。這些方法廣為人知,但未必要按如上描述進行逐一使用。

(一)當然是增加訓練資料了。不過,一般能增加資料早就加了

(二)處理異常值和缺失值等

(三)進行資料的特徵分析和特徵選擇

(四)使用多種演算法,從中擇優

(五)演算法的調整,也即是調參

(六)組合多種演算法

提高機器學習模型準確率的八大方法

提公升乙個模型的表現有時很困難。如果你們曾經糾結於相似的問題,那我相信你們中很多人會同意我的看法。你會嘗試所有曾學習過的策略和演算法,但模型正確率並沒有改善。你會覺得無助和困頓,這是 90 的資料科學家開始放棄的時候。不過,這才是考驗真本領的時候 這也是普通的資料科學家跟大師級資料科學家的差距所在。...

如何提高訓練模型的準確率

1.dropout 使用dropout收斂變慢,正確率也下降,可能是我使用方法有問題。2.更換優化器,我一般選擇adam優化器,可以提高準確率,收斂速度。3.學習率 改為動態學習率下降有利於快速收斂 4.shuffle 可以明顯提高準確率。5.資料增廣 需要根據實際場景選擇合適的資料增廣方法,否則可...

機器學習模型三大評估指標 準確率 精度 召回率

二分類任務中用準確率 精度和召回率三大指標評估模型效能,在介紹這些概念之前先介紹混淆矩陣的概念。二分類的混淆矩陣包含四個值 真正例 tp 假正例 fp 真反例 tn 假反例 fn 如果將乙個資料點 為正例,但它實際是反例,那麼它就是乙個假正例。混淆矩陣 真實值positive negative 預 ...