機器愛學習11——訓練集、測試集、方差、偏差、過擬合、欠擬合

前面章節中,我們講解了線性迴歸、邏輯迴歸,雖然使用場景不同,但基本套路都是一樣的

  • 基本套路:通過各種算法(最小二乘法、正規方程、梯度下降算法...),找到使cost function"儘量小"的參數θ(向量),進而找到我們的hypothesis function:hθ(x)。

機器學習的終極目標是什麼?

這裡要問大家一個問題,我們使用機器學習的終極目標是什麼?只是找到一個hypothesis function嗎?

顯然不是,我們的終極目標是去進行"預測"。當我有一套房子要出售時,我能夠預測“這套房子到底可以賣多少錢”,如果預測的準確度很高,那當然更棒了~

讀者可能會問,我們不是通過最小化cost function,找到了代價最小的參數θ,進而找到了"完美"的hypothesis function嗎?

ok,這個問題問的好!

我們所謂的"完美",只是在我們的training set(已經成交的房屋)上表現"完美";但是,對於新遇到的問題(待出售的房子),hypothesis function不一定那麼"完美"。

那麼,我們如何保證,通過training set訓練出來的"完美"hypothesis function,在新遇到的問題上同樣表現"完美"呢?

其實,這個問題很好解決,我們可以把training set分為兩部分A和B(A和B沒有重複),在A中訓練出hypothesis function,然後通過B來判斷訓練出來的hypothesis function表現如何。如果hypothesis function在B上表現同樣"完美",那麼我們就認為:當遇到新問題C時,我們的hypothesis function表現會同樣"完美"。

這裡,給大家介紹兩個名詞:泛化、泛化能力。

  • 泛化(generalization):將hypothesis function運用在新鮮樣本上進行預測的過程
  • 泛化能力(generalization ability):hypothesis function在新鮮樣本上進行預測的準確度,準確率越高,泛化能力越強

所以,機器學習的終極目標不只是找一個在training set中表現"完美"的hypothesis function,而是找一個泛化能力強的hypothesis function

訓練集、驗證集、測試集

上面提到將training set分為A和B,A用來訓練,B用來測試,機器學習也做了類似的劃分。

機器學習將樣本分為三種:訓練集、驗證集、測試集。

  • 訓練集:即training set,主要用來訓練得到我們的hypothesis function,即確定普通參數
  • 驗證集:即validation set,主要用來確定超參數(大家可以暫時不用管什麼是超參數),做模型選擇;通過訓練集,我們可能得到了多個hypothesis function,驗證集就是來確定最佳hypothesis function
  • 測試集:即testing set,在最佳模型確定後,可以通過測試集進行模型預測並評估模型的性能

需要注意的是:當模型沒有需要人為設定的超參數時,可以不需要驗證集(validation set)。

樣本到底該怎麼做劃分?訓練集、驗證集、測試集佔比重該是多少?

比重不確定,可以根據自己的需求更改,一般為8:1:1。其實有很多的劃分方法,這裡只列出來,不一一講解,大家感興趣可以自己瞭解下:

  • 留出法
  • 交叉驗證法
  • 自助法
  • ......

總之,我們將數據進行劃分,都是為了提高hypothesis function的泛化能力。

接下來,我們要講一下如何評估hypothesis function在訓練集、測試集上的表現

偏差、方差

在講解hypothesis function在訓練集、測試集上的表現之前,先給大家介紹下偏差、方差的概念。

先舉一個數學上的例子:兩個射擊手進行射擊,結果甲射出的子彈都集中在靶上的某個區域,但是都偏離了靶心;乙射出的子彈比較分散,但是有些正中靶心,那麼我們就說:

  • 甲的射擊很"穩定",但是不"準確",即方差小(子彈很集中在某個區域),但偏差大(子彈打中的地方離靶心遠)
  • 乙射擊比較"準確",但是不"穩定",即方差大(子彈不集中),但是偏差小(子彈打中的地方離靶心近)

所以:

  • 偏差(bias)描述的是準確性
  • 方差(varience)描述的是穩定性

考慮到上面的訓練集、測試集,則有如下結論:

  • 模型(hypothesis function)在訓練集(training set)上表現越"完美",該模型的準確度就越高,對應偏差(bias)就越小
  • 模型(hypothesis function)在測試集(test set)上表現越"完美",該模型的穩定性就越好, 對應的方差(varience)就越小

前面我們提到:

  • 機器學習的終極目標不只是找一個在training set中表現"完美"的hypothesis function,而是找一個泛化能力強的hypothesis function

現在這句話等價於

  • 機器學習的終極目標是找一個偏差小(low bias)、同時方差小(low varience)的模型(hypothesis function)

下圖顯示了偏差與方差在靶子上的表示:

機器愛學習11——訓練集、測試集、方差、偏差、過擬合、欠擬合

偏差與方差

前面講了那麼多,其實就是告訴大家:什麼樣的hypothesis function是真正"完美"的。通過前面的講解,想必大家都知道答案了,這裡再列一下:

"完美"的hypothesis function,需同時滿足:

  • 在training set上準確度高,即偏差小(low bias)
  • 在test set上同樣預測準確,即穩定性好,也即方差小(low varience)

知道了我們的終極目標了,那我們當然要去實現這個目標。在實現這個目標之前,讓我們先看一下模型過擬合、欠擬合的問題

過擬合、欠擬合

在前面線性迴歸、邏輯迴歸中,我們知道hypothesis function其實只受參數θ控制(大家可以這樣認為,雖然不太嚴謹)。

下面我們以線性迴歸為例,看一下參數θ對hypothesis function在training set上表現的影響(其實也就是對偏差bias的影響):

機器愛學習11——訓練集、測試集、方差、偏差、過擬合、欠擬合

參數θ對偏差bias的影響

如果讓大家從上面三個hypothesis function選一個,將其作為真正"完美"的hypothesis function,大家會選哪個?

  • “圖1中偏差太大,肯定是不能選的”
  • “圖2的hypothesis function看起來不錯,可以選”
  • “圖3的hypothesis function看起來也不錯,也可以選吧”

sorry,上面三個hypothesis function只有圖2的模型是"完美"(偏差小、方差小)的,我們一一進行分析:

  • 圖1中:training set中的數據一個都沒有出現在hypothesis function上(都不在靶心上),偏差較大(high bias),肯定是不能入選的
  • 圖2中:training set中的數據全部在hypothesis function上(全部在靶心上),偏差較小(low bias),可以入選
  • 圖3中:training set中的數據全部在hypothesis function上(全部在靶心上),偏差也比較小(low bias),但該hypothesis function在training set中表現過於優越,可能導致方差過大,因此不能入選

圖2中hypothesis function看起來不錯;可是圖3中的看起來也很好啊,為什麼就說人家overfitting?在training set上表現優越還不好?

我們這裡打一個比方:假如我們現在要通過機器學習算法去找到一個"完美"的女朋友,找一個路人甲作為training set,路人甲說:

完美的女朋友要:

  • 身高165cm+
  • 體重50kg-
  • 短髮
  • ....

如果機器學習算法把上面的細節全部考慮進去,那現在給你一個test set:長髮的林志玲,結果會怎樣?

機器學習算法就會說“長髮?ok,林志玲不是我想要的完美女朋友”。

所以,大家現在明白為什麼圖3中hypothesis function不能入選了吧(例子比較極端,僅供大家理解過擬合)!

下面整理一下欠擬合、過擬合的概念,

  • 欠擬合(underfitting):對於training set中的數據,hypothesis function得到的預測值與實際值相差太多,即偏差太大(此時cost function在training set中必定很大)
  • 過擬合(overfitting):hypothesis function從training set中提取了過多的細節,導致模型在test set中表現太差,即方差太大(此時cost function在test set中必定很大)

理解了方差/偏差、過擬合/欠擬合,大家應該可以看懂下面的圖:

機器愛學習11——訓練集、測試集、方差、偏差、過擬合、欠擬合

hypothesis function複雜度與偏差、方差的關係

上圖中:

  • 虛線左側代表欠擬合:雖然方差小,但偏差太大
  • 虛線右側代表過擬合:雖然偏差小,但方差太大

現在再次回到我們的終極目標:

找到偏差小、方差小的hypothesis function

  • “偏差小”可以通過減小偏差(即減小cost function)來達到
  • “方差小”可以通過避免過擬合來達到

看起來,我們的目標越來越具體了!

那麼該如何避免過擬合呢?我們下一章再進行講解~


分享到:


相關文章: