2015年1月10日 星期六

[機器學習](一)監督學習(Supervised Learning)演算法與非監督學習(Unsupervised Learning)演算法

什麼是機器學習?


機器學習的定義:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E".

舉個例子,郵件分類系統是如何學習呢?套用以上定義:
T就是將郵件分類為垃圾或非垃圾。
E就是觀察你把哪些種類的郵件標記為垃圾或非垃圾。
P為被正確分類成垃圾或非垃圾的郵件的數量。

機器學習演算法,主要分成兩大類:

1. 監督學習(Supervised Learning):人明確告訴機器如何做某件事
2. 非監督學習(Unsupervised Learning):讓電腦自己學習



其他還有Reinforcement Learning以及Recommender Systems演算法等等。

以下針對這兩類分別解說:

--------------------------------------------------我是分隔線---------------------------------------------------------


監督學習(Supervised Learning):



如果我們想要預測房價,這裡有一個房價的data set,畫出來可能長這樣:



橫軸表示房子的面積,單位為平方英尺,縱軸為房價,單位為千美元。

根據這個data set,假設你朋友有一間750平方英尺的房子想賣掉,他想知道這房子能賣多少錢,此時機器學習該怎麼幫助這個問題呢?

最直觀的方法,我們直接在這個data set中畫一條直線來擬合(fitting),根據這條直線來推測這房子大約可以賣150,000美元,當然這不是唯一的演算法,如果用二次方程式的曲線來擬合,這房子可能還可以賣到200,000美元,以上就是監督學習的例子。

所以監督學習也就是,給機器一個data set,這個data set由「正確答案」所組成,根據學習演算法來算出更多的正確答案。正確答案是什麼?在這邊就是一系列房子的data,也就是它們實際的銷售價格。

用術語來講,以上就叫做回歸問題。

回歸:推測連續值的輸出 (房價為多少?)

另一個例子,在0的位置我有5個良性腫瘤的樣本,以及在1的位置有5個惡性腫瘤的樣本。



現在假設我有一個朋友其腫瘤大小為X,我們該如何判斷該腫瘤是惡性還是良性?

用術語來講,以上就叫做分類問題。

分類:推測離散的輸出值 (良性或惡行?,也就是0或1?)

在分類問題中,輸出可能不只兩個值。例如,可能有三種癌症,所以你希望離散的輸出值有{0, 1, 2, 3},0代表良性,其他代表各自 種類的癌症。

另外,上圖也可以換個方式畫,這邊只用腫瘤大小當作特徵來預測



其中圈圈代表良性樣本,叉叉代表惡性樣本,然而在現實生活中,特徵一定不止一個,例如我們不僅知道腫瘤大小也知道他的年齡:



此時我們可以畫一條線來預測未來的樣本是屬於哪一區塊來進行判斷,在這邊,監督學習演算法就是要確定出這樣一條直線,盡可能明確分開兩類腫瘤。

現實生活中,特徵可能會有非常多種,對於2種、3種或甚至無限多種特徵,有一種演算法可以處理,也就是SVM。

總結一下,監督學習,也就是data set中每個樣本都有相應的「正確答案」,我事先就知道這個特徵(腫瘤大小)的結果(是惡性)是什麼,根據這些樣本對未來樣本進行預測。

--------------------------------------------------我是分隔線---------------------------------------------------------


非監督學習(Unsupervised Learning):



在監督學習中,每個樣本已經給出了「正確答案」,在無監督學習中,沒有屬性或特徵這一種概念,也就是所有data都是一樣的,沒有差別。

無監督學習就是,給你一個data set,你能夠在其中找出某種結構嗎?這樣的演算法可能會將data分成好幾群,也因此有一種無監督演算法就叫做分群演算法(clustering algorithm)。實際使用例子就是Google News,它每天會去收集成千上萬篇新聞,並自動群集(註1)這些新聞。

這就是無監督學習,我們沒有事先告知機器某篇新聞屬於哪一群,相反的,我們只告訴機器我們有一堆新聞,而我們不知道這些新聞的任何特徵,可以幫我進行群集嗎?對於data set,我們沒有給演算法一個「正確答案」,這就是無監督演算法。

實際例子:組織電腦叢集、社群網路分析(如果可以知道哪些朋友你常用email聯繫,或者知道你FB或Google+的朋友資訊,我可以知道哪些朋友是深交,哪些只是點頭之交)、市場區分與天文資料分析等等。

----------------------------------------------------我是註解---------------------------------------------------------

Clustering:還不知道群集(分類),嘗試找群集。某些演算法會順便找出分界線,例如 k-Means Clustering。
Classification:已經知道群集(分類),嘗試找分界線。

來源:http://www.csie.ntnu.edu.tw/~u91029/Classification.html

沒有留言:

張貼留言