机器学习模型 知乎_机器学习-模型选择与评价
交叉驗證
首先選擇模型最簡單的方法就是,利用每一種機器學習算法(邏輯回歸、SVM、線性回歸等)計算訓練集的損失值,然后選擇其中損失值最小的模型,但是這樣是不合理的,因為當訓練集不夠、特征過多時容易過擬合,那么訓練集的損失值就會不斷變小,但是此時針對測試集可能損失值很高,所以訓練集上的損失值是無法衡量模型的好壞的。
我們的辦法就是增加交叉驗證集,即將所有數據分為三部分:訓練集、交叉驗證集和測試集。交叉驗證集不僅在選擇模型時有用,在超參數選擇、正則項參數
和評價模型中也很有用。
簡單交叉驗證利用訓練集訓練模型
利用交叉驗證集在每一種模型上測試并計算損失值
選擇損失值最小的模型
但是簡單交叉驗證存在一個問題,就是因為增加了驗證集后,導致訓練集的數據更少了,這樣模型可能無法更好地的體現整體數據,所以提出以下交叉驗證的方法。
k-折疊交叉驗證假設訓練集為
,將訓練集等分為
份:
然后每次從集合中拿出
份進行訓練
利用集合中剩下的那一份來進行測試并計算損失值
最后得到
次測試得到的損失值,并選擇平均損失值最小的模型
Bias與Variance,欠擬合與過擬合
如下圖,針對同一組數據的三種模型,可以看出來中間的模型可以更好的表現數據,其中左邊的模型一般稱為欠擬合,右邊的模型稱為過擬合。
欠擬合一般表示模型對數據的表現能力不足,通常是模型的復雜度不夠,并且Bias高,訓練集的損失值高,測試集的損失值也高。
過擬合一般表示模型對數據的表現能力過好,通常是模型的復雜度過高,并且Variance高,訓練集的損失值低,測試集的損失值高。
具體如下圖所示:
針對Bias于Variance,有多種解釋方法。
第一種:
一般用下面兩張圖表示:
Bias描述的是模型與數據表現的真實情況的差別,Variance描述的是我們的假設與最好的假設之間的差別。
第二種:Bias是表明模型在整體數據上表現,不在乎其中某一個樣本的正確與否
對于Variance,一個樣本的變動會給整個模型帶來很大的影響,是模型抗樣本干擾能力有多強
如下圖所示:
高Bias的模型,單個樣本對模型影響不大。
高Variance的模型,一個樣本的變化可以改變整個模型。
第三種:
解決方法
針對機器學習模型,在效果不佳時可以有如下解決辦法:增加訓練樣本----解決高Variance情況
減少特征維數----解決高Variance情況
增加特征維數----解決高Bias情況
增加模型復雜度----解決高Bias情況
減小模型復雜度----解決高Variance情況
針對過擬合的情況,我們可以采取上述中的1、2、5的方法,除此之外,我們還可以在損失函數中增加正則項(L0、L1、L2范數)來解決過擬合的問題。
一般監督學習可以看做最小化下面目標函數:
其中
函數為損失函數,
就是規則化函數,也可以叫做正則項。我們增加正則項的主要原因是為了讓
更稀疏,使模型不容易過擬合(后面會詳細解釋)。
函數具體可以有很多種選擇,常見的有L0范數、L1范數、L2范數等。其中:L0范數是向量中非零元素的個數
L1范數是向量中各個元素絕對值之和,
L2范數是向量的模,
其中L0范數由于不好實現,所以一般不采用。
針對L1范數,它能實現特征的自動選擇,一般來說,
的大部分元素(也就是特征)都是和最終的輸出
沒有關系或者不提供任何信息的,在最小化目標函數的時候考慮
這些額外的特征,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,會干擾了對正確
的預測。稀疏規則化算子就是為了完成特征自動選擇,它會自己學習去掉這些沒有信息的特征,也就是把這些特征對應的權重置為0。
針對L2范數,與L1范數的區別是不會將權重置為0,而會是一個很小的數,這樣可以通過
來控制模型擬合程度,如下圖所示
針對正則項,我們還可以有如下理解(來自知乎問題機器學習中常常提到的正則化到底是什么意思? @陶輕松的回答 ):將函數
泰勒展開,
當n很大的時候,特征就越多,模型就越復雜,越容易過擬合。
因為
是我們學習到的,所以我們要做的就是改變
的大小減少特征維數,降低模型復雜度,也是讓一部分
趨近于0。
所以在目標函數中加入正則項,利用L0、L1、L2范數來改變
。
參考
總結
以上是生活随笔為你收集整理的机器学习模型 知乎_机器学习-模型选择与评价的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 销毁当前页面重新开启_问:如何强
- 下一篇: jq取第一个子元素为select_【转】