1. 程式人生 > 其它 >【ShareAi】機器學習 —— Where Error does come from?

【ShareAi】機器學習 —— Where Error does come from?

Where Error does come from?

Error主要是由bias偏置和variance方差形成,可以理解為Error=bias+variance

  • Error:反映模型的準確度
  • Bias:反映模型在樣本上的輸出與真實值之間的誤差,即模型本身的精準度
  • Variance:反映模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性

根據上圖可以看出,以打靶為例,bias描述精準度,當bias較小時,說明該射擊手基本打在靶心附近,精確度很高,當bias較大時則說明靶點可能偏離靶心,即射擊手所獲得環數較小;Variance描述穩定性,當Variance值較小時,說明打出的所有點聚集在一起,反之則分散開來,呈零散狀態

評估bias和Variance

  • Estimate the mean of a variable x

    • 定義x的均值為\(\mu\),x的方差為\(\sigma^2\)
  • 接下來如何評估均值\(\mu\)

    • 首先我們進行取樣N個點:{\(x^1, x^2, x^3, ..., x^N\)}

    • 然後計算平均值m:m=\(\frac{1}{N}\sum_nx_n\),需要注意的是m \(\neq\) \(\mu\),因為只採樣N個點而不是無窮多個

    • 接下來計算期望值:E[m] = \(\frac{1}{N}\sum_nE[x_n] = \mu\)

    • m分佈對於\(\mu\)的離散程度(方差):Var[m] = \(\frac{\sigma^2}{N}\)

      由此可見,\(\mu\)的離散程度(方差)取決於N,N越小越離散

  • 如何評估方差\(\sigma^2\)

    • 同樣地,我們進行取樣N個點:{\(x^1, x^2, x^3, ..., x^N\)}

    • 平均值:m=\(\frac{1}{N}\sum_nx_n\)

    • \(\sigma^2\)的估測值:\(s^2 = \frac{1}{N}\sum_n(x^n-m)^2\)

    • \(s^2\)的期望值:E[\(s^2\)] = \(\frac{N-1}{N}\sigma^2 \neq \sigma^2\)

Variance

每次不同實驗資料集在同一個Model獲得的Function可能不一樣

假設在Parallel Universes中,抓到不同的神奇寶貝

我們可以看到,在Universe123和Universe345的function是不一樣的,即不同training data上\(f^*\)是不同的

假如我們有100個Parallel Universes(使用100個不同訓練集做實驗),那會是怎麼樣呢?

使用比較簡單的Model時,Variance值是比較小;但隨著模型變得越來越複雜,比如function為一元五次方程時,其Variance值變大。即簡單Model受到不同的資料集的影響比較小

Bias

簡單Model的bias比較大,而複雜Model的bias則比較小。一個Model包含很多function,而簡單model的space小,可能其並沒有包含target,若從資料集中sample,平均起來不可能接近target;複雜model的space大,可能包含target,則其平均值在target附近

Bias VS Variance

由圖可以看出,比較簡單model的bias比較大而variance值比較小,複雜model的bias比較小而variance值比較大且其值變化比bias要大

Error = Bias + Variance

Underfitting(欠擬合):bias比較大

  • 可以用更多特徵作為輸入
  • 構建更復雜的模型

Overfitting(過擬合):variance比較大

  • 增加資料集
  • 引入正則化處理

模型選擇

在bias和variance之間平衡值大小,以選擇最好的model,使得error可以達到最小值

交叉驗證

將訓練集以一定比例劃分為訓練集和驗證集,使用訓練集訓練模型,然後用驗證集比較模型的效能指標,選出較好的一個模型,再用原所有訓練集訓練該模型,最後使用測試集對模型進行測試

N折交叉驗證

  • 假設三折交叉驗證,將訓練集分成3份,其中兩份作為訓練集,一份作驗證集,用來訓練所有model,得到每個model的誤差(效能指標)
  • 然後交換訓練集和驗證集,繼續訓練和驗證model,待訓練完後求解每個model的平均error,選擇誤差最小的作為較好的model,然後再使用所有訓練集訓練該model
  • 最後再將model用於測試集的測試中