機器學習各方法簡介

什麼是機器學習?我們把它分成兩部分看:
1.必須有一些已經存在的數據,拿來給機器學習。
2.機器學習之後必須給出自己的學習結果,也是是舉一會反三。
機器拿到數據後可以有不同的學習方法,這些方法得到的結果不盡相同,可以自主選擇。
以下是各方法:

  1. 決策樹
    顧名思義:一棵用來決策的樹。
    機器學習已有的數據,分析什麼情況會導致什麼結果,把它畫成一顆分叉的樹,
    然後如果有新數據來了,帶入這棵樹來決策應該怎麼做。
    比如帶入性別,得到結果:性別女則決策買買買,性別男則決策喫喫喫。

  2. 樸素貝葉斯
    貝葉斯是個概率公式。
    你觀察數據發現,所有渣男陣營都是錫紙燙,但是好人陣營裏有一小部分也是錫紙燙。
    假設所有錫紙燙的人中渣男有80個人,好人有20個人。就得到錫紙燙的渣男概率了。
    概率就是:檢測新來的錫紙燙人,他有80%的概率是渣男。

  3. 梯度下降
    顧名思義:一個按照梯度方向,下降最快方向,下降到底的方法。
    你面前有一座山,就是初始數據,你每向山下走一步就是下降一次,問題是如何才能最快下山呢?當然是選擇梯度(最陡峭的方向)方向向下走啦!
    梯度的選擇是自己設定的,下降距離最大的。可以嘗試很多方向。
    這是一個算法,每次需要計算的時候可以調用這個算法。

  4. 線性迴歸
    顧名思義:線性擬合原來的數據,然後讓你看其他數據時,帶回(迴歸)到該擬合線上看。
    怎麼看一條線擬合的好不好?
    看看每個點到這條線的距離和,也就是誤差和。和越小越好,最好是找到最小值,這時候就可以用上面說的梯度下降方法找最值了。
    我們在實踐的過程中發現光看距離,有可能出現負數,這時候該如何解決?
    我們選擇把距離都取平方再求和,此時求得的最值依然是原來函數的最值,反正只要找出最小值就可以了,這種方法叫最小二乘法。
    現在終於擬合好了這條線,隨意給你一個值,你能大致判斷它是在線上的位置就是迴歸了。

  5. 邏輯迴歸
    顧名思義:已知原來的數據的邏輯,就是好與不好。擬合原來的數據,線性也好,非線性也好。隨便怎麼樣,反正把好與不好分開來,然後隨意丟給你你一個數據問你猜好不好就是邏輯迴歸。
    邏輯就是分類。
    迴歸就是隨意給你一個數據,你去猜它的類。
    怎麼看分類的好不好呢?還是隨便畫一條線,我們統計一下分正確的點和分錯誤的點,但是個數這個東西不好弄呀,有可能個數一樣但是分的差的很遠,我們得想個辦法來衡量一下。
    辦法就是:如果這個數據分正確了,就加上一個很小的的值,但是一個數據分錯了就加上一個很大的值,可以把這個值想象成閃電的強度,我們力圖找到一個最小的閃電強度。
    對,轉化成數值來衡量之後,我們就又可以用梯度下降法來找最小值了。
    這個閃電叫誤差懲罰,最後加起來得到的強度叫誤差,越小越好。

  6. 支持向量機
    英文是SVM,S是support 顧名思義:支持,其實翻譯成支撐的意思更容易理解。
    我們按照邏輯迴歸分類,突然發現分隔數據的時候有很多線都成立,但是誰分的更好一點呢?
    總要有個衡量準則,就像邏輯迴歸線是通過誤差值來衡量一樣,我們選擇支持向量機完成是另外一種方法,就是支撐點,一條線分的好不好就看離這條線最近點的距離是多少(這個距離一定是最小值,這個點就是支撐點),然後嘗試第二條符合分隔的線,求出支撐點的距離,一比較,哎嘿,一個大一個小,肯定選距離大的那條線,因爲他的支撐性比較好,容錯率較高。
    總結來說:
    有不同的線對比,每條線都有支撐着的點,對比一下他們離分割線的距離,距離越大越好,因爲分的開一點。這種方法叫支持向量機。

  7. 神經網絡
    上面接觸的方法都是用一條線分隔,現如今出現的情況是,在已經分隔好的情況下,需要繼續取一部分細分,取同時符合兩種線的部分,如何操作?
    其實也沒什麼難度,就直接用兩條線分就行啦,爲了形象的把這個過程描述出來,就類比到神經元這個概念。
    數據傳輸過來,進入一個神經元(一條線)判斷處理取符合條件的值(可以是0 1類型),再進入另一個神經元(另外那條線)取符合條件的值(可以是0 1類型),把這兩個神經元(線)處理好的東西接在一起處理(與運算)判斷是否都滿足,是則輸出,不是則丟棄。
    這樣畫下來還真是神經網絡的樣子,所以這種方法叫神經網絡。

  8. 核函數
    kernel trick,發音核,之前學的方法我們都默認用直線劃分,那是因爲給的數據自己就分的很開,我們尋找到合適的直線就可以了,有這樣的一種情況,所有的數據再一條直線上,怎麼辦呢?
    很簡單:
    用曲線啊!
    衆所周知,曲線的函數表達式有兩個字母,一個未知數,他們蘊含某種關係,完全可以把數據區分開!
    但令人感興趣的是,我們可以提高維度,比如賦予兩個字母某種關係,把這個值放在第三個字母上,這樣就是三個字母兩個未知數的式子啦,這樣也叫核函數!
    我們依然可以把核函數理解爲分類問題。

總結:有一個忍者,他看到數據,
啪一下直接分成兩半了,那麼它叫:邏輯迴歸忍者。
他小心翼翼的對比着邊界數據切開,那麼他叫:支持向量機忍者。
他交叉砍了好多刀,把數據分成了區域,那麼他叫:神經網絡忍者。
他對着排成一行的數據撓了撓頭,拍桌而起,符合條件的數據因爲小震到了上半空間,大的落在了下半空間,那麼他叫:核函數忍者。


  1. K均值聚類
    顧名思義:聚類,就是把聚在一起的數據標記出來,聰明的人類一下就能看出來怎麼分!
    機器怎麼學習呢?
    隨機散落幾個值(a,b,c),分別求離a,b,c近的數據A,B,C,調整a,b,c到A,B,C中間(K均值的意思)。
    迭代:重新標記離a,b,c近的數據集A,B,C,調整a,b,c到數據集A,B,C中間。
    直到穩定。
    重要的一點是:我們需要提前給定聚類的數量,比如例子中的a,b,c三個類。

  2. 層次聚類
    如果不知道聚類數量怎麼辦?
    從數據入手,如果兩個數據之間距離小於我們設定的值,就合併進一個分組(層次的意思),一直迭代,直到算法結束。
    這樣我們就得到了一個根據距離長短分好的聚類了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章