Re: [問題] Validation set 到底在做什麼?
既然都講了,乾脆好人做到底,把cross validation(cv)也講完好了.很多人都知道cv
怎麼操作,但是我相信很少人真的明白做cv的意義.以及什麼情況下我們很要求做cv.
這是很正常的,因為你去看很多教科書,他們就從沒講好cv的意義過. 以下我談談我對
cv的見解. 歡迎各位補充分享自己的看法.
cv是個大故事,你得從為什麼要做特徵工程講起.
1. 數據的線性空間
data science裡面,最核心的觀念之一,就是資料空間. 想像一下我們有10K筆資料,
然後N個feature. 所以這10K的資料就會散布在這個N維的線性(線性是一個假設,方
便我們對數據進行理解跟操作)空間裡面.每一個feature就代表一個維度.
好了,那讓我們先考慮維度問題. 如果我有10K筆資料.我透過rescale把每個Feature
都歸一化到0~10之間(通常是0~1,但我為了舉例,先假設我歸一化到0~10). 好了,那
讓我們看看特徵的增減會發生什麼事情.
假如每筆資料只有2個feature,而每個feature又都歸一到0~10之間,這意味著平均
每1^2的超空間裡有10K/(10)^2=100筆資料. 滿不錯的,很夠了.
但如果我有10個feature呢? 這意味著每1^10的超空間裡,只有10K/(10^10)=10^-6
筆資料! 天啊~10個feature,這不算多吧? 但是平均下來資料竟變得如此稀疏.
這表示,當你的feature一多起來,你將建構出一個非常高維的線性空間,而維度越高,
數據就越稀疏,每筆數據之間在空間中的距離就會成指數型式越拉越遠. 如同我們
的宇宙一般,數據變成非常離散,彼此之間間隔非常非常遙遠,當維度趨近無窮大,
任何一筆資料的距離將變成無窮遠.
這同時也表示,當你對資料做採樣,你非常有可能採樣出不具代表性的樣本出來,
因為空間中的樣本非常稀疏,你一但少採樣到幾個,很可能空間中就有一塊很巨大
的區域沒有被你適當的採樣到! 你採樣出來的東西就會有高度偏差.
所以越高維的資料,要做出正確的採樣越困難! 你訓練出來的模型越可能
泛化能力很差,因為你的train跟validation很可能採樣到了數據中的不同空間,
導致validation裡面一些數據空間在train中根本沒出現過,所以明明train表現
的不錯,但是一到了validation就不行.這就稱作過擬合.
這種維度造成的採樣不均現象這叫做維度災難!
2. 怎麼解決維度災難?
維度災難的核心問題在於,你會無法適當採樣(i.e.難以分割train跟validatio)
. 所以解決維度災難,本質上就是要設法改善數據結構,讓你可以做出適當採樣.
要做到這點,你必須要完成兩件事情. 第一,你要盡可能的刪去不需要的,多餘的維
度. 至於該怎麼做,這就是"特徵工程"的核心問題.這幾天幾夜都說不完,就不提了.
第二,你要盡可能讓你的數據分布的均勻. 如果你的數據是這邊一坨,那邊一坨,
你一但把資料分割成train跟valdation,你非常有可能割出不具代表性的資料集.
但如果你的數據本來就已經分布很均勻了,那你越不容易產生採樣上的偏差.
面對相對均勻的數據,我們常用的作法就是歸一,把所有的特徵的數值都取在[0,1],
這樣數據的scale差距就不會太大,所有數據均勻的分佈在[0,1]的高維空間中,容
易正確採樣.
但如果你的數據分布就是很不均勻,這邊一坨那邊一坨,這時候我們會試著把數據
歸一成標準常態分佈(均值=0,標準差=1),這會讓原本離很遠的兩坨變得靠近一些.
總之,各種特徵工程裡的奇淫巧技,為的就是想讓數據分布的越均勻越好.
好的分布是你能夠正確分割train與validation的前提.
3. 為什麼需要cross validation?
前面都講了,越高維的時候,適當的分割數據將會越困難. 而之前的文章我又談到
,模型的好壞本質上就是由兩個資料集決定的: train, validation,前者決定
淺在參數,後者決定超參數. 所以一但這兩個資料集在分割的時候產生了偏差,不
具代表性,那我的一切都只是在做白工. 而且越是高維度的資料,我們越難適當的
分割出具代表性的資料. 你的一切訓練都只是一場幻覺,所有美好的loss都只是
自己騙自己的假象,因為你的train跟validation一開始就形同垃圾!
但怎麼辦? 我們不是上帝,無法以N+1維的角度審視我們的資料啊,難道只能認了?
但凡人畢竟有凡人的做法,是的,我們沒有上帝視角,但我們盡可能對數據做不同
的採樣,這總可以吧? 這就是cross validation的由來.
我們把數據分割成三等分,每次取一份出來做validation,另外兩份作trian
來生成模型,這樣每一次我就會生成三個模型,給出三個performance,然後我拿
三個performance來取平均作為總的performance,以衡量我模型的好壞.
用平均表現去取代單次表現,抹平了因偏差而造成的極端情形.
這樣是不是就盡可能的避免了我在切割train與validation時偏差的問題?
================================================================
結論:
洋洋灑灑寫了一堆,我想講的觀念只有一個
=> 在高維空間中正確的分割train與validation是極其困難的!
這是機器學習成功的最關鍵前提,很多人也不覺得這步有啥特別,隨便切個7:3
就是了.殊不知這一步乃是機器學習的最核心,它超越了一切算法與架構.與高手
過招,其實早在這一步就已經決定往後的命運了.
算法問題,坦白說,老狗變不出新把戲,你會玩的模型書上都教了,誰不會?
但是建構好的特徵來正確的分割具有代表性的資料集,那可就是拚經驗,拚功力,
各種奇淫巧技,各門各派,各有巧思.面對怎樣的數據該怎麼做,靠的都是老司機
引路,從沒有GPS可以看,在教科書上也絕對找不到完整的論述.
所以先忘了那些高深的算法吧,蹲好馬步,從洗資料,篩特徵開始打好基礎.特徵
工程看似不痛不癢,實乃重中之重.
其核心思想,就是想方設法讓數據盡可能分布的均勻,盡可能做到讓我們隨機分
割數據集也不致過度偏差.但這畢竟是不夠的,我們沒有上帝視角,永遠不曉得我
們分割得好不好. 所以只能引進cross validation,透過平均表現來抹去因偏
差而造成的極端表現,訓練出真正具有泛化能力的模型.
不曉得這樣講完後,有沒有對cross validation更了解一點?
--
★人生中最溫暖的夏天是在紐約的冬天★
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.66.168.95
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1522083370.A.C1F.html
※ 編輯: pipidog (73.66.168.95), 03/27/2018 01:03:54
推
03/27 01:18,
6年前
, 1F
03/27 01:18, 1F
推
03/27 01:21,
6年前
, 2F
03/27 01:21, 2F
推
03/27 02:10,
6年前
, 3F
03/27 02:10, 3F
推
03/27 02:35,
6年前
, 4F
03/27 02:35, 4F
推
03/27 02:54,
6年前
, 5F
03/27 02:54, 5F
→
03/27 03:07,
6年前
, 6F
03/27 03:07, 6F
→
03/27 03:07,
6年前
, 7F
03/27 03:07, 7F
→
03/27 03:11,
6年前
, 8F
03/27 03:11, 8F
推
03/27 03:45,
6年前
, 9F
03/27 03:45, 9F
推
03/27 07:49,
6年前
, 10F
03/27 07:49, 10F
推
03/27 08:14,
6年前
, 11F
03/27 08:14, 11F
→
03/27 08:16,
6年前
, 12F
03/27 08:16, 12F
推
03/27 08:46,
6年前
, 13F
03/27 08:46, 13F
推
03/27 09:25,
6年前
, 14F
03/27 09:25, 14F
推
03/27 09:26,
6年前
, 15F
03/27 09:26, 15F
推
03/27 09:38,
6年前
, 16F
03/27 09:38, 16F
推
03/27 09:40,
6年前
, 17F
03/27 09:40, 17F
推
03/27 09:54,
6年前
, 18F
03/27 09:54, 18F
→
03/27 09:54,
6年前
, 19F
03/27 09:54, 19F
→
03/27 10:04,
6年前
, 20F
03/27 10:04, 20F
→
03/27 10:55,
6年前
, 21F
03/27 10:55, 21F
→
03/27 10:55,
6年前
, 22F
03/27 10:55, 22F
→
03/27 10:57,
6年前
, 23F
03/27 10:57, 23F
推
03/27 10:57,
6年前
, 24F
03/27 10:57, 24F
推
03/27 11:30,
6年前
, 25F
03/27 11:30, 25F
推
03/27 11:44,
6年前
, 26F
03/27 11:44, 26F
推
03/27 17:10,
6年前
, 27F
03/27 17:10, 27F
推
03/27 18:20,
6年前
, 28F
03/27 18:20, 28F
推
03/27 20:32,
6年前
, 29F
03/27 20:32, 29F
→
03/27 20:32,
6年前
, 30F
03/27 20:32, 30F
推
03/27 20:49,
6年前
, 31F
03/27 20:49, 31F
推
03/27 22:54,
6年前
, 32F
03/27 22:54, 32F
推
03/27 23:38,
6年前
, 33F
03/27 23:38, 33F
→
03/28 00:01,
6年前
, 34F
03/28 00:01, 34F
噓
03/28 02:12,
6年前
, 35F
03/28 02:12, 35F
→
03/28 02:19,
6年前
, 36F
03/28 02:19, 36F
→
03/28 02:19,
6年前
, 37F
03/28 02:19, 37F
推
03/28 02:24,
6年前
, 38F
03/28 02:24, 38F
推
03/28 02:53,
6年前
, 39F
03/28 02:53, 39F
噓
03/28 03:13,
6年前
, 40F
03/28 03:13, 40F
→
03/28 03:13,
6年前
, 41F
03/28 03:13, 41F
→
03/28 04:17,
6年前
, 42F
03/28 04:17, 42F
→
03/28 04:17,
6年前
, 43F
03/28 04:17, 43F
→
03/28 04:17,
6年前
, 44F
03/28 04:17, 44F
推
03/28 10:33,
6年前
, 45F
03/28 10:33, 45F
→
03/28 10:33,
6年前
, 46F
03/28 10:33, 46F
→
03/28 10:33,
6年前
, 47F
03/28 10:33, 47F
噓
03/28 12:22,
6年前
, 48F
03/28 12:22, 48F
噓
03/28 13:37,
6年前
, 49F
03/28 13:37, 49F
→
03/28 13:37,
6年前
, 50F
03/28 13:37, 50F
→
03/28 13:38,
6年前
, 51F
03/28 13:38, 51F
噓
03/28 13:41,
6年前
, 52F
03/28 13:41, 52F
噓
03/28 14:29,
6年前
, 53F
03/28 14:29, 53F
推
03/28 15:51,
6年前
, 54F
03/28 15:51, 54F
→
03/28 15:53,
6年前
, 55F
03/28 15:53, 55F
→
03/28 15:54,
6年前
, 56F
03/28 15:54, 56F
→
03/28 15:54,
6年前
, 57F
03/28 15:54, 57F
噓
03/28 17:00,
6年前
, 58F
03/28 17:00, 58F
→
03/28 17:00,
6年前
, 59F
03/28 17:00, 59F
→
03/28 17:01,
6年前
, 60F
03/28 17:01, 60F
推
03/28 17:10,
6年前
, 61F
03/28 17:10, 61F
→
03/28 17:13,
6年前
, 62F
03/28 17:13, 62F
→
03/28 17:15,
6年前
, 63F
03/28 17:15, 63F
→
03/28 17:16,
6年前
, 64F
03/28 17:16, 64F
→
03/28 17:17,
6年前
, 65F
03/28 17:17, 65F
→
03/28 17:19,
6年前
, 66F
03/28 17:19, 66F
→
03/28 17:23,
6年前
, 67F
03/28 17:23, 67F
→
03/28 17:25,
6年前
, 68F
03/28 17:25, 68F
噓
03/28 17:32,
6年前
, 69F
03/28 17:32, 69F
噓
03/28 18:58,
6年前
, 70F
03/28 18:58, 70F
→
03/28 19:41,
6年前
, 71F
03/28 19:41, 71F
→
03/28 19:41,
6年前
, 72F
03/28 19:41, 72F
→
03/28 19:41,
6年前
, 73F
03/28 19:41, 73F
→
03/28 19:44,
6年前
, 74F
03/28 19:44, 74F
→
03/28 19:44,
6年前
, 75F
03/28 19:44, 75F
噓
03/29 03:09,
6年前
, 76F
03/29 03:09, 76F
→
03/29 05:34,
6年前
, 77F
03/29 05:34, 77F
→
03/29 05:34,
6年前
, 78F
03/29 05:34, 78F
推
03/29 06:31,
6年前
, 79F
03/29 06:31, 79F
→
03/29 09:02,
6年前
, 80F
03/29 09:02, 80F
→
03/29 09:05,
6年前
, 81F
03/29 09:05, 81F
→
03/29 09:06,
6年前
, 82F
03/29 09:06, 82F
推
03/29 12:50,
6年前
, 83F
03/29 12:50, 83F
推
03/31 00:49,
6年前
, 84F
03/31 00:49, 84F
→
03/31 00:49,
6年前
, 85F
03/31 00:49, 85F
推
04/02 01:16,
6年前
, 86F
04/02 01:16, 86F
推
10/13 07:38,
6年前
, 87F
10/13 07:38, 87F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 8 篇):
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章