1. 程式人生 > >機器學習介紹(introduction)-讀書筆記-

機器學習介紹(introduction)-讀書筆記-

就是 .net 一條直線 但我 $2 標簽 沒標簽 處理 概率

一,什麽是機器學習

第一個機器學習的定義來自於 Arthur Samuel。他定義機器學習為,在進行特定編程的情況下,給予計算機學習能力的領域。Samuel 的定義可以回溯到 50 年代,他編寫了一個西洋棋程序。這程序神奇之處在於,編程者自己並不是個下棋高手。但因為他太菜了,於是就通過編程,讓西洋棋程序自己跟自己下了上萬盤棋。通過觀察哪種布局(棋盤位置)會贏,哪種布局會輸,久而久之,這西洋棋程序明白了什麽是好的布局,什麽樣是壞的布局。程序通過學習後,玩西洋棋的水平超過了 Samuel。這絕對是令人註目的成果。盡管編寫者自己是個菜鳥,但因為計算機有著足夠的耐心,去下上萬盤的棋,沒有人有這耐心去下這麽多盤棋。通過這些練習,計算機獲得無比豐富的經驗,於是漸漸成為了比Samuel 更厲害的西洋棋手。

上述是個有點不正式的定義,也比較古老。另一個年代近一點的定義,由 Tom Mitchell 提出,來自卡內基梅隆大學,Tom 定義的機器學習是,一個好的學習問題定義如下,他說,一個程序被認為能從經驗 E 中學習,解決任務 T,達到性能度量值P,當且僅當,有了經驗 E後,經過 P 評判,程序在處理 T 時的性能有所提升。我認為經驗e 就是程序上萬次的自我練習的經驗而任務 t 就是下棋。性能度量值 p 呢,就是它在與一些新的對手比賽時,贏得比賽的概率。

二,監督學習(supervised Learning):

監督學習指的就是我們給學習算法一個數據集。這個數據集由“正確答案”組成。

監督學習是一種最常見的機器學習,先看一個列子:

橫軸表示房子的面積,單位是平方英尺,縱軸表示房價,單位是千美元。那基於這組數據,假如你有一個朋友,他有一套 750 平方英尺房子,現在他希望把房子賣掉,他想知道這房子能賣多少錢。那麽關於這個問題,機器學習算法將會怎麽幫助你呢?

技術分享圖片

我們應用學習算法,可以在這組數據中畫一條直線,或者換句話說,擬合一條一次直線方程(粉紅色直線),根據這條線我們可以推測出,這套房子可能賣$150, 000,當然這不是唯一的算法。可能還有更好的,比如我們不用直線擬合這些數據,用二次方程去擬合可能效果會更好。根據二次方程的曲線,我們可以從這個點推測出,這套房子能賣接近$200, 000。隨後的博文我們將討論如何選擇學習算法,如何決定用直線還是二次方程來擬合。兩個方案中有一個能讓你朋友的房子出售得更合理。這些都是學習算法裏面很好的例子。以上就是監督學習的例子。

可以看出,監督學習指的就是我們給學習算法一個數據集。這個數據集由“正確答案”組成。在房價的例子中,我們給了一系列房子的數據,我們給定數據集中每個樣本的正確價格,即它們實際的售價然後運用學習算法,算出更多的正確答案。比如你朋友那個新房子的價格。用術語來講,這叫做回歸問題。我們試著推測出一個連續值的結果,即房子的價格。一般房子的價格會記到美分,所以房價實際上是一系列離散的值,但是我們通常又把房價看成實數,看成是標量,所以又把它看成一個連續的數值。

回歸這個詞的意思是,我們在試著推測出這一系列連續值屬性

再舉個例子

假設說你想通過查看病歷來推測乳腺癌良性與否,假如有人檢測出乳腺腫瘤,惡性腫瘤有害並且十分危險,而良性的腫瘤危害就沒那麽大,所以人們顯然會很在意這個問題。

技術分享圖片

橫軸表示腫瘤的大小,縱軸上標出 1 和 0 表示是或者不是惡性腫瘤。我們之前見過的腫瘤,如果是惡性則記為 1 ,不是惡性,或者說良性記為 0。我有 5 個良性腫瘤樣本,在 1 的位置有 5 個惡性腫瘤樣本。現在我們有一個朋友很不幸檢查出乳腺腫瘤。假設說她的腫瘤大概這麽大(粉色箭頭位置),那麽機器學習的問題就在於,你能否估算出腫瘤是惡性的或是良性的概率。用術語來講,這是一個分類問題。分類指的是,我們試著推測出離散的輸出值:0 或 1 良性或惡性,而事實上在分類問題中,輸出可能不止兩個值。比如說可能有三種乳腺癌,所以你希望預測離散輸出 0、1、2、3。0 代表良性,1 表示第一類乳腺癌,2 表示第二類癌癥,3 表示第三類,但這也是分類問題。

三:無監督學習(Unsupervised Learning )

技術分享圖片

如左圖表所示,這個數據集中每條數據都已經標明是陰性或陽性,即是良性或惡性腫瘤。所以,對於監督學習裏的每條數據,我們已經清楚地知道,訓練集對應的正確答案,是良性或惡性了。

在無監督學習中,我們已知的數據。看上去有點不一樣,不同於監督學習的數據的樣子,即無監督學習中沒有任何的標簽或者是有相同的標簽或者就是沒標簽。所以我們已知數據集,卻不知如何處理,也未告知每個數據點是什麽。別的都不知道,就是一個數據集。你能從數據中找到某種結構嗎?針對數據集,無監督學習就能判斷出數據有兩個不同的聚集簇。這是一個,那是另一個,二者不同。是的,無監督學習算法可能會把這些數據分成兩個不同的簇。所以叫做聚類算法。事實證明,它能被用在很多地方。

聚類應用的一個例子就是在谷歌新聞中。如果你以前從來沒見過它,你可以到這個 URL網址 news.google.com 去看看。谷歌新聞每天都在,收集非常多,非常多的網絡的新聞內容。它再將這些新聞分組,組成有關聯的新聞。所以谷歌新聞做的就是搜索非常多的新聞事件,自動地把它們聚類到一起。所以,這些新聞事件全是同一主題的,所以顯示到一起。事實證明,聚類算法和無監督學習算法同樣還用在很多其它的問題上。

還有市場分割。許多公司有大型的數據庫,存儲消費者信息。所以,你能檢索這些顧客數據集,自動地發現市場分類,並自動地把顧客劃分到不同的細分市場中,你才能自動並更有效地銷售或不同的細分市場一起進行銷售。這也是無監督學習,因為我們擁有所有的顧客數據,但我們沒有提前知道是什麽的細分市場,以及分別有哪些我們數據集中的顧客。我們不知道誰是在一號細分市場,誰在二號市場,等等。

機器學習介紹(introduction)-讀書筆記-