【機器學習】機器學習的經典算法html
https://mp.weixin.qq.com/s/CxSG9l_dxA4G-SZKOGI1ng算法
本文爲整篇文章第二部分,整篇文章主要目錄以下:網絡
1:一個故事說明什麼是機器學習架構
2:機器學習的定義機器學習
3:機器學習的經典算法函數
4:機器學習的應用--大數據學習
5:機器學習的子類--深度學習大數據
6:機器學習的父類--人工智能優化
7:機器學習的思考--計算機的潛意識人工智能
8:總結
經過從機器學習談起(1)的介紹咱們知曉了機器學習的大體,那麼機器學習裏面究竟有多少經典的算法呢?在這個部分我會簡要介紹一下機器學習中的經典表明算法。這部分介紹的重點是這些方法內涵的思想,數學與實踐細節不會在這討論。
迴歸算法
在大部分機器學習課程中,迴歸算法都是介紹的第一個算法。緣由有兩個:一.迴歸算法比較簡單,介紹它可讓人平滑地從統計學遷移到機器學習中。二.迴歸算法是後面若干強大算法的基石,若是不理解迴歸算法,沒法學習那些強大的算法。迴歸算法有兩個重要的子類:即線性迴歸和邏輯迴歸。
線性迴歸就是咱們前面說過的房價求解問題。如何擬合出一條直線最佳匹配我全部的數據?通常使用「最小二乘法」來求解。「最小二乘法」的思想是這樣的:假設咱們擬合出的直線表明數據的真實值,而觀測到的數據表明擁有偏差的值。爲了儘量減少偏差的影響,須要求解一條直線使全部偏差的平方和最小。最小二乘法將最優問題轉化爲求函數極值問題。函數極值在數學上咱們通常會採用求導數爲0的方法。但這種作法並不適合計算機,可能求解不出來,也可能計算量太大。
計算機科學界專門有一個學科叫「數值計算」,專門用來提高計算機進行各種計算時的準確性和效率問題。例如,著名的「梯度降低」以及「牛頓法」就是數值計算中的經典算法,也很是適合來處理求解函數極值的問題。梯度降低法是解決迴歸模型中最簡單且有效的方法之一。從嚴格意義上來講,因爲後文中的神經網絡和推薦算法中都有線性迴歸的因子,所以梯度降低法在後面的算法實現中也有應用。
邏輯迴歸是一種與線性迴歸很是相似的算法,可是,從本質上講,線型迴歸處理的問題類型與邏輯迴歸不一致。線性迴歸處理的是數值問題,也就是最後預測出的結果是數字,例如房價。而邏輯迴歸屬於分類算法,也就是說,邏輯迴歸預測結果是離散的分類,例如判斷這封郵件是不是垃圾郵件,以及用戶是否會點擊此廣告等等。
實現方面的話,邏輯迴歸只是對對線性迴歸的計算結果加上了一個Sigmoid函數,將數值結果轉化爲了0到1之間的機率(Sigmoid函數的圖像通常來講並不直觀,你只須要理解對數值越大,函數越逼近1,數值越小,函數越逼近0),接着咱們根據這個機率能夠作預測,例如機率大於0.5,則這封郵件就是垃圾郵件,或者腫瘤是不是惡性的等等。從直觀上來講,邏輯迴歸是畫出了一條分類線,見下圖。
圖6 邏輯迴歸的直觀解釋
假設咱們有一組腫瘤患者的數據,這些患者的腫瘤中有些是良性的(圖中的藍色點),有些是惡性的(圖中的紅色點)。這裏腫瘤的紅藍色能夠被稱做數據的「標籤」。同時每一個數據包括兩個「特徵」:患者的年齡與腫瘤的大小。咱們將這兩個特徵與標籤映射到這個二維空間上,造成了我上圖的數據。
當我有一個綠色的點時,我該判斷這個腫瘤是惡性的仍是良性的呢?根據紅藍點咱們訓練出了一個邏輯迴歸模型,也就是圖中的分類線。這時,根據綠點出如今分類線的左側,所以咱們判斷它的標籤應該是紅色,也就是說屬於惡性腫瘤。
邏輯迴歸算法劃出的分類線基本都是線性的(也有劃出非線性分類線的邏輯迴歸,不過那樣的模型在處理數據量較大的時候效率會很低),這意味着當兩類之間的界線不是線性時,邏輯迴歸的表達能力就不足。下面的兩個算法是機器學習界最強大且重要的算法,均可以擬合出非線性的分類線。
神經網絡
神經網絡(也稱之爲人工神經網絡,ANN)算法是80年代機器學習界很是流行的算法,不過在90年代中途衰落。如今,攜着「深度學習」之勢,神經網絡重裝歸來,從新成爲最強大的機器學習算法之一。
神經網絡的誕生起源於對大腦工做機理的研究。早期生物界學者們使用神經網絡來模擬大腦。機器學習的學者們使用神經網絡進行機器學習的實驗,發如今視覺與語音的識別上效果都至關好。在BP算法(加速神經網絡訓練過程的數值算法)誕生之後,神經網絡的發展進入了一個熱潮。BP算法的發明人之一是前面介紹的機器學習大牛Geoffrey Hinton(圖1中的中間者)。
具體說來,神經網絡的學習機理是什麼?簡單來講,就是分解與整合。在著名的Hubel-Wiesel試驗中,學者們研究貓的視覺分析機理是這樣的。
圖7 Hubel-Wiesel試驗與大腦視覺機理
比方說,一個正方形,分解爲四個折線進入視覺處理的下一層中。四個神經元分別處理一個折線。每一個折線再繼續被分解爲兩條直線,每條直線再被分解爲黑白兩個面。因而,一個複雜的圖像變成了大量的細節進入神經元,神經元處理之後再進行整合,最後得出了看到的是正方形的結論。這就是大腦視覺識別的機理,也是神經網絡工做的機理。
讓咱們看一個簡單的神經網絡的邏輯架構。在這個網絡中,分紅輸入層,隱藏層,和輸出層。輸入層負責接收信號,隱藏層負責對數據的分解與處理,最後的結果被整合到輸出層。每層中的一個圓表明一個處理單元,能夠認爲是模擬了一個神經元,若干個處理單元組成了一個層,若干個層再組成了一個網絡,也就是"神經網絡"。
圖8 神經網絡的邏輯架構
在神經網絡中,每一個處理單元事實上就是一個邏輯迴歸模型,邏輯迴歸模型接收上層的輸入,把模型的預測結果做爲輸出傳輸到下一個層次。經過這樣的過程,神經網絡能夠完成很是複雜的非線性分類。
下圖會演示神經網絡在圖像識別領域的一個著名應用,這個程序叫作LeNet,是一個基於多個隱層構建的神經網絡。經過LeNet能夠識別多種手寫數字,而且達到很高的識別精度與擁有較好的魯棒性。
圖9 LeNet的效果展現
右下方的方形中顯示的是輸入計算機的圖像,方形上方的紅色字樣「answer」後面顯示的是計算機的輸出。左邊的三條豎直的圖像列顯示的是神經網絡中三個隱藏層的輸出,能夠看出,隨着層次的不斷深刻,越深的層次處理的細節越低,例如層3基本處理的都已是線的細節了。LeNet的發明人就是前文介紹過的機器學習的大牛Yann LeCun(圖1右者)。
進入90年代,神經網絡的發展進入了一個瓶頸期。其主要緣由是儘管有BP算法的加速,神經網絡的訓練過程仍然很困難。所以90年代後期支持向量機(SVM)算法取代了神經網絡的地位。
svm(支持向量機)
支持向量機算法是誕生於統計學習界,同時在機器學習界大放光彩的經典算法。
支持向量機算法從某種意義上來講是邏輯迴歸算法的強化:經過給予邏輯迴歸算法更嚴格的優化條件,支持向量機算法能夠得到比邏輯迴歸更好的分類界線。可是若是沒有某類函數技術,則支持向量機算法最多算是一種更好的線性分類技術。
可是,經過跟高斯「核」的結合,支持向量機能夠表達出很是複雜的分類界線,從而達成很好的的分類效果。「核」事實上就是一種特殊的函數,最典型的特徵就是能夠將低維的空間映射到高維的空間。
例以下圖所示:
圖10 支持向量機圖例
咱們如何在二維平面劃分出一個圓形的分類界線?在二維平面可能會很困難,可是經過「核」能夠將二維空間映射到三維空間,而後使用一個線性平面就能夠達成相似效果。也就是說,二維平面劃分出的非線性分類界線能夠等價於三維平面的線性分類界線。因而,咱們能夠經過在三維空間中進行簡單的線性劃分就能夠達到在二維平面中的非線性劃分效果。
圖11 三維空間的切割
支持向量機是一種數學成分很濃的機器學習算法(相對的,神經網絡則有生物科學成分)。在算法的核心步驟中,有一步證實,即將數據從低維映射到高維不會帶來最後計算複雜性的提高。因而,經過支持向量機算法,既能夠保持計算效率,又能夠得到很是好的分類效果。所以支持向量機在90年代後期一直佔據着機器學習中最核心的地位,基本取代了神經網絡算法。直到如今神經網絡藉着深度學習從新興起,二者之間才又發生了微妙的平衡轉變。
聚類算法
前面的算法中的一個顯著特徵就是個人訓練數據中包含了標籤,訓練出的模型能夠對其餘未知數據預測標籤。在下面的算法中,訓練數據都是不含標籤的,而算法的目的則是經過訓練,推測出這些數據的標籤。這類算法有一個統稱,即無監督算法(前面有標籤的數據的算法則是有監督算法)。無監督算法中最典型的表明就是聚類算法。
讓咱們仍是拿一個二維的數據來講,某一個數據包含兩個特徵。我但願經過聚類算法,給他們中不一樣的種類打上標籤,我該怎麼作呢?簡單來講,聚類算法就是計算種羣中的距離,根據距離的遠近將數據劃分爲多個族羣。
聚類算法中最典型的表明就是K-Means算法。
降維算法
降維算法也是一種無監督學習算法,其主要特徵是將數據從高維下降到低維層次。在這裏,維度其實表示的是數據的特徵量的大小,例如,房價包含房子的長、寬、面積與房間數量四個特徵,也就是維度爲4維的數據。能夠看出來,長與寬事實上與面積表示的信息重疊了,例如面積=長 × 寬。經過降維算法咱們就能夠去除冗餘信息,將特徵減小爲面積與房間數量兩個特徵,即從4維的數據壓縮到2維。因而咱們將數據從高維下降到低維,不只利於表示,同時在計算上也能帶來加速。
剛纔說的降維過程當中減小的維度屬於肉眼可視的層次,同時壓縮也不會帶來信息的損失(由於信息冗餘了)。若是肉眼不可視,或者沒有冗餘的特徵,降維算法也能工做,不過這樣會帶來一些信息的損失。可是,降維算法能夠從數學上證實,從高維壓縮到的低維中最大程度地保留了數據的信息。所以,使用降維算法仍然有不少的好處。
降維算法的主要做用是壓縮數據與提高機器學習其餘算法的效率。經過降維算法,能夠將具備幾千個特徵的數據壓縮至若干個特徵。另外,降維算法的另外一個好處是數據的可視化,例如將5維的數據壓縮至2維,而後能夠用二維平面來可視。降維算法的主要表明是PCA算法(即主成分分析算法)。
推薦算法
推薦算法是目前業界很是火的一種算法,在電商界,如亞馬遜,天貓,京東等獲得了普遍的運用。推薦算法的主要特徵就是能夠自動向用戶推薦他們最感興趣的東西,從而增長購買率,提高效益。推薦算法有兩個主要的類別:
一類是基於物品內容的推薦,是將與用戶購買的內容近似的物品推薦給用戶,這樣的前提是每一個物品都得有若干個標籤,所以才能夠找出與用戶購買物品相似的物品,這樣推薦的好處是關聯程度較大,可是因爲每一個物品都須要貼標籤,所以工做量較大。
另外一類是基於用戶類似度的推薦,則是將與目標用戶興趣相同的其餘用戶購買的東西推薦給目標用戶,例如小A歷史上買了物品B和C,通過算法分析,發現另外一個與小A近似的用戶小D購買了物品E,因而將物品E推薦給小A。
兩類推薦都有各自的優缺點,在通常的電商應用中,通常是兩類混合使用。推薦算法中最有名的算法就是協同過濾算法。
其它
除了以上算法以外,機器學習界還有其餘的如高斯判別,樸素貝葉斯,決策樹等等算法。可是上面列的六個算法是使用最多,影響最廣,種類最全的典型。機器學習界的一個特點就是算法衆多,發展百花齊放。