改善機器學習模型的七種方法
譯文譯者 | 布加迪
審校 | 重樓
你是否竭力在測試階段改進模型性能?即使你改進了模型,由于未知的原因,它也會在生產環境中失靈。如果你遇到類似的問題,那么這篇文章完全適合你。
本文將分享7個技巧,使你的模型準確而穩定。如果遵循這些技巧,你可以確保模型即使面對未見過的數據也有更好的表現。
為什么要聽我的建議?我已經在這個領域工作了近四年,參加過80多場機器學習比賽,并參與了幾個端到端機器學習項目。多年來,我還幫助許多專家構建了更好、更可靠的模型。
1. 清理數據
清理數據是最重要的部分。你需要填寫缺失值、處理異常值、規范數據,并確保數據的有效性。有時,清理Python腳本無法真正起到作用。你必須逐個檢查每個樣本,以確保沒有問題。我知道這會花費你很多時間,但相信我,清理數據是機器學習生態系統中最重要的部分。
比如說,當我在訓練一個自動語音識別模型時,發現數據集中有多個問題無法通過簡單地刪除字符來解決。我不得不聽音頻,重寫準確的轉錄。有一些轉錄內容很模糊,沒有意義。
2. 添加更多數據
增加數據量通常可以提高模型性能。為訓練集添加更相關、更多樣的數據可以幫助模型學習更多模式,并做出更準確的預測。如果你的模型缺乏多樣性,它可能面對多數群體表現良好,但面對少數群體表現不佳。
許多數據科學家現正在使用生成式對抗網絡(GAN)來生成更多樣化的數據集。為此,他們使用現有數據訓練GAN模型,然后使用該模型生成合成數據集。
3. 特征工程
特征工程是指利用現有數據創建新特征,另外刪除對模型決策貢獻較小的不必要特征。這為模型提供了更相關的信息來進行預測。
你需要執行SHAP分析,查看特征重要性分析,并確定哪些特征對決策過程很重要。然后,它們可以用來創建新的特征,并從數據集刪除不相關的特征。這個過程需要對業務用例和每個特征有一番透徹的了解。如果你不了解這些特征以及它們對業務的用處,將無異于蒙眼上路。
4. 交叉驗證
交叉驗證是一種用于評估模型跨多個數據子集的性能的技術,可以減小過擬合風險,并對其泛化能力提供一番更可靠的估計。這將為你提供模型是否足夠穩定方面的信息。
計算整個測試集的準確性可能無法提供關于模型性能的完整信息。比如說,測試集的前五分之一可能顯示100%的準確性,而后五分之一可能表現不佳,只有50%的準確性。盡管如此,總體準確率可能仍在85%左右。這種差異表明模型是不穩定的,需要更干凈、更多樣的數據進行再訓練。
因此,我建議使用交叉驗證,為其提供你想要用來測試模型的各種度量指標,而不是執行簡單的模型評估。
5. 超參數優化
使用默認參數訓練模型可能看起來簡單而快速,但是你錯過了性能的提升,因為在大多數情況下,你的模型沒有經過優化。為了在測試期間提高模型的性能,強烈建議對機器學習算法徹底執行超參數優化,并保存這些參數,以便下次可以使用它們來訓練或重新訓練模型。
超參數調優需要調整外部配置以優化模型性能。在過擬合和欠擬合之間找到適當的平衡對于提高模型的準確性和可靠性至關重要。它有時可以將模型的準確率從85%提高到92%,這個幅度在機器學習領域已相當大。
6. 試驗不同算法
模型選擇和試驗各種算法對于找到特定數據的最佳擬合至關重要。不要僅限于只使用簡單的算法來處理表格數據。如果你的數據有多個特征和1萬個樣本,你應該考慮神經網絡。有時,連邏輯回歸也可以為文本分類提供驚人的效果,這是借助LSTM等深度學習模型所無法實現的。
從簡單的算法開始,然后慢慢地試用高級算法,以獲得更好的性能。
7. 集成學習
集成學習是指合并多個模型以提高整體預測性能。構建模型集合,每個模型都有自己的優勢,可以帶來更穩定、更準確的模型。
合并這些模型常常給我帶來了更好的結果,有時讓我在機器學習比賽中進入前10名。不要拋棄表現不佳的機型;如果將它們與一組高性能模型相結合,你的整體準確性將會得到提高。
集成學習、清理數據集和特征工程是我贏得比賽和實現高性能的三個最佳策略,哪怕是面對未見過的數據集。
結語
還有更多的技巧只適用于某些類型的機器學習領域。比如在計算機視覺中,我們需要關注圖像增強、模型架構、預處理技術和遷移學習。然而,上面討論的這七個技巧:清理數據、添加更多數據、特征工程、交叉驗證、超參數優化、試驗不同的算法和集成學習是普遍適用的,對所有機器學習模型都有益。
如果運用這些策略,你可以顯著提高預測模型的準確性、可靠性和穩健性,從而獲得更好的洞察力和更明智的決策。
原文標題:7 Ways to Improve Your Machine Learning Models,作者:Abid Ali Awan