【導讀】周志華《機器學習》又稱西瓜書是一本較為全面的書籍,書中詳細介紹了機器學習領域不同類型的算法(例如:監督學習、無監督學習、半監督學習、強化學習、集成降維、特徵選擇等),記錄了Vay-Keen在學習過程中的理解思路與擴展知識點,希望對新人閱讀西瓜書有所幫助!
項目地址:
https://github.com/Vay-keen/Machine-learning-learning-notes
學習筆記
一. 緒論
機器學習是目前信息技術中最激動人心的方向之一,其應用已經深入到生活的各個層面且與普通人的日常生活密切相關。本文為清華大學最新出版的《機器學習》教材的Learning Notes,書作者是南京大學周志華教授,多個大陸首位彰顯其學術奢華。本篇主要介紹了該教材前兩個章節的知識點以及自己一點淺陋的理解。
1.1 機器學習的定義
正如我們根據過去的經驗來判斷明天的天氣,吃貨們希望從購買經驗中挑選一個好瓜,那能不能讓計算機幫助人類來實現這個呢?機器學習正是這樣的一門學科,人的「經驗」對應計算機中的「數據」,讓計算機來學習這些經驗數據,生成一個算法模型,在面對新的情況中,計算機便能作出有效的判斷,這便是機器學習。
另一本經典教材的作者Mitchell給出了一個形式化的定義,假設:
P:電腦程式在某任務類T上的性能。
T:電腦程式希望實現的任務類。
E:表示經驗,即歷史的數據集。
若該電腦程式通過利用經驗E在任務T上獲得了性能P的改善,則稱該程序對E進行了學習。
1.2 機器學習的一些基本術語
假設我們收集了一批西瓜的數據,例如:(色澤=青綠;根蒂=蜷縮;敲聲=濁響), (色澤=烏黑;根蒂=稍蜷;敲聲=沉悶), (色澤=淺自;根蒂=硬挺;敲聲=清脆)……每對括號內是一個西瓜的記錄,定義:
所有記錄的集合為:數據集。
每一條記錄為:一個實例(instance)或樣本(sample)。
例如:色澤或敲聲,單個的特點為特徵(feature)或屬性(attribute)。
對於一條記錄,如果在坐標軸上表示,每個西瓜都可以用坐標軸中的一個點表示,一個點也是一個向量,例如(青綠,蜷縮,濁響),即每個西瓜為:一個特徵向量(feature vector)。
一個樣本的特徵數為:維數(dimensionality),該西瓜的例子維數為3,當維數非常大時,也就是現在說的「維數災難」。
電腦程式學習經驗數據生成算法模型的過程中,每一條記錄稱為一個「訓練樣本」,同時在訓練好模型後,我們希望使用新的樣本來測試模型的效果,則每一個新的樣本稱為一個「測試樣本」。定義:
所有訓練樣本的集合為:訓練集(trainning set),[特殊]。
所有測試樣本的集合為:測試集(test set),[一般]。
機器學習出來的模型適用於新樣本的能力為:泛化能力(generalization),即從特殊到一般。
西瓜的例子中,我們是想計算機通過學習西瓜的特徵數據,訓練出一個決策模型,來判斷一個新的西瓜是否是好瓜。可以得知我們預測的是:西瓜是好是壞,即好瓜與差瓜兩種,是離散值。同樣地,也有通過歷年的人口數據,來預測未來的人口數量,人口數量則是連續值。定義:
預測值為離散值的問題為:分類(classification)。
預測值為連續值的問題為:回歸(regression)。
我們預測西瓜是否是好瓜的過程中,很明顯對於訓練集中的西瓜,我們事先已經知道了該瓜是否是好瓜,學習器通過學習這些好瓜或差瓜的特徵,從而總結出規律,即訓練集中的西瓜我們都做了標記,稱為標記信息。但也有沒有標記信息的情形,例如:我們想將一堆西瓜根據特徵分成兩個小堆,使得某一堆的西瓜儘可能相似,即都是好瓜或差瓜,對於這種問題,我們事先並不知道西瓜的好壞,樣本沒有標記信息。定義:
訓練數據有標記信息的學習任務為:監督學習(supervised learning),容易知道上面所描述的分類和回歸都是監督學習的範疇。
訓練數據沒有標記信息的學習任務為:無監督學習(unsupervised learning),常見的有聚類和關聯規則。
2 模型的評估與選擇
2.1 誤差與過擬合
我們將學習器對樣本的實際預測結果與樣本的真實值之間的差異成為:誤差(error)。定義:
在訓練集上的誤差稱為訓練誤差(training error)或經驗誤差(empirical error)。
在測試集上的誤差稱為測試誤差(test error)。
學習器在所有新樣本上的誤差稱為泛化誤差(generalization error)。
顯然,我們希望得到的是在新樣本上表現得很好的學習器,即泛化誤差小的學習器。因此,我們應該讓學習器儘可能地從訓練集中學出普適性的「一般特徵」,這樣在遇到新樣本時才能做出正確的判別。然而,當學習器把訓練集學得「太好」的時候,即把一些訓練樣本的自身特點當做了普遍特徵;同時也有學習能力不足的情況,即訓練集的基本特徵都沒有學習出來。我們定義:
可以得知:在過擬合問題中,訓練誤差十分小,但測試誤差教大;在欠擬合問題中,訓練誤差和測試誤差都比較大。目前,欠擬合問題比較容易克服,例如增加迭代次數等,但過擬合問題還沒有十分好的解決方案,過擬合是機器學習面臨的關鍵障礙。
2.2 評估方法
在現實任務中,我們往往有多種算法可供選擇,那麼我們應該選擇哪一個算法才是最適合的呢?如上所述,我們希望得到的是泛化誤差小的學習器,理想的解決方案是對模型的泛化誤差進行評估,然後選擇泛化誤差最小的那個學習器。但是,泛化誤差指的是模型在所有新樣本上的適用能力,我們無法直接獲得泛化誤差。
因此,通常我們採用一個「測試集」來測試學習器對新樣本的判別能力,然後以「測試集」上的「測試誤差」作為「泛化誤差」的近似。顯然:我們選取的測試集應儘可能與訓練集互斥,下面用一個小故事來解釋why:
假設老師出了10 道習題供同學們練習,考試時老師又用同樣的這10道題作為試題,可能有的童鞋只會做這10 道題卻能得高分,很明顯:這個考試成績並不能有效地反映出真實水平。回到我們的問題上來,我們希望得到泛化性能好的模型,好比希望同學們課程學得好並獲得了對所學知識"舉一反三"的能力;訓練樣本相當於給同學們練習的習題,測試過程則相當於考試。顯然,若測試樣本被用作訓練了,則得到的將是過於"樂觀"的估計結果。
2.3 訓練集與測試集的劃分方法
如上所述:我們希望用一個「測試集」的「測試誤差」來作為「泛化誤差」的近似,因此我們需要對初始數據集進行有效劃分,劃分出互斥的「訓練集」和「測試集」。下面介紹幾種常用的劃分方法:
2.3.1 留出法
將數據集D劃分為兩個互斥的集合,一個作為訓練集S,一個作為測試集T,滿足D=S∪T且S∩T=∅,常見的劃分為:大約2/3-4/5的樣本用作訓練,剩下的用作測試。需要注意的是:訓練/測試集的劃分要儘可能保持數據分布的一致性,以避免由於分布的差異引入額外的偏差,常見的做法是採取分層抽樣。同時,由於劃分的隨機性,單次的留出法結果往往不夠穩定,一般要採用若干次隨機劃分,重複實驗取平均值的做法。
2.3.2 交叉驗證法
將數據集D劃分為k個大小相同的互斥子集,滿足D=D1∪D2∪...∪Dk,Di∩Dj=∅(i≠j),同樣地儘可能保持數據分布的一致性,即採用分層抽樣的方法獲得這些子集。交叉驗證法的思想是:每次用k-1個子集的併集作為訓練集,餘下的那個子集作為測試集,這樣就有K種訓練集/測試集劃分的情況,從而可進行k次訓練和測試,最終返回k次測試結果的均值。交叉驗證法也稱「k折交叉驗證」,k最常用的取值是10,下圖給出了10折交叉驗證的示意圖。
與留出法類似,將數據集D劃分為K個子集的過程具有隨機性,因此K折交叉驗證通常也要重複p次,稱為p次k折交叉驗證,常見的是10次10折交叉驗證,即進行了100次訓練/測試。特殊地當劃分的k個子集的每個子集中只有一個樣本時,稱為「留一法」,顯然,留一法的評估結果比較準確,但對計算機的消耗也是巨大的。
2.3.3 自助法
我們希望評估的是用整個D訓練出的模型。但在留出法和交叉驗證法中,由於保留了一部分樣本用於測試,因此實際評估的模型所使用的訓練集比D小,這必然會引入一些因訓練樣本規模不同而導致的估計偏差。留一法受訓練樣本規模變化的影響較小,但計算複雜度又太高了。「自助法」正是解決了這樣的問題。
自助法的基本思想是:給定包含m個樣本的數據集D,每次隨機從D 中挑選一個樣本,將其拷貝放入D',然後再將該樣本放回初始數據集D 中,使得該樣本在下次採樣時仍有可能被採到。重複執行m 次,就可以得到了包含m個樣本的數據集D'。可以得知在m次採樣中,樣本始終不被採到的概率取極限為:
這樣,通過自助採樣,初始樣本集D中大約有36.8%的樣本沒有出現在D'中,於是可以將D'作為訓練集,D-D'作為測試集。自助法在數據集較小,難以有效劃分訓練集/測試集時很有用,但由於自助法產生的數據集(隨機抽樣)改變了初始數據集的分布,因此引入了估計偏差。在初始數據集足夠時,留出法和交叉驗證法更加常用。
2.4 調參
大多數學習算法都有些參數(parameter) 需要設定,參數配置不同,學得模型的性能往往有顯著差別,這就是通常所說的"參數調節"或簡稱"調參" (parameter tuning)。
學習算法的很多參數是在實數範圍內取值,因此,對每種參數取值都訓練出模型來是不可行的。常用的做法是:對每個參數選定一個範圍和步長λ,這樣使得學習的過程變得可行。例如:假定算法有3 個參數,每個參數僅考慮5 個候選值,這樣對每一組訓練/測試集就有555= 125 個模型需考察,由此可見:拿下一個參數(即經驗值)對於算法人員來說是有多麼的happy。
最後需要注意的是:當選定好模型和調參完成後,我們需要使用初始的數據集D重新訓練模型,即讓最初劃分出來用於評估的測試集也被模型學習,增強模型的學習效果。用上面考試的例子來比喻:就像高中時大家每次考試完,要將考卷的題目消化掉(大多數題目都還是之前沒有見過的吧?),這樣即使考差了也能開心的玩耍了~。
二、性能度量
三、假設檢驗&方差&偏差
四、線性模型
五、決策樹
六、神經網絡
七、支持向量機
九、貝葉斯分類器
十、EM算法
十一、集成學習
十二、聚類
十三、降維與度量學習
十四、特徵選擇與稀疏學習
十五、計算學習理論
十七、半監督學習
十八、概率圖模型
十九、強化學習
更多請查看項目地址
-END-
專 · 知
專知,專業可信的人工智慧知識分發!歡迎登錄www.zhuanzhi.ai,註冊登錄專知,獲取更多AI知識資料!
歡迎微信掃一掃加入專知人工智慧知識星球群,獲取最新AI專業乾貨知識教程視頻資料和與專家交流諮詢!
請加專知小助手微信(掃一掃如下二維碼添加),加入專知人工智慧主題群,諮詢技術商務合作~