精華區beta DataScience 關於我們 聯絡資訊
你有三個資料集,train, validation, test train沒啥好說的,餵給機器,讓機器學,生成潛在參數用的 練好之後,怎麼知道表現好不好?拿validation來測試。 如果不好,調整超參數後重新訓練一次,再驗證一次。反覆這個流程 直到在validation的表現滿意為止。但故事至此尚未結束,是的,validation 沒有被機器讀過,所以確實給出的表現可以看作模型對未知資料的表現, 但問題是我們不停在做的事情,就是找出一組超參數,使得模型對於 validation的表現最好,換言之,這個模型是有bias的,它的一切都在 迎合validation,但如果你的validation取得不具代表性怎麼辦?這模型 的泛化能力就不能透過validation來證明。 所以你最終的模型必須要在test上測試才算數。 簡單說,train是拿來訓練潛在參數的,validation是拿來挑選超參數的, 這兩個資料集機器都去迎合過它們,換言之,都"髒掉了",所以我們才需要 test set,它既與潛在參數無關,也與超參數無關,是理想上真正獨立超然的 模型判官。這樣說,你明白了嗎? 至於cross validation,那是另一個很長的故事,我想你應該,也必須花時間 了解,這是機器學習裡面,模型選擇的重要觀念。 ----- Sent from JPTT on my Asus P00C. -- ★人生中最溫暖的夏天是在紐約的冬天 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.66.168.95 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1522055467.A.2A8.html
championship: 講得好清楚推推 03/26 18:52
ChrisMullin: 推 03/26 20:01
st1009: 推 完整 之後收進精華 03/26 21:17
woogee: 講得很清楚! 03/26 21:28
bestchiao: 推推 講的簡單明瞭~! 03/26 22:24
ssd860505da: 所以每次在validation完之後會根據val的loss調參數 03/26 22:30
ssd860505da: 嗎? 03/26 22:30
st1009: 已收入精華XD 03/26 22:56
goldflower: 首先要先明白參數和超參數的差別 假設你現在已經寫好 03/26 22:57
goldflower: 了一個NN 此時你裡面打算用training data學的 03/26 22:58
goldflower: 是參數 而另外有一些如epoch, batch size這些 03/26 22:58
goldflower: 你在訓練前要決定的東西是超參數 03/26 22:58
goldflower: 而validation能拿來讓你修改你的超參數 03/26 22:59
goldflower: 其實拿我上面那兩個當超參數是蠻怪的 應該說learning 03/26 23:01
goldflower: rate之類的比較好 03/26 23:01
niki25672729: 推 03/26 23:12
lucien0410: 好文 推 03/27 02:23
brian980466: 簡單講 能學的叫參數 不能學的叫超參數 03/28 02:11