Categories
程式開發

7 種機器學習算法的7 個要點


本文最初發表於Towards Data Science 博客,經原作者Soner Yildirim 授權,InfoQ 中文站翻譯並分享。

由於有了各種庫和框架,我們只需一行代碼就可以實現機器學習算法。 有些庫和框架更進一步,可以讓你在短時間內實現和比較多種算法。

但在使用方便的同時,也帶來了一些缺點。 我們可能會忽略這些算法背後的關鍵概念或思想,而這些概念或思想對於這些算法的理解是必不可少的。

在本文中,我將提到關於7 種機器學習算法的7 個要點。 我想指出的是,這些並不是對算法的完整解釋,所以,如果你對它們有基本了解的話,那就更好不過了。

閒話少敘,言歸正題。

1. 支持向量機

要點:C 參數

支持向量機(Support Vector Machine,SVM)創建一個決策邊界,用於區分兩個或多個類。

Soft-Margin SVM 試圖解決一類優化問題,其目標如下:

  • 增加決策邊界到類(或支持向量)的距離。
  • 最大化訓練集中正確分類的點的數量。

這兩個目標之間顯然存在一個權衡。 決策邊界可能必須非常接近一個特定的類,才能正確標註所有的數據點。 然而,在這種情況下,由於決策邊界對噪聲和自變量的微小變化過於敏感,新觀測值的正確率可能會有所降低。

另一方面,決策邊間可能會被盡可能地放置在每個類上,但代價是一些錯誤分類的異常。 這種權衡由C 參數控制。

C 參數對每一個錯誤分類的數據點增加了一個懲罰。 如果C 較小,則對錯誤分類點的懲罰較低,所以選擇一個餘量較大的決策邊界,以犧牲較多的錯誤分類次數為代價。

如果C 較大,支持向量機會盡量減少錯誤分類樣本的數量,從而導致決策邊界具有較小的邊際。 對於所有錯誤分類的例子,懲罰是不一樣的。 它與到決策邊界的距離成正比。

2. 決策樹

要點:信息增益

在選擇要分割的特徵時,決策時算法會試圖實現:

  • 更多的預測性。
  • 更少的雜質。
  • 更低的熵。

熵是對不確定性或隨機性的度量。 一個變量的隨機性越大,熵就越高。 具有均勻分佈的變量就具有最高的熵。 例如,擲一個公平的骰子,有6 種可能的結果,概率相等,所以它具有均勻分佈和高熵。

7 種機器學習算法的7 個要點 1

選擇導致更多純節點的拆分。 所有這些都表明“信息增益”(Information gain),基本上就是拆分前後的熵之差。

$信息增益=(拆分之前的熵)-(拆分之後的加權熵)$

3. 隨機森林

要點:自助法與特徵隨機性

隨機森林是許多決策樹的集合。 隨機森林的成功在很大程度上取決於使用不相關的決策樹。 如果我們使用相同或非常相似的樹,那麼整體結果與單個決策樹的結果差別並不大。 隨機森林通過自助法(自舉)和特徵隨機性(feature randomness)得到不相關的決策樹。

特徵隨機性是通過隨機深林中的每個決策樹隨機選擇特徵來實現的。 隨機森林中每棵樹使用的特徵數量可以通過max_features參數進行控制。

7 種機器學習算法的7 個要點 2

4. 梯度提升決策樹

要點:學習率和子模型數

梯度提升決策樹(Gradient Boosted Decision Tree,GBDT)是一個決策樹的集合,結合提升(boosting)方法,即將決策樹按順序連接起來。

學習率(學習率)和子模型數(n_estimators)是用於梯度提升決策樹的兩個關鍵超參數。

學習率簡單來說就是模型學習的速度。 學習率慢的好處是模型會變得過更加穩健和泛化。 然而,學習率慢是有代價的。 它需要更多的時間來訓練模型,這就給我們帶來了另一個重要的超參數。

n_估計量參數是模型中使用的樹的數量。 如果學習率低,我們需要更多的樹來訓練模型。 然而,我們在選擇數目的數量時需要非常小心。 使用過多的樹會產生過擬合的高風險。

5. 樸素貝葉斯分類器

要點:樸素的好處是什麼?

樸素貝葉斯(Naive Bayes)是一種用於分類的監督式機器學習分類算法,因此其任務是在給定特徵值的情況下找到觀測值所述的類別。 樸素貝葉斯分類器計算給定一組特徵值(即$p(y_i|x_1,x_2,…,x_n)$的類的概率。

樸素貝葉斯假設特徵彼此獨立,並且特徵之間不存在相關性。 然而,在現實生活中卻並非如此。 這種特徵不相關的樸素假設,這就是這種算法被稱為“樸素”的原因。

假設所有特徵都是獨立的,因此與復雜的算法相比,它的速度非常快。 在某些情況下,比起更高的正確率,速度更受青睞。

樸素貝葉斯適用於文本分類、電子郵件垃圾郵件檢測等高維數據的處理。

6. K-最近鄰算法

要點:何時使用? 何時不使用?

K-最近鄰算法(K-nearest neighbors,KNN)是一種監督式機器學習算法,可用於解決分類問題,也可用於解決回歸問題。 KNN 的主要原理是數據點的值由其周圍的數據點確定。

隨著數據點數量的增加,KNN 算法將會變得非常慢,這是因為模型需要存儲所有的數據點來計算它們之間的距離。 這個原因也使得算法的內存效率不高。

另一個缺點就是KNN 對異常值很敏感,因為異常值對最近點有影響(即使它的距離很遠)。

積極的一面是:

  • 簡單易懂。
  • 不做任何假設,所以它可以在非線性任務中實現。
  • 在多個類別的分類上效果很好。
  • 適用於分類任何和回歸任務。

7. K-均值聚類

要點:何時使用? 何時不使用?

K-均值聚類(K-Means Clustering)的目的是將數據分成K 個聚類,使得同一個聚類中的數據點相似,而不同聚類中的數據點相距更遠。

K-均值聚類算法無法猜測數據中存在多少個聚類。 聚類的數量必須預先確定,這可能是一項具有挑戰性的任務。

隨著樣本數量的增加,K-均值聚類算法將會變慢。 因為在每一步中,它都要訪問所有的數據點併計算距離。

K-均值聚類只能繪製線性邊界。 如果數據中存在分組的非線性結構,那麼這種情況下,K-均值聚類就不是一個好選擇。

積極的一面是:

  • 易於理解。
  • 相對較快。
  • 可針對大型數據集進行擴展。
  • 能夠巧妙地選擇初始質心的位置,從而加快收斂速度。
  • 保證收斂性。

我們已經介紹了關於每種算法的一些關鍵概念。 給出的要點和註釋絕對不是算法的全部解釋。 然而,我給出的這些內容肯定很重要,要在實施這些算法時,了解這些內容才能有所作為。

作者介紹:

Soner Yildirim,數據科學愛好者,撰寫關於數據科學、人工智能、機器學習、深度學習、統計學、數學等文章。

原文鏈接:

https://towardsdatascience.com/7-key-points-on-7-machine-learning-algorithms-945ebda7a79