机器学习入门系列(2)--机器学习概览(下)
這是本系列的第二篇,也是機器學習概覽的下半部分,主要內(nèi)容如下所示:
文章目錄
- 1. 機器學習的主要挑戰(zhàn)
- 1.1 訓練數(shù)據(jù)量不足
- 1.2 沒有代表性的訓練數(shù)據(jù)
- 1.3 低質(zhì)量的數(shù)據(jù)
- 1.4 不相關(guān)的特征
- 1.5 過擬合
- 1.6 欠擬合
- 2. 測試和評估
- 3. 小結(jié)
1. 機器學習的主要挑戰(zhàn)
在介紹基于模型學習算法的流程的時候,對于預測結(jié)果不好的問題分析,主要說了是數(shù)據(jù)問題還是模型問題,這同時也就是機器學習的效果不好的兩個主要原因,即錯誤的數(shù)據(jù)和錯誤的算法。
1.1 訓練數(shù)據(jù)量不足
第一個問題就是訓練數(shù)據(jù)的數(shù)量問題,這是非常重要的問題。
因為即使是簡單的問題,一般也需要數(shù)千的樣本,這還是因為簡單的問題一般采用簡單的算法就可以解決,對于復雜的圖像或語音問題,通常需要數(shù)百萬的樣本,特別是如果采用現(xiàn)在非常熱門的深度學習算法,比如卷積神經(jīng)網(wǎng)絡(luò)模型,這些復雜的模型如果沒有足夠的數(shù)據(jù)量支持,非常容易陷入過擬合的情況。
實際上更多數(shù)量的訓練集也是為了獲得更有代表性的數(shù)據(jù),能夠?qū)W習到這類數(shù)據(jù)的所有特征。
但是,應(yīng)該注意到,小型和中型的數(shù)據(jù)集仍然是非常常見的,獲得額外的訓練數(shù)據(jù)并不總是輕易和廉價的,所以不要拋棄算法。
1.2 沒有代表性的訓練數(shù)據(jù)
無論采用基于實例還是基于模型的學習,讓訓練數(shù)據(jù)對新數(shù)據(jù)具有代表性是非常重要的。如果訓練集沒有代表性,那么訓練得到的模型就是不可能得到準確性的模型,比如人臉識別中,模型沒有學習到某個人最明顯的代表性的特征,比如高鼻梁或者沒有眉毛等突出特征,那么模型對這個人的識別率就不會很高。
使用具有代表性的訓練集對于推廣到新案例是非常重要的。但是做起來比說起來要難:如果樣本太小,就會有樣本噪聲(即會有一定概率包含沒有代表性的數(shù)據(jù)),但是即使是非常大的樣本也可能沒有代表性,如果取樣方法錯誤的話。這叫做樣本偏差。
1.3 低質(zhì)量的數(shù)據(jù)
低質(zhì)量的數(shù)據(jù)指的是數(shù)據(jù)有錯誤、帶有過多噪聲或者是出現(xiàn)異常值等的數(shù)據(jù),這種數(shù)據(jù)會影響系統(tǒng)整體的性能,因此,數(shù)據(jù)清洗對于構(gòu)建一個機器學習系統(tǒng)或者一個機器學習項目來說都是必不可少的步驟。
對于這些低質(zhì)量的數(shù)據(jù),通常可以按照如下做法處理:
- 如果一些實例是明顯的異常值,最好刪掉它們或嘗試手工修改錯誤;
- 如果一些實例缺少特征(比如,你的 5% 的顧客沒有說明年齡),你必須決定是否忽略這個屬性、忽略這些實例、填入缺失值(比如,年齡中位數(shù)),或者訓練一個含有這個特征的模型和一個不含有這個特征的模型,等等。
1.4 不相關(guān)的特征
不相關(guān)的特征對于整個機器學習系統(tǒng)是有著反作用的效果,訓練數(shù)據(jù)必須包含足夠多的相關(guān)特征、非相關(guān)特征不多的情況下,才能訓練出一個性能不錯的模型。機器學習項目成功的關(guān)鍵之一是用好的特征進行訓練。這個過程稱作特征工程,包括:
- 特征選擇:在所有存在的特征中選取最有用的特征進行訓練。
- 特征提取:組合存在的特征,生成一個更有用的特征(如前面看到的,可以使用降維算法)。
- 收集新數(shù)據(jù)創(chuàng)建新特征。
1.5 過擬合
上述四種情況都是壞數(shù)據(jù)的情況,接下來是兩種算法問題,也是機器學習最常見的兩種算法方面的問題,過擬合和欠擬合。
過擬合就是指算法模型在訓練集上的性能非常好,但是泛化能力很差,即在測試集上的效果卻很糟糕的情況。比如下圖,采用一個高階多項式回歸模型來預測生活滿意度和人均 GDP 的關(guān)系,很明顯看出來,這個模型過擬合了訓練數(shù)據(jù),其預測效果并不會達到在訓練數(shù)據(jù)上這么好的效果。
通常對于比較復雜的模型,比如深度神經(jīng)網(wǎng)絡(luò),它能夠檢測和識別到數(shù)據(jù)中比較細微的規(guī)律和特征,但是如果訓練集包含噪聲,或者訓練集數(shù)量太少(數(shù)量太少會引入樣本噪聲),這種情況下,模型同樣會學習這種噪聲,從而導致模型的泛化能力的下降。
一般解決過擬合的方法有:
- 簡化模型,這包括了采用簡單點的模型、減少特征數(shù)量以及限制模型,即采用正則化;
- 增加訓練數(shù)據(jù)
- 減小訓練數(shù)據(jù)的噪聲,即數(shù)據(jù)清洗,比如修正數(shù)據(jù)錯誤和去除異常值等
其中正則化方法是比較常用的方法,它的作用就是限制模型,不讓模型過于復雜,從而降低過擬合的風險或者是緩和過擬合的程度。常用的正則化方法是 L2 和 L1 正則化。正則化方法通常會采用一個超參數(shù)來控制其限制模型的強度。超參數(shù)是一個學習算法的參數(shù)(而不是模型的)。這樣,它是不會被學習算法本身影響的,它優(yōu)于訓練,在訓練中是保持不變的。如何調(diào)節(jié)超參數(shù)也是構(gòu)建一個機器學習算法模型非常重要的一個步驟,也是讓性能能夠進一步提升的做法。
1.6 欠擬合
欠擬合和過擬合剛好相反,它就是模型的性能非常差,在訓練數(shù)據(jù)和測試數(shù)據(jù)上的性能都不好。
通常也是因為模型過于簡單,沒有能夠很好學習到數(shù)據(jù)的有效的相關(guān)的特征,解決方法有:
- 選擇一個更強大的模型,帶有更多參數(shù)
- 用更好的特征訓練學習算法(特征工程)
- 減小對模型的限制(比如,減小正則化超參數(shù))
2. 測試和評估
當訓練好一個機器學習模型后,接下來就需要對模型進行預測和評估,判斷得到的模型是否可用,是否還能進行提升,并進行錯誤分析等操作。
一般在訓練模型前,我們會將數(shù)據(jù)集分成兩個集合,分別是訓練集和測試集,通常 8:2 的比例,也就是 80% 的數(shù)據(jù)作為訓練集,剩余是測試集。然后采用訓練集訓練模型,在測試集上用按照學習的問題采用對應(yīng)評估指標評估模型的性能,比如分類問題,一般就是采用分類的準確率或者錯誤率作為評估的標準。
但這種劃分數(shù)據(jù)集的方法,存在一個問題,就是如果需要調(diào)節(jié)超參數(shù),比如對于正則化的超參數(shù)、學習率等,繼續(xù)采用測試集來進行評估不同超參數(shù)對模型性能的影響,這會導致最后在測試集上測試得到性能最好的模型,實際上是過擬合了測試集,那么模型的泛化能力也不會太好。
所以,為了解決這個問題,我們還需要為調(diào)節(jié)超參數(shù)劃分一個專門的數(shù)據(jù)集,測試集應(yīng)該是用于測試最終得到的模型的性能。因此,我們再劃分一個叫做驗證集的數(shù)據(jù)集。
一種做法是可以將所有數(shù)據(jù)按照一定比例劃分為訓練集、驗證集和測試集,比如按照 6:2:2 的比例劃分;當然更通常的做法是采用交叉驗證:訓練集分成互補的子集,每個模型用不同的子集訓練,再用剩下的子集驗證。一旦確定模型類型和超參數(shù),最終的模型使用這些超參數(shù)和全部的訓練集進行訓練,用測試集得到推廣誤差率。
3. 小結(jié)
最后我們總結(jié)下:
- 數(shù)據(jù)量太少
- 數(shù)據(jù)問題,包括沒有代表性數(shù)據(jù)和質(zhì)量差
- 不相關(guān)特征
- 模型過擬合或者欠擬合
- 簡化模型,包括采用更簡單的模型和更少的參數(shù)
- 正則化方法降低模型的復雜度
- 收集或者采用更大的數(shù)據(jù)集
- 數(shù)據(jù)清洗,去除噪聲和異常值等
- 采用更強大的模型,包含更多的參數(shù)和學習能力
- 降低正則化的強度
- 使用更好的特征提取方法,即使用或者改善特征工程的工作
以上就是本文的主要內(nèi)容和總結(jié),歡迎關(guān)注我的微信公眾號–機器學習與計算機視覺或者掃描下方的二維碼,和我分享你的建議和看法,指正文章中可能存在的錯誤,大家一起交流,學習和進步!
總結(jié)
以上是生活随笔為你收集整理的机器学习入门系列(2)--机器学习概览(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式:开闭原则
- 下一篇: std::function和std::b