編者按:機器學習的算法很多,如何選擇一直是初學者的一個痛點。本文給出了機器學習算法選擇的方法和實例,不僅適用於Microsoft Azure框架,同樣可以應用於其他場合。
本文目錄
機器學習算法速查卡
機器學習的類別
選擇算法的注意事項
算法註釋
更多的算法幫助
關於問題“我應該使用什麼機器學習算法”?我們總是回答“這取決於“。這取決於數據的大小,質量和性質。這取決於你想要解決什麼問題。這取決於算法上的數學知識如何轉換為您正在使用的計算機的指令。這取決於你有多少時間。在嘗試之前,即使是最有經驗的數據科學家也不知道哪種算法的性能最好。
1、機器學習算法速查卡
Microsoft Azure機器學習算法速查卡可以幫助您從Microsoft Azure機器學習算法庫中為您的預測分析解決方案選擇正確的機器學習算法。本文將向您介紹如何使用它。
( 點擊閱讀原文下載pdf打印版)
這個速查卡的受眾非常明確:即一個嘗試選擇一個算法在Azure Machine Learning Studio中開始機器學習的本科初級數據科學家。 這意味著它會高度概括及簡化,但它會指向一個穩妥的方向。這也意味著有很多算法沒有在這裡列出。 隨著Azure機器學習發展到包含更完整的可用方法集,我們將會添加更多算法。
這些建議是從許多數據科學家和機器學習專家的反饋和建議中彙總得來的。對此我們沒有全部認同,但我試圖協調我們的意見,達成粗略的共識。大多數不贊成的描述從“它取決於...”開始。
如何使用速查卡
用標籤“For <path label> use <algorithm>”讀取圖表上的路徑和算法。例如:“For speed use two class logistic regression.”有時候有多個分支都能應用。有時候,沒有一個可以完美地匹配。他們提出的都是有經驗的意見,所以不需要擔心它的準確性。我談到的幾個數據科學家說,找到最好的算法的唯一確定的方法就是把所有的算法都試一遍。
下面是一個實驗Cortana智能畫廊(http://gallery.cortanaintelligence.com/)的示例,該實驗針對相同的數據嘗試多種算法,並比較結果:比較多類分類器:字母識別(http://gallery.cortanaintelligence.com/Details/a635502fc98b402a890efe21cec65b92)。
Tips:要下載並打印Machine Learning Studio的功能概述圖表,請參閱AzureMachine Learning Studio功能概述圖(https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-studio-overview-diagram)。
2、機器學習的類別
2.1、監督
監督學習算法是基於一組示例進行預測的算法。 例如,歷史股票價格可用於未來價格的風險預測。每個用於訓練的例子都對利益價值標上標籤,在本例中是股票價格的值。監督學習算法在這些標籤中識別模式。它可以使用任何有關的信息——一週的幾天,季節,公司財務數據,工業的類型,地緣政治的分裂事件,並且每個算法可以識別不同類型的模式。當算法已經識別到它可識別的最佳模式,它就使用這種模式來預測沒有標籤的測試數據——明天的股票價格。
這是一種流行和有用的機器學習類型。除了一個例外,Azure機器學習中的所有模塊都是監督學習算法。在Azure機器學習中有幾種特定類型的監督學習:分類,迴歸和異常檢測。
分類。當數據被用於預測類別時,監督學習也被稱為分類。這是在將圖像分配為“貓”或“狗”的圖片時的情況。當只有兩個選擇時,這被稱為二類或二項分類。當有更多的類別時,如預測NCAA三月瘋狂錦標賽的贏家時,這個問題被稱為多分類。
迴歸。當預測某一個值時,如股票價格,監督學習被稱為迴歸。
異常檢測。有時異常檢測是為了識別不尋常的數據點。例如,在欺詐檢測中,任何高度不尋常的信用卡的支出模式都是可疑的。可能的變化如此之多,訓練的樣本如此之少,以至於不可能完全瞭解欺詐活動的所有特徵。所以異常檢測所採用的方法是簡單地瞭解正常活動的樣子(使用歷史非欺詐性交易),並識別任何顯著不同的東西。
2.2、無監督
在無監督學習中,數據點沒有與它們相關聯的標籤。相反,無監督學習算法的目標是以某種方式組織數據或描述其結構。這意味著將其分組到集群中或者找到不同的方式來查看複雜數據,使得它看起來更簡單或更有組織。
2.3、增強學習
在增強學習中,算法選擇對每個數據點進行響應。 學習算法也在短時間後接收到獎勵信號,表明決定有多好。 基於此,算法修改其策略,以實現最高的獎勵。目前在Azure機器學習中沒有增強學習算法模塊。增強學習在機器人技術中較常見,其中在一個時間點傳感器讀取的數據集合是數據點,並且算法必須選擇機器人的下一個動作。它也是一種合適的物聯網應用程序。
3、選擇算法的注意事項
3.1 準確性
我們沒有必要一味追求最準確的答案,有時得到近似值就足夠了,這取決於你想要使用它做什麼。如果是這樣,您可以通過堅持使用更多的近似方法,這樣可大大縮短處理時間。求近似值方法的另一個優點是它們自然傾向於避免過度擬合。
3.2 訓練時間
訓練模型所需的分鐘或小時數在算法之間變化很大。訓練時間通常與準確度密切相關,兩者密不可分。此外,一些算法對數據點的數量比其他算法更敏感。當時間有限時,它可以驅動算法的選擇,特別是當數據集較大時。
3.3 線性
許多機器學習算法利用線性關係。線性分類算法假定類可以由直線(或其更高維的模擬)分離。這些包括邏輯迴歸和支持向量機(如在Azure機器學習中實現的)。 線性迴歸算法假定數據趨勢遵循直線。這些假設對於一些問題來說並不糟糕,但在另一些問題上,它們會使精度降低。
非線性類邊界 - 依賴於線性分類算法將導致較低的準確度。
具有非線性趨勢的數據 - 使用線性迴歸方法將產生更大的不必要的誤差。
儘管它們危險,線性算法作為第一攻擊線非常流行。它們傾向於在算法上簡單和快速地訓練數據。
3.4 參數數量
參數是數據科學家在設置算法時要進行的轉換。它們是影響算法行為的數字,例如錯誤容限或迭代次數,或算法運行方式的變換之間的選項。訓練時間和算法的準確性有時可能對正確的設置相當敏感。通常,具有大量參數的算法需要最多的試驗和誤差來找到良好的組合。
或者,Azure機器學習中有一個參數掃描(https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-algorithm-parameters-optimize)模塊,可以結合任何您選擇的粒度自動嘗試所有參數組合。雖然這是確保跨越參數空間的好方法,但訓練模型所需的時間隨參數數量呈指數增長。
上面所指的具有較多參數表明了一個算法的靈活性較好。它通常可以達到非常好的精度。 只要您能找到正確的參數設置組合。
3.5 特徵數
對於某些類型的數據,與數據點的數量相比,特徵的數量可能非常大。這通常是遺傳問題或文本數據的情況。大量的特徵可以使一些學習算法停滯,使訓練時間長得不現實。支持向量機特別適合這種情況(見下文)。
3.6 特殊情況
一些學習算法對數據的結構或期望的結果做出特定的假設。如果你能找到一個符合你需要的假設,它可以給你更有用的結果,更準確的預測或更快的訓練時間。
算法 | 準確性 | 訓練時間 | 線性關係 | 參數 | 備註 |
二分類 | |||||
邏輯迴歸 | ● | ● | 5 | ||
決策森林 | ● | ○ | 6 | ||
決策叢林 | ● | ○ | 6 | 佔用內存低 | |
boosted決策樹 | ● | ○ | 6 | 佔用內存大 | |
神經網絡 | ● | 9 | 可以進行其它定製 | ||
平均感知器 | ○ | ○ | ● | 4 | |
支持向量機 | ○ | ● | 5 | 適合大型特徵集 | |
局部支持向量 | ○ | 8 | 適合大型特徵集 | ||
貝葉斯分類器 | ○ | ● | 3 | ||
多分類 | |||||
邏輯迴歸 | ● | ● | 5 | ||
決策森林 | ● | ○ | 6 | ||
決策叢林 | ● | ○ | 6 | 佔用內存低 | |
神經網絡 | ● | 9 | 可以進行其它定製 | ||
one-v-all | - | - | - | - | 依賴於二元分類器 |
迴歸 | |||||
線性 | ● | ● | 4 | ||
貝葉斯線性 | ○ | ● | 2 | ||
決策森林 | ● | ○ | 6 | ||
boosted決策樹 | ● | ○ | 5 | 佔用內存大 | |
快速森林分位數 | ● | ○ | 9 | 預測分佈而不是點 | |
神經網絡 | ● | 9 | 可以進行其它定製 | ||
泊松 | ● | 5 | 技術上對數線性。 用於預測計數 | ||
序數 | 0 | 用於預測秩序 | |||
異常值檢測 | |||||
支持向量機 | ○ | ○ | 2 | 特別適用於大型特徵集 | |
基於PCA的異常檢測 | ○ | ● | 3 | ||
K-means | ○ | ● | 4 | 一個聚類算法 |
算法屬性:
● - 具有出色的準確度,快速的訓練時間和線性的使用
○ - 顯示良好的準確性和適度的訓練時間
算法註釋
4.1 線性迴歸
如前所述,線性迴歸(https://msdn.microsoft.com/library/azure/dn905978.aspx)擬合數據集的線(或平面或超平面)。這個方法比較耐用,簡單和快速,但它可能對一些問題過於簡單。在這裡查看線性迴歸教程(https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-linear-regression-in-azure)。
有線性趨勢的數據。
4.2 邏輯迴歸
雖然此名稱中包含“迴歸”較容易混淆,邏輯迴歸實際上是一個強大的工具,可用於兩類(https://msdn.microsoft.com/library/azure/dn905994.aspx)和多類(https://msdn.microsoft.com/library/azure/dn905853.aspx)分類。它快速和簡單。事實上,它使用“S”形曲線而不是直線,這使得它自然適合將數據分組。邏輯迴歸給出線性類邊界,因此當您使用它時可以做到確保線性近似。
對只有一個特徵的兩類數據的邏輯迴歸- 類邊界是邏輯曲線與兩個類接近的點。
4.3 樹,森林和叢林
決策樹(迴歸,兩類和多類),決策叢林(兩類和多類)和boosted決策樹(迴歸和兩類)都基於一個基礎機器學習概念——決策樹。決策樹有許多變量,但它們都做同樣的事情,就是將特徵空間細分成具有大致相同標籤的區域。這些可以是類別一致或恆定值的區域,取決於您是進行分類還是迴歸。
決策樹將特徵空間細分為大致均勻值的區域。
因為特徵空間可以被細分為任意小的區域,所以很容易想象將它分得很似足以使每個區域具有一個數據點 - 過擬合的極端例子。為了避免這種情況,使用特殊的數學計算來構建樹的一個很大的集合,使得樹之間不相關。這個“決策森林”的平均值是一個避免過度擬合的樹。決策森林可以使用大量的內存。決策叢林是決策森林的一種變體,其消耗較少的內存,但是犧牲了稍長的訓練時間。
Boosted決策樹通過限制它們可以細分的次數以及在每個區域中允許多少數據點來避免過度擬合。該算法構造樹的序列,每個樹都學習補償樹之前剩下的錯誤。結果是一個非常精確的學習,傾向於使用大量的內存。有關完整的技術說明,請查看Friedman的原始論文(http://www-stat.stanford.edu/~jhf/ftp/trebst.pdf)。
快速森林分位數迴歸(https://msdn.microsoft.com/library/azure/dn913093.aspx)是決策樹的變體,對於特殊情況,您不僅要了解區域內數據的典型(中值)值,還要了解其以分位數形式的分佈。
4.4 神經網絡和感知器
神經網絡是涵蓋多類,兩類和迴歸問題的腦啟發學習算法。它們有無限種類,但Azure機器學習中的神經網絡都是有向無環圖的形式。這意味著輸入特徵在被轉換成輸出之前通過一系列層向前(不向後)傳遞。在每個層中,輸入以各種組合加權,求和,並傳遞到下一層。這種簡單計算的結合導致了學習複雜的類邊界和數據趨勢的能力,就像魔法一樣。這種多層次的網絡進行了“深度學習”助長了如此多的技術報告和科幻小說。
但是這種高性能不是那麼容易就能得到的。神經網絡可能需要很長時間來訓練,特別是對於具有大量特徵的大數據集。它們還具有比大多數算法更多的參數,這意味著參數掃描大大擴展了訓練時間。對於那些希望指定自己的網絡結構(http://go.microsoft.com/fwlink/?LinkId=402867)的超越者來說,可能性是不竭的。
神經網絡學習的邊界可能是複雜和不規則的
兩類平均感知器是(https://msdn.microsoft.com/library/azure/dn906036.aspx)神經網絡對飛漲訓練時間的回答。它使用給出線性類邊界的網絡結構。根據今天的標準,它幾乎是原始的,但它在歷史上一直工作穩定,且足夠小去快速學習。
4.5 SVM
支持向量機(SVM)用以找到儘可能寬的邊界分隔類的邊界。當兩個類不能被清楚地分開時,算法找到它們能找到的最佳邊界。正如在Azure機器學習中所寫的,兩類SVM僅使用直線。(在SVM中,它使用線性內核。)因為它使得這種線性近似,它能夠相當快地運行。它真正發光的是功能強大的數據,如文本或基因組。在這些情況下,除了僅需要適量的存儲器之外,SVM能夠比大多數其他算法更快地分離類並且具有更少的過擬合。
典型的支持向量機類邊界使分離兩個類的邊緣最大化
Microsoft Research的另一個產品,二分類局部SVM(https://msdn.microsoft.com/library/azure/dn913070.aspx)是SVM的非線性變體,保留線性版本的大部分速度和內存效率。它是理想的情況下,線性方法不能提供足夠準確的答案。開發人員通過將問題分解成一系列小的線性SVM問題來保持快速。閱讀完整的描述(http://research.microsoft.com/um/people/manik/pubs/Jose13.pdf)以瞭解他們如何脫離這個伎倆的細節。
使用非線性SVM的一個聰明的擴展,一類SVM(https://msdn.microsoft.com/library/azure/dn913103.aspx)繪製一個嚴格概括整個數據集的邊界。它對異常檢測很有用。遠在該邊界之外的任何新數據點是不尋常的,值得注意。
4.6 貝葉斯方法
貝葉斯方法具有非常理想的質量:它們能避免過度擬合。它們通過事先對回答的可能分佈做出一些假設來做到這一點。這種方法的另一個副產品是它們具有非常少的參數。 Azure機器學習具有用於分類(貝葉斯分類器https://msdn.microsoft.com/library/azure/dn905930.aspx)和迴歸(貝葉斯線性迴歸https://msdn.microsoft.com/library/azure/dn906022.aspx)的貝葉斯算法。注意,這些假設數據可以被分割或用直線擬合
在歷史上,Bayes' point machines由微軟研究所開發的。他們有一些非常美麗的理論工作在他們身後。感興趣的學生可參考MLR中的原始文章(http://jmlr.org/papers/volume1/herbrich01a/herbrich01a.pdf)和Chris Bishop的有見地的博客(http://blogs.technet.com/b/machinelearning/archive/2014/10/30/embracing-uncertainty-probabilistic-inference.aspx)。
4.7 專業算法
如果你有一個非常具體的目標,你可能是幸運的。在Azure機器學習集合中有專門用於排序預測(有序迴歸https://msdn.microsoft.com/library/azure/dn906029.aspx),計數預測(泊松迴歸https://msdn.microsoft.com/library/azure/dn905988.aspx)和異常檢測(基於主成分分析https://msdn.microsoft.com/library/azure/dn913102.aspx和基於支持向量機https://msdn.microsoft.com/library/azure/dn913103.aspx的一種)的算法。還有一個孤立的聚類算法(K均值https://msdn.microsoft.com/library/azure/5049a09b-bd90-4c4e-9b46-7c87e3a36810/)。
基於PCA的異常檢測 - 絕大多數數據落入定型分佈; 懷疑與該分佈顯著偏離的點
使用K均值將數據集合分成5個聚類
還有一個集合one-v-all的多類分類器,它將N類分類問題分解成N-1個兩類分類問題。 準確度、訓練時間和線性屬性由所使用的兩類分類器確定。
一對二類分類器組合形成三類分類器
Azure機器學習還包括訪問標題Wowpal Wabbit(https://msdn.microsoft.com/library/azure/8383eb49-c0a3-45db-95c8-eb56a1fef5bf)下的一個強大的機器學習框架。VW在這裡分類,因為它可以學習分類和迴歸問題,甚至可以從部分未標記的數據學習。您可以將其配置為使用多種學習算法,丟失函數和優化算法中的任何一種。它的設計從根本上是高效,平行,非常快的。它可以輕易地處理大型功能集。由微軟研究公司自己的John Langford領導,VW是一個股票汽車算法領域的一級方程式。不是每個問題都適合VW,但如果你的適合,這值得你在其界面上爬學習曲線。它也可以作為多種語言的獨立開源代碼(https://github.com/JohnLangford/vowpal_wabbit)。
更多的算法幫助
有關描述算法並提供示例的可下載信息圖,請參閱可下載的信息圖:使用算法示例的機器學習基礎知識(https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-basics-infographic-with-algorithm-examples)。
對於Azure Machine Learning Studio中可用的所有機器學習算法的類別列表,請參閱Machine Learning Studio算法和模塊幫助中的[InitializeModel] [initialize-model]。
有關Azure Machine Learning Studio中完整的字母表算法和模塊列表,請參見機器學習Studio算法和模塊幫助中的[A-Z list of Machine LearningStudio modules] [a-z-list]。
要下載並打印概述Azure Machine Learning Studio功能的圖表,請參閱AzureMachine Learning Studio功能概述圖(https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-studio-overview-diagram)。
PPV課翻譯 轉載請申請授權
PPV課大數據-專注大數據培訓,國內領先的大數據學習社區http://www.ppvke.com