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