【总结】机器学习划分数据集的几种方法
最近搞了一個機器學習算法,精度高并且特征少,正當我狂喜之時,突然發現這只是在固定數據集上的結果。
如果隨機生成數據集,還會有這樣的效果嗎?
這確實是一個問題,只在一個數據集上測試結果,很難證明算法魯棒性,結果也不太可靠。
所以在機器學習中便誕生了 交叉驗證 的方法……
🐯:為什么最開始的時候數據集要分訓練集和測試集呢?
😼:是為了解決過擬合的問題。
🐯:過擬合是啥?
😼:無論是用機器學習做分類還是回歸,如果只有訓練集的話,模型便會前方百計的去擬合訓練集,這時你會發現模型的特征越多,在訓練集上的效果越好。這時如果用模型去測試未知數據集的話,效果可能會完全相反。這一點在回歸上體現的尤為突出,從下圖可以看到特征數超過40時,訓練集已經完全擬合曲線了,而測試集的相關系數卻很低。正如通用近似定理所說:“一個包含足夠多隱含層神經元的多層前饋網絡,能以任意精度逼近任意預定的連續函數”
🐯:那要按什么比例來分訓練集和測試集呢?
😼:這個好像暫無定論從5:5,6:4,7:3,8:2到9:1都有,還是看各行各業的傳統吧。
🐯:那按照一個比例分完,就只能得到一個訓練集和一個測試集,訓練出來的模型不是有不確定性嗎?
😼:沒錯,前面說的“交叉驗證”就是來解決這個問題的。
🐯:趕快說!別磨磨蹭蹭的!
😼:常見的交叉驗證有 K-折交叉驗證 和 留一交叉驗證。
K折交叉驗證,初始采樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的數據,其他K-1個樣本用來訓練。交叉驗證重復K次,每個子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。這個方法的優勢在于,同時重復運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次,其中,10折交叉驗證是最常用的。
🐯:那我總共就9個樣本,還怎么分10份呢?
😼:你這就屬于 抬杠 小樣本訓練,可以試試第二種交叉驗證:留一法。
正如名稱所建議, 留一驗證(LOOCV)意指只使用原本樣本中的一項來當做驗證資料, 而剩余的則留下來當做訓練資料。 這個步驟一直持續到每個樣本都被當做一次驗證資料。 事實上,這等同于和K-fold 交叉驗證是一樣的,其中K為原本樣本個數。
🐯:你這,怎么和百度百科講的一樣啊!
😼:哈哈哈,本來打算自己寫的,結果發現別人已經總結的挺好了,就再整理分享下~
🐯:我還有幾個問題沒找到答案,怎么聯系你呢?
😼:掃描下方二維碼!看看群里有沒有答案~
猜你喜歡:👇🏻
?【總結】一文了解所有的機器學習評價指標
?【隨筆】通用近似定理
?【實操】看了太多公式概念?你該學會怎么用T檢驗了!
總結
以上是生活随笔為你收集整理的【总结】机器学习划分数据集的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Excel】一次性快速批量删除下面多余
- 下一篇: 【论文】引用格式 NoteExpress