Regression
Last updated
Was this helpful?
Last updated
Was this helpful?
找Model,也就是找一個function set
設計Goodness of function。比方說Regression就用差平方和作為Loss function。
找到Best function:回歸到機器學習的目的是找函式,也就是找到最好的function。這邊多用梯度下降(Gradient descent)。在前面的Goodness of function定義下,簡單的說就是找到一組參數值,使得Loss function最小。
Model:也就是選擇一個function set,哪一些function是我要考慮的?例如以回歸來說就是
符合這個function set包含:
Under-construction
Under-construction
我可以用提升模型複雜度來使得模型更準確。也就是用二次、三次、四次的函式來作為model(function set)。模型越複雜,就trianing data而言,總之Average error會越來越下降,但如果就新的testing data來說,average error可能會不減反升。當不減反升的時候,就是Overfitting了。
方法一:拉入更多的資料來觀察,重新設計model,來看看是否有隱藏的factor沒注意到:例如以Pokemon的資料來說,不同種類的神奇寶貝可能上升曲線也不一樣,可以加入if-else的條件來判斷,究竟現在做的是哪一個種類。
前面加一個平方作為平滑項的方法,稱為L1: Ridge Regularization。也可以不要取平方項,而是取絕對值,這稱為L2: LASSO Regularization。尤其是LASSO的效果甚至會讓整個係數變成0,當部分參數的係數變為0時,就達到的feature selection的效果。
假設有一個變數的平均是$\mu$,我們可以抽樣很多次,但我們會得到很多樣本的平均數是$m$,當抽樣很多次,就會得到$m_1, m_2, m_3, ...$。但總之就不會是$\mu$。但如果你找很多個$m$,他們的期望值就會是$\mu$。
Variance:如果取比較多的N,那Variance就會比較小,如果比較少的N,那就會比較分散,Variance就會比較大。
Mean是一個unbiased estimator,但Variance卻是個Biased estimator,當N變大的話,估計Variance和實際的Variance的差異就會變小。
比較簡單的model,受到不同的data的影像會是比較小的。
Bias: if we average all the $f^*$,is it close to $\hat{f}$?
比較簡單的model,就是Bias比較大,Variance比較小;比較複雜的model,就是Bias比較小,但Variance比較大。
隨著model越來越複雜,Bias是越來越小的,而Variance是越來越大的。但藍色的曲線才是我們觀察到的ERROR。當你的ERROR來自於Variance很大,那就是Overfitting;當你的ERROR來自於Bias很大,那就是underfitting。我們必須要知道,你現在是bias大還是variance大,才知道要怎麼改善你的model「你覺得你現在的model是Bias大還是Variance大?」。
如果你現在你的model沒辦法fit你的training data,那代表你的bias是大的: underfitting。所以應該要嘗試加入更多的features, 讓model更複雜。
如果你可以fit你的training data,但是在testing data上卻表現不好,那代表你的variance是大的: Overfitting
如果是Variance大(也就是Training data不錯,但Testing的Error很大)
增加Data:非常有效但不見得很Practical。他不會傷害你的Bias,但不見得能搜到更多的data。如果搜集不到更多的data,那可以嘗試generate假的data,基於你對問題的理解,產生假的data。例如把手寫辨識的字轉角度,或者在聲音辨識的時候,把男生的聲音轉女生。
Regularization
方法二:在Loss函式中加入平滑項:加入平滑項的結果會使得越小越好(因為我們希望Loss越小越好,偏偏Loss裡面有,自然是越小越好)。參數接近0的話,那input有變動的時候,output比較不敏感。參數的變動小,就會越平滑。這時候我們只需要考慮而不用考慮,因為: bias只是上下平移和regularation無關。此時,我們引入一個平滑參數,越大,平滑項的效果就越大,就會越平滑,越不受input影響。但太大,也會造成Overfitting。