機器學習

正如愛因斯坦所說:“從希臘哲學到現代物理學的整個科學史上,不斷有人試圖把表面上極其複雜的自然現象歸結爲幾個簡單的基本概念和關係,這就是整個自然哲學的基本原理。”機器學習正是一個最好的例子,其宏觀概念與核心算法都不需要用到高深的數學知識。下面將總結兩大類經典機器學習算法。

1. 分類算法

K近鄰算法

K近鄰算法

K近鄰算法是最簡單的機器學習分類算法。我們可以有兩方面的理解。如上圖所示,我們要將中間的五角星進行分類。一種理解:給定K爲以五角星所在點爲圓心的半徑,判斷該圓內三角形與小圓圈那種類型多,我們就認爲五角星屬於多的那一類。另一種理解:給定K爲離五角星所在點最近的K個數據點。這K個數據點哪種類型數據點比較多,五角星就歸爲哪一類。K近鄰算法雖然分類簡單,但是對於樣本分佈不均衡的情況可能會造成分類結果的不準確性。

邏輯迴歸算法

邏輯迴歸算法

對於邏輯迴歸算法,我們首先應該定義兩個函數:損失函數與預測函數。損失函數用於尋找最優的邏輯迴歸曲線,預測函數用於量化數據屬於某一類的概率。預測函數一般用Sigmoid函數定義:

Sigmoid函數

這個函數具有很好的光滑性,而且取值在0到1之間。相對應的分類概率爲:

分類概率

根據概率的大小我們就可以進行分類。

我們可以用最大似然估計推導得到損失函數。

樸素貝葉斯算法

貝葉斯公式

樸素貝葉斯算法主要基於貝葉斯公式。如上圖所示,我們需要對具有某一特徵的數據進行分類,我們用貝葉斯公式寫出其預測表達式。當樣本的數量達到一定的數量時,我們可以用頻率估計概率進行預測。“樸素”的意思就是數據特徵之間相互獨立。

支持向量機(SVM)

什麼叫支持向量機?實質上它就是基於支持向量的一類分類機。所謂分類機,就是能將數據分類的一種 “媒介”,比如上圖中的紅線與綠線。如上圖,我們可以看到分類器的上下每個類別都有一個離分類器最近的點,這些點的位置就確定了分類器的位置,也就是說這些點 “支持”了分類機,我們稱之爲“支持向量”。下面,我們只需保證支持向量與分類機的幾何距離取極大值,就能夠得到最佳的分類器。

隨機森林算法

隨機森林算法

中國有句古話叫做“三個臭皮匠頂個諸葛亮”,這與隨機森林算法的思想不謀而合。隨機森林算法可以看做是多個彼此獨立的決策樹疊加而成,每個決策樹的特徵選取都是通過抽樣生成的,每顆樹的訓練數據也是抽樣生成的。如上圖所示,決策樹一般都選用二叉樹決策樹。

2. 聚類算法

聚類算法主要分爲基於距離聚類與基於密度聚類兩大類。

K-means算法

K-means算法

K-means算法是基於距離的聚類算法。如上圖所示,我們需要給定K個類別(上圖K=2)。初始時給定2個初始點,根據所有數據點到兩個初始點距離的遠近分爲兩類。再找出每一類所有點的中心點作爲下一次聚類的初始點,如此循環迭代。此算法計算複雜度高,每次迭代都需要對所有數據點進行循環。給定初始類別的數量可能與實際情況不符,造成結構的失真。

DBSCAN算法

DBSCAN算法

DBSCAN算法是基於密度聚類的算法。對於本算法,我們需要初始給定兩個參數:圓的半徑R與表示密度概念的P。如果某一個數據點(例如上圖中的A點)在半徑R內的點的個數大於P,我們該點爲“核心點”。我們認爲在“核心點”半徑R範圍內的所有的點屬於同一類。如果A不是“核心點”,把A標記成“噪音”,也就是我們所說的錯誤數據。由此可以看出DBSCAN算法可以自動對“噪音”點進行篩選,這也是它最大的特點。

相關文章