10種機器學習方法,掌握了就可以稱霸朋友圈
全文共 5830 字,預計學習時長 10 分鐘
不論是在科研中還是在工業領域,機器學習都是個熱門話題,新的機器學習方法也層出不窮。機器學習發展迅速又很複雜。對初學者而言,緊跟其發展無疑十分困難,即便是對專家們來說也非易事。
為揭開機器學習的神秘面紗,幫助新手學習該領域的核心概念,本文會介紹十種不同的機器學習方法,包括簡單描述和視覺化等,並一一舉例說明。
機器學習演算法(模型)是個表示某一問題(常為商業問題)所包含資料資訊的數學表示式。設計演算法是為了分析資料從而獲取有用資訊。比如,線上零售商想要預測下一季度的銷售額時,就可能會用到機器學習演算法,根據之前的銷售額和其他相關資料來進行預測。同樣,風車製造商可以監管重要的裝置,他們給演算法提供影片資料使其在訓練之後能夠識別裝置上的裂縫。
本文介紹的十種機器學習方法可以讓你對機器學習有一個整體的瞭解,幫助你打下相關的知識和技能基礎:
1. 迴歸
2. 分類
3. 聚類
4. 降維
5. 整合方法
6. 神經網路與深度學習
7. 遷移學習
8. 強化學習
9. 自然語言處理
10. 詞嵌入
最後,在介紹這些方法之前,還是先來區分一下監督學習和無監督學習這兩種機器學習類別吧。
監督學習用於在已有資料的情況下進行預測或解釋,即透過先前輸入和輸出的資料來預測基於新資料的輸出。比如,監督機器學習技術可用來幫助某服務企業預測未來一個月訂購該服務的新使用者量。
相比之下,無監督機器學習是在不使用目標變數進行預測的情況下,對資料點進行關聯和分組。換言之,它根據特徵評估資料,並根據這些特徵,將相似的資料聚集在一起。例如,無監督學習技術可用來幫助零售商對具有相似特徵的產品進行分類,而且無需事先指定具體特徵是什麼。
1. 迴歸
迴歸是一種監督機器學習方法,在先前資料的基礎上預測或解釋特定數值。例如要想知道某房產的價值,可根據與之相似房產的定價來預測。
線性迴歸是最簡單的迴歸方法,用直線方程(y = m * x + b)來模擬資料集。透過計算直線的位置和斜率得到具有許多資料對(x,y)的線性迴歸模型,在該直線上,所有資料點到它的距離之和最小。換言之,計算的是最接近資料中觀測值的那條線的斜率(m)和y截距(b)。
接著再來看一些具體的線性迴歸例子。將建築物的年齡、樓層數、面積(平方英尺)和牆上插入式裝置的數量這些資料彙總在一起,用線性迴歸方法來預測該建築物的耗能情況(以千瓦時為單位)。由於有多種輸入值(年齡,面積等),可以選擇多變數線性迴歸方法,原理和簡單的一元線性迴歸一樣,但在這種情況下,由於有多個變數,最終建立出來的“線”是多維的。
下圖顯示了線性迴歸模型與建築物實際能耗的吻合程度。如果已知某建築物的各項特徵(年齡、面積等),但耗能情況未知,就可以用擬合線來對其進行估算。
注意,線性迴歸還可以用來估計各個因素對於最終耗能情況的影響程度。例如,有了公式,就可以確定建築物的年齡、面積或高度是否為最重要的影響因素。
迴歸技術有簡單的(線性迴歸),也有複雜的(正則化線性迴歸、多項式迴歸、決策樹和隨機森林迴歸、神經網路等),你大可不必感到迷惑,可以先從簡單的線性迴歸著手,掌握其中的技術,然後繼續學習較複雜的型別。
2. 分類
分類是另一種監督機器學習方法,這一方法對某個類別值進行預測或解釋。比如可以用分類的方法來預測線上顧客是否會購買某一產品。輸出可分為是或否,即購買者或非購買者。但分類並不限於兩個選擇。例如,可透過分類來看某一影像中是否有汽車或卡車。在這種情況下,輸出就有3個不同值,分別為1)影像包含汽車、2)影像包含卡車或3)影像既不包含汽車也不包含卡車。
邏輯迴歸是分類演算法中最簡單的一類,這聽起來很像一個迴歸方法,其實不然。邏輯迴歸是基於一個或多個輸入來估計某一事件發生機率的一種演算法。
例如,邏輯迴歸可基於學生的兩次考試分數來估計該生被某一大學錄取的機率。由於估計值是機率,輸出只能是介於0和1之間的數字,其中1表示完全確定。對該生而言,如果估計機率大於0.5,預測結果就是:他(她)能被錄取,如果估計機率小於0.5,預測結果則為:他(她)不會被錄取。
下圖顯示了先前學生的分數以及他們最終的錄取結果。用邏輯迴歸可繪製出一條代表決策邊界的線。
邏輯迴歸是一個線性模型,因此是新手學習分類方法入門的不錯選擇。隨著不斷的進步,就可以深入研究像決策樹、隨機森林、支援向量機和神經網路這些非線性分類了。
3. 聚類
聚類方法的目標是對具有相似特徵的觀察值進行分組或聚類,是一種無監督機器學習方法。聚類方法不借助輸出資訊進行訓練,而是讓演算法定義輸出。在這一方法中,只能使用視覺化來檢驗解決方案的質量。
最流行的聚類方法是K均值聚類,其中“K”表示使用者選擇建立的簇的數量。(注意,選取K值時有多種技術可供選擇,比如肘部法則。)
大體上,K均值聚類法對資料點的處理步驟包括:
1. 隨機選擇資料中的K箇中心。
2. 將每個資料點分配給最接近的隨機建立的中心。
3. 重新計算每個簇的中心。
4. 如果中心沒有變化(或變化很小),就結束此過程。否則,返回至第2步。(如果中心持續更改,為防止最終形成無限迴圈,要提前設定最大迭代次數。)
下圖將K均值聚類法應用於建築物的資料集。圖中的每一列都表明了每棟建築的效率。這四項測量的量涉及空調、插入式裝置(微波爐,冰箱等)、家用燃氣和可燃氣體。選擇K值為2進行聚類,這樣就很容易地將其中一個聚類解釋為高效建築群,另一個則為低效建築群。左圖中可以看到建築物的位置,右圖可以看到兩個輸入值:插入式裝置和可燃氣體。
聚類方法中會涉及到一些非常有用的演算法,比如具有噪聲的基於密度的聚類方法(DBSCAN)、均值漂移聚類、聚合層次聚類、基於高斯混合模型的期望最大化聚類等。
4. 降維
顧名思義,降維可用來刪除資料集中最不重要的資料。實踐中常會遇到包含數百甚至數千列(也稱為特徵)的資料集,因此減少總量至關重要。例如,影像中數千個畫素中並不是所有的都要分析;或是在製造過程中要測試微晶片時,如果對每個晶片都進行測試也許需要數千次測試,但其實其中很多晶片提供的資訊是多餘的。在這些情況下,就需要運用降維演算法以便對資料集進行管理。
主成分分析(PCA)是最常用的降維方法,透過找出最大化資料線性變化的新向量來減小特徵空間的維數。在資料的線性相關性很強時,主成分分析法可以顯著減小資料的維度,且不會丟失太多資訊。(其實,還可以衡量資訊丟失的實際程度並進行相應調整。)
t-分佈鄰域嵌入(t-SNE)是另一種常用的方法,可用來減少非線性維數。t-分佈鄰域嵌入通常用於資料視覺化,但也可以用於減少特徵空間和聚類等機器學習任務。
下圖顯示了手寫數字的MNIST資料庫分析。MNIST包含數千個從0到9的數字影像,研究人員以此來測試聚類和分類演算法。資料集的每一行是原始影像的向量化版本(大小為28×28 = 784)和每個影像的標籤(0,1,2,3,......,9)。注意,因此將維度從784(畫素)減至2(視覺化維度)。投影到二維使得能夠對高維原始資料集進行視覺化。
5. 整合方法
假設你對市面上的腳踏車都不滿意,打算自己製作一輛,也許會從尋找各個最好的零件開始,然後最終會組裝出一輛最好的腳踏車。
整合方法也是利用這一原理,將幾個預測模型(監督式機器學習方法)組合起來從而得到比單個模型能提供的更高質量的預測結果。隨機森林演算法就是一種集合方法,結合了許多用不同資料集樣本訓練的決策樹。因此,隨機森林的預測質量會高於單個決策樹的預測質量。
整合方法可理解為一種減小單個機器學習模型的方差和偏差的方法。任何給定的模型在某些條件下可能是準確的,但在其他條件下有可能不準確,因此這種方法十分重要。如果換用另一個模型,相對精度可能會更低。而組合這兩個模型,就可以平衡預測的質量。
絕大多數Kaggle競賽的獲勝者都會使用整合方法。最為流行的整合演算法有隨機森林、XGBoost和LightGBM。
6. 神經網路與深度學習
與線性模型的線性迴歸和邏輯迴歸相比,神經網路的目標是透過向模型新增引數層來捕獲資料中的非線性模式。下圖中,簡單神經網路有四個輸入,一個帶有五個引數的隱藏層和一個輸出層。
其實,神經網路的結構十分靈活,可以構建出我們所熟知的的線性迴歸和邏輯迴歸。深度學習一詞來自具有多個隱藏層的神經網路(見下圖),是對各種體系結構的一個概括。
跟上深度學習發展的步伐尤為困難,部分原因在於研究和工業方面投入了大量精力來研究深度學習,使得不斷有新方法湧現出來。
為達到最佳效果,深度學習技術需要大量的資料,同時也需要強大的計算能力作為支撐,因為該方法是在大型體系架構中對許多引數進行自我調整。鑑於此,就不難理解為什麼深度學習從業者要用配備強大圖形處理單元(GPU)功能的計算機了。
深度學習技術在視覺(影像分類)、文字、音訊和影片領域的應用最為成功。最常見的深度學習軟體包有Tensorflow和PyTorch。
7. 遷移學習
假設你是個零售業的資料科學家,已經花了幾個月的時間訓練高質量模型,用來將影像分為襯衫、T恤和Polo衫這三類。新任務是建一個類似的模型,把服裝影像分為牛仔褲、工裝褲、休閒褲和正裝褲這幾類。那麼能不能把第一個模型中已建立的知識轉移到第二個模型中呢?當然可以,遷移學習可以做到。
遷移學習是指重複使用先前訓練的神經網路的一部分,並使其適應類似的新任務。具體來說就是,使用先前任務中訓練過的神經網路,可以傳輸一小部分訓練過的圖層,並將它們與用於新任務資料訓練的幾個圖層組合在一起。透過新增圖層,新的神經網路就能快速學習並適應新的任務。
遷移學習的主要優點是訓練神經網路所需的資料較少,這點尤為重要,因為深度學習演算法的訓練既耗時,(計算資源上)花費又高。而且,通常也很難找到足夠的標記資料來供培訓使用。
還是回到上文的例子,假設襯衫模型中,你用了一個有20個隱藏層的神經網路,幾次嘗試後,發現可以遷移其中的18個襯衫模型層,並能把它們與用來訓練褲子影像的某個新的引數層相結合。此時,褲子模型將有19個隱藏層。這兩個任務的輸入和輸出不同,但一些概括與兩者都有關的資訊如布料、衣服上扣件和形狀等方面的引數層可重複使用。
遷移學習正變得越來越流行,現在已經有很多固定的預訓練的模型,可以用來完成一些常見的像影像和文字分類的深度學習任務。
8. 強化學習
試想,迷宮中有隻老鼠,在試圖尋找藏在某處的乳酪。老鼠進迷宮的次數越多,它就越有可能找到乳酪。一開始,老鼠可能會隨機走動,但一段時間後,它就能意識到怎樣走可以找到乳酪。
老鼠找乳酪的過程反映了使用強化學習來訓練系統或遊戲的方法。一般來說,強化學習是一種幫助代理從經驗中學習的機器學習方法。透過在設定環境中記錄操作並使用試錯法,強化學習可以最大化累積獎勵。在上述示例中,代理是老鼠,環境是迷宮。老鼠的可能操作是:前移、後移、左移或右移,乳酪則是獎勵。
如果一個問題幾乎沒有任何歷史資料,就可以選擇強化學習方法,因為它不需要事先提供資訊(這一點不同於傳統的機器學習方法)。在強化學習框架中,你可以隨時瞭解資料。因此強化學習的應用在遊戲方面的成功也就不足為奇了,特別是在國際象棋和圍棋這類“完美資訊”型遊戲上的應用。在遊戲中,可以迅速根據代理和環境的反饋做出調整,從而使模型能夠快速學習。強化學習的缺點則是如果問題很複雜,訓練時間也許會很長。
IBM的Deep Blue曾在1997年擊敗了人類最佳國際象棋選手,同樣,基於深度學習的演算法AlphaGo也於2016年擊敗了人類最佳圍棋選手。目前英國的DeepMind科技公司是深度學習研究的翹楚。
2019年4月,OpenAI Five團隊擊敗了電子競技Dota 2世界冠軍隊伍,成為了首個取得此項成就的人工智慧團隊。Dota 2是一個非常複雜的影片遊戲,OpenAI Five團隊之所以選擇它,是因為當時沒有一種強化學習演算法能夠在遊戲中獲勝。 這個擊敗Dota 2人類冠軍隊伍的AI團隊還開發出了一個可重新定位一個塊(可以抓東西)的機器手。
強化學習可以說是一非常強大的人工智慧,今後一定會取得更多更大的進步,但同時也應記住這些方法也有侷限性。
9. 自然語言處理
世界上很大一部分資料和知識都以人類語言的形式存在著。你能想象在幾秒內閱讀、理解成千上萬的書、文章和部落格嗎?顯然,計算機還不能完全理解人類語言,但經訓練可以完成某些任務。比如可以訓練手機自動回覆簡訊或糾正拼寫錯的單詞,甚至可以教一臺機器與人進行簡單交談。
自然語言處理(NLP)本身不是一種機器學習方法,而是一種用於為機器學習準備文字的技術,其應用十分廣泛。想像一下:有大量各種格式的文字文件(詞語、線上部落格…等),充滿了拼寫錯誤、缺少字元和字詞多餘的問題。目前,由史丹佛大學的研究人員建立的NLTK(自然語言工具包)是使用最為廣泛的一種文字處理包。
將文字對映到數字表示,最簡單的方法是計算每個文字文件中各個單詞的頻率。在一個整數矩陣中,每行代表一個文字文件,每列代表一個單詞。這種單詞頻率矩陣通常稱為術語頻率矩陣(TFM)。在這個基礎上,可以用矩陣上的每個條目除以每個詞在整個文件集中重要程度的權重,從而得到文字文件的另一種流行矩陣表示。這種方法稱為術語頻率反向文件頻率(TFIDF),通常更適用於機器學習任務。
10. 詞嵌入
TFM和TFIDF是文字文件的數字表示,只根據頻率和加權頻率來表示文字文件。相比之下,詞嵌入可以捕獲文件中某個詞的上下文。根據語境,嵌入可以量化單詞之間的相似性,反過來這又方便了對詞的算術運算。
Word2Vec是一種基於神經網路的方法,將語料庫中的單詞對映到了數字向量。然後,這些向量可用來查詢同義詞、使用單詞執行算術運算,或用來表示文字文件(透過獲取文件中所有詞向量的均值)。比如,假設用一個很大的文字文件來估計單詞嵌入,並且“king”、“queen”、“man”和“woman”這四個詞也是語料庫的一部分,向量(‘word’)是表示單詞“word”的數字向量。為了估計向量(‘woman’),可以用向量執行算術運算:
向量(‘king’)+向量(‘woman’)-向量(‘man’)~向量(‘queen’)
有了單詞表示,可以計算兩個單詞的向量表示之間的餘弦相似性,以此發現單詞之間的相似性。餘弦相似性測量的是兩個向量的夾角。
機器學習方法可用來計算單詞嵌入,但這往往是在頂部應用機器學習演算法的前提步驟。例如,假設我們能訪問數千名推特使用者的推文,並知道這些使用者中哪些人買了房子。為預測新使用者買房的機率,可以將Word2Vec與邏輯迴歸結合起來。
你可以訓練單詞嵌入或使用預訓練(遷移學習)單詞向量集。若需下載157種不同語言的預訓練單詞向量,可檢視FastText。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2647686/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 掌握了Docker Layer Caching才敢自稱精通DockerfileDocker
- 一文掌握5種常用的機器學習模型及其優缺點機器學習模型
- 初學機器學習的你,是否掌握了這樣的Linux技巧?機器學習Linux
- 新冠病毒稱霸谷歌熱搜榜谷歌
- 資料科學家應該掌握的12種機器學習演算法資料科學機器學習演算法
- 積攢10款前端開發工具,就可以召喚神龍了前端
- 軟體“夠用”就可以了嗎?
- 這些appium常用元素定位技巧,你掌握了幾種?APP
- 2017整年Windows 10全球份額增幅不大 win7仍稱霸WindowsWin7
- Counterpoint:中國智慧手機稱霸印度市場
- Github 程式語言分佈統計:JavaScript 稱霸GithubJavaScript
- 只看這三張圖,你就可以掌握OTN分層結構
- 數字營銷的這四種型別,你掌握了嗎?型別
- 利用Python,四步掌握機器學習Python機器學習
- w10魔獸爭霸不能全屏怎麼解決_w10魔獸爭霸不能全屏有黑邊處理方法
- 只有掌握了這三種代理模式,才能進軍Spring AOP哦!模式Spring
- 秒殺日韓!《七大罪》稱霸暢銷TOP10,遊戲好在哪?遊戲
- 8.掌握了Dart中的函式,你就掌握了原力!Dart函式
- 5種常用的機器學習模型及其優缺點,都在這裡了機器學習模型
- 關於朋友圈霸屏的“毛玻璃”照片 微信團隊是這麼說的
- 雲伺服器記憶體多少就可以了伺服器記憶體
- 誰掌握了感測器,誰就掌握了物聯網的未來
- 誰掌握了工具誰便是強者 誰掌握了資訊誰便是勝者
- 前置機器學習(四):一文掌握Pandas用法機器學習
- 比Python、Java更快的 Go 語言,能否稱霸江湖?PythonJavaGo
- win10魔獸爭霸視野模糊怎麼辦_win10系統玩魔獸爭霸視野模糊的解決方法Win10
- win10怎麼更改有線網路名稱_win10修改網路名稱的方法Win10
- Win10電腦名稱怎麼更改 win10更改電腦名稱的方法Win10
- 卡巴斯基和金山詞霸衝突的解決辦法(兩種方法)
- w10魔獸全屏設定方法_魔獸爭霸3win10怎麼全屏Win10
- 「Java分享客棧」Nacos配置中心稱王稱霸,我Apollo一生也不弱於人!Java
- 您不需要成為數學家就可以掌握量子計算 - Frank Zickert
- 朋友圈分享動態吸引好友的方法
- 收藏:機器學習27張速查表、13種演算法和4種學習方法機器學習演算法
- Git常用指令:跟著打一遍就可以了Git
- win10更換賬戶名稱的方法_w10怎麼更改賬戶名稱Win10
- 程式設計師在一週工作中的稱霸指南程式設計師
- 機器學習大神邁克爾 · 喬丹:我討厭將機器學習稱為AI機器學習AI