咱們知道dichotomies數量的上限是成長函數,成長函數的上限是邊界函數:算法
邊界函數的上限就是N^(k-1)了:函數
因而咱們獲得了上限(成長函數)的上限(邊界函數)的上限。。。學習
因此VC Bound能夠改寫成:測試
複習結束,下面咱們定義VC Dimension:大數據
用中文講,對於某個備選函數集H,VC Dimension就是它所能shatter的最大數據個數N。spa
VC Dimension = minimum break point - 1。教程
因此在VC Bound中,(2N)^(k-1)能夠替換爲(2N)^(VC Dimension)。事件
VC Dimension與學習算法A,輸入分佈P,目標函數f均無關。數學
1D的PLA最多shatter2個點,因此VC Dimension = 2;it
2D的PLA最多shatter3個點,因此VC Dimension = 3;
因此dD的PLA,VC Dimension會不會等於d+1?
要證實這一點,只需證實:
------------------------------------------------------------------------------------------------------------
(1) 證實VC Dimension≥d+1,只需證實H能夠shatter某些d+1個輸入。
咱們刻意構造一組d+1個輸入:
第一列灰色的1是對每一個輸入提升1維的操做,這個是一個d+1維的方陣,對角線所有是1,因此該矩陣可逆。
對於任意一種輸出,咱們總能找到一個備選函數使得:
即這一組輸入的全部dichotomies都被窮盡了,因此VC Dimension≥d+1得證。
------------------------------------------------------------------------------------------------------------
(2) 證實VC Dimension≤d+1,只需證實H不能shatter任何d+2個輸入。
在2D情形下構造一組4個輸入:
因此 x4 = x3 + x2 - x1。
若是前3個輸出是:
那麼第4個輸出是多少?
因爲:
因此:
------<1>
若是有一個備選函數W,使得其在x1,x2,x3上的輸出的符號與方程<1>中的符號相同:
那麼必定有:
因此H不能shatter 2+2=4個輸入。
推廣到d維:
任何d+2個數據做爲輸入,即便升了一維以後,輸入矩陣的行數(d+2)依然大於列數(d+1),因此矩陣各行是線性相關的,即x(d+2)能用x(d+1),......,x2,x1的線性組合來表示。
咱們假設H能夠shatter d+2個輸入,那麼咱們必定能找到一個W,使得x(d+1),......,x2,x1對應的輸出的符號與他們在線性表達式中的係數符號相同:
因此:
以前的假設是錯的,H不能shatter d+2個輸入。
因此VC Dimension≤d+1得證。
綜合(1)(2),對於d-D PLA,其VC Dimension=d+1。
在教程中這麼說:
即VC Dimension是備選函數集H的「能力」。「能力」越大,H對數據的劃分就越細緻。
例如,從Positive Ray到Positive Interval,自由變量從1個變成了2個,VC Dimension從1變成了2,H變得更強大。
在VC Dimension與備選函數集大小M基本正相關:
VC Bound:
因此GOOD事件:| E-in(h) - E-out(h) ≤ ε |能夠改寫成:
即:
咱們最終但願E-out越小越好,因此上面的不等式中能夠只關心上界。
咱們把根號項看作一種懲罰,它拉大了E-in與E-out之間的距離,這個懲罰與「模型複雜度」有關,模型越複雜,懲罰越大:
一圖勝千言,能夠看出隨着模型複雜度的增長,E-in與E-out兩條曲線漸行漸遠。
若是VC Dimension太大,模型複雜度增長,E-in與E-out偏離;
若是VC Dimension過小,雖然E-in≈E-out,但H不夠給力,很難找到不犯錯(或不多犯錯)的h。
基本上,天下沒有免費的麪包!
-----------------------------------------------------------------------------------------------------------
VC Bound提升了數據複雜度。
用一個簡單的數學題就能說明:
你幫老闆分析股票數據,老闆說E-in與E-out差距最大爲ε=0.1;置信度爲90%,即δ=0.1;所用模型的VC Dimension = 3。你用程序算了一番,發現:
因而你向老闆彙報,請給我29300條數據做爲訓練集、29300條做爲測試集,我就能達到你的要求,若是想萬無一失,200000條數據是起碼的。原本被老闆逼死的節奏,如今要把老闆逼死了,哪來這麼多數據?
本題中:
need N ≈ 10000 * VC Dimension
而實際應用中,須要的數據量在10倍VC Dimension左右。
爲何VC Bound會這麼寬鬆,以致於過多估算數據量?
由於VC Bound對數據分佈、目標函數、備選函數集、學習算法都沒有要求,它犧牲了部分精確性,換來了無所不包的通常性。這使得VC Bound具備哲學意義上的指導性。