4.2 数据集划分-机器学习笔记-斯坦福吴恩达教授
數據集劃分
測試集
在線性回歸的章節中,我們已經知道,僅僅具備一個很小的訓練誤差并不能保證我們的預測函數就是優秀的,因為這種“優秀”僅僅體現在了對于已知的訓練樣本的假設上,而無法保證見到新的樣本時候還能做出足夠好的預測,過擬合就是當中的典型例子:
因此,預測準不準應當反映在對于新樣本的泛化(generalize)能力。我們考慮將數據集劃分為:
- 訓練集:70%
- 測試集:30%
在對數據集進行訓練集和測試集的劃分前,最好先對數據集進行亂序,防止類似樣本聚到一起
引入如下符號:
- (x(1),y(1))(x^{(1)},y^{(1)})(x(1),y(1)) :訓練樣本
- (xtest(1),ytest(1))(x^{(1)}_{test},y^{(1)}_{test})(xtest(1)?,ytest(1)?) :測試樣本
- mmm :訓練集樣本容量
- mtestm_{test}mtest? :測試集樣本容量
線性回歸的測試誤差
在線性回歸中,我們就通過計算測試集的代價函數來評估參數 θθθ 的泛化能力:
Jtest=12mtest∑i=1mtest(hθ(xtest(i))?ytest(i))2J_{test}=\frac1{2m_{test}}∑_{i=1}^{m_{test}}(h_θ(x^{(i)}_{test})?y^{(i)}_{test})^2Jtest?=2mtest?1?i=1∑mtest??(hθ?(xtest(i)?)?ytest(i)?)2
邏輯回歸的測試誤差
在邏輯回歸中,測試集的代價函數為:
Jtest(θ)=?1mtest∑i=1mtest(ytest(i)loghθ(xtest(i)))?(1?ytest(i))loghθ(xtest(i)))J_{test}(\theta)=-\frac1{m_{test}}∑_{i=1}^{m_{test}}(y_{test}^{(i)}\ logh_\theta(x^{(i)}_{test}))?(1-y_{test}^{(i)})\ logh_\theta(x^{(i)}_{test}))Jtest?(θ)=?mtest?1?i=1∑mtest??(ytest(i)??loghθ?(xtest(i)?))?(1?ytest(i)?)?loghθ?(xtest(i)?))
由于邏輯回歸處理的是 0/1 分類問題,其預測結果只有正確與錯誤之分,所以引入誤分率(Misclassification Error):
err(hθ(x),y)={1,ifhθ(x)≥0.5,y=0orhθ(x)<0.5,y=10,otherwiseerr(h_\theta(x),y)=\begin{cases}1,\quad if\ h_\theta(x)≥0.5,\ y=0\ or\ h_\theta(x)<0.5,\ y=1\\ 0,\quad otherwise\end{cases}err(hθ?(x),y)={1,if?hθ?(x)≥0.5,?y=0?or?hθ?(x)<0.5,?y=10,otherwise?
則邏輯回歸中的測試誤差可以表示為:
Testerror=1mtest∑1mtesterr(hθ(xtest(i)),ytest(i))Test_{error}=\frac1{m_{test}}\sum_1^{m_{test}}err(h_\theta(x_{test}^{(i)}),\ y_{test}^{(i)})Testerror?=mtest?1?1∑mtest??err(hθ?(xtest(i)?),?ytest(i)?)
交叉驗證集
在多項式回歸中,我們總是嘗試不同的多項式次數(degree)( degree )(degree),形成了不同的預測模型:
1.hθ(x)=θ0+θ1x1.\quad h_θ(x)=θ_0+θ_1x1.hθ?(x)=θ0?+θ1?x2.hθ(x)=θ0+θ1x+θ2x22.\quad h_θ(x)=θ_0+θ_1x+θ_2x^22.hθ?(x)=θ0?+θ1?x+θ2?x23.hθ(x)=θ0+θ1x+...+θ3x33.\quad h_θ(x)=θ_0+θ_1x+...+θ_3x^33.hθ?(x)=θ0?+θ1?x+...+θ3?x34.hθ(x)=θ0+θ1x+...+θ4x44.\quad h_θ(x)=θ_0+θ_1x+...+θ_4x^44.hθ?(x)=θ0?+θ1?x+...+θ4?x45.hθ(x)=θ0+θ1x+...+θ5x55.\quad h_θ(x)=θ_0+θ_1x+...+θ_5x^55.hθ?(x)=θ0?+θ1?x+...+θ5?x5
我們計算各個模型的對應的測試誤差,假設 degreedegreedegree=5 時,測試誤差最小,我們就選出了以下模型來迎接新的樣本:
hθ(x)=θ0+θ1x+...+θ5x5h_θ(x)=θ_0+θ_1x+...+θ_5x^5hθ?(x)=θ0?+θ1?x+...+θ5?x5
對于 degreedegreedegree 的確定,是我們對于模型的選擇(Model Selection),正如我們在線性回歸中確定 θθθ 一樣。在線性回歸中,我們通過訓練集確定模型,測試集來評估模型的泛化能力。在多項式回歸中,我們通過訓練集獲得了參數 θθθ ,而通過測試集確定了模型,那么,這兩個集合用完了,我們就缺少評估模型泛化能力的數據集。鑒于此,引入了交叉驗證集(Cross Validation Set),“交叉”二字體現了一種承上啟下的關系,他通過訓練集獲得的結果,選擇了模型,并將該模型交給測試集進行評估:
- 訓練集:60%,確定參數 θθθ
- 交叉驗證集:20%,進行模型選擇。
- 測試集:20%,評價模型預測能力。
三者的誤差函數如下:
-
訓練集誤差:
Jtrain(θ)=12m∑i=1mtrain(hθ(xtrain(i))?ytrain(i))2J_{train}(\theta)=\frac1{2m}\sum_{i=1}^{m_{train}}(h_\theta(x_{train}^{(i)})-y^{(i)}_{train})^2Jtrain?(θ)=2m1?i=1∑mtrain??(hθ?(xtrain(i)?)?ytrain(i)?)2 -
交叉驗證集誤差:
Jcv(θ)=12m∑i=1mcv(hθ(xcv(i))?ycv(i))2J_{cv}(\theta)=\frac1{2m}\sum_{i=1}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y^{(i)}_{cv})^2Jcv?(θ)=2m1?i=1∑mcv??(hθ?(xcv(i)?)?ycv(i)?)2 -
測試集誤差:
Jtest(θ)=12m∑i=1mtest(hθ(xtest(i))?ytest(i))2J_{test}(\theta)=\frac1{2m}\sum_{i=1}^{m_{test}}(h_\theta(x_{test}^{(i)})-y^{(i)}_{test})^2Jtest?(θ)=2m1?i=1∑mtest??(hθ?(xtest(i)?)?ytest(i)?)2
總結
以上是生活随笔為你收集整理的4.2 数据集划分-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.1 陷入不归路的调试-机器学习笔记-
- 下一篇: 4.3 偏差与方差-机器学习笔记-斯坦福