关于机器学习的训练数据、验证数据和测试数据的形象比喻
機器學習最明顯的一個特點是需要大量的數(shù)據(jù)。特別對監(jiān)督學習來說,就是需要大量的帶標簽數(shù)據(jù)(labeled data)。
很多入門的朋友很快就會遇見模型訓練和測試這兩個階段,進而也就了解到帶標簽數(shù)據(jù)是要被劃分成兩個部分的:訓練集 (training set) 與測試集 (test set)。這兩個概念也很直觀,大部分朋友非常快就能接受。
可是到后面,在我們需要為機器學習模型調參的時候,半路殺出來了個交叉驗證 (cross validation) 階段,這個對應的數(shù)據(jù)集也有個名字,叫做驗證集 (validation set)。
據(jù)我觀察,很多入門機器學習的朋友在這個時候就會感到一頭霧水,并且非常困惑:咋又冒出來了個驗證集啊?我們不是有個測試集了嗎?直接在那上面做實驗不就好了么?又劃分多一個數(shù)據(jù)集,那就使得能用于訓練和測試的數(shù)據(jù)都變少了,驗證集是那方神圣啊?...
這里我給你們來個非常形象的類比!別眨眼!
訓練集 → 題解大全
驗證集 → 模擬考試
測試集 → 高考!
是不是非常形象易懂呢?(得意臉)
呃?搞不懂為什么是這樣的對應關系?別急我還沒說完呢。
機器學習算法是個笨學生,他沒法直接從人類教師那里學會抽象的概念,于是唯一有效的策略就是天賦不足勤來補:玩命刷題! 想想看帶標簽的訓練數(shù)據(jù),是不是很像你平時做的習題冊呢? 數(shù)據(jù)本身是題目,標簽是正確答案。所以機器學習算法能夠通過大量做題來學會抽象概念(但是這個傻孩子實際上只學會了怎么解答與特定抽象概念相關的問題)。
你說你學會了東西,但空口無憑啊,你得通過考試來證明自己!于是就有了測試集。測試集相當于考試的原因是,你只能看到題目(數(shù)據(jù))而無法得知答案(標簽)。你只能在交卷之后等老師給你打分。
于是就有朋友發(fā)問了:“那我一遍一遍考試來證明自己不就好?我大學掛科補考還少么?”。首先心疼你一秒鐘。然后請你思考這個問題,如果那場考試是高考怎么辦?你耗得起嗎?
所以我們需要模擬考試,也就是驗證集。我們可以獲得驗證集的標簽,但是我們假裝得不到,讓自己以考試的心態(tài)去面對,過后也就能通過自己對答案來了解自己到底學會了多少,而這種幾乎沒有成本的考試我們想進行多少次都行!這就是驗證集存在的意義!你的模型只能在測試集上面跑一次,一考定終身!
我們需要驗證集的真正原因是:防止機器學習算法作弊!我們訓練一個機器學習模型不是為了讓它在那有限的帶標簽數(shù)據(jù) high 個夠,而是要將模型應用于真實世界。絕大多數(shù)情況下,我們無法直接從真實世界獲得答案,我們能收集到的數(shù)據(jù)是沒有標簽的裸數(shù)據(jù),我們需要高效準確的機器學習模型為我們提供答案。不能直接使用測試集不是因為我們負擔不起在測試集上跑模型的成本(事實上幾乎為 0),而是因為我們不能泄露測試集的信息。試想一下,假如你搞到了真正的高考題和答案,你一遍又一遍地去做這套題目,會發(fā)生什么?也許你會成為高考狀元,可是你真的學會這些知識了嗎?你能夠再去做一套高考題并且拿高分嗎?你能夠去當家教向學弟學妹傳授你的知識和解答他們的問題嗎? 偷窺到了測試集的機器學習模型就是廢品,沒有人需要它,它也做不了任何有用的事情。
切記,你的機器學習模型只能在測試集上跑一次,一考定終身!
切記,你的機器學習模型只能在測試集上跑一次,一考定終身!
切記,你的機器學習模型只能在測試集上跑一次,一考定終身!
切記,你的機器學習模型只能在測試集上跑一次,一考定終身!
切記,你的機器學習模型只能在測試集上跑一次,一考定終身!
超級重要的事情說五次還嫌少,我得加粗了才行。哦還得加大字號,我怕你近視眼看不見!
都說到這個地步了,順便借這個類比說說過擬合 (overfit) 和欠擬合 (underfit) 的事吧。過擬合的模型是個真正的書呆子,玩命刷題解大全 (Demidovich),但是只記住了所有的習題和答案,去做模擬考試就直接傻掉了。欠擬合的模型就是個不聽課還懶惰的學渣,連習題冊上的題目都搞不懂,別說模擬考試了。高考?呵呵呵。
原文地址
https://mp.weixin.qq.com/s?__biz=MjM5ODU3OTIyOA==&mid=2650665183&idx=1&sn=0156b28514ca0ebb79f74c4b90ea009c&chksm=bec1cdac89b644bac4fd0aff308330576e701a4a04d221e1f19a51428aabc3235ef3f84e82f7&mpshare=1&scene=23&srcid=06241lQux9cxYFEOQhSYVfMj#rd
總結
以上是生活随笔為你收集整理的关于机器学习的训练数据、验证数据和测试数据的形象比喻的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 函数式接口以及Lambda举例
- 下一篇: Google开源的AR/VR开发库Lul