Ⅰ 《機器學習實戰》pdf下載在線閱讀,求百度網盤雲資源
《機器學習實戰》(Peter Harrington)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1-WjldGdKT5Hza8IXzI2uXg
書名:機器學習實戰
作者:Peter Harrington
譯者:李銳
豆瓣評分:8.1
出版社:人民郵電出版社
出版年份:2013-6
頁數:332
內容簡介:
機器學習是人工智慧研究領域中一個極其重要的研究方向,在現今的大數據時代背景下,捕獲數據並從中萃取有價值的信息或模式,成為各行業求生存、謀發展的決定性手段,這使得這一過去為分析師和數學家所專屬的研究領域越來越為人們所矚目。
本書第一部分主要介紹機器學習基礎,以及如何利用演算法進行分類,並逐步介紹了多種經典的監督學習演算法,如k近鄰演算法、樸素貝葉斯演算法、Logistic回歸演算法、支持向量機、AdaBoost集成方法、基於樹的回歸演算法和分類回歸樹(CART)演算法等。第三部分則重點介紹無監督學習及其一些主要演算法:k均值聚類演算法、Apriori演算法、FP-Growth演算法。第四部分介紹了機器學習演算法的一些附屬工具。
全書通過精心編排的實例,切入日常工作任務,摒棄學術化語言,利用高效的可復用python代碼來闡釋如何處理統計數據,進行數據分析及可視化。通過各種實例,讀者可從中學會機器學習的核心演算法,並能將其運用於一些策略性任務中,如分類、預測、推薦。另外,還可用它們來實現一些更高級的功能,如匯總和簡化等。
作者簡介:
Peter Harrington
擁有電氣工程學士和碩士學位,他曾經在美國加州和中國的英特爾公司工作7年。Peter擁有5項美國專利,在三種學術期刊上發表過文章。他現在是Zillabyte公司的首席科學家,在加入該公司之前,他曾擔任2年的機器學習軟體顧問。Peter在業余時間還參加編程競賽和建造3D列印機。
Ⅱ 機器學習演算法的機器學習演算法走起來
盡管機器學習演算法能夠提供多種好處,但是在使用機器學習演算法過程中也有可能導致嚴重問題。機器學習演算法初學者需要理解所輸入數據、項目范圍和目標,以及工作中使用的機器學習演算法。機器學習是很多大數據項目背後的重要推動力量,但是即便IT部門投入大量精力,在機器學習演算法具體實施過程當中事情也有可能朝著錯誤的方向發展。不幸的是,如果你沒有牢固掌握機器學習演算法所輸入數據的質量和准確性、實際的業務目標以及真實環境限制,那麼機器學習演算法預測模型很有可能具有嚴重的潛在風險(比如無法避免黑天鵝效應)。對於機器學習演算法和大數據初學者來說,很容易編寫出效率低下的機器學習演算法復雜模型或者對特定數據進行重復分析。事實上,在將這種機器學習演算法「廣義」模型應用到生產環境之前,很難判定哪種才算是最佳方式。另外一種機器學習演算法挑戰是成功的定義會隨著不同的使用情況而出現巨大差異。針對特定機器學習演算法測試數據,可以使用數十種機器學習演算法指標來描述機器學習演算法模型數據輸出結果的質量和准確性。即機器學習演算法便對於IT專家來說,其至少需要熟悉機器學習演算法輸出結果的相關指標,並且了解各種機器學習演算法象限知識,比如真正(True Positive)被模型預測為正的正樣本、真負(True Negative)被模型預測為負的負樣本、假正(False Positive )被模型預測為正的負樣本、假負(False Negative)被模型預測為負的正樣本等。在機器學習演算法和大數據領域,許多關鍵機器學習演算法指標都是根據這四種基本機器學習演算法測量結果推導而來。比如,通常會使用正確標記(真正+真負)的實例數量除以總實例數量來定義機器學習演算法整體准確性。如果想要了解究竟有多少個正確的機器學習演算法正實例,敏感性(或者召回率)就是真正的機器學習演算法數量除以實際正數量(真正+假正)所得到的比例。通常機器學習演算法精確度也是十分重要的,也就是真正(True Positive)的數量除以所有被標記為正(真正+假正)的項目之和。機器學習演算法將所有都標記為正的簡化模型將會有100%的召回率,但是機器學習演算法精確度和准確性會非常差——這種機器學習演算法模型能夠找到一切,但是機器學習演算法卻不能將小麥從谷殼當中挑選出來。因此通常需要機器學習演算法從這些指標當中進行抉擇以尋找最佳平衡點。在一些基於機器學習演算法的大數據應用領域當中,比如機器學習演算法針對性營銷,機器學習演算法相比於隨機選擇目標客戶這種傳統方式來說能夠提高20%的效率。在其他領域當中,比如對100萬人進行癌症檢查時,即便是99%的准確率也會導致極其嚴重的後果:假設癌症的發病率非常低,那麼這1%當中的大部分就是假正,從而導致需要對將近1萬人進行不必要的治療。這種情況促使我們開始思考機器學習演算法對於IT領域的影響。首先,主機存儲和計算平台應該和嘗試學習的種類相匹配。有時候應該進行離線機器學習演算法,機器學習演算法將結果模型應用在生產環境的簡單計算步驟當中。而在其他時間機器學習演算法是持續或者反復出現的(比如強化機器學習演算法),需要更加靠近當前的數據流。相比於使用其他大數據擴展集群(比如Apache Mahout、MLlib和Madlib)的可分區庫來說,一些機器學習演算法能夠實現更好可擴展性,然而其他方式可能需要更高速的計算互聯通道以及讀寫事務存儲架構以提高計算效率。機器學習演算法可以使用一些內存工具來完成大型交付式數據挖掘或者預測工作,並且機器學習演算法降低延遲。還有一些根據生產環境當中API調用情況進行收費的雲主機機器學習演算法服務,對於存儲在雲中的數據來說這種方式能提升成本效率。如果你已經擁有固定的程序業務領域, 只是想要隨意探索一下或者剛剛開始研究機器學習演算法,那麼機器學習演算法可以使用Python和其他語言當中提供的相關免費包。你甚至可以在微軟Azure當中注冊一個免費開發、基於雲的主機學習工作室。這些機器學習演算法產品當中的大多數都可以運行在本地主機的小型數據集合上,或者機器學習演算法針對生產環境擴展為大型數據集合。機器學習演算法是一個十分熱門的領域,每天我們都能聽到廠商保證自己的特定機器學習演算法產品能夠簡化平均業務分析過程。所有這些機器學習演算法預測模型都不具有人工智慧。是的,通過尋找和探索數據方面的更深層次模型,其能夠提供真實和多種業務優勢,但是通過這種機器學習演算法方式建立的一切都是相關性。就像學校經常告訴我們的一樣,相關性不代表明確的因果關系。但是,考慮到現在應用機器學習演算法技術已經變得非常容易——只需要研究感興趣的機器學習演算法數據集合,因此所有IT部門都可以學習自己的內部專業知識——收集和清除數據、制定開發流程、協助模型效果等,並且機器學習演算法應用在生產環境當中。在數據科學方面的專業知識是非常寶貴和難得的,但是考慮到這個機器學習演算法領域正在發生的快速變化,企業應該馬上開始機器學習演算法研究工作,不要期望獲得成熟的科學家團隊來順利完成機器學習演算法這樣的任務。
Ⅲ 機器學習演算法怎麼使用中文語料
這個事情很簡單
首先得有詞彙特徵 就是一組詞語的集合
比如特徵集可以是
[這,個,事情,簡單,機器,學習,中文,語料]
有了這個以後就可以表示句子了
例如:
「這個事情很簡單」
[1, 1, 1, 1, 0, 0, 0, 0]
"機器學習演算法怎麼使用中文語料"
[0, 0, 0, 0, 1, 1, 1, 1]
看出啥意思了吧,對於一個句子,特徵詞出現的位置就標1,不出現就標0。所以句子就成了向量,用歐氏距離、餘弦夾角等等方法就可以計算兩個向量的相似度,那就對應句子的相似度了。
這裡面特徵詞選擇方法有很多,常見的有TF、DF、TF-IDF等等,也可以人為指定。
向量裡面表的數值也有很多演算法,0、1是比較適合情感傾向分析的標法。
PMI指的是點互信息
PMI(a, b)=p(a,b)/(p(a)p(b))
假設有一個句子集合,總量為N
出現a次數為A,出現b次數為B
a和b同時出現在同一句話中的次數為C
則有p(a)=A/N, p(b)=B/N, p(a,b)=C/N
帶入到公式里就算出PMI了。
計算PMI時,A、B、C、N的統計方法有很多策略,根據實際情況定。
相關資料你可以看一下《統計自然語言處理》 宗成慶 寫的。
若想了解更牛逼的辦法的話 先把統計分析、實分析、泛函分析、變分分析、隨機過程、矩陣論、向量空間論、模糊數學、圖論、代數圖論、數學分析、統計機器學習、模式識別、神經網路、貝葉斯網路、自然語言處理、社會網路這些都學好,就可以獨步江湖 稱霸機器學習領域了~~哈哈~~
Ⅳ 機器學習故事匯-集成演算法
機器學習故事匯-集成演算法
【咱們的目標】系列演算法講解旨在用最簡單易懂的故事情節幫助大家掌握晦澀無趣的機器學習,適合對數學很頭疼的同學們,小板凳走起!
今天咱們就來討論一下傳說中的集成演算法,之前咱們講的演算法都是單兵作戰的(單個模型得到結果),但是回過頭來想一想現在是不是幹啥都講究個合作共贏,所以咱們的模型也是如此。單個演算法確實勢單力薄,假如我們可以把它們組合起來會不會得到更好的效果呢?(演算法們要揭竿起義了,今亡亦死舉大計亦死。。。編不下去了)
在集成演算法中,有三個核心模塊,咱們就一一道來,先來概述一下:
Bagging集成:並行的構造多個基礎模型(隨機森林),每一個基礎模型都各自為政,然後把它們的結果求一個平均就好!
Boosting集成:串列的構造多個基礎模型(Xgboost),每一個基礎模型都要嚴格篩選,在前面的基礎上加進來的新模型後,它們整體的效果起碼得沒加這個新的基礎模型前要強吧!
Stacking集成:多種演算法群毆一起上!選擇多個機器學習演算法做同一件事,最後把它們的結果合並就OK啦!
先來看看第一個傢伙Bagging模型,其典型代表就是隨機森立了,簡單來說就是並行的訓練一堆樹模型,然後求其平均結果,在這里我們要討論一個問題,就是每個樹模型該怎麼構造呢?如果不加入任何限制,那每個樹模型不都差不多嘛,那最後的平均結果又會有什麼變化呢?所以為了結果的泛化能力更強,必須要使得每個樹模型表現出多樣性,也就是盡可能的讓每個樹模型都不一樣!
這該怎麼做呢?什麼影響模型呢?數據絕對是最大的影響因子,這里的森林很好理解了,就是把樹放在一起,那麼隨機又是什麼呢?為了保證每個樹的多樣性,在構建模型時,我們做了二重隨機(我自創的詞。。。)第一重就是對樣本的選擇,每次隨機的有放回的選擇部分樣本作為一棵樹的訓練樣本(比如選擇百分之八十作為訓練集)。第二重還要考慮特徵了,既然樣本數據能隨機,那麼特徵也是一樣的,每棵樹選擇的特徵也是不一樣的隨機選擇部分特徵來建模!
隨機的意義非常重要,這是隨機森林的精神所在!
隨機森林作為灰常經典的機器學習演算法,優勢自然少不了,當我們建模完之後,還可以對特徵進行重要性評估,其實簡單來說一個特徵的重要與否可以取決於建模的時候如果把這個特徵換成噪音特徵再去看看結果的錯誤率是不是顯著上升,如果顯著上升,那麼這個特徵自然很重要,如果沒變化,那這個特徵就沒啥用了,因為它和噪音沒啥區別!
隨機森林中樹的個數是不是越多越好呢?理論上越多的樹效果應該會更好吧,但是實際上我們把樹的個數增加到一定的時候比如100棵了已經,再往上增加樹的個數結果也只會發生小范圍的浮動,基本也就穩定了!
Boosting集成中典型的代表就屬Xgboost啦,一個大殺器,這個演算法由於涉及的數學比較多,咱們後續來一個專題去講Xgboost,我們先來看看簡單些的Adaboost。
Adaboost演算法概述來說就是,首選我有一個非常簡單的模型,比如深度為1的樹模型,然後我去預測一下結果,在結果中我發現某些樣本預測錯了,這個時候第二個簡單的樹模型就來了,還是同樣的任務只不過數據的權重發生了變換,一開始所有的數據都是相同的權重,但是第二次會把前面那次預測錯的數據的權重增大,相對來說預測對的數據的權重就會減小。說白了就是讓後面的模型更注重我之前哪些數據分錯了,這回好能分對它!(好比我們在考試前都會復習之前做錯的題)
最後來看一下堆疊模型吧,社會我Stacking,人狠話不多,不需要多解釋,做了一堆演算法,然後把它們的結果堆疊起來,每個演算法都有自己的預測結果,這些結果組合在一起那不相當於一個新的特徵嘛,再把它們結果組成的特徵去做一個分類或者回歸,又得到了一個唯一的結果。
Ⅳ 機器學習演算法
機器學習演算法如下:
機器學習(MachineLearning,ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。
它是人工智慧的核心,是使計算機具有智能的根本途徑,其應用遍及人工智慧的各個領域,它主要使用歸納、綜合而不是演繹。
揭開神秘的機器學習演算法:
我們越來越多地看到機器學習演算法在實用和可實現的目標上的價值,例如針對數據尋找可用的模式然後進行預測的機器學習演算法。通常,這些機器學習演算法預測模型用於操作流程以優化決策過程,但同時它們也可以提供關鍵的洞察力和信息來報告戰略決策。
機器學習演算法的基本前提是演算法訓練,提供特定的輸入數據時預測某一概率區間內的輸出值。請記住機器學習演算法的技巧是歸納而非推斷——與概率相關,並非最終結論。構建這些機器學習演算法的過程被稱之為機器學習演算法預測建模。
一旦掌握了這一機器學習演算法模型,有時就可以直接對原始數據機器學習演算法進行分析,並在新數據中應用該機器學習演算法模型以預測某些重要的信息。模型的輸出可以是機器學習演算法分類、機器學習演算法可能的結果、機器學習演算法隱藏的關系、機器學習演算法屬性或者機器學習演算法估計值。
機器學習演算法技術通常預測的是絕對值,比如標簽、顏色、身份或者質量。比如,某個機器學習演算法主題是否屬於我們試圖保留的用戶?用戶會付費購買嗎?用戶會積極響應邀約嗎?
如果我們關心的是機器學習演算法估算值或者連續值,機器學習演算法預測也可以用數字表示。輸出類型決定了最佳的學習方法,並會影響我們用於判斷模型質量的尺度。
Ⅵ 機器學習中的演算法怎麼學
什麼是機器學習?
在解釋機器學習的原理之前,先把最精髓的基本思路介紹給大家,理解了機器學習最本質的東西,就能更好的利用機器學習,同時這個解決問題的思維還可以用到工作和生活中。
機器學習的基本思路
把現實生活中的問題抽象成數學模型,並且很清楚模型中不同參數的作用
利用數學方法對這個數學模型進行求解,從而解決現實生活中的問題
評估這個數學模型,是否真正的解決了現實生活中的問題,解決的如何?
無論使用什麼演算法,使用什麼樣的數據,最根本的思路都逃不出上面的3步!
Ⅶ 機器學習該怎麼入門
①機器學習的基礎是數學,入門AI必須掌握一些必要的數學基礎,但是並不是全部的數學知識都要學,只學工作上實際有用到的,比如是微積分、概率論、線性代數、凸優化等這些。
②數據分析里需要應用到的內容也需要掌握,但不是網上所說的從0開始幫你做數據分析的那種,而是數據挖掘或者說是數據科學領域相關的東西,比如要知道計算機裡面怎麼挖掘數據、相關的數據挖掘工具等等
補足了以上數學和數據挖掘基本知識,才可以正式進行機器學習演算法原理的學習。
③演算法方面需要掌握一些基本的框架:python、spark、mllib、scikit-learning、pytorch、TensorFlow,數據方面需要懂得HQL、numpy、pandas,如果你本身是後台開發、app開發、數據分析、項目管理,則是一個學習演算法的一個加分項。
④最後需要對人工智慧有全局的認知,包括機器學習、深度學習兩大模塊,相關的演算法原理、推導和應用的掌握,以及最重要演算法思想。
可以去學習下菜鳥窩的機器學習課,python基礎、數據分析、數學都是從0基礎開始,老師都是BAT工業界多年實踐經驗的,能讓你短時間入門機器學習,並且擁有持續讀paper等的自學能力,不過培訓跟相親一樣要看眼緣,我這里有他們公開課的全套資料包括PPT源碼,想要的可以私我哦。
Ⅷ 干貨 | 基礎機器學習演算法
本篇內容主要是面向機器學習初學者,介紹常見的機器學習演算法,當然,歡迎同行交流。
哲學要回答的基本問題是從哪裡來、我是誰、到哪裡去,尋找答案的過程或許可以借鑒機器學習的套路:組織數據->挖掘知識->預測未來。組織數據即為設計特徵,生成滿足特定格式要求的樣本,挖掘知識即建模,而預測未來就是對模型的應用。
特徵設計依賴於對業務場景的理解,可分為連續特徵、離散特徵和組合高階特徵。本篇重點是機器學習演算法的介紹,可以分為監督學習和無監督學習兩大類。
無監督學習演算法很多,最近幾年業界比較關注主題模型,LSA->PLSA->LDA 為主題模型三個發展階段的典型演算法,它們主要是建模假設條件上存在差異。LSA假設文檔只有一個主題,PLSA 假設各個主題的概率分布不變(theta 都是固定的),LDA 假設每個文檔和詞的主題概率是可變的。
LDA 演算法本質可以藉助上帝擲骰子幫助理解,詳細內容可參加 Rickjin 寫的《 LDA 數據八卦》文章,淺顯易懂,順便也科普了很多數學知識,非常推薦。
監督學習可分為分類和回歸,感知器是最簡單的線性分類器,現在實際應用比較少,但它是神經網路、深度學習的基本單元。
線性函數擬合數據並基於閾值分類時,很容易受雜訊樣本的干擾,影響分類的准確性。邏輯回歸(Logistic Regression)利用 sigmoid 函數將模型輸出約束在 0 到 1 之間,能夠有效弱化雜訊數據的負面影響,被廣泛應用於互聯網廣告點擊率預估。
邏輯回歸模型參數可以通過最大似然求解,首先定義目標函數 L ( theta ),然後 log 處理將目標函數的乘法邏輯轉化為求和邏輯(最大化似然概率 -> 最小化損失函數),最後採用梯度下降求解。
相比於線性分類去,決策樹等非線性分類器具有更強的分類能力,ID3 和 C4.5 是典型的決策樹演算法,建模流程基本相似,兩者主要在增益函數(目標函數)的定義不同。
線性回歸和線性分類在表達形式上是類似的,本質區別是分類的目標函數是離散值,而回歸的目標函數是連續值。目標函數的不同導致回歸通常基於最小二乘定義目標函數,當然,在觀測誤差滿足高斯分布的假設情況下,最小二乘和最大似然可以等價。
當梯度下降求解模型參數時,可以採用 Batch 模式或者 Stochastic 模式,通常而言,Batch 模式准確性更高,Stochastic 模式復雜度更低。
上文已經提到,感知器雖然是最簡單的線性分類器,但是可以視為深度學習的基本單元,模型參數可以由自動編碼( Auto Encoder )等方法求解。
深度學習的優勢之一可以理解為特徵抽象,從底層特徵學習獲得高階特徵,描述更為復雜的信息結構。例如,從像素層特徵學習抽象出描述紋理結構的邊緣輪廓特徵,更進一步學習獲得表徵物體局部的更高階特徵。
俗話說三個臭皮匠賽過諸葛亮,無論是線性分類還是深度學習,都是單個模型演算法單打獨斗,有沒有一種集百家之長的方法,將模型處理數據的精度更進一步提升呢?當然,Model Ensembe l就是解決這個問題。Bagging 為方法之一,對於給定數據處理任務,採用不同模型/參數/特徵訓練多組模型參數,最後採用投票或者加權平均的方式輸出最終結果。
Boosting為Model Ensemble 的另外一種方法,其思想為模型每次迭代時通過調整錯誤樣本的損失權重提升對數據樣本整體的處理精度,典型演算法包括 AdaBoost 、GBDT 等。
不同的數據任務場景,可以選擇不同的 Model Ensemble 方法,對於深度學習,可以對隱層節點採用 DropOut 的方法實現類似的效果。
介紹了這么多機器學習基礎演算法,說一說評價模型優劣的基本准則。欠擬合和過擬合是經常出現的兩種情況,簡單的判定方法是比較訓練誤差和測試誤差的關系,當欠擬合時,可以設計更多特徵來提升模型訓練精度,當過擬合時,可以優化特徵量降低模型復雜度來提升模型測試精度。
特徵量是模型復雜度的直觀反映,模型訓練之前設定輸入的特徵量是一種方法,另外一種比較常用的方法是在模型訓練過程中,將特徵參數的正則約束項引入目標函數/損失函數,基於訓練過程篩選優質特徵。
模型調優是一個細致活,最終還是需要能夠對實際場景給出可靠的預測結果,解決實際問題。期待學以致用! 作者 曉惑 本文轉自阿里技術,轉載需授權
Ⅸ 常用機器學習方法有哪些
機器學習中常用的方法有:
(1) 歸納學習
符號歸納學習:典型的符號歸納學習有示例學習、決策樹學習。
函數歸納學習(發現學習):典型的函數歸納學習有神經網路學習、示例學習、發現學習、統計學習。
(2) 演繹學習
(3) 類比學習:典型的類比學習有案例(範例)學習。
(4) 分析學習:典型的分析學習有解釋學習、宏操作學習。
(9)機器學習演算法中文視頻教程擴展閱讀:
機器學習常見演算法:
1、決策樹演算法
決策樹及其變種是一類將輸入空間分成不同的區域,每個區域有獨立參數的演算法。決策樹演算法充分利用了樹形模型,根節點到一個葉子節點是一條分類的路徑規則,每個葉子節點象徵一個判斷類別。先將樣本分成不同的子集,再進行分割遞推,直至每個子集得到同類型的樣本,從根節點開始測試,到子樹再到葉子節點,即可得出預測類別。此方法的特點是結構簡單、處理數據效率較高。
2、樸素貝葉斯演算法
樸素貝葉斯演算法是一種分類演算法。它不是單一演算法,而是一系列演算法,它們都有一個共同的原則,即被分類的每個特徵都與任何其他特徵的值無關。樸素貝葉斯分類器認為這些「特徵」中的每一個都獨立地貢獻概率,而不管特徵之間的任何相關性。然而,特徵並不總是獨立的,這通常被視為樸素貝葉斯演算法的缺點。簡而言之,樸素貝葉斯演算法允許我們使用概率給出一組特徵來預測一個類。與其他常見的分類方法相比,樸素貝葉斯演算法需要的訓練很少。在進行預測之前必須完成的唯一工作是找到特徵的個體概率分布的參數,這通常可以快速且確定地完成。這意味著即使對於高維數據點或大量數據點,樸素貝葉斯分類器也可以表現良好。
3、支持向量機演算法
基本思想可概括如下:首先,要利用一種變換將空間高維化,當然這種變換是非線性的,然後,在新的復雜空間取最優線性分類表面。由此種方式獲得的分類函數在形式上類似於神經網路演算法。支持向量機是統計學習領域中一個代表性演算法,但它與傳統方式的思維方法很不同,輸入空間、提高維度從而將問題簡短化,使問題歸結為線性可分的經典解問題。支持向量機應用於垃圾郵件識別,人臉識別等多種分類問題。
Ⅹ 機器學習新手必看十大演算法
機器學習新手必看十大演算法
本文介紹了機器學習新手需要了解的 10 大演算法,包括線性回歸、Logistic 回歸、樸素貝葉斯、K 近鄰演算法等。
在機器學習中,有一種叫做「沒有免費的午餐」的定理。簡而言之,它指出沒有任何一種演算法對所有問題都有效,在監督學習(即預測建模)中尤其如此。
例如,你不能說神經網路總是比決策樹好,反之亦然。有很多因素在起作用,例如數據集的大小和結構。
因此,你應該針對具體問題嘗試多種不同演算法,並留出一個數據「測試集」來評估性能、選出優勝者。
當然,你嘗試的演算法必須適合你的問題,也就是選擇正確的機器學習任務。打個比方,如果你需要打掃房子,你可能會用吸塵器、掃帚或拖把,但是你不會拿出鏟子開始挖土。
大原則
不過也有一個普遍原則,即所有監督機器學習演算法預測建模的基礎。
機器學習演算法被描述為學習一個目標函數 f,該函數將輸入變數 X 最好地映射到輸出變數 Y:Y = f(X)
這是一個普遍的學習任務,我們可以根據輸入變數 X 的新樣本對 Y 進行預測。我們不知道函數 f 的樣子或形式。如果我們知道的話,我們將會直接使用它,不需要用機器學習演算法從數據中學習。
最常見的機器學習演算法是學習映射 Y = f(X) 來預測新 X 的 Y。這叫做預測建模或預測分析,我們的目標是盡可能作出最准確的預測。
對於想了解機器學習基礎知識的新手,本文將概述數據科學家使用的 top 10 機器學習演算法。
1. 線性回歸
線性回歸可能是統計學和機器學習中最知名和最易理解的演算法之一。
預測建模主要關注最小化模型誤差或者盡可能作出最准確的預測,以可解釋性為代價。我們將借用、重用包括統計學在內的很多不同領域的演算法,並將其用於這些目的。
線性回歸的表示是一個方程,它通過找到輸入變數的特定權重(稱為系數 B),來描述一條最適合表示輸入變數 x 與輸出變數 y 關系的直線。
線性回歸
例如:y = B0 + B1 * x
我們將根據輸入 x 預測 y,線性回歸學習演算法的目標是找到系數 B0 和 B1 的值。
可以使用不同的技術從數據中學習線性回歸模型,例如用於普通最小二乘法和梯度下降優化的線性代數解。
線性回歸已經存在了 200 多年,並得到了廣泛研究。使用這種技術的一些經驗是盡可能去除非常相似(相關)的變數,並去除噪音。這是一種快速、簡單的技術,可以首先嘗試一下。
2. Logistic 回歸
Logistic 回歸是機器學習從統計學中借鑒的另一種技術。它是解決二分類問題的首選方法。
Logistic 回歸與線性回歸相似,目標都是找到每個輸入變數的權重,即系數值。與線性回歸不同的是,Logistic 回歸對輸出的預測使用被稱為 logistic 函數的非線性函數進行變換。
logistic 函數看起來像一個大的 S,並且可以將任何值轉換到 0 到 1 的區間內。這非常實用,因為我們可以規定 logistic 函數的輸出值是 0 和 1(例如,輸入小於 0.5 則輸出為 1)並預測類別值。
Logistic 回歸
由於模型的學習方式,Logistic 回歸的預測也可以作為給定數據實例(屬於類別 0 或 1)的概率。這對於需要為預測提供更多依據的問題很有用。
像線性回歸一樣,Logistic 回歸在刪除與輸出變數無關的屬性以及非常相似(相關)的屬性時效果更好。它是一個快速的學習模型,並且對於二分類問題非常有效。
3. 線性判別分析(LDA)
Logistic 回歸是一種分類演算法,傳統上,它僅限於只有兩類的分類問題。如果你有兩個以上的類別,那麼線性判別分析是首選的線性分類技術。
LDA 的表示非常簡單直接。它由數據的統計屬性構成,對每個類別進行計算。單個輸入變數的 LDA 包括:
每個類別的平均值;
所有類別的方差。
線性判別分析
進行預測的方法是計算每個類別的判別值並對具備最大值的類別進行預測。該技術假設數據呈高斯分布(鍾形曲線),因此最好預先從數據中刪除異常值。這是處理分類預測建模問題的一種簡單而強大的方法。
4. 分類與回歸樹
決策樹是預測建模機器學習的一種重要演算法。
決策樹模型的表示是一個二叉樹。這是演算法和數據結構中的二叉樹,沒什麼特別的。每個節點代表一個單獨的輸入變數 x 和該變數上的一個分割點(假設變數是數字)。
決策樹
決策樹的葉節點包含一個用於預測的輸出變數 y。通過遍歷該樹的分割點,直到到達一個葉節點並輸出該節點的類別值就可以作出預測。
決策樹學習速度和預測速度都很快。它們還可以解決大量問題,並且不需要對數據做特別准備。
5. 樸素貝葉斯
樸素貝葉斯是一個簡單但是很強大的預測建模演算法。
該模型由兩種概率組成,這兩種概率都可以直接從訓練數據中計算出來:1)每個類別的概率;2)給定每個 x 的值,每個類別的條件概率。一旦計算出來,概率模型可用於使用貝葉斯定理對新數據進行預測。當你的數據是實值時,通常假設一個高斯分布(鍾形曲線),這樣你可以簡單的估計這些概率。
貝葉斯定理
樸素貝葉斯之所以是樸素的,是因為它假設每個輸入變數是獨立的。這是一個強大的假設,真實的數據並非如此,但是,該技術在大量復雜問題上非常有用。
6. K 近鄰演算法
KNN 演算法非常簡單且有效。KNN 的模型表示是整個訓練數據集。是不是很簡單?
KNN 演算法在整個訓練集中搜索 K 個最相似實例(近鄰)並匯總這 K 個實例的輸出變數,以預測新數據點。對於回歸問題,這可能是平均輸出變數,對於分類問題,這可能是眾數(或最常見的)類別值。
訣竅在於如何確定數據實例間的相似性。如果屬性的度量單位相同(例如都是用英寸表示),那麼最簡單的技術是使用歐幾里得距離,你可以根據每個輸入變數之間的差值直接計算出來其數值。
K 近鄰演算法
KNN 需要大量內存或空間來存儲所有數據,但是只有在需要預測時才執行計算(或學習)。你還可以隨時更新和管理訓練實例,以保持預測的准確性。
距離或緊密性的概念可能在非常高的維度(很多輸入變數)中會瓦解,這對演算法在你的問題上的性能產生負面影響。這被稱為維數災難。因此你最好只使用那些與預測輸出變數最相關的輸入變數。
7. 學習向量量化
K 近鄰演算法的一個缺點是你需要遍歷整個訓練數據集。學習向量量化演算法(簡稱 LVQ)是一種人工神經網路演算法,它允許你選擇訓練實例的數量,並精確地學習這些實例應該是什麼樣的。
學習向量量化
LVQ 的表示是碼本向量的集合。這些是在開始時隨機選擇的,並逐漸調整以在學習演算法的多次迭代中最好地總結訓練數據集。在學習之後,碼本向量可用於預測(類似 K 近鄰演算法)。最相似的近鄰(最佳匹配的碼本向量)通過計算每個碼本向量和新數據實例之間的距離找到。然後返回最佳匹配單元的類別值或(回歸中的實際值)作為預測。如果你重新調整數據,使其具有相同的范圍(比如 0 到 1 之間),就可以獲得最佳結果。
如果你發現 KNN 在你的數據集上達到很好的結果,請嘗試用 LVQ 減少存儲整個訓練數據集的內存要求。
8. 支持向量機(SVM)
支持向量機可能是最受歡迎和最廣泛討論的機器學習演算法之一。
超平面是分割輸入變數空間的一條線。在 SVM 中,選擇一條可以最好地根據輸入變數類別(類別 0 或類別 1)對輸入變數空間進行分割的超平面。在二維中,你可以將其視為一條線,我們假設所有的輸入點都可以被這條線完全的分開。SVM 學習演算法找到了可以讓超平面對類別進行最佳分割的系數。
支持向量機
超平面和最近的數據點之間的距離被稱為間隔。分開兩個類別的最好的或最理想的超平面具備最大間隔。只有這些點與定義超平面和構建分類器有關。這些點被稱為支持向量,它們支持或定義了超平面。實際上,優化演算法用於尋找最大化間隔的系數的值。
SVM 可能是最強大的立即可用的分類器之一,值得一試。
9. Bagging 和隨機森林
隨機森林是最流行和最強大的機器學習演算法之一。它是 Bootstrap Aggregation(又稱 bagging)集成機器學習演算法的一種。
bootstrap 是從數據樣本中估算數量的一種強大的統計方法。例如平均數。你從數據中抽取大量樣本,計算平均值,然後平均所有的平均值以便更好的估計真實的平均值。
bagging 使用相同的方法,但是它估計整個統計模型,最常見的是決策樹。在訓練數據中抽取多個樣本,然後對每個數據樣本建模。當你需要對新數據進行預測時,每個模型都進行預測,並將所有的預測值平均以便更好的估計真實的輸出值。
隨機森林
隨機森林是對這種方法的一種調整,在隨機森林的方法中決策樹被創建以便於通過引入隨機性來進行次優分割,而不是選擇最佳分割點。
因此,針對每個數據樣本創建的模型將會與其他方式得到的有所不同,不過雖然方法獨特且不同,它們仍然是准確的。結合它們的預測可以更好的估計真實的輸出值。
如果你用方差較高的演算法(如決策樹)得到了很好的結果,那麼通常可以通過 bagging 該演算法來獲得更好的結果。
10. Boosting 和 AdaBoost
Boosting 是一種集成技術,它試圖集成一些弱分類器來創建一個強分類器。這通過從訓練數據中構建一個模型,然後創建第二個模型來嘗試糾正第一個模型的錯誤來完成。一直添加模型直到能夠完美預測訓練集,或添加的模型數量已經達到最大數量。
AdaBoost 是第一個為二分類開發的真正成功的 boosting 演算法。這是理解 boosting 的最佳起點。現代 boosting 方法建立在 AdaBoost 之上,最顯著的是隨機梯度提升。
AdaBoost
AdaBoost與短決策樹一起使用。在第一個決策樹創建之後,利用每個訓練實例上樹的性能來衡量下一個決策樹應該對每個訓練實例付出多少注意力。難以預測的訓練數據被分配更多權重,而容易預測的數據分配的權重較少。依次創建模型,每個模型在訓練實例上更新權重,影響序列中下一個決策樹的學習。在所有決策樹建立之後,對新數據進行預測,並且通過每個決策樹在訓練數據上的精確度評估其性能。
因為在糾正演算法錯誤上投入了太多注意力,所以具備已刪除異常值的干凈數據非常重要。
總結
初學者在面對各種機器學習演算法時經常問:「我應該用哪個演算法?」這個問題的答案取決於很多因素,包括:(1)數據的大小、質量和特性;(2)可用的計算時間;(3)任務的緊迫性;(4)你想用這些數據做什麼。
即使是經驗豐富的數據科學家在嘗試不同的演算法之前,也無法分辨哪種演算法會表現最好。雖然還有很多其他的機器學習演算法,但本篇文章中討論的是最受歡迎的演算法。如果你是機器學習的新手,這將是一個很好的學習起點。