機器學習(西瓜書)轉載:數據搬瓦工

前言

我是一個機器學習的入門者。看了很多前輩大神的推薦,從西瓜書(周志華老師《機器學習》)或者 Coursera 吳恩達機器學習視頻入門比較好。我比較喜歡書籍,因爲做起筆記比較方便。有輸入同時有輸出才能讓學習效率更加好,所以邊讀邊做筆記。下面我將按照西瓜書的章節來,如果有不對的地方,還望指導學習。

正文

首先,通過思維導圖來描述一下西瓜書第一章的知識內容與結構。

 

西瓜書第一章思維導圖

基本概念

在學習機器學習之前,首先要搞清楚它的定義、研究內容等等基本概念。

定義:機器學習是致力於通過計算的手段,利用數據來改善系統自身的性能的學科

研究內容:從數據中產生“模型”的算法(即學習算法)

如何運用:有了學習算法,將經驗數據傳給學習算法後,產生相應模型;在面對新情況時,模型將會給出相應的判斷。

舉個日常例子理解機器學習整個過程,當我們有了一些西瓜(訓練數據集),且知道哪些是好瓜哪些是壞瓜。這時候我們需要剖開一個個西瓜,看看哪些好瓜/壞瓜,然後總結經驗(學習併產生模型);當下次看到一個沒剖開的瓜時,通過經驗判斷它是哪種瓜(運用模型去判斷)。

基礎術語

要進行機器學習,先要有數據。在機器學習,對數據的描述都有特定的術語。通過下面的例子來講解機器學習中的基礎術語。

假定我們收集了一批關於西瓜的數據,例如(色澤=青綠;根蒂=蜷縮;敲聲=濁響), (色澤=烏黑;根蒂=稍蜷;敲聲=沉悶), (色澤=淺自;根蒂=硬挺;敲聲=清脆),……,每對括號內是一條記錄,"=",意思是"取值爲"

屬性:反映事件或對象在某方面的表現或性質的事項。例如每條記錄中的“色澤”、“根蒂”、“敲聲”就是西瓜的屬性

屬性空間:屬性張成的空間。例如我們把"色澤" "根蒂" "敲聲"作爲三個座標軸,則它們張成一個用於描述西瓜的三維空間就是屬性空間

特徵向量:每個西瓜都可在這個空間中找到自己的座標位置。由於空間中的每個點對應一個座標向量,因此我們也把這個座標向量稱爲一個特徵向量。

三者的關係總結:將每個屬性作爲一個座標軸,多個屬性就多個座標軸,從而形成一個描述物體的屬性空間。此空間中的每個樣本對應一個點,每個點都有一個座標向量,把這個座標向量稱爲特徵向量。


如果希望學得一個能幫助我們判斷沒剖開的是不是"好瓜"的模型,僅有前面的示例數據顯然是不夠的要建立這樣的關於"預測" 的模型,我們還需獲得訓練樣本的"結果"信息,例如"((色澤=青綠;根蒂=蜷縮;敲聲=濁響),好瓜)" 。

標記:關於示例結果的信息,比如上面例子中的 "好瓜" 就屬於標記。

樣例:擁有了標記信息的示例,則稱爲樣例。一般地,用 (x_i,y_i) 表示第 i 個樣例,其中 x_i 是特徵向量,y_i 是這個樣本的標記。

機器學習的目標是希望通過對訓練集 { (x_1,y_1) ,(x_2,y_2) ,..., (x_m,y_m)} 進行學習,建立一個從輸入空間 X 到輸出空間 Y 的映射 f: X\rightarrow Y


根據預測結果的類型,可以將機器學習任務分爲二類。

  1. 分類:預測結果的類型是離散值,例如"好瓜","壞瓜";
  2. 迴歸:預測結果的類型是連續值,例如西瓜的成熟度0.37、0.95。

根據訓練數據是否擁有標記信息,學習任務也可大致劃分爲兩大類。

  1. 監督學習(supervised learning):訓練數據有標記信息,其中分類與迴歸屬於監督學習。
  2. 無監督學習(unsupervised learning):訓練數據沒有標記信息,代表有聚類。

聚類:將訓練集中的西瓜分成若干組,每組稱爲一個"簇"; 這些自動形成的簇可能對應一些潛在的概念劃分,例如"淺色瓜"與"深色瓜" ,甚至"本地瓜"與"外地瓜"。這個學習過程有助於我們瞭解數據內在的規律,能爲更深入地分析數據建立基礎。
需說明的是,在聚類學習中,"淺色瓜"與"本地瓜"這樣的概念我們事先是不知道的,而且學習過程中使用的訓練樣本通常不擁有標記信息。

假設空間與版本空間

假設空間:所有假設構成的集合。

版本空間:只保留了假設空間中與訓練數據集中正例一致的假設,由這些正確的假設構成的集合成爲版本空間(簡單來說,版本空間就是正例的泛化)。

下面介紹假設空間大小計算、構建假設空間以及版本空間。(PS:初學時難點在於對版本空間的理解與構建)

舉個例子,假設西瓜的好壞由“色澤”,“根蒂”以及“敲聲”決定,且"色澤"、"根蒂"和"敲聲"分別有3、2、2 種可能取值。用布爾表達式表示則是

布爾表達式

 

 

那麼,假設空間大小就等於

假設空間大小計算

 

 

本例子的假設空間用下圖直觀展示

西瓜問題的假設空間

 

 

構建完假設空間,且現在有如下的訓練集,如何通過訓練集構建版本空間?

西瓜訓練集

版本空間構建過程:首先對假設空間進行搜索。有許多策略對假設空間搜索,如自頂向下和自底向上。然後在搜索過程中只保留與訓練集正例一致的假設。比如搜索到(色澤=青綠,根蒂=蜷縮,敲聲=濁響)這個假設時,它本身與訓練集第 1 條正例一致,但是與訓練集中第 2 條正例不一致,所以需要剔除。因爲若這個假設保留到版本空間且根據版本空間的定義,說明色澤非青綠,根蒂非蜷縮,敲聲非濁響的瓜都爲壞瓜,這與表中第 2 條正例相矛盾。再比如搜索到(色澤=*,根蒂=*,敲聲=濁響)這個假設可以保留到版本空間,因爲當它成立時,我們可以對於表中的4個訓練示例都做出正確的判斷,即它與訓練集的所有正例一致。最後在上面訓練集構建的版本空間如圖。(此處西瓜書上圖畫錯了)

西瓜問題的版本空間

 

版本空間作用除了能對已知的數據樣本做出判斷外,版本空間還可以對沒有在訓練集中出現的示例進行判斷。如給一個(色澤=淺白) ⋀ (根蒂=蜷縮) ⋀ (敲聲=濁晌) 瓜,通過版本空間判斷它是好瓜。

最後,上面求出來了西瓜問題的版本空間,但可以看到版本空間不是很確定,包含有通配符 * 的假設可能會得到正確的判斷,也可能得到錯誤的判斷(這句話是針對實際問題,如果針對上表中的訓練集,那當然不會有錯誤的判斷)

因此,要想判斷的正確,就要全面、大量的訓練,以排除更多假設空間中的錯誤假設。錯誤假設越少,剩下的假設越少,就越有可能是正確假設,我們判斷的結果的正確概率越大。

歸納偏好

從假設空間到版本空間是一個歸納過程(即從特殊到一般的過程)。

現在有一個問題,例如(色澤=青綠,根蒂=蜷縮,敲聲=沉悶)這新瓜,如果採用(色澤=*) ⋀ (根蒂=蜷縮) ⋀ (敲聲=*)這個假設進行判斷,這新瓜就是好瓜;但是採用(色澤=*) ⋀ (根蒂=*) ⋀ (敲聲=濁響)這個假設判斷,這新瓜就是壞瓜。那麼,應該採用哪一個模型(或假設)呢?

若僅有上表中的訓練樣本,則無法斷定上述三個假設中明哪一個"更好".然而,對於一個具體的學習算法而言?它必須要產生一個模型。這時,學習算法本身的"偏好"就會起到關鍵的作用。

歸納偏好(簡稱"偏好"):機器學習算法在學習過程中對某種類型假設的偏好。

任何一個有效的機器學習算法必有其歸納偏好,否則它將被假設空間中看似在訓練集上"等效"的假設所迷惑,無法產生確定的學習結果。如果沒有偏好,剛纔那個例子就沒有確定的答案了。這樣的學習結果顯得沒有意義。

最後,算法的歸納偏好是否與問題本身匹配,大多數時候直接決定了算法能否取得好的性能。



作者:數據搬瓦工
鏈接:https://www.jianshu.com/p/ff0c25dd98bf
來源:簡書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章