【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用於測試集的測試中