2018年6月29日 星期五

[機器學習] validation

在機器學習裡面, 我們知道今天用training data來訓練模型,在我們把模型來去實際應用前,我們需要一個方法來驗證我們模型的準確度,這個方法就叫做validation(驗證)

validation 就是指我們把training資料分成兩份, 一份當作training data, 另一份當作 validation data(也就是拿來當作已知的testing data), 來估計模型的準確度

但單用validation在小樣本時會有問題, 因此就有人發現到, 咦, 我們每次把資料分成兩半,拿來當validation data 的資料沒有被用來training,於是就有人決定把它拿來當作training data,另外一半當作validation data惹~ 這種方法就叫做cross validation(交互驗證)

cross validation 的做法很多,以下來介紹常見的 K-fold cross validation:
其原理很簡單, 把資料分作K份,每次其中一份當testing data,其餘當作training data. 這樣做個K次來看模型的預測能力

當然囉,要看模型的預測能力有很多方法,有興趣的可以去reference 2 的網站看,裡面列出很多方法!


reference:
1. https://www.kaggle.com/dansbecker/cross-validation
2. http://scikit-learn.org/stable/modules/cross_validation.html#cross-validation

2018年6月6日 星期三

[機器學習] training v.s. testing

在機器學習裡面,有一個很重要的概念,叫做training 和 testing

training:  我們利用已有的資料來訓練模型,進而得到目標函數
testing:    把training 後的目標函數, 拿去應用在現實例子中

其中training 會得到 in-sample error; testing 會得到out-sample error

舉例來說,我們想利用病人的檢查結果來預測癌症, 於是我們會先把手上有的資料拿來訓練模型(training); 之後訓練好再把它丟出來給大家拿來預測(testing)

那這些error 是怎麼來的呢, 我們知道在機率與統計裡有一個概念,也就是variance 和 bias

以下用打靶來比喻:

variance :指得是每次射擊的彈孔間的差異
bias        :指的是彈孔離靶心有多遠

今天我們如果模型越簡單, 其variance會越小,因為data 對模型的影響越小
反之,如果模型越複雜,其bias 會越小, 因為模型越複雜,越有可能逼近真正的情況

所以綜上所述,我們可以發現 bias 和variance 有tradeoff

當模型太簡單,導致bias 太大 => 被稱作 underfitting
=> 解決方法:
1. 修改模型

當模型太複雜,導致variance太大=> 被稱作 overfitting
p.s. 有些書上有另外一種定義方法, 也就是因為模型太複雜,所以in-sample error會很小,但是out-sample error 會很大 (其實意思差不多, 因為 variance 一變大, out-off sample error 和 in-sample error 的差別會變大, 所以最後得到的 out-sample error 可能比簡單模型還大)

=> 解決方法:
1. 蒐集更多資料
2. regularization

reference:
1. 李宏毅教授 youtube
2.  learning from data

2018年6月3日 星期日

[食記] 柳營家屋

柳營家屋位於敏惠醫專的對面,超級不明顯,一不小心就會把它當成一般建築物,咻的一聲就開過去了! 其實這家店非常有名,問過不少在地人都超推這家,今天就來帶大家一探究竟

這家真的蠻好吃的, 我一個禮拜來了兩次XD

首先是菜單



可以看到種類非常豐富, 主要是簡餐類的,包括麵,飯都有, 以下是小弟點的

牛肉拌飯

這道非常特別,剛開始上來牛肉都是生的, 是藉由石鍋的溫度加熱, 慢慢煮,之後肉會熟,飯會有鍋巴,吃起來很香,很好吃, 口齒留香~


泡菜豆腐鍋

分量超大, 裡面的黃金泡菜非常經典,酸甜滋味搭配海鮮和豆腐,超級下飯,一下子就全部吃完了XD


隨餐附的飲料

金桔檸檬, 餐後去油膩, 清爽好喝


餐後甜點




總的來說, 這家真的超推薦, 走過路過不要錯過, 絕對不會後悔!!!!

地址如下: