1. 程式人生 > >機器學習#假設空間與版本空間

機器學習#假設空間與版本空間

讀周志華的機器學習,卡在假設空間和版本空間這一塊了,寫一下自己的理解:

假設空間:所有屬性的可能性(可能取值)組合形成的假設(假設*,*,*為好瓜),組成假設空間,以西瓜問題假設為例。色澤屬性可取(青綠,烏黑,淺白,*),根蒂屬性可取(蜷縮,稍蜷,硬挺,*),敲聲屬性可取(濁響,清脆,沉悶,*),以及好瓜假設不存在。即西瓜問題的假設空間大小為(4*4*4+1=65)

有了假設空間之後,要根據已獲取的資訊(資料集)來對假設空間進行剪枝。即要找到一個與訓練集匹配的假設空間子集。

版本空間:書中定義為:與訓練集匹配的假設空間子集稱為版本空間。

前文提到的匹配有必要著重解釋下:我們的假設空間寫出來為,色澤青綠,根蒂蜷縮,敲聲濁響

的瓜是好瓜把上文列舉的64種可能性組合(不包含空集)去替換紅色字跡部分藍色字跡部分不變,總共寫成64+1行,這是假設空間的真面目!!!然而,這些都是假設,接下來要做的是根據訓練集去篩選這些假設。篩選規則書中有說:刪除與正例不一致的假設和與反例一致的假設(即刪除那些錯誤的假設)。這個過程就是假設空間與訓練集匹配。最終得到的假設組成版本空間。

下面繼續說:刪除與正例不一致的假設和與反例一致的假設這一過程。(當初以為把資料集中所有的正例項寫出來,把反例項剔除就行了,too young too naive!!)

                                                       


以西瓜問題的資料集,表1.1為例。色澤青綠,根蒂蜷縮,敲聲濁響的瓜是好瓜,這句話沒問題。但是,若它作為一種假設,則需要被剔除,因為若它成立,則色澤非青綠,根蒂非蜷縮,敲聲非濁響的瓜都為壞瓜,這就與編號2的例項矛盾了。(沒考慮到假設的排他性,我理解為話不能說的太滿大笑當然也有例外的情況)。再比如說,色澤=*,根蒂=*,敲聲=濁響的瓜是好瓜,如果我們做出這種假設,對於表中的4種訓練樣本,在這種假設下都能做出正確的判斷。對於色澤是烏黑,根蒂蜷縮,敲聲濁響的瓜,根據這種假設,我們也能做出是好瓜的判斷。同理色澤=*,根蒂=青綠,敲聲=*的瓜是好瓜這條假設也匹配,這樣,就能得出與表1.1訓練集相匹配的版本空間。

版本空間的求取看到這就可以結束了,真正在做的時候可能需要把所有的假設全部列出來,再進行匹配(雖然可能會很複雜,但求版本空間的題目意義在於讓大家理解下文的概念,所以就算有類似的題,要與之匹配的資料集也不會太大,可以把所有假設列出來再進行匹配)

我覺得版本空間的概念是為了讓大家理解接下來的意思:上面求出來了西瓜問題的版本空間,但可以看到版本空間不是很確定,包含有*的假設可能會得到正確的判斷,也可能得到錯誤的判斷(這句話是針對實際問題,如果針對表1.1的訓練集,那當然不會有錯誤的判斷)。因此,要想判斷的正確,就要全面、大量的訓練,以排除更多假設空間中的錯誤假設。錯誤假設越少,剩下的假設越少,就越有可能是正確假設,我們判斷的結果的正確概率越大。因為最終的假設會隨著版本(資料集)變化而變化,所以叫做版本空間。

也就是說,訓練樣本的這些假設只是版本空間的一個子集。這就是所謂的“泛化”。泛化的意思也就是,根據某些偏好,我們選擇了版本空間裡的一種假設作為判斷好

瓜壞瓜的決策準則,我能對訓練集中的樣本做出正確的判斷,對於訓練集中沒有訓練到的樣本,我們也可以做出判斷,但是判斷結果可能是錯誤的。

文章參考:http://blog.csdn.net/qq_20936739/article/details/77982056