本章的思路在於揭示VC Dimension的意義,簡單來說就是假設的自由度,或者假設包含的feature vector的個數(一般情況下),同時進一步說明了Dvc和,Eout,Ein以及Model Complexity Penalty的關系。
一回顧
由函數B(N,k)的定義,可以得到比較松的不等式mh(N)小於等於N^(k-1)(取第一項)。
這樣就可以把不等式轉化為僅僅只和VC Dimension和N相關了,從而得出如下結論:
1 mh(N)有break point k,那么其就是多項式級別的,我們認為假設數量不算多,是個好的假設;
2 N 足夠大,這樣我們便算有了好的抽樣數據集(假設不含很多Noise);
=〉這兩點由上述不等式可以推導這樣的機器學習算法有好的泛化能力,其在全集上會有和在D上一致的表現;
3 如果算法選擇的是小的Ein
=>最終我們可以推斷機器可以學習,因為其在全集數據集錯誤率會較低。
二什么是VC Dimension
下面給出了VC Dimension的定義,
- 它是該假設集能夠shatter的最多inputs的個數,即最大完全正確的分類能力(注意,只要存在一種分布的input能夠正確分類就算是,這才叫最大);
- 它是最小的k-1,這個很好理解,最小的k是假設集不能shatter任何分布類型的inputs的最少個數,和VC Dimension正好相反;
同樣,將Dvc替換k,得到mh(N)<=N^(Dvc)
三 VC Dimension 和 Feature 數量的關系,在PLA算法中
接下來回顧了PLA在2d情況下,由於其Dvc=3,所以按照算法我們選小的Ein就能夠保證機器學習算法的運行,但是這是2維的情況,對於多維呢?也就是說增加feature咋辦?
這里又拋出了一個結論:Dvc = d+1, d為feature vector的維度。
要證明這個等式,可以將它分為兩塊證明,
1 證明 Dvc >= d+1;
2 證明 Dvc <= d+1;
首先證明等式1:
因為Dvc >= d+1, 那么我們必然可以shatter 某一類的d+1的inputs,這個是VC Dimension的定義。這里用線性代數的方法表達了X矩陣的每一行是一個x向量的轉置。這個有意構造的X便能夠被shatter。首先,shatter的本質是H對X的每個判斷都是對的即等於y,所以有如下不等式:
X*W = Y,我們注意到X是可逆的,所以W = X^(-1) * Y,所以我們只要讓feature vector等於X的逆矩陣乘以Y就能給完全shatter X,言外之意,只要我們構造的inputs其有逆矩陣就能夠被shatter!
下面證明等式二,Dvc<=d+1,也就是說對於d+2的inputs,其一定不能被shatter,同樣我們構造一個X,這次是任意的,其包含d+2個inputs,我們發現這個矩陣的列為d+1而行為d+2,由線性代數的知識,我們知道這d+2個向量的某一個可以表示為另外d+1個向量的線性組合,假設這個向量為Xd+2,那么便有了如下等式:
w^Txd+2 = a1w^Tx1 + a2w^Tx2 + ... + ad+1w^Txd+1,
我們只要構造這樣這組w,保證每一項是正的,例如假設a1是負的,那么我們構造w使得w^Tx1也是負的,這樣就使得最終的值為正,從而我們沒法分類其為負的情況,因為其值始終是正的。換句話說,因為d+2是前d+1的線性組合,這樣一個限制導致了最終的結果。所以對於d+2我們無法完全分類,也即使Dvc<=d+1。
四 VC Dimension的直觀理解
那么VC Dimension本質上到底是什么呢?
下圖給了答案
自由度的概念,體現在我們能夠包含多少feature w,能夠有多少假設H的數量,以及我們最終的分類能力Dvc,也就是說Dvc本質上大體上是H的分類能力,同樣可以理解為feature的個數,假設的個數,因為它們都是互相成正比的。
再次回到以前那個泛化不等式:
將它左右變形,求出Eout的的界限,我們比較關注上限,可知我們最終的機器學習算法其在整體的錯誤率和N,H,S的表達式(Model 復雜度的懲罰)有關。下圖很直觀的給出了它們之間的關系:
這個圖說了:
1 Dvc越高 -> Ein下降(shatter能力變強)-> model complexity的penalty提高,導致Eout先降后升
2 Dvc越低 -> Ein升高 -> model complexity的penalty降低,Eout最終也是會上升
所以最好情況的Eout是我們選取Dvc在中間的情況,這樣Ein和penalty都不高,即最終的Eout也不會太高。這也就是為什么,我們不能夠盲目增加feature也不能有太少feature的原因。
五總結
本章主要描述了VC Dimension並給出了較為直觀的解釋,我們不能盲目增加VC Dimension也不能太低,而應該去中間值,這樣既保證Ein不高也保證model complexity的penalty不高。