標籤:

從西瓜書出發--機器學習筆記(1)

西瓜書,正如封面所示,是周志華教授寫的關於機器學習的教材,我一開始閱讀知乎的許多專欄都推薦西瓜書,還一頭霧水,不知道西瓜書到底是什麼,直到找到了這本書,才知道被叫西瓜書的原因,還真的是一堆西瓜,讀了第一章,也可以感受到作者對西瓜深沉的愛(大誤)。記錄該筆記,是為了給自己整理知識之用。

每篇筆記包含西瓜書一章的內容,並且到了有需要的地方,我會使用sklearn等實際工具舉例,來幫助理解。


第一章 緒論

什麼是機器學習?

機器學習,是研究利用計算機,模仿人類認知和學習的經驗,期望通過給計算機「灌輸」經驗數據,讓計算機總結出認知經驗(學習演算法或模型),最後計算機使用這些經驗去認知新的未知事物。

基本術語

數據集:對一個事件或者對象的描述的集合,例如財務數據是用來描述一個公司經營狀況的集合。

示例(樣本):數據集中每一個事件或者對象的描述,例如財務數據中每個月的財務數據,就是一年財務數據集中的一個樣本。

屬性(特徵):描述事件或者對象的表現或性質的指標,例如財務數據中的「收入」,「成本」,就是描述財務狀況的不同指標。

屬性值:每個樣本關於屬性對應的具體取值。

屬性空間(樣本空間):由屬性張成的空間,簡單的理解,「收入」和「成本」就張成了秒速財務狀況的二維屬性空間。

特徵向量:每一個屬性(特徵)再空間中的所有取值,一個一維數列空間,財務數據中,「收入」特徵中每個月的「收入」組成的就是「收入」的特徵向量。

維數:每個特徵向量的長度,例如每個月的「收入」數據組成了今年所有的「收入」特徵向量,那麼維數就是12.

學習(訓練):計算機學習數據得到模型或經驗的過程,用來「灌輸」給計算機學習的數據就叫做」訓練集「,其中每一條數據就是一組」訓練樣本「。

假設:計算機從數據中學習到了某種潛在規律。

標記:訓練數據中對訓練樣本的真實判斷,例如通過每個月的財務指標,給當月的財務評價為」好「和」差「,就是對數據的真實判斷,其組成的空間就是」標記空間「(輸出空間)。

測試:計算機通過總結的模型和經驗,用來判斷未被標記的數據,來給出的判斷,就是測試,而測試的數據就是測試集。

分類&回歸:分類任務是為了區分數據中存在多少個不同的分類集合,例如通過圖片去分析圖片中由多少個人,而回歸任務是為了通過學習去預測未知數據的具體結果,例如通過模型去預測下一年的具體收入數據。

聚類:通過對數據的學習,來自動的對數據進行分類,但是計算機並不知道每一類的具體含義,就像把紅豆和綠豆在混合的豆子中分離出來,但是沒必要知道他們具體的品種。

監督學習&無監督學習:監督學習是數據由現實結論標記的訓練方式,回歸和分類就是監督學習的代表,而無監督學習就是並不存在現實結論標記的訓練方式,並不對數據結果做判斷,僅僅是區分,聚類任務就是無監督學習的代表。

泛化:泛化能力才是機器學習的最終目的,就是機器通過訓練之後,去識別未知事物的能力。

假設空間

從樣例中學習到一般經驗,就是一個「泛化」過程,也就是一種歸納的方法,所以機器學習本質上是一種「歸納學習」(inductive learning)。

假設空間本質上就是用來判斷結果的所有特徵組成的所有可能組合的空間,例如財務數據的特徵只有「成本」和「收入」兩項組成的話,用這兩項來判斷財務狀況的好壞,成本和收入分別只有好和差兩種取值,其組合就是以下四種:

(收入好,成本好),(收入好,成本差),(收入差,成本好),(收入差,成本差)

但是,由於我們現在是假設所有可能性對最終結果的影響,那麼很可能最終的結果和某一個數據的輸入並沒有關係,那麼就會再加上以下幾個可能:

(收入好,成本隨便),(收入差,成本隨便),(收入隨便,成本好),(收入隨便,成本差)

這樣,到這裡我們假設的可能性基本就完整了,但是還有一個差點漏了,就是可能判斷財務狀況和著兩個特徵壓根沒有任何關係,就是通過成本和收入根本無法判斷財務狀況,就會有:

(收入隨便,成本隨便)

這樣,在兩個特徵的情況下,最終假設空間大小就變成了(2+1)*(2+1)+1 = 9

版本空間

相對於假設空間,版本空間的假設會更加狹義,版本空間的意思是,使得訓練集返回值為真的假設集合,版本空間是假設空間的子集。

舉個例子,上面用「收入」和「成本」來考量一個公司的財務狀況,放到具體的案例中,真的有公司的財務狀況是完全和收入成本無關的么?通過訓練集可以發現,真實生活中不可能發生這種狀況,所以去除了(收入隨便,成本隨便)這一項,其他項組成的空間,就是版本空間。

如圖所示,整張圖片的邊界代表的就是假設空間,但是面對訓練集(或者說實際生活),有很多地方是不能取到的,去除掉所有紅色的點,才是一個有效的空間,就是版本空間。

歸納偏好

終於來到第一章最大的坑了,歸納偏好簡單理解就是對學習演算法的結果判斷必須要有一個明確衡量方式。

舉個例子,如何判斷一本書是好的小說呢?我們有三個特徵,即(篇幅,文采,情節),每個特徵都有自己的選擇,假設我們認為只要文採好的小說都是好小說,那麼篇幅和情節就不需要去考量了,但是如果說我們更在乎的是情節,只要情節不好的小說都是垃圾,即使文采再好也是故作矯情,這兩個判斷標準就是兩種歸納偏好。

對於計算機來說,本身它對數據並沒有判斷,如果歸納偏好不一致,計算機看到文採好的就判斷為好的小說,但是下一個數據出現了文採好,但是情節不好的小說,那應不應該判斷為好的小說呢,還是按照後一個偏好,判斷為一個垃圾小說呢?

回到數據中,就如同上圖顯示,客觀數據是黑色的點,曲線A和曲線B都可以很好的擬合數據,那麼,哪一條擬合的曲線是更好的呢?

如果通過「奧卡姆剃刀」來削一削,會得出A曲線更好,畢竟更加的平滑和簡單,那麼對應的學習演算法A將更加優秀,問題看起來完美解決了。

稍等,這裡出現了個問題,「奧卡姆剃刀」是真實反映客觀狀況的唯一哲學標準么,看看下面的狀況:

首先再次回想,機器學習的最終目的是得到很好的泛化能力,就是預測判斷新的狀況的能力,圖中白色的點代表的是測試樣本,可以理解為實際的未知樣本,如果白色樣本如圖a顯示,那麼結論和上面一樣,演算法A比較優秀,但是如果白色樣本如圖b所示呢?那麼毫無疑問演算法B

更加優秀了。

這裡已經有點暈了,由於白色的點理論上是無法預知的,那麼如何判斷兩個演算法的優劣呢?不能......非常反直覺的一點是,無論兩個演算法多麼不同,兩個演算法在面對現實問題時候期望的性能是一致的!這就是沒有免費午餐定理。

聽起來結論非常讓人沮喪,也就是說隨便瞎猜的演算法,理論上也不比精美的演算法性能差,它們的期望值是一樣的,但是面對具體問題時候,必須要具體分析,例如從A到B用什麼交通工具上,如果A和B的距離是200米,顯然走路就好了,但是200公里,走路明顯就不是好的選擇了,沒有免費午餐定理告訴我們的是一定要具體問題具體分析,脫離具體問題,討論演算法的優劣毫無意義,只有在具體問題下,才能比較演算法的優劣,也就是在具體問題的情況下才能決定歸納偏好。


推薦閱讀:

【機器學習Machine Learning】資料大全
機器學習篇:XGB為啥這麼萬能
機器學習導論——Day2、3
計算機視覺學習之路——每日更新
BP神經網路演算法:將參數矩陣向量化

TAG:機器學習 |