如何從 8 個維度全面比較機器學習演算法?
人類發明的機器學習(ML)演算法簡直數不勝數。當然,大多數時候只有一小部分被用於研究和工業。然而,對於個人來說,理解並記住所有這些 ML 模型的細節仍然有點困難。有些人可能會有一個錯誤的印象,認為所有這些演算法都是完全不相關的。更重要的是,當兩種演算法似乎都有效時,如何選擇使用演算法 A,還是 B?
本文最初釋出於 Towards Data Scienc 部落格,經原作者授權由 InfoQ 中文站翻譯並分享。
人類發明的機器學習(ML)演算法簡直數不勝數。當然,大多數時候只有一小部分被用於研究和工業。然而,對於個人來說,理解並記住所有這些 ML 模型的細節仍然有點困難。有些人可能會有一個錯誤的印象,認為所有這些演算法都是完全不相關的。更重要的是,當兩種演算法似乎都有效時,如何選擇使用演算法 A,還是 B?
這篇文章的目的是為讀者提供一個不同的角度來看待 ML 演算法。有了這些角度,演算法可以在同樣的維度上進行比較,並且可以很容易地進行分析。本文在撰寫時考慮了兩個主要的 ML 任務——迴歸和分類。
時間複雜度
在 下,演算法所花費的“時間”是由演算法的基本運算來度量的。雖然使用者和開發人員可能更關心演算法用於訓練模型的掛鐘時間,但在比較模型用於訓練的時間時,使用最壞情況下的計算時間複雜度更公平。使用計算複雜度的好處是,可以忽略執行時使用的計算機能力、架構以及底層程式語言等的差異,允許使用者關注演算法基本操作的基本差異。
注意,在訓練和測試期間,時間複雜度可能差別很大。例如,像線性迴歸這樣的引數模型可能訓練時間很長,但它們在測試期間很高效。
空間複雜度
空間複雜度根據輸入大小度量演算法執行需要多少記憶體。如果 ML 演算法將太多資料載入到機器的工作記憶體中,則 ML 程式將無法成功執行。
樣本複雜度
樣本複雜度度量為了保證訓練的網路可以有效的泛化所需的訓練樣本量。例如,深度神經網路需要大量的訓練資料來訓練,因此,具有較高的樣本複雜度。
偏差 - 方差權衡
不同的 ML 演算法會有不同的偏差 - 方差權衡。偏差誤差來自於模型偏向於特定解或假設的事實。例如,在非線性資料上擬合線性決策邊界時,偏差較大。另一方面,方差測量模型方差帶來的誤差。 。
不同的模型做出了不同的偏差 - 方差權衡。例如,樸素貝葉斯被認為是一個高偏差、低方差的模型,因為它所做的假設過於簡單。
線上和離線
線上和離線學習是指機器學習軟體學習更新模型的方式。線上學習意味著可以一次提供一條訓練資料,以便在獲得新資料時立即更新引數。而離線學習為了更新引數,需要在新資料出現時重新訓練(重新訓練整個模型)。如果一個演算法是線上的,那麼它應該是高效的,因為在生產中使用的引數可以實時更新,以反映新資料的影響。
ID3 決策樹演算法是離線學習的一個例子。ID3 的工作方式是檢視全域性資料並進行貪婪搜尋以最大化資訊增益。當新的資料點出現時,整個模型需要重新訓練。而隨機梯度下降法(SGD)是一種線上演算法,可以在新資料到達時更新訓練模型的引數。
並行性
並行演算法是指一個演算法可以在給定的時間內完成多個操作。這可以透過將工作負載分配到不同的工作者(如單機或多機中的處理器)來實現。像梯度增強決策樹(GBDT)這樣的序列演算法很難並行化,因為下一個決策樹是根據前一個決策樹的誤差構建的。
K 近鄰(k-NN)模型的特性讓它可以輕鬆地在多臺機器上同時執行。這是在機器學習中使用 MapReduce 的一個經典例子。
引數化
雖然引數模型的定義並不嚴格,但是這種模型分類在統計學習領域中得到了廣泛的應用。簡單地說,引數化模型是指模型的引數數量是固定的,而 。另一種定義引數化模型的方法是基於其對資料機率分佈形狀的基本假設。如果沒有給出假設,則為非引數化模型。
引數化模型在機器學習中很常見。例如線性迴歸、神經網路以及許多其他 ML 模型。另一方面,k-NN 和 SVM(支援向量機)是非引數化模型。
方法、假設和目標
本質上,所有的機器學習問題都是最最佳化問題。在機器學習模型或需要最佳化的潛在目標函式背後,總是有一種方法。對演算法背後的主要思想進行比較,可以增強演算法的合理性。
例如,線性迴歸模型的目標是最小化預測的平方誤差和實際值(均方誤差,MSE),而 Lasso 迴歸的目標是最小化 MSE,同時透過新增額外的正則化項來限制學習的引數,防止過擬合。
總之,ML 演算法可以根據不同的標準進行分析。這些標準實際上有助於度量不同 ML 模型的有效性和效率。
你能想到其他比較 ML 演算法的視角嗎?
原文連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2685384/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習常用的分類器比較機器學習
- 機器學習常見演算法效能比較與調參建議機器學習演算法
- 想比較全面地學習 SAP XXX,能指導下從哪兒開始學習嗎?
- 機器學習中的維度災難機器學習
- 從百度運維實踐談“基於機器學習的智慧運維”運維機器學習
- 從 0 開始機器學習 - 機器學習演算法診斷機器學習演算法
- 規則引擎與機器學習比較與結合機器學習
- 演算法金 | A - Z,115 個資料科學 機器學習 江湖黑話(全面)演算法資料科學機器學習
- 機器學習中比較重要的幾個概念機器學習
- 【彙總】學習Python用哪個直譯器比較好?Python
- 學習Linux哪個比較好?入門學習LinuxLinux
- 機器學習(十四) 機器學習比賽網站機器學習網站
- 圖解機器學習 | 降維演算法詳解圖解機器學習演算法
- 17個機器學習的常用演算法機器學習演算法
- 值得探索的 8 個機器學習 JavaScript 框架機器學習JavaScript框架
- 機器學習演算法筆記之8:聚類演算法機器學習演算法筆記聚類
- 電話機器人哪個品牌比較好?機器人
- 【機器學習】--GBDT演算法從初始到應用機器學習演算法
- 如何學習機器學習機器學習
- 如何運用深度學習從多個維度優化數億級別商品資料深度學習優化
- 機器學習演算法機器學習演算法
- 深度學習-卷積神經網路-演算法比較深度學習卷積神經網路演算法
- 如何運用深度學習從多個維度最佳化數億級別商品資料深度學習
- 從零開始學習機器學習機器學習
- 【機器學習】--EM演算法從初識到應用機器學習演算法
- 【機器學習】--整合演算法從初始到應用機器學習演算法
- 機器學習演算法學習筆記機器學習演算法筆記
- 從零開始學機器學習——瞭解分類演算法機器學習演算法
- 從 Quora 的 187 個問題中學習機器學習和 NLP機器學習
- 【機器學習】新手必看的十種機器學習演算法機器學習演算法
- 機器學習演算法:AdaBoost機器學習演算法
- 八個層面比較 Java 8, RxJava, ReactorRxJavaReact
- 解鎖機器學習-梯度下降:從技術到實戰的全面指南機器學習梯度
- 機器學習(8)——其他聚類機器學習聚類
- Python遷移學習:機器學習演算法Python遷移學習機器學習演算法
- 【機器學習】--FP-groupth演算法從初始到應用機器學習演算法
- 免費書:最新的《機器學習全面指南》機器學習
- 教你6步從頭寫機器學習演算法——以感知機演算法為例機器學習演算法