當前位置:
首頁 > 最新 > 如何解決機器學習中出現的模型成績不匹配問題

如何解決機器學習中出現的模型成績不匹配問題

AiTechYun

編輯:chux

如果機器學習中模型測試結果比訓練結果更差時該怎麼做。

評估機器學習模型的程序是,首先基於機器學習訓練數據對其進行調試和評估,然後在測試資料庫中驗證模型是否具有良好的技能。通常,在使用訓練數據集評估模型後,你會對得到的成績非常滿意,但用測試數據集評估模型時成績不佳。在這篇文章中,你會了解到當這個常見問題出現時,你需要考慮的技術和問題。

讀完文章你將了解這些:

在評估機器學習演算法時,可能出現的模型成績不匹配的問題;

導致過度擬合、代表性差的數據樣本和隨機演算法的原因;

在一開始就強化你的測試工具以避免發生問題的方法。

讓我們開始吧。

概要

這篇文章分為4部分,分別是:

模型評估

模型成績不匹配

可能的原因和補救措施

更穩健的測試工具

模型評估

當為預測建模問題開發模型時,你需要一個測試工具。測試工具定義了如何使用來自定義域的數據樣本,以評估和比較預測建模問題的候選模型。有很多方法可以搭建測試工具,但並沒有適用於所有項目的最佳方法。一種比較流行的方法是使用一部分數據來對模型進行調試,另一部分用來客觀評估用樣本外數據調試過的模型的技能。

這樣,數據樣本就被分為訓練數據集和測試數據集。機器學習模型基於訓練數據集進行評估,並用重新採樣的方法,如k摺疊交叉驗證(k-fold cross-validation)。並且數據集本身可能被進一步劃分為用於調試模型的超參數的驗證性數據集。測試數據集被保留下來,用於評估和比較調試過的模型。

模型成績不匹配

重新採樣方法將通過使用訓練數據集,在不可見的數據上為你的模型技能進行評估。而測試數據集提供了第二個數據點,以及預估模型的表現會有多好的客觀理念,並證實了預估的模型技能。

如果用機器學習訓練數據集預估的模型技能與機器學習測試數據集上的模型技能不匹配怎麼辦?其實分數一般不會匹配。我們確實預料到會有一些差異,因為在超參數調試情況下,訓練數據集的一些輕微過擬合是不可避免的,這使得訓練分數更可信。

但如果差別大得令人擔憂呢?

你該相信哪一個分數?

還可以使用測試數據集來比較模型嗎?

是不是模型調試無效?

在應用機器學習中,這是具有挑戰性且非常普遍的情況。我們可以把這個問題稱為模型成績不匹配問題。注意:模型成績存在巨大差異的想法與你所選擇的成績測量方法、數據集和模型有關。一般我們不能客觀談論所有差異,你必須自己解釋相對差異。

可能的原因和補救方法

有許多可能的原因導致機器學習模型成績不匹配問題。你最終的目標是要擁有一個測試工具,可以幫你做出正確的選擇,決定將哪種模型和模型配置用作最終模型。在本節中,我們將討論一些可能的原因和診斷方法,以及你可以用來研究這個問題的技術。

讓我們來看看三個主要領域:模型過擬合,數據樣本的質量,以及學習演算法的隨機性。

模型過擬合

最常見的原因是你過擬合了機器學習訓練數據。你已經發現了一個模型、一組模型超參數、數據視圖,或者這些元素的組合,而所有這些恰巧基於訓練數據集給出了樂觀的技能估計。某種程度上,無論是使用k-fold交叉驗證,還是使用單獨的數據集的調試模型都會有所幫助。儘管如此,仍有可能繼續施壓導致訓練數據集過擬合。如果是這種情況,測試技能可能會更好地代表所選模型和配置的真正技能。

一種簡明(但不簡單)的方法可以診斷出訓練數據集是否過擬合,那就是獲得機器學習模型技能的另一個數據點,並在另一組數據上評估所選模型。例如下列一些嘗試:

在測試數據集上嘗試對模型評估進行k摺疊交叉驗證。

在訓練數據集上嘗試擬合模型,並基於測試數據和新的數據樣本進行評估。

如果你發現過擬合了:

也許你可以直接廢棄你目前的訓練資料庫,重建新訓練資料庫。

或者你可以採取溫和的手段,再次將你的樣本分成訓練或測試數據,以得到新的訓練資料庫。

我的想法是如果你對目前得到的結果存疑,就應該重新考慮。尤其是那些你可能花了很久調試的地方。過擬合可能是造成模型分數矛盾的最終原因,儘管它可能不是最先出現問題的地方。

不具代表性的數據樣本

你的機器學習訓練或測試資料庫很可能有來自定義域的不具代表性的樣本,這意味著樣本容量太小,或者樣本中的示例無法涵蓋在範圍更廣的定義域中觀察到的情況。如果你看到了雜訊模型的成績結果,那麼這一點是顯而易見的。例如:

交叉驗證分數差異大。

基於測試數據集的相似模型類型差異大。

另外,你會發現機器學習訓練和測試成績之間的差異。另一個方法是檢驗訓練和測試數據集中的每個變數的概括統計量,最好在交叉驗證摺疊中檢測。你要找出樣本平均數和標準差的巨大差異。

補救措施通常是獲得來自定義域更大、更有代表性的數據樣本。另外,在準備和分割數據樣本時使用更有區別性的方法。可以考慮分層的k摺疊交叉驗證,但應用於輸入變數時應盡量保持實值變數的平均數和標準差,並控制分類變數的分布。

當我看到項目中出現了過擬合,一般是因為測試工具沒有發揮它本該有的穩健性,而不是因為用了爬山法處理測試數據導致的。

隨機演算法

由於演算法的隨機性,你可能會發現機器學習模型分數之間存在差異。很多機器學習演算法都涉及到一個隨機成分。例如,神經網路中隨機的初始權值,數據改組,隨機梯度下降中的梯度輪流更新。這意味著,每當同樣的演算法在相同的數據上運行時,就會使用不同的隨機數序列,反過來說,不同的技能就會產生不同的模型。

在交叉驗證的模型技能得分的差異中能發現這個問題,看起來像是不具代表性的數據樣本導致的。這裡的不同點在於,通過重複模型評估過程(例如交叉驗證),可以區分開這種差異,從而控制訓練模型中存在的隨機性。這通常被稱為多次重複k-摺疊交叉驗證,當資源允許時,可被用於神經網路和隨機優化演算法。

更穩健的測試工具

可以通過設計穩健的機器學習測試工具來解決這些問題,然後收集證據證明你的測試工具是穩健的。這可能需要在真正開始評估模型之前進行一些測試,比如:

對訓練或測試分組數據的敏感性分析

對交叉驗證的k值的敏感性分析

對給定模型表現的敏感性分析

對重複次數的敏感性分析

你要找到:

經過交叉驗證測試,評估分數之間差異小且平均數一致。

通過訓練和測試數據集分別得到模型得分,其總體平均數相關。

如有需要,可使用標準誤和顯著性檢驗之類的統計工具。一般在這樣的測試中,用新式、未調諧的模型表現較佳,比如隨機森林法(random forest)。

如果你在機器學習訓練和測試集的技能得分之間發現了差異,而且這種差異具有一致性,那就沒有問題。你知道接下來會發生什麼。

如果你在一個給定的測試中測量平均技能得分的差異,你就可以用誤差條來解釋結果。

我想說的重點是,如果沒有穩健的測試工具,得到的結果將是一團糟。你無法有效解釋結果。提交用不穩定的測試工具得出的結果,將會有很大風險(如果你是學者,那麼將會成為學術造假)。在應用機器學習數值領域中,具有復現性和穩健性是相當重要的。最後要提醒的是,避免過度使用測試數據集,一旦你有了強有力的證據表明你的測試工具是穩健的,直到最後的模型選擇結束前,都不要再修改測試數據集。

總結

在這篇文章中,你了解了機器學習模型成績不匹配問題,即訓練和測試數據集之間模型成績存在很大差異,另外就是判斷和解決這個問題的技術。

具體一點,你學會了以下內容:

在評估機器學習演算法時,可能會出現模型成績不匹配問題。

過度擬合的、代表性不足的數據樣本和隨機演算法的成因。

在一開始就強化你的測試工具以避免發生問題的方法。

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

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


請您繼續閱讀更多來自 機器學習 的精彩文章:

人類會始終主導機器學習
如何快速應用機器學習技術?#數據視野

TAG:機器學習 |