終於有時間了,前幾日正式開始了個人機器學習之旅,總結下目前已掌握的知識。python
機器學習本質是一項監督分類/迴歸問題,"監督"表示你有許多樣本,假設你知道這些樣本的正確答案,咱們不斷地把樣本交給機器,並告訴機器這些樣本是正確或錯誤的,對機器進行訓練,最終達到機器學習的目的。算法
簡單說:監督學習就是教會計算機去完成任務,如:根據你已經標記爲垃圾郵件的郵件學習識別垃圾郵件,根據你喜歡的電影推薦其餘你可能喜歡的電影...網絡
監督學習能夠理解爲如下兩種模型:app
迴歸問題一般是用來預測一個值,如預測房價、將來的天氣狀況等等,例如一個產品的實際價格爲500元,經過迴歸分析預測值爲499元,咱們認爲這是一個比較好的迴歸分析。
一個比較常見的迴歸算法是線性迴歸算法(LR)。另外,迴歸分析用在神經網絡上,其最上層是不須要加上softmax函數的,而是直接對前一層累加便可。迴歸是對真實值的一種逼近預測。機器學習
分類問題是用於將事物打上一個標籤,一般結果爲離散值。例如判斷一幅圖片上的動物是一隻貓仍是一隻狗,分類一般是創建在迴歸之上,分類的最後一層一般要使用softmax函數進行判斷其所屬類別。
分類並無逼近的概念,最終正確結果只有一個,錯誤的就是錯誤的,不會有相近的概念。最多見的分類方法是邏輯迴歸,或者叫邏輯分類。ide
分類模型和迴歸模型本質同樣,分類模型可將回歸模型的輸出離散化,迴歸模型也可將分類模型的輸出連續化。函數
二者的區別在於輸出變量的類型。學習
舉個例子:idea
無監督學習中,咱們將讓計算機本身進行學習,無監督學習將在從此的進階文章中整理。3d
機器的整個學習的過程很是像人類的學習習慣,人類經過觀察不少示例來進行學習,計算機進行機器學習也是如此,你給他提供不少示例,計算機分析發生了什麼並學習,而這個分析學習的過程即是機器學習要解決的核心問題。
下小節摘自知乎 - 什麼是無監督學習? - 王豐的回答:
是否有監督(supervised),就看輸入數據是否有標籤(label)。輸入數據有標籤,則爲有監督學習,沒標籤則爲無監督學習。
首先看什麼是學習(learning)?
一個成語就可歸納:觸類旁通。此處以高考爲例,高考的題目在上考場前咱們未必作過,但在高中三年咱們作過不少不少題目,懂解題方法,所以考場上面對陌生問題也能夠算出答案。
機器學習的思路也相似:咱們能不能利用一些訓練數據(已經作過的題),使機器可以利用它們(解題方法)分析未知數據(高考的題目)?
最簡單也最廣泛的一類機器學習算法就是分類(classification)。對於分類,輸入的訓練數據有特徵(feature),有標籤(label)。所謂的學習,其本質就是找到特徵和標籤間的關係(mapping)。
這樣當有特徵而無標籤的未知數據輸入時,咱們就能夠經過已有的關係獲得未知數據標籤。在上述的分類過程當中,若是全部訓練數據都有標籤,則爲有監督學習(supervised learning)。
若是數據沒有標籤,顯然就是無監督學習(unsupervised learning)了,也即聚類(clustering)。
目前分類算法的效果仍是不錯的,但相對來說,聚類算法就有些慘不忍睹了。確實,無監督學習自己的特色使其難以獲得如分類同樣近乎完美的結果。
這也正如咱們在高中作題,答案(標籤)是很是重要的,假設兩個徹底相同的人進入高中,一個正常學習,另外一人作的全部題目都沒有答案,那麼想必第一我的高考會發揮更好,第二我的會發瘋。
這時各位可能要問,既然分類如此之好,聚類如此之不靠譜,那爲什麼咱們還能夠容忍聚類的存在?
由於在實際應用中,標籤的獲取經常須要極大的人工工做量,有時甚至很是困難。
例如在天然語言處理(NLP)中,Penn Chinese Treebank在2年裏只完成了4000句話的標籤……
終於有時間了,前幾日正式開始了個人機器學習之旅,總結下目前已掌握的知識。
機器學習本質是一項監督分類/迴歸問題,"監督"表示你有許多樣本,假設你知道這些樣本的正確答案,咱們不斷地把樣本交給機器,並告訴機器這些樣本是正確或錯誤的,對機器進行訓練,最終達到機器學習的目的。
簡單說:監督學習就是教會計算機去完成任務,如:根據你已經標記爲垃圾郵件的郵件學習識別垃圾郵件,根據你喜歡的電影推薦其餘你可能喜歡的電影...
監督學習能夠理解爲如下兩種模型:
迴歸問題一般是用來預測一個值,如預測房價、將來的天氣狀況等等,例如一個產品的實際價格爲500元,經過迴歸分析預測值爲499元,咱們認爲這是一個比較好的迴歸分析。
一個比較常見的迴歸算法是線性迴歸算法(LR)。另外,迴歸分析用在神經網絡上,其最上層是不須要加上softmax函數的,而是直接對前一層累加便可。迴歸是對真實值的一種逼近預測。
分類問題是用於將事物打上一個標籤,一般結果爲離散值。例如判斷一幅圖片上的動物是一隻貓仍是一隻狗,分類一般是創建在迴歸之上,分類的最後一層一般要使用softmax函數進行判斷其所屬類別。
分類並無逼近的概念,最終正確結果只有一個,錯誤的就是錯誤的,不會有相近的概念。最多見的分類方法是邏輯迴歸,或者叫邏輯分類。
分類模型和迴歸模型本質同樣,分類模型可將回歸模型的輸出離散化,迴歸模型也可將分類模型的輸出連續化。
二者的區別在於輸出變量的類型。
舉個例子:
無監督學習中,咱們將讓計算機本身進行學習,無監督學習將在從此的進階文章中整理。
機器的整個學習的過程很是像人類的學習習慣,人類經過觀察不少示例來進行學習,計算機進行機器學習也是如此,你給他提供不少示例,計算機分析發生了什麼並學習,而這個分析學習的過程即是機器學習要解決的核心問題。
下小節摘自知乎 - 什麼是無監督學習? - 王豐的回答:
是否有監督(supervised),就看輸入數據是否有標籤(label)。輸入數據有標籤,則爲有監督學習,沒標籤則爲無監督學習。
首先看什麼是學習(learning)?
一個成語就可歸納:觸類旁通。此處以高考爲例,高考的題目在上考場前咱們未必作過,但在高中三年咱們作過不少不少題目,懂解題方法,所以考場上面對陌生問題也能夠算出答案。
機器學習的思路也相似:咱們能不能利用一些訓練數據(已經作過的題),使機器可以利用它們(解題方法)分析未知數據(高考的題目)?
最簡單也最廣泛的一類機器學習算法就是分類(classification)。對於分類,輸入的訓練數據有特徵(feature),有標籤(label)。所謂的學習,其本質就是找到特徵和標籤間的關係(mapping)。
這樣當有特徵而無標籤的未知數據輸入時,咱們就能夠經過已有的關係獲得未知數據標籤。在上述的分類過程當中,若是全部訓練數據都有標籤,則爲有監督學習(supervised learning)。
若是數據沒有標籤,顯然就是無監督學習(unsupervised learning)了,也即聚類(clustering)。
目前分類算法的效果仍是不錯的,但相對來說,聚類算法就有些慘不忍睹了。確實,無監督學習自己的特色使其難以獲得如分類同樣近乎完美的結果。
這也正如咱們在高中作題,答案(標籤)是很是重要的,假設兩個徹底相同的人進入高中,一個正常學習,另外一人作的全部題目都沒有答案,那麼想必第一我的高考會發揮更好,第二我的會發瘋。
這時各位可能要問,既然分類如此之好,聚類如此之不靠譜,那爲什麼咱們還能夠容忍聚類的存在?
由於在實際應用中,標籤的獲取經常須要極大的人工工做量,有時甚至很是困難。
例如在天然語言處理(NLP)中,Penn Chinese Treebank在2年裏只完成了4000句話的標籤……
這時有人可能會想,難道有監督學習和無監督學習就是非黑即白的關係嗎?有沒有灰呢?Good idea。
灰是存在的。兩者的中間帶就是半監督學習(semi-supervised learning)。對於半監督學習,其訓練數據的一部分是有標籤的,另外一部分沒有標籤,而沒標籤數據的數量經常極大於有標籤數據數量(這也是符合現實狀況的)。
隱藏在半監督學習下的基本規律在於:數據的分佈必然不是徹底隨機的,經過一些有標籤數據的局部特徵,以及更多沒標籤數據的總體分佈,就能夠獲得能夠接受甚至是很是好的分類結果。
(此處大量忽略細節)所以,learning家族的總體構造是這樣的:
看下面一張圖:
已知A集合中的全部元素和B集合中的全部元素,你認爲上圖最終元素應該屬於A集合仍是B集合?
答案是B集合。也許圖中的實例數量不足以你進行準確判斷(固然這個例子太容易判斷啦),若是每一個集合擴展到100個元素呢?
很顯然,集合中元素的數量越多,咱們可以發現出更多的特徵,進而作出更準確的判斷。
咱們之因此能一眼將元素進行斷定其屬於B集合,是由於咱們能夠最快識別出元素的特徵:角。
當咱們大腦對元素的特徵進行分析和判斷後,大腦最終會必定會反饋出其中一個結果:
最終咱們發現B集合的條件知足元素的特徵,因而最終確認元素屬於B集合。
在機器學習中,咱們一般會把特徵做爲輸入,而後嘗試生成標籤,最終進行分類。
在上文中,咱們將圖形的角數做爲特徵,然而在實際的問題中,咱們可能須要提取徹底不同的特徵。
如:若是咱們須要實現一個音樂的智能推薦算法,咱們首先須要根據用戶已經喜歡的音樂中提取特徵,這些特徵多是音樂對應的流派、聲音性別、節奏強度、平均分貝值...
分析出特徵後咱們先嚐試將特徵數據可視化,接下來,咱們使用一個散點圖來表示上面音樂推薦的例子:
如今,假設Surmon😆喜歡一首音樂叫《天馬座的幻想》,咱們如今提取出這首音樂的一些特徵,包括:強度、歌曲節奏、聲音性別、歌曲流派...,
爲了簡化問題,咱們圖中在僅使用強度和節奏特徵,如圖:
《天馬座的幻想》這首音樂,節奏快,強度較高,咱們在圖中用a點表示;
一樣的,咱們能夠提取其餘音樂的這些特徵,所以,每首音樂都變成了圖中的一個數據點,圖中的b、c、d...分別表明其餘歌曲;
假設a、b兩首音樂爲Surmon喜歡的音樂(紅色背景標註的),且Surmon不喜歡其餘以外的音樂,你認爲Surmon會喜歡推薦的音樂n嗎?
答案是會喜歡,雖然沒法徹底肯定,起碼從圖上來判斷是的。
又有假設了:
假設Surmon失戀了,又開始喜歡一些節奏比較溫柔的輕音樂,因而如今Surmon如今喜歡的音樂數據是這樣的,總體看來比較分散:
你認爲Surmon會喜歡推薦的音樂n嗎?
答案是不肯定。
但實際上,應該存在一個模式,計算出Surmon喜歡的音樂的數據集,以下,推薦的音樂n可能被包含在Surmon喜歡的音樂的數據集中:
也有可能這首音樂不被包含在Surmon喜歡的音樂的數據集中:
經過觀察Surmon喜歡的音樂的數據集,咱們便能得出相對準確的結果,即Surmon是否會喜歡這首音樂。
再來一個比較現實的例子:
假設咱們在研究汽車的無人駕駛技術,咱們須要機器判斷出汽車當前面臨的環境並做出對應的操做;
假設咱們將汽車行駛的環境特徵分爲:路面平整度(1-3)、行駛坡度(3-6)兩個維度,以下圖;咱們在散點圖中以軸線呈現出來,同時將軸線簡單分別分爲三個維度,對應咱們的特徵,最終咱們會獲得9個點:
當前,事實上,這兩個特徵是可能同時發生的,故這9個點表明汽車可能遇到的崎嶇程度和坡度所組成的全部特徵組合,咱們暫且稱之爲分類。
上圖中,汽車在輕微上坡但路面較爲平坦時(5號路況),對應h類。
機器學習就是將數據根據特徵和標籤轉換爲決策面(分類)。
以下圖例:
上圖中全部數據用圓形標識,咱們使用特徵將數據分紅了兩類:紅色和綠色,經過直覺判斷,數據點a應該被歸類於紅色數據集,而數據點b顯然沒法判斷。
機器學習能作什麼,它能夠爲以上圖例中的數據集決定決策面(分割數據集/分類)。
像這樣,它能夠計算出一個決策面,決策面左側即數據綠色數據,右側反之。
使用決策面,標記數據分類就簡單多了。
決策面分爲:
常見的計算決策面的算法有:
其之間的不一樣和詳細使用會在以後的文章推出。
基礎庫:scikit-learn官網,scikit-learn是一個python學習算法庫,包含了豐富的機器學習算法。
完
這時有人可能會想,難道有監督學習和無監督學習就是非黑即白的關係嗎?有沒有灰呢?Good idea。
灰是存在的。兩者的中間帶就是半監督學習(semi-supervised learning)。對於半監督學習,其訓練數據的一部分是有標籤的,另外一部分沒有標籤,而沒標籤數據的數量經常極大於有標籤數據數量(這也是符合現實狀況的)。
隱藏在半監督學習下的基本規律在於:數據的分佈必然不是徹底隨機的,經過一些有標籤數據的局部特徵,以及更多沒標籤數據的總體分佈,就能夠獲得能夠接受甚至是很是好的分類結果。
(此處大量忽略細節)所以,learning家族的總體構造是這樣的:
看下面一張圖:
已知A集合中的全部元素和B集合中的全部元素,你認爲上圖最終元素應該屬於A集合仍是B集合?
答案是B集合。也許圖中的實例數量不足以你進行準確判斷(固然這個例子太容易判斷啦),若是每一個集合擴展到100個元素呢?
很顯然,集合中元素的數量越多,咱們可以發現出更多的特徵,進而作出更準確的判斷。
咱們之因此能一眼將元素進行斷定其屬於B集合,是由於咱們能夠最快識別出元素的特徵:角。
當咱們大腦對元素的特徵進行分析和判斷後,大腦最終會必定會反饋出其中一個結果:
最終咱們發現B集合的條件知足元素的特徵,因而最終確認元素屬於B集合。
在機器學習中,咱們一般會把特徵做爲輸入,而後嘗試生成標籤,最終進行分類。
在上文中,咱們將圖形的角數做爲特徵,然而在實際的問題中,咱們可能須要提取徹底不同的特徵。
如:若是咱們須要實現一個音樂的智能推薦算法,咱們首先須要根據用戶已經喜歡的音樂中提取特徵,這些特徵多是音樂對應的流派、聲音性別、節奏強度、平均分貝值...
分析出特徵後咱們先嚐試將特徵數據可視化,接下來,咱們使用一個散點圖來表示上面音樂推薦的例子:
如今,假設Surmon😆喜歡一首音樂叫《天馬座的幻想》,咱們如今提取出這首音樂的一些特徵,包括:強度、歌曲節奏、聲音性別、歌曲流派...,
爲了簡化問題,咱們圖中在僅使用強度和節奏特徵,如圖:
《天馬座的幻想》這首音樂,節奏快,強度較高,咱們在圖中用a點表示;
一樣的,咱們能夠提取其餘音樂的這些特徵,所以,每首音樂都變成了圖中的一個數據點,圖中的b、c、d...分別表明其餘歌曲;
假設a、b兩首音樂爲Surmon喜歡的音樂(紅色背景標註的),且Surmon不喜歡其餘以外的音樂,你認爲Surmon會喜歡推薦的音樂n嗎?
答案是會喜歡,雖然沒法徹底肯定,起碼從圖上來判斷是的。
又有假設了:
假設Surmon失戀了,又開始喜歡一些節奏比較溫柔的輕音樂,因而如今Surmon如今喜歡的音樂數據是這樣的,總體看來比較分散:
你認爲Surmon會喜歡推薦的音樂n嗎?
答案是不肯定。
但實際上,應該存在一個模式,計算出Surmon喜歡的音樂的數據集,以下,推薦的音樂n可能被包含在Surmon喜歡的音樂的數據集中:
也有可能這首音樂不被包含在Surmon喜歡的音樂的數據集中:
經過觀察Surmon喜歡的音樂的數據集,咱們便能得出相對準確的結果,即Surmon是否會喜歡這首音樂。
再來一個比較現實的例子:
假設咱們在研究汽車的無人駕駛技術,咱們須要機器判斷出汽車當前面臨的環境並做出對應的操做;
假設咱們將汽車行駛的環境特徵分爲:路面平整度(1-3)、行駛坡度(3-6)兩個維度,以下圖;咱們在散點圖中以軸線呈現出來,同時將軸線簡單分別分爲三個維度,對應咱們的特徵,最終咱們會獲得9個點:
當前,事實上,這兩個特徵是可能同時發生的,故這9個點表明汽車可能遇到的崎嶇程度和坡度所組成的全部特徵組合,咱們暫且稱之爲分類。
上圖中,汽車在輕微上坡但路面較爲平坦時(5號路況),對應h類。
機器學習就是將數據根據特徵和標籤轉換爲決策面(分類)。
以下圖例:
上圖中全部數據用圓形標識,咱們使用特徵將數據分紅了兩類:紅色和綠色,經過直覺判斷,數據點a應該被歸類於紅色數據集,而數據點b顯然沒法判斷。
機器學習能作什麼,它能夠爲以上圖例中的數據集決定決策面(分割數據集/分類)。
像這樣,它能夠計算出一個決策面,決策面左側即數據綠色數據,右側反之。
使用決策面,標記數據分類就簡單多了。
決策面分爲:
常見的計算決策面的算法有:
其之間的不一樣和詳細使用會在以後的文章推出。
基礎庫:scikit-learn官網,scikit-learn是一個python學習算法庫,包含了豐富的機器學習算法。
完