1. 程式人生 > >《機器學習》第二章 概念學習和一般到特殊序

《機器學習》第二章 概念學習和一般到特殊序

hang 描述 兩個 str 依賴 實例 sport 遊泳 win

《機器學習》第二章 概念學習和一般到特殊序

2.1.簡介

布爾函數一般形式:F(b1, b2, ..., bn),其中 bi的定義域為{0,1},F的值域為{0, 1}。 在一般的定
義域上的,取值在 {0, 1} 中的函數也叫做布爾值函數概念學習定義中的布爾函數指定就這個,主要是
規定學習的問題目標是布爾的,反應在上面的樣本中,就是Yes或者No。目標函數的形式如下:
f: X->{0,1}

概念學習:是指從有關某個布爾函數的輸入輸出訓練樣例中推斷出該布爾函數。【很明顯概念學習屬於
監督學習的分類問題】

另外一種定義:給定一樣例集合以及每個樣例是否屬於某一概念的標註,怎樣自動推斷出該概念的一般
定義。這一問題被稱為概念學習。

2.2.概念學習任務


目標概念:Aldo(人名)會去海邊遊泳的日子,註意,這裏這樣描述不太好,很容易理解成我們要得到
的表示目標感念的函數輸出的是一串日期,不符合前面所說的概念學習的目標是推斷一個布爾函數,實
際上,這裏是給出一個日子,基於這一天的各種屬性,推斷Aldo是否會在這天去遊泳。



表1 目標概念EnjoySport的正例和反例
Example Sky AirTemp Humidity Wind Water Forecast EnjoySport

1 Sunny Warm Normal Strong Warm Same Yes
2 Sunny Warm High Strong Warm Same Yes
3 Rainy Cold High Strong Warm Change No
4 Sunny Warm High Strong Cool Change Yes


接下來要確定假設(目標函數)的形式,可以先考慮一個較為簡單的形式,即實例的各個屬性的合取式
。可令每個假設為6個約束的向量,這些約束指定了Sky、AirTemp、Humidity、Wind、Water、Forcast的
值。每個屬性可取值為:

1)由“?”表示任意本屬性可接受的值。

2)明確指定的屬性值(如warm)。

3)由“Φ”表示不接受任何值。

如果某些實例x滿足假設h的所有約束,那麽h將x分類為正例(h(x)=1)。比如,為判定Aldo只在寒冷的和
潮濕的日子裏進行隨上運動(並與其他屬性無關),這樣的假設可以表示為下面的表達式:
<?, Cold, High, ?, ?, ?>
也就是要表達:
if AirTemp = Cold ∧ Humidity = High then EnjoySport = Yes
那麽最一般的假設是每一天都是正例,可表示為:
<?, ?, ?, ?, ?, ?>
而最特殊的假設即每一天都是反例,表示為:
<Φ, Φ, Φ, Φ, Φ, Φ>


註意:1. <Φ, Φ, Φ, Φ, Φ, Φ>和<Φ, ?, ?, ?, ?, ?>、<Φ, Φ, ?, ?, ?, ?>等等其實是一
樣的假設,也就是只要假設中有一個屬性為“Φ”,那麽這個假設就表示每天都是反例。
2. 你很可能會懷疑,這裏假設的形式為什麽一定是屬性的合取,若屬性Humidity有3種取值:High、
Normal和Low,那麽就無法表達Aldo會在濕度Normal或High的時候去海邊遊泳,因為這是一個析取式:
if Humidity = Normal ∨ Humidity = High then EnjoySport = Yes
後面會講,斷言假設的形式為屬性的合取是一種歸納偏置,它使得我們的學習器是有偏的,如果學習
器是無偏的,那麽它根本上無法對未見實例進行分類,這一點很重要,後面會慢慢解釋。】


2.2.1.術語定義

現在做一些術語定義,方便後面的表述:
(1)待學習的概念或函數稱為目標概念,記作c。

(2)概念定義在一個實例集合上,這個集合表示為X。學習目標概念時,必須提供一套訓練樣例(訓練集
,記為D),訓練集中的人每個樣例為X中的一個實例x和它的目標概念值c(x)(如上面的表1中的example
)。c(x)=1,x稱為正例(positive);c(x)=0,x稱為反例(negative)。可以用序偶<x, c(x)>來描述訓練
樣例。

【序偶:兩個具有固定次序的客體組成一個序偶,它常常表達兩個客體之間的關系。由某個集合中元素x
與y,以確定的順序所組成的一對:第一個是x,第二個是y,稱為序偶,記為(x,y)。】

(3)給定目標概念c的訓練樣例集,學習器面臨的問題就是假設或估計c。使用符號H來表示所有可能假設
的集合,也稱為假設空間,對於我們的問題來說假設空間就是所有各個屬性的合取式。H中的每個假設h
表示X上定義的布爾函數,即h:X->{0,1}。機器學習的目標就是尋找一個假設h,使對於X中的所有x,h
(x)=c(x)。

2.2.2.歸納學習假設

器學習的任務是在實例集合X上尋找一個與目標概念c相同的假設h,然而我們對於c僅有的信息只是它在
訓練結合上的值。因此,歸納學習算法最多只能保證輸出的假設能與訓練樣例相擬合。如果沒有更多的
信息,我們只能假定,對於未見實例最好的假設就是與訓練樣例數據最佳擬合的假設。這是一個歸納學
習的基本假定。下面給出一個準確的定義:

歸納學習假設: 任一假設如果在足夠大的訓練樣例集合中很好地逼近目標函數,它也能在未見實例中很
好地逼近目標函數。【即如何搜索假設空間H獲得與目標概念c一致的假設h。】

2.3.作為搜索的概念學習


概念學習可以看作是一個搜索的過程,範圍是假設的表示所隱含定義的整個空間。搜索的目標是為了
尋找能最好地擬合訓練樣例的假設。必須註意到,當假設的表示形式選定後,那麽也就隱含地為學習算
法確定了所有假設空間。這些假設是學習程序所能表示的,也是它能夠學習的。


假設的一般到特殊序

許多概念學習算法(如這裏要講的候選消除算法),搜索假設空間的方法依賴於一種針對任意概念學習
都很有效的結構:假設的一般到特殊序關系。
考慮下面兩個假設:
h1=<Sunny, ?, ?, Strong, ?, ?>
h2=<Sunny,?, ?, ?, ?, ?>
很明顯,被h1劃分為正例的實例都會被h2劃分為正例,因此,可以說h2比h1更一般,h1比h2更特殊。現
在要定義“比……更一般”這種關系

定義:令hj和hk為在X上定義的布爾函數。稱hj more_general_than_or_equal_to hk (記作hj≥ghk)
,當且僅當
(▽x∈X)[(hk(x)=1)→(hj(x)=1)]
如果hj≥ghk ∧ (hk ≠g hj),那麽就說 hj 嚴格的 more_general_than hk(寫作hj>ghk),可以得出
≥g的一些簡單性質:
(1) 自反性,hj≥ghj
(2) 反對稱,若hj≥ghk,那麽hk 非≥g hj
(3) 傳遞性,若hi≥ghj且hj≥ghk,那麽hi≥ghk
很明顯,≥g是假設空間H上的一個偏序關系。
≥g很重要,因為它在假設空間H上對任意概念學習問題提供了一種有效的結構,可以更加有效地搜索假
設空間。


2.4.FIND-S:尋找極大特殊假設


如何使用more_general_than偏序來搜索與訓練樣例相一致的假設呢?一種辦法是從H中最特殊假設開
始,然後在該假設覆蓋正例失敗時將其一般化(當一假設能正確地劃分一個正例時,稱該假設“覆蓋
該正例)。

FIND-S算法

1)將h初始化H中最特殊假設
2)對每個正例x
*對h的每個屬性約束ai
如果x滿足ai
那麽不做任何處理
否則將h中ai替換為x滿足的下一個更一般約束
3)輸出假設h

FIND-S實現步驟
第一步:將h初始化為H中最特殊假設:
h←<Φ,Φ,Φ,Φ,Φ,Φ>
h←<sunny,warm,normal,strong,warm,same>

第二步:第2個訓練樣例(仍然為正例)迫使該算法進一步將h一般化。這次使用“?”代替h中不能被新
樣例滿足的屬性值,這樣假設變為:
h←<sunny,warm,?,strong,warm,same>
第3步:是個反例h不變。實際上,FIND-S算法簡單的忽略每個反例。
第4步:接著完成FIND-S算法,第四個正例使得h更一般
h←<sunny,warm,?,strong,?,?>
這一搜索沿著偏序鏈,從較特殊的假設逐漸轉移到較一般的假設

FIND-S算法的重點特點是:對以屬性約束的合取式描述的假設空間,FIND-S保證輸出為H中與正例一致的
最特殊的假設。


FIND-S算法算法仍存在一些為解決的問題:

1)學習過程是否收斂到了正確的目標概念?
2)為什麽要用最特殊的假設
3)訓練樣例是否相互一致?
4)如果有多個極大特殊假設怎麽辦?


2.5.變型空間和候選消除算法

候選消除算法它能解決FIND-S中的若幹不足之處。其輸出的是與訓練樣例一致的所有假設的集合

候選消除算法的目的是引入若幹基本的機器學習問題提供一個良好的概念框架。

2.5.1.表示

為了更好的說明變型空間,先給出一個定義:
一個假設h與訓練樣例集合D一致,當且僅當對D中每一個樣例<x,c(x)>都有h(x) = c(x)。
記為:
consistent(h,D)三(▽<x,c(x)>∈D)h(x)=c(x)
候選消除算法能夠表示與訓練樣例一致的所有假設。在假設空間中的這一子集被稱為關於假設空間H和訓
練樣例D的變型空間,因為它包含了目標概念的所有合理的變型。


定義:關於假設空間H和訓練樣例集D的變型空間,標記為VSH,D,是H中與訓練樣例D一致的所有假設構成
的子集。
VS H,D三{h∈H|consistent(h,D)}
使用上面介紹到的一般到特殊序的結構,可以用更簡潔的形式表示變型空間。變型空間可以表示為它的
極大一般的和極大特殊的成員。

2.5.2.列表後消除法


列表後消除法

1.變型空間VersionSpace←包含H中所有假設的列表

2.對每個訓練樣例<x,c(x)>
從變型空間中移除所有h(x)≠c(x)的假設h

3 輸出VersionSpace中的假設列表
它具有很多優點,如能保證得到與訓練數據一致的所有假設。但是,這一算法要求非常繁瑣地列出H
中所有假設,這對於大多數實際的假設空間是不現實的要求


2.5.3.變型空間的更簡潔表示


定義:
一般邊界:關於假設空間H和訓練數據D的一般邊界(general boundary)G,是在H中與D相一致的極大一
般成員的集合。S←{<?,?,?,?,?,?>}一般

特殊邊界:關於假設空間H和訓練數據D的特殊邊界(specific boundary)S,是在H中與D相一致的極大
特殊成員的集合。G←{<Φ,Φ,Φ,Φ,Φ,Φ>}特殊


變型空間表示定理:令X為一任意的實例集合,H為X上定義的布爾假設的結合。令c:X->{0,1}為X上定義
的任意目標概念,並令D為任一訓練樣例的集合{<x,c(x)>}。對所有的X, H, c, D 以及良好定義的S和G

2.5.4.候選消除學習算法
有了上面的一些預備知識,現在可以來說明候選消除算法。算法的思路如下:獲得變型空間VSH,D ,首
先將G邊界和S邊界分別初始化為H中最一般的假設和最特殊的假設。即:
G0 <- {<?, ?, ?, ?, ?, ?>}
S0 <- {<Φ, Φ, Φ, Φ, Φ, Φ>}
然後處理每個訓練樣例,使得S被一般化,G被特殊化,從而逐步縮小變型空間,消去變型空間中與樣例
不一致的假設。
正例使得變型空間的S邊界逐漸一般化,而反例扮演的角色恰好使得G邊界逐漸特殊化。每輸入一個訓
練樣例,S和G邊界將繼續單調移動並相互靠近,劃分出越來越小的變型空間。

2.6關於變型空間和候選消除的說明


2.6.1.候選消除算法是否會收斂到正確的假設

由候選消除算法得到的變型空間能夠收斂到描述目標概念的假設的條件:(1)在訓練樣例中沒有錯誤。
(2)H中確實包含描述目標概念的正確假設。實際上,如果遇到新的訓練樣例,可以監測變型空間以判
斷其與真正的目標概念之間是否還有分歧,以及為精確確定目標概念還需要多少訓練樣例。當S和G邊界
集合收斂到單個的可確定的假設時,目標概念才真正獲得。


2.6.2.怎麽使用不完全學習概念

假設只提供了表1中的4個訓練樣例,沒有更多的訓練樣例,現在要對未見過的實例進行分類。圖1表示的
變型空間仍包含多個假設,即目標概念還未完全學習到,但是仍然有可能對新樣例進行一定可信度的分
類。為示範這一過程,給出表2列出待分類的新實例:


表2 待分類的新實例

Instance Sky AirTemp Humidity Wind Water Forecast EnjoySport
A Sunny Warm Normal Strong Cool Change ?
B Rainy Cold Normal Light Warm Same ?
C Sunny Warm Normal Light Warm Same ?
D Sunny Cold Normal Strong Warm Same ?


先看A,圖1所示的當前的變型空間中的每個假設都將A分類為正例。由於變型空間的所有假設一致同意實
例A為正例,學習器將A劃分為正例的可信度,與只有單個的目標概念一樣,【當然前提是假設了目標概
念一定在假設空間中,且訓練樣例沒有錯誤】事實上,只要S中的每個成員將實例劃分為正例,就可以斷
言變型空間中的每個假設將其劃分正例,因為由more_general_than定義,如果新的實例滿足S的所有成
員,它一定也滿足這些更一般的假設。


同樣,B被變型空間中的每個假設劃分為反例,可以放心地把B劃分為反例,即使概念學習是不完全的。
只要實例不滿足G中的所有成員,那麽該實例就可以被斷言為反例。

碰到實例C就要註意了,變型空間中半數將C劃分為正例,半數劃分為反例。因此,學習器無法可信的分
類地這一樣例,除非提供更多的訓練樣例。

實例D在變型空間中被兩個假設分為正例,被其他劃分為正例。這個例子的分類可信度比A和B要小,又比
C要大。投票選取傾向於將其分類為反例,所以可以輸出擁有最大票數的分類,還可附帶一個可信度比例
以表明投票的傾向程度。註意,如果假定H中所有假設有相等的先驗概率,那麽投票的方法能得到新實
例的最可能的分類)


2.7歸納偏置


【機器學習試圖去建造一個可以學習的算法,用來預測某個目標的結果。要達到此目的,要給於學習算
法一些訓練樣本,樣本說明輸入與輸出之間的預期關系。然後假設學習器在預測中逼近正確的結果,其
中包括在訓練中未出現的樣本。既然未知狀況可以是任意的結果,若沒有其它額外的假設,這任務就無
法解決。這種關於目標函數的必要假設就稱為歸納偏置

2.7.1一個有偏的假設空間

如前所述,如果訓練樣例沒有錯誤,初始假設空間包含概念目標時,如果提供足夠多的訓練樣例,候選
消除算法可以收斂到目標概念。前面提到,斷言假設的形式為屬性的合取,事實上是為了縮小需要搜索
的假設空間的範圍。這樣做的一個後果是,有可能目標概念不在這樣一個初始的假設空間中。

如果想要保證假設空間中包含目標概念,一個明顯的方法是擴大假設空間,使每個可能的假設都被包含
在內。再次以EnjoySport為例子,其中將假設空間限制為只包含屬性值的合取。由於這一限制,假設空
間不能夠表示最簡單的析取形式的目標如“Sky = Sunny 或 Sky = Cloudy”。

所以問題在於,我們使學習器偏向於只考慮合取的假設。


2.7.2.無偏的學習器

冪集(power set)把集合X的所有子集的集合稱為冪集
假設AirTemp、Humidity、Wind、Water、Forcast都只有兩種可能取值,Sky有三種可能取值,那麽實例
空間X包含了3×2×2×2×2×2=96種不同的實例。根據集合的知識,在這一實例集合X的冪集的大小是
2^|X|,其中|X|是X的元素數目。因此在這一實例空間上可以定義2^96,或大約10^28個不同的目標概念
,我們稱包含了2^|X|個假設的這樣一個假設空間是一個無偏的假設空間。先前我們將假設空間限制為只
包含屬性值的合取,那麽只能表示1+4×3×3×3×3×3=973個假設。看來我們先前的空間實在是一
個偏置很大的假設空間。

新的假設空間H’,它能表示實例的每一個子集,也就是把H’對應到X的冪集。

<Sunny,?,?,?,?,?>∨<Cloudy,?,?,?,?,?>

假定我們給學習器提供了3個正例( x1, x2, x3)以及反例(x4, x5)。這時,變型空間的S邊界包含的假設
正好是三個正例的析取:

S : { (x1 ∨ x2 ∨ x3) }
因為這是能覆蓋3個正例的最特殊假設。相似地,G邊界將由那些剛好能排除掉的那些假設組成。

G : {否定符號(x4 ∨ x5) }
【問題來了,在這一非常具有表達力的假設表示方法中,S邊界總是所有正例的析取式,G邊界總是所有
反例的析取的否定式。這樣能夠由S和G無歧義分類的,只有已見到的訓練樣例本身。要想獲得單個目標
概念,就必須提供提供X中所有的實例作為訓練樣例。

好吧,為了避免這個問題,我們只使用不完全學習得到的變型空間,像前面使用成員投票的方式對未見
實例進行分類。遺憾的是,你馬上會發現投票對於那些未見過的實例不起作用,為什麽?未見實例會被
變形空間中剛好半數的假設劃分為正例,而被另一半劃分為反例,原因如下,若H是X的冪集,而x是某個
未出現的實例,則對於變型空間中一覆蓋x的假設h。必然存在另一假設h’,它與h幾乎相等,只不過對x
的分類不同。而且,如果h在變型空間中,那麽h’也在,因為它對於已往訓練樣例的劃分與h完全一樣。

2.7.3.無偏學習的無用性
以上討論說明了歸納推理的一個基本屬性:【學習器如果不對目標概念的形式做預先的假定,它從根本
上無法對未見實例進行分類。這便是無偏學習的無用性。

【由於歸納學習需要某種形式的預先假定,或稱為歸納偏置(inductive bias),我們可以用歸納偏置
來描述不同學習方法的特征。】

【簡單的講,歸納偏置就是一個附加的前提集合B,以後還會提到,這個前提集合B有兩種情況,第一種
是對假設空間進行限定,就像候選消除算法那樣;第二種是假設空間是完整的假設空間,但是進行不徹
底的搜索,很多貪心算法都是這樣的,如以後會提到的決策樹算法。前一種歸納偏置叫做限定偏置,後
一種叫做優選偏置。】

候選消除算法的歸納偏置:目標概念c包含在給定的假設空間H中。
使用假設空間H的候選消除算的輸入輸出行為,等價於利用了斷言“H包含目標概念”的演繹定理證明器
。該斷言因此被稱為候選消除算法的歸納偏置。用歸納偏置來刻畫歸納系統,可以便於使用等價的演繹
系統來模擬它們。這提供了一種對歸納系統進行比較的方法,即通過它們從訓練數據中泛化的策略。

在研究其他的歸納推理方法時,有必要牢記這種歸納偏置的存在及其強度。一種算法如果有偏性越強
,那它的歸納能力越強,可以分類更多的未見實例。當然,分類的正確性也依賴於歸納偏置的正確性。

《機器學習》第二章 概念學習和一般到特殊序