五、模型融合与调优
- 一、模型選擇
- 1.1 模型的選擇
- 1.2 超參數的選擇
- 二、模型效果優化
- 2.1 不同模型狀態的處理
- 2.2 線性模型的權重分析
- 2.3 Bad-case分析
- 2.4 模型融合
- 一、模型選擇
一、模型選擇
1.1 模型的選擇
確定場景,劃分為模型能解決的問題
根據樣本大小確定模型,不是所有的樣本都可以用DL/復雜模型,需要人工總結小樣本數據的規律或采集更多的數據
注意數據形態,包括語音、圖像、文本等
1.2 超參數的選擇
確定了某類模型之后,模型中可調的參數會影響模型的效果,可以通過交叉驗證的方法來確定好的參數。
數據集被分為三部分:訓練集、驗證集、測試集
訓練集:模型的訓練
驗證集:參數/模型的選擇
測試集:模型效果的評估
交叉驗證:基本思想就是將原始數據(dataset)進行分組,一部分做為訓練集來訓練模型,另一部分做為測試集來評價模型
作用:
- 用于評估模型的預測性能,尤其是訓練好的模型在新數據上的表現,可以在一定程度上減小過擬合
- 從有限的數據中獲取盡可能多的有效信息
不同方法:
留出法:隨機將數據分為三組即可
不過如果只做一次分割,它對訓練集、驗證集和測試集的樣本數比例,還有分割后的數據和原始數據集的分布是否相同等因素比較敏感,不同的劃分會得到不同的最優模型,而且分成三個集合后,用于訓練的數據更少了。
k折交叉驗證:將訓練數據隨機分成k份,每次選擇一份做驗證集,其余k-1份做訓練集,重復k次,得到k個驗證結果,取平均最為評估效果的標準。一般建議k=10
通過對 k 個不同分組訓練的結果進行平均來減少方差,因此模型的性能對數據的劃分就不那么敏感。
參數的選擇
K較小(比如2,也就是用一半的數據來訓練,此時數據太少,模型復雜,會過擬合)的情況時偏差較低,方差較高,過擬合;K較高的情況時,偏差較高,方差較低,欠擬合;
最佳的模型參數取在中間位置,該情況下,使得偏置和方差得以平衡,模型針對于非樣本數據的泛化能力是最佳的。
模型的選擇
對不同的模型進行k折交叉驗證,選擇結果較好的模型。
特征的選擇
通過交叉驗證來進行特征的選擇,對比不同的特征組合對于模型的預測效果
留一法:留一法就是每次只留下一個樣本作為測試集,如果有m個樣本,則要進行 m 次訓練和預測。
BoostStrapping法:即在含有 m 個樣本的數據集中,每次隨機挑選一個樣本,再放回到數據集中,再隨機挑選一個樣本,這樣有放回地進行抽樣 m 次,組成了新的數據集作為訓練集。
工業界其實利用隨機切分較多,因為工業的數據量很大。
二、模型效果優化
2.1 不同模型狀態的處理
方差和偏差的權衡,也就是過擬合和欠擬合的權衡
方差:形容一個模型的穩定性的,也就是參數分布的離散情況,如果參數分布很離散,說明模型很不穩定,參數幅值波動很大,會發生過擬合。
偏差:形容預測結果和真實結果的偏離程度的,如果偏差太大說明預測結果和真實結果差距很大,即模型的學習能力太弱,會發生欠擬合。
如何降低方差:對模型降維、增加樣本輸入、正則化
如何降低偏差:對模型升維、增加特征維度
模型狀態驗證工具——學習曲線(learning curve)
學習曲線:訓練樣本數——準確率的關系
簡述:
隨著訓練樣本數的增大,訓練集的準確率會降低,而驗證集的準確率會增大。
因為如果是10個數據,模型將其記住就好了,不用學習底層規律,但驗證集的準確率會很低;
如果有100個數據,模型稍微學到了一些規律,但是不全面,此時訓練集的準確率會降低,但是驗證集的準確率會有升高;
如果有10000個數據,模型基本上學到了樣本和標簽間的規律,訓練集準確率還會下降,但是驗證集的準確率會上升;
如果訓練數據達到了10w個,模型的訓練準確率降低的空間已經很小了,正常情況下,訓練數據集和驗證數據集的準確率會很接近。
在高bias情況下如何處理:
之所以出現高偏差是因為模型太過簡單,沒有能力學習到樣本的底層規律,所以訓練集和驗證集的準確率都會很低。
在高variance情況下如何處理:
之所以會出現高方差是因為,模型太過復雜,學習太過,在訓練集的準確率較好,但是在驗證集上的泛化能力較差,驗證集的準確率較低,兩個準確率相差較大。
2.2 線性模型的權重分析
2.3 Bad-case分析
2.4 模型融合
模型融合:把獨立的學習器組合起來的結果
如果獨立的學習器為同質,稱為基學習器(都為SVM或都為LR)
如果獨立的學習器為異質,稱為組合學習器(將SVM+LR組合)
為什么要進行模型融合:
將幾個獨立學習器的結果求平均,在統計、計算效率、性能表現上都有較好的效果。
統計上:假設空間中幾個學習器的假設函數的平均更接近真實的假設f
計算上:迭代求解可能落入局部最優解,但是多個局部最優解的平均更接近全局最優解
損失函數有可能不是光滑的,不同的初始點和學習率可能有不同的局部最小,將其平均能得到更好的。
性能表現上:真實的假設函數f可能不在已知的假設空間H內,學習器的平均更可能接近H外的真實假設H
如果模型本身就不具備表達場景的能力,那么無論怎么搜索H都不會搜到。
模型融合的例子:
1、Bagging
2、Stacking
- 將訓練集劃分為兩個正交集D1(x,y),D2(x’,y’)
- 利用D1來學習三個模型,假設分別為LR,SVM,DT
- 利用第二份數據D2的x分別作為第一層學到的三個模型的輸入,得到預測值y1,y2,y3,將其組合可以得到預估的輸出y^y^
- 已有真實輸出的標簽y’,可以學習到如何從預估的y^y^,來學習如何得到真實的y
第一層的數據:為了訓練得到三個模型
第二層的數據:為了用三個模型來預測輸出,得到的輸入送入線性分類器得到最終的預估y^y^,再不斷的訓練模型使得模型的預估和真實的y′y′最接近
之所以將數據分成兩組,是為了避免過擬合
3、Adaboost
4、Gradient Boosting Tree
解決回歸問題
通過不斷的擬合預測和真實的殘差來學習,也就是每次迭代盡量擬合損失函數在當前情況下的負梯度,構建的樹是能使得損失函數降低最多的學習器,來解決回歸問題,調整后也能解決分類問題。
總結
- 上一篇: 显示面板价格持续下降,京东方 2022
- 下一篇: 特斯拉 FSD 被迫走 Waymo 路线