Categories
程式開發

如何從8個維度全面比較機器學習算法?


人類發明的機器學習(ML)算法簡直數不勝數。當然,大多數時候只有一小部分被用於研究和工業。然而,對於個人來說,理解並記住所有這些ML模型的細節仍然有點困難。有些人可能會有一個錯誤的印象,認為所有這些算法都是完全不相關的。更重要的是,當兩種算法似乎都有效時,如何選擇使用算法A,還是B?

本文最初發佈於Towards Data Scienc博客,經原作者授權由InfoQ中文站翻譯並分享。

如何從8個維度全面比較機器學習算法? 1

圖片來源:https://unsplash.com/photos/qwtCeJ5cLYs

人類發明的機器學習(ML)算法簡直數不勝數。當然,大多數時候只有一小部分被用於研究和工業。然而,對於個人來說,理解並記住所有這些ML模型的細節仍然有點困難。有些人可能會有一個錯誤的印象,認為所有這些算法都是完全不相關的。更重要的是,當兩種算法似乎都有效時,如何選擇使用算法A,還是B?

這篇文章的目的是為讀者提供一個不同的角度來看待ML算法。有了這些角度,算法可以在同樣的維度上進行比較,並且可以很容易地進行分析。本文在撰寫時考慮了兩個主要的ML任務——回歸和分類。

時間複雜度

RAM模型下,算法所花費的“時間”是由算法的基本運算來度量的。雖然用戶和開發人員可能更關心算法用於訓練模型的掛鐘時間,但在比較模型用於訓練的時間時,使用最壞情況下的計算時間複雜度更公平。使用計算複雜度的好處是,可以忽略運行時使用的計算機能力、架構以及底層編程語言等的差異,允許用戶關注算法基本操作的基本差異。

注意,在訓練和測試期間,時間複雜度可能差別很大。例如,像線性回歸這樣的參數模型可能訓練時間很長,但它們在測試期間很高效。

空間複雜度

空間複雜度根據輸入大小度量算法運行需要多少內存。如果ML算法將太多數據加載到機器的工作內存中,則ML程序將無法成功運行。

樣本複雜度

樣本複雜度度量為了保證訓練的網絡可以有效的泛化所需的訓練樣本量。例如,深度神經網絡需要大量的訓練數據來訓練,因此,具有較高的樣本複雜度。

偏差-方差權衡

不同的ML算法會有不同的偏差-方差權衡。偏差誤差來自於模型偏向於特定解或假設的事實。例如,在非線性數據上擬合線性決策邊界時,偏差較大。另一方面,方差測量模型方差帶來的誤差。它是模型預測與期望模型預測的均方差

如何從8個維度全面比較機器學習算法? 2

偏差-方差權衡,圖片來源:https://www.cs.cornell.edu/courses/cs4780/2018fa/lectures/lecturenote12.html

不同的模型做出了不同的偏差-方差權衡。例如,樸素貝葉斯被認為是一個高偏差、低方差的模型,因為它所做的假設過於簡單。

在線和離線

在線和離線學習是指機器學習軟件學習更新模型的方式。在線學習意味著可以一次提供一條訓練數據,以便在獲得新數據時立即更新參數。而離線學習為了更新參數,需要在新數據出現時重新訓練(重新訓練整個模型)。如果一個算法是在線的,那麼它應該是高效的,因為在生產中使用的參數可以實時更新,以反映新數據的影響。

ID3決策樹算法是離線學習的一個例子。 ID3的工作方式是查看全局數據並進行貪婪搜索以最大化信息增益。當新的數據點出現時,整個模型需要重新訓練。而隨機梯度下降法(SGD)是一種在線算法,可以在新數據到達時更新訓練模型的參數。

並行性

並行算法是指一個算法可以在給定的時間內完成多個操作。這可以通過將工作負載分配到不同的工作者(如單機或多機中的處理器)來實現。像梯度增強決策樹(GBDT)這樣的序列算法很難並行化,因為下一個決策樹是根據前一個決策樹的誤差構建的。

K近鄰(k-NN)模型的特性讓它可以輕鬆地在多台機器上同時運行。這是在機器學習中使用MapReduce的一個經典例子。

參數化

雖然參數模型的定義並不嚴格,但是這種模型分類在統計學習領域中得到了廣泛的應用。簡單地說,參數化模型是指模型的參數數量是固定的,而非參數化模型的參數數量隨著數據的增加而增加。另一種定義參數化模型的方法是基於其對數據概率分佈形狀的基本假設。如果沒有給出假設,則為非參數化模型。

參數化模型在機器學習中很常見。例如線性回歸、神經網絡以及許多其他ML模型。另一方面,k-NN和SVM(支持向量機)是非參數化模型。

方法、假設和目標

本質上,所有的機器學習問題都是最優化問題。在機器學習模型或需要優化的潛在目標函數背後,總是有一種方法。對算法背後的主要思想進行比較,可以增強算法的合理性。

例如,線性回歸模型的目標是最小化預測的平方誤差和實際值(均方誤差,MSE),而Lasso回歸的目標是最小化MSE,同時通過添加額外的正則化項來限制學習的參數,防止過擬合。

總之,ML算法可以根據不同的標准進行分析。這些標準實際上有助於度量不同ML模型的有效性和效率。

你能想到其他比較ML算法的視角嗎?

原文鏈接:

How to Compare Machine Learning Algorithms