1. 程式人生 > >20. 偏差和方差的概念及用途 翻譯自 吳恩達新書-Machine Learning Yearning

20. 偏差和方差的概念及用途 翻譯自 吳恩達新書-Machine Learning Yearning

假設你的開發、測試、訓練樣本集服從同一分佈,那麼獲取更多的訓練資料,可以讓你的演算法效能獲得巨大的提升嗎?

儘管獲取更多的資料沒啥壞處,但可能無法像你預期的那樣,有很大提升。而且採集資料本身會耗費大量的時間,那如何判斷,什麼時候需要新增資料,什麼時候不需要新增資料呢?

機器學習中的誤差主要來自兩個方面:偏差和方差。理解偏差和方差,可以幫助你決定是通過新增資料來提升演算法效能,還是通過其他的策略來提升演算法效能。

假如你希望你的貓咪檢測器錯誤率在5%以下,當前你的演算法在訓練樣本集上的錯誤率為15%,在開發樣本集上的錯誤率為16%。此時加入更多的訓練資料,可能並沒有太大幫助。此時加入更多的訓練資料,只會讓你的模型更難訓練,此時你應該改變你的演算法(之後的章節,我們將介紹為什麼要這麼做)。

如果演算法在訓練樣本集上的錯誤率為15%,而你希望準確率在5%以下,那麼首要的問題是如何提升演算法在訓練樣本集上的效能。演算法在開發/測試測試集上的表現,一般會差於在訓練樣本集上的表現。因此如果你的演算法在訓練樣本集上的準確率為85%,則想都不用想,演算法在開發和測試樣本集上的準確率不可能達到95%。

繼續上面的例子,演算法在開發樣本集上的錯誤率為16%,我們可以把這16%分成兩部分:

  1. 演算法在訓練樣本集上的錯誤率,本例中為15%,這通常稱作演算法的偏差
  2. 演算法在開發/測試樣本集上相對訓練樣本集上高處的錯誤率部分,本例中,演算法那在開發樣本集上的錯誤率比在訓練樣本集上的錯誤率高1%,這通常稱作演算法的偏差

有些改進可以解決第一部分的問題,即偏差問題,從而可以提升演算法在訓練樣本集上的效能;而有些改進可以解決第二部分問題,即方差問題,讓模型具有更好的泛化效果。為了找到更合理的改進方案,想想哪一部分更需要迫切解決,是非常重要的。

對偏差和方差有更直觀的理解,可以幫助你更加有些的改進你的演算法。