NG機器學習總結-(一)簡介
寫在前面:
看過很多的有關機器學習的書籍,如周志華的西瓜書《機器學習》,李航的《統計學習》,《十大經典資料探勘演算法》,然而始終是沒有很好的理解和掌握相關的機器學習演算法,一方面是基礎差學習起來慢,另一方面這些書籍實在對新手來說是晦澀難懂的。幸得Professor Andrew Ng(吳恩達)的coursera機器學習課程,收益匪淺,感謝之餘將自己對機器學習的個人理解整理成部落格供自己日後複習。如果以後部落格中有理解不當的地方還請路過的大佬指正。
一、什麼是機器學習
實際上就是在機器學習的專業人士中,也不存在一個被廣泛認可的定義來準確定義機器學習是什麼或者不是什麼。就目前而言有兩種較可接受的定義:第一個機器學習的定義來自於Arthur Samuel,他定義機器學習為在進行特定程式設計的情況下給予計算機學習能力的領域。1959年他編寫了一個西洋棋程式,他讓西洋棋程式終結跟終結下了上萬盤棋,通過觀察哪種佈局會贏,哪種佈局會輸,然後一段時間後,該程式就學習到了什麼是好的佈局,什麼是不好的佈局,最後下贏了作者本人。計算機通過不斷的下棋獲得了無比豐富的經驗,這好比人類棋手(柯傑)下了很多盤棋後的經驗相當,然後下贏對手,是不是有點像alpha狗的雛形?其實這是一個不太正式的定義也是一個比較古老的定義。另一個年代近一點的定義是由Tom Mitchell提出,一個學習程式被認為能從經驗E中學習,解決任務T達到效能度量P,當且僅當,有了經驗E後,經過P判斷,程式在處理T時的效能有所提升(Ng吐槽說可能為了壓韻而這樣定義了)。比如西洋棋的例子中,經驗E就是程式上萬次的練習下棋經驗,任務T就是下棋,而P就是與新的對手比賽時,贏得比賽的概率。
無論什麼樣的定義,其實機器學習,簡單來說就是從以往的經驗中(資料)總結出規律,通過對以往經驗的利用,對新的情況作出有效的決策。
二、機器學習分類
目前存在幾種不同型別的機器學習演算法,主要的兩種型別是監督學習和無監督學習,另外還有強化學習和推薦系統,這些都是常見的機器學習演算法。下面會簡單介紹前兩種主要的學習演算法,並會在後續的學習總結中詳細總結這兩種學習演算法的具體演算法。
三、有監督學習
在有監督學習中,給定一個數據集,我們知道每條資料的正確輸出並且認為輸入和輸出之間存在某種關聯(總覺得翻譯過來後味道變了,給出原文:In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.)。監督學習通常可以分為兩類:迴歸和分類,在迴歸問題中,我們試圖預測連續型數值的結果,這意味著我們需要找到一個函式(模型)來完成輸入資料到連續型數值輸出的對映。在分類問題中,我們試圖預測離散型數值的結果,這意味著我們需要找到一個函式(模型)來完成輸入資料到離散型數值輸出的對映。
例子1:給定資料集有關房子的面積和房子的售價,試圖預測新房子的房價,如下是一個有關房價和房子面積的資料集,橫軸是房子的面積大小(平方英尺),縱軸是房價(千萬$),現在你有一個朋友他有個面積為750平方英尺的房子,想知道能夠能以多少價格出售。
在這種情況下學習演算法可以根據資料來畫一條直線或者說用一條直線來擬合數據,如下圖,看上去你朋友的房子可以會賣到150K$,但是這可不是唯一的學習演算法,也許有更好的。例如,用一個二介多項式來擬合數據,這樣效果可能會更好,在這種情況下,該房子可能會買到200K$。
這是一個監督學習的例子,同時這裡房價是連續型數值(輸出),房價與房子的面積(輸入)有關係,因此也是一個迴歸問題。
例子2:給定一個患腫瘤的病人,腫瘤有大小(輸入),判斷這個病人的腫瘤是良性的還是惡性的(離散輸出,良性或惡性)。如下圖是一個乳腺瘤的例子,橫軸是瘤的大小,縱軸是1或0代表該腫瘤是惡性的還是良性的,藍色樣本是良性的,紅色樣本是惡性的。
假設現在有一個人患了腫瘤,其腫瘤的大小如上圖的粉色箭頭指向的大小,這個時候學習演算法的任務是根據腫瘤的大小來估計該腫瘤的性質,這是一個分類問題。
四、無監督學習
對比有監督學習,無監督學習在我們不知道明確的輸出目標情況下通過挖掘資料(輸入)本身的結構來解決問題。以上的監督學習的例子中資料都包括了明確的輸出如房價和腫瘤的性質。
而無監督學習給定的資料中沒有明確的輸出,所有的資料都是一樣的,無監督學習的任務就是通過資料本身來找出可能的結構。
比如上圖中的資料,無監督學習演算法可能會將其分為兩類,這就是所謂的聚類演算法。除此之外,還有很多的無監督學習的例子,如google搜尋中,將所有的新聞收集到一起,然後根據其新聞的內容將其"分類",這裡的分類非監督學習的分類,可以理解為聚類。
通過簡單的介紹,基本已經瞭解了機器學習的定義、機器學習的分類,但是機器學習有很多具體的演算法,比如線性和邏輯迴歸、SVM、決策樹、樸素貝葉斯等等。後面的博文中會詳細總結這些具體的機器學習演算法。