本文主要適用於初學者到中級數據科學家或分析師,他們有興趣識別和應用機器學習算法來解決他們感興趣的問題。html
一個初學者面臨各類機器學習算法的典型問題是「我應該使用哪一種算法?」問題的答案取決於許多因素,包括:git
即便是經驗豐富的數據科學家也不能在嘗試不一樣的算法以前,判斷哪一種算法會最好。 咱們並非倡導一個一步到位的方法,可是咱們但願首先根據一些明確的因素來提供一些嘗試哪些算法的指導。
算法
機器學習算法速查表幫助你從各類機器學習算法中選擇,以找到適合你的具體問題的算法。 本文將引導你完成如何使用速查表的過程。網絡
因爲該速查表是專爲初學者數據科學家和分析師設計的,因此在討論算法時,咱們將做出一些簡化的假設。機器學習
這裏推薦的算法是來自幾個數據科學家和機器學習專家和開發人員的編譯反饋和提示。有幾個問題,咱們尚未達成協議,對於這些問題,咱們試圖突出共性及調和差別。分佈式
稍後將會添加其餘算法,由於咱們的庫增加包含一套更完整的可用方法。函數
將圖表上的路徑和算法標籤讀爲「若是 <路徑標籤> 則使用<算法>」。 例如:工具
有時多個分支適用,其餘時候他們都不是絕配。 重要的是要記住,這些路徑旨在做爲有經驗的建議,所以有些建議並不許確。我談到的幾位數據科學家說,找到最好算法的惟一方法就是嘗試全部的算法。性能
本節提供最受歡迎的機器學習類型的概述。 若是你熟悉這些類型,並但願繼續討論特定的算法,則能夠跳過本節並轉到下面的「什麼時候使用特定算法」。學習
監督學習算法基於一組示例進行預測。例如,可使用歷史銷售來估計將來價格。經過監督學習,你有一個輸入變量,由標記的訓練數據和指望的輸出變量組成。你使用算法分析訓練數據,來獲得將輸入映射到輸出的函數。這個推斷函數經過從訓練數據推廣來預測未知狀況下的結果來映射新的未知示例。
監督學習的挑戰是標註數據多是昂貴和耗時的。 若是標籤有限,你可使用未標記的示例來加強監督學習。 由於在這種狀況下機器沒有被徹底監督,因此咱們說機器是半監督的。 使用半監督學習,你可使用少許標籤數據的未標記示例來提升學習準確性。
執行非監督學習時,機器將呈現徹底未標記的數據。 被要求發現基礎數據的固有模式,如聚類結構,低維流形或稀疏樹和圖。
加強學習根據環境的反饋分析和優化agent行爲。機器嘗試不一樣的場景來發現哪些行爲會產生最大的回報,而不是被告知要採起哪些行動。試誤與延遲獎勵區別加強學習與其餘技術。
選擇算法時,請務必考慮這些方面:準確度,訓練時間和易用性。 許多用戶將準確度放在第一位,而初學者則傾向於關注他們最瞭解的算法。
當被提供一個數據集時,首先要考慮的是如何得到結果,不管這些結果如何。 初學者傾向於選擇易於實現的算法,並能夠快速得到結果。 這樣作很好,由於這只是過程的第一步。 得到一些結果並熟悉數據後,你能夠花費更多時間使用更復雜的算法來增強對數據的理解,從而進一步改進結果。
即便在這個階段,最好的算法可能不是實現最高報告精度的方法,由於算法一般須要仔細調整和普遍的訓練才能得到最佳的可實現性能。
更仔細地查看各個算法能夠幫助你瞭解它們提供的內容以及如何使用它們。 這些描述提供了更多的細節,並提供了何時使用特定算法,與速查表對準。
線性迴歸是對連續因變量y與一個或多個預測變量X之間的關係進行建模的方法.Y和X之間的關係能夠線性建模爲。根據訓練樣本
,能夠學習參數向量β。
若是因變量不是連續的而是分類的,則可使用logit連接函數將線性迴歸轉換爲邏輯迴歸。 邏輯迴歸是一種簡單,快速而強大的分類算法。 這裏咱們討論二進制的狀況,其中因變量y只取二進制值(它能夠容易地擴展到多類分類問題)。
在邏輯迴歸中,咱們使用不一樣的假設類來嘗試預測給定示例屬於「1」類的機率,而不是它屬於「-1」類的機率。 具體來講,咱們將嘗試學習如下形式的函數:和
。這裏
是sigmoid函數。給定訓練樣例
,能夠經過使給定數據集β的對數似然度最大化來得知參數向量β。
核機制用於將非線性可分離函數映射爲更高維度的線性可分離函數。 支持向量機(SVM)訓練算法找到由超平面的法向量w和誤差b表示的分類器。 這個超平面(邊界)將不一樣的類分隔開儘量大的邊距。 該問題能夠轉化爲約束優化問題:
支持向量機(SVM)訓練算法找到由超平面的法向量w和誤差b表示的分類器。 這個超平面(邊界)將不一樣的類分隔開儘量大的邊距。 該問題能夠轉化爲約束優化問題:
當類不可線性分離時,可使用核機制將非線性可分離空間映射到更高維度的線性可分離空間。
當大多數因變量是數字時,邏輯迴歸和SVM應該是分類的第一個嘗試。 這些機型易於實現,其參數易調,性能也至關不錯。 因此這些模式適合初學者。
決策樹、隨機森林和梯度提高都是基於決策樹的算法。決策樹有許多變種,但它們都作一樣的事情--將特徵空間細分爲具備相同標籤的區域。決策樹易於理解和實施。 然而,當咱們剪枝並深度運行樹時每每過分擬合數據。隨機森林和梯度提高是使用樹算法實現良好準確性以及克服過擬合問題的兩種流行方式。
20世紀80年代中期,因爲並行和分佈式處理能力,神經網絡蓬勃發展。 可是,這一領域的研究受到普遍用於優化神經網絡參數的反向傳播訓練算法的無效性的阻礙。 支持向量機(SVM)等簡單模型,能夠經過解決凸優化問題輕鬆訓練,逐漸取代機器學習中的神經網絡。
近年來,新的和改進的訓練技術,如非監督的預訓練和逐層貪婪訓練,致使對神經網絡興趣的興起。 愈來愈強大的計算能力,如圖形處理單元(GPU)和大規模並行處理(MPP),也激發了神經網絡的復興。神經網絡復興的研究引發了成千上萬層模型的發明。
換句話說,淺層神經網絡已經演變成深度學習神經網絡。 深層神經網絡對於監督學習已經很是成功。 當用於語言和圖像識別時,深層次的學習表現與甚至比人類更好。 適用於非監督的學習任務,如特徵提取,深度學習還從原始圖像或語音中提取少許人爲干預的特徵。
神經網絡由三部分組成:輸入層,隱層和輸出層。 訓練樣本定義了輸入和輸出層。 當輸出層是分類變量時,神經網絡是解決分類問題的一種方式。 當輸出層是連續變量時,網絡能夠用來作迴歸。 當輸出層與輸入層相同時,可使用網絡來提取內在特徵。 隱藏層的數量定義了模型的複雜性和建模能力。
K-means/ K-modes,GMM聚類旨在將n個觀察值分爲k個集羣。 K-means定義硬分配:樣本將是且僅與一個集羣相關聯。 然而,GMM爲每一個樣本定義一個軟分配。 每一個樣本具備與每一個集羣相關聯的機率。 當給定集羣k的數量時,兩種算法都是簡單且足夠快的聚類。
可使用樹結構(樹形圖)來可視化分層分區。 它不須要集羣的數量做爲輸入,而且可使用不一樣的K來以不一樣的粒度級(即,能夠細化/粗化的集羣)來查看分區。
咱們一般不想將大量的特徵直接饋送到機器學習算法中,由於一些特徵多是不相關的,或者「固有的」維度可能小於特徵的數量。 主成分分析(PCA),奇異值分解(SVD)和潛在Dirichlet分配(LDA)都可用於降維。
PCA是一種非監督的聚類方法,將原始數據空間映射到較低維數空間,同時保留儘量多的信息。 PCA基本上找到一個最保留數據方差的子空間,其中子空間由數據協方差矩陣的主要特徵向量定義。
SVD與PCA相關,意思是中心數據矩陣(特徵與樣本)的SVD提供了定義與PCA相同的子空間的主要左奇異向量。 然而,SVD是一種更通用的技術,由於它也能夠作PCA可能不作的事情。 例如,用戶對電影矩陣的SVD可以提取能夠在推薦系統中使用的用戶資料和電影簡介。 此外,SVD也被普遍用做天然語言處理(NLP)中稱爲潛在語義分析的主題建模工具。
NLP中的相關技術是潛在的Dirichlet分配(LDA)。 LDA是機率主題模型,它以與高斯混合模型(GMM)相似的方式將文檔分解爲主題,將連續數據分解爲高斯密度。 與GMM不一樣,LDA模型離散數據,而且限制了主題根據Dirichlet分佈先驗分佈。
這是易於遵循的工做流程。在此得出的當試圖解決一個新問題時的結論:
SAS視覺數據挖掘和機器學習爲初學者學習機器學習和應用機器學習方法提供了一個良好的平臺。
做者:Hui Li
Dr. Hui Li是SAS數據科學技術的首席科學家。 她目前的工做重點是SAS Viya的深度學習,認知計算和SAS推薦系統。 她得到杜克大學電氣和計算機工程博士學位和碩士學位。 在加入SAS以前,她曾在杜克大學任研究科學家,並在Signal Innovation Group,Inc.擔任研究工程師。 她的研究興趣包括機器學習,大型異構數據,協同過濾建議,貝葉斯統計建模和加強學習。