機器學習入門必讀:6種簡單實用算法及學習曲線、思維導圖

thu數據派 發佈 2020-02-10T18:06:08+00:00

有很多算法幫助我們解決分類問題,比如K近鄰、決策樹、樸素貝葉斯、貝葉斯網絡、邏輯回歸、SVM等算法。

來源:大數據DT

本文約3500字,建議閱讀7分鐘

本文為你介紹掌握機器領域知識的學習曲線、技術棧以及常用框架。

[ 導讀 ] 大部分的機器學習算法主要用來解決兩類問題——分類問題和回歸問題。在本文當中,我們介紹一些簡單但經典實用的傳統機器學習算法,讓大家對機器學習算法有一個基本的感性認識。

有的人說機器學習入門並不難,有的人會覺得機器學習難以理解。那麼該如何去學習機器學習這種技術與方法呢?

01 機器學習算法

1. 分類算法

這是一種監督學習方法。有很多算法幫助我們解決分類問題,比如K近鄰、決策樹、樸素貝葉斯、貝葉斯網絡、邏輯回歸、SVM等算法。人工神經網絡和深度學習也往往用來解決分類問題。這些都是常見和常用的分類算法,只不過不同的算法都有其優劣,會應用在不同的場景下。

我們舉一個例子。假設我們知道某個鳥的各個特徵,現在要根據這些特徵確定這隻鳥屬於哪種鳥類,這就是所謂的分類問題。

首先,我們要收集能收集到的所有的鳥類信息,包括鳥的各種特徵以及鳥的種類,其中顏色、體重、翅膀等屬性都屬於特徵,而種類則是鳥的標籤。

其次,我們建立的機器學習的目的就是讓用戶輸入一個鳥的特徵,然後輸出這個鳥的種類,也就是對應的標籤。這個過程就是一個根據鳥的屬性分類的過程,只不過是由計算機自動完成的。

2. 回歸算法

回歸算法也是一種有監督學習方法。回歸算法來自於回歸分析,回歸分析是研究自變量和因變量之間關係的一種預測模型技術。這些技術應用於預測,時間序列模型和找到變量之間的關係。

舉個簡單例子,我們可以通過計算得出在某些情況下伺服器接收請求數量與伺服器CPU、內存占用壓力之間的關係。

最簡單的回歸算法就是線性回歸,相信大家都對線性回歸有所了解。雖然線性回歸比較簡單,但是越簡單粗暴的算法在面對有些實際問題的時候就越實用。深度學習也可以用於解決回歸問題。

3. 聚類算法

聚類算法是一類無監督學習算法。聚類是研究(樣品或指標)分類問題的一種統計分析方法,同時也是數據挖掘的一個重要算法。

聚類分析以相似性為基礎,在一個聚類中的模式比不在同一聚類中的模式具有更多的相似性,這是聚類分析的最基本原理。聚類分析的算法可以分成很多類方法,比如劃分法、層次法、基於密度的方法、基於網絡的方法和基於模型的方法。

最有名的聚類算法就是K-Means(K-均值)算法,是最為經典的、基於劃分的聚類方法。該算法的主要思路是以空間中k個點為形心進行聚類,將最靠近它們的對象歸類。通過疊代的方法,逐次更新各簇的形心的值,直至得到最好的聚類結果。(形心可以是實際的點,也可以是虛擬點)。

通過該算法我們可以將特徵相似的數據聚合稱為一個數據群組,而將特徵相差較大的數據分開。

4. 關聯分析算法

關聯分析是除了聚類以外的一種常用無監督學習方法。用於發現存在於大量數據集中的關聯性或相關性,從而描述了一個事物中某些屬性同時出現的規律和模式。

關聯分析最典型的應用就是購物車分析。我們可以從用戶的訂單中尋找經常被一起購買的商品,並挖掘這些商品之間的潛在關係,這樣有助於線上、線下商家指定購買與銷售策略。

最著名的關聯分析算法就是Apriori算法和FP-growth算法。Apriori算法就是根據有關頻繁項集特性的先驗知識而命名的。它使用一種稱作逐層搜索的疊代方法。而FP-growth是針對Apriori算法的改進算法,通過兩次掃描事務資料庫,把每個事務所包含的頻繁項目按其支持度降序壓縮存儲到FP-tree中。

在以後發現頻繁模式的過程中,不需要再掃描事務資料庫,而僅在FP-tree中進行查找即可,並通過遞歸調用FP-growth的方法來直接產生頻繁模式,因此在整個發現過程中也不需產生候選模式。該算法克服了Apriori算法中存在的問題,在執行效率上也明顯好於Apriori算法,同時能生成有向關係,比Apriori更為泛用。

5. 集成算法

前面幾節介紹了常見的機器學習算法,但是我們會發現每個單獨的機器學習算法往往只能解決特定場景下的特定問題,如果問題會變得更為複雜,就難以使用一個學習器達到目標。這時候我們就需要集成多個學習器,協同完成機器學習任務。

所謂集成學習就是使用一系列學習器進行學習,並使用某種規則把各個學習結果進行整合,從而獲得比使用單個學習器更好的學習效果的一種機器學習方法。一般情況下,集成學習中的多個學習器都是同質的「弱學習器」。

集成學習的主要思路是先通過一定的規則生成多個學習器,再採用某種集成策略進行組合,然後綜合判斷輸出最終結果。

一般而言,通常所說的集成學習中的多個學習器都是同質的「弱學習器」。基於該「弱學習器」,通過樣本集擾動、輸入特徵擾動、輸出表示擾動、算法參數擾動等方式生成多個學習器,進行集成後獲得一個精度較好的「強學習器」。

最著名的集成算法就是Boosting類算法,包括AdaBoosting等常用算法。這類算法需要同時訓練多個模式,基本思路就是根據訓練時的正確率和錯誤率調整不同學習器的權重,最終預測時使用帶權重的投票法產生最終結果。

還有一類集成算法為Bagging類算法,主要思路是分別訓練幾個不同的模型,然後用模型平均的方法做出最終決策。

最著名的Bagging類算法就是隨機森林,該算法還融入了隨機子空間方法,是以決策樹為基礎分類器的一個集成學習模型,它包含多個由Bagging集成學習技術訓練得到的決策樹,當輸入待分類的樣本時,最終的分類結果由單個決策樹的輸出結果投票決定。

6. 強化算法

強化學習(reinforcement learning)和我們在前面提到的算法不太一樣,其主要用於訓練一個可以感知環境的自製感知器,通過學習選擇能達到其目標的最優動作。這個很具有普遍性的問題應用於學習控制移動機器人,在工廠中學習最優操作工序以及學習棋類對弈等。

當某個智能體在其環境中做出每個動作時,施教者會提供獎勵或懲罰信息,以表示結果狀態的正確與否。該智能體的任務就是從這個非直接的,有延遲的回報中學習,以便後續的動作產生最大的累積效應。


——引用自米歇爾(Mitchell T.M.)《機器學習》


最著名的增強學習算法就是Q-Learning算法。由於增強學習算法不在本文討論範疇,並由於其本身的複雜性,我們在這裡只做簡單的介紹但不做深入討論。

02 如何掌握機器學習

1. 學習曲線

首先,我們必須清楚機器學習是計算機科學中的一個領域,所以要能夠掌握機器學習,真正通過計算機把機器學習應用起來是需要以計算機科學為基礎的。比如要了解基礎的程序設計語言,至少是Python或者MATLAB,要知道基本的數據結構,要知道基本的數據處理技術,要知道基本的數據存儲查詢技術等。

其次,機器學習算法一般都有比較嚴密完善的數學原理,如果不能從數學的角度去理解機器學習,我們是無法理解其中一些本質核心的東西的,那就永遠只能從使用模型的角度對這個領域淺嘗輒止了。

另外機器學習也是一個依靠經驗的領域,許多參數和方法都需要依靠日常的經驗積累出來,從而形成一種解決問題的思維和感覺,這樣在利用機器學習技術解決現有問題時會更快、更有效,往往能找到合適的解決方案。

所以機器學習是有學習曲線的,也許更像一個無限循環的S形學習曲線,一開始學習基本的機器學習算法,做簡單的實驗非常容易入手。根據經驗,進一步學習更多的機器學習算法後可能會逐漸迷失在各種機器學習模型之中,學習難度陡然上升。

當你將大多數經典模型融會貫通之後,你又會覺得各種類型的機器學習算法變化無非幾類,於是學習難度曲線又會變得平滑。但當你開始解決實際問題時,就又會陷入陡峭的學習曲線中,在攀爬式的學習中不斷積累經驗。

總而言之,機器學習是一個需要不斷進行理論和經驗積累的技術,每過一個階段都會遇到相應的瓶頸。這不是一成不變的,而是一個需要不斷學習實踐的技術。只有在不斷遇到問題並解決問題後才能不斷前行。

2. 技術棧

我們把深度學習的技術棧分為3個類別。第1類是基礎數學工具,第2類是機器學習基礎理論方法,第3類是機器學習的實踐工具與框架。我們在這裡對這幾類內容做一個概述,如果讀者在學習過程當中發現有不甚了解的基礎概念或知識時,可以翻看本文尋找你需要的工具和技術並進行了解,循環往復、溫故而知新。

基礎數學工具包括高等數學、線性代數、機率論與數理統計、離散數學、矩陣理論、隨機過程、最優化方法和複變函數等。沒錯,基礎數學工具在機器學習領域乃至其工程領域必不可少,望讀者能夠對這些知識有一個較為全面的掌握。

機器學習基礎理論方法包括決策樹、支持向量機、貝葉斯、人工神經網絡、遺傳算法、機率圖模型、規則學習、分析學習、增強學習,等等。

機器學習的實踐工具與框架類目就比較繁雜了,包括基礎語言與工具、工程框架、數據存儲工具和數據處理工具。

  1. 基礎語言與工具有MATLAB及其工具包,Python與相應的庫(NumPy、SciPy、Matplotlib和Scikit-learn等)。
  2. 工程框架包括TensorFlow、MXNet、Torch和PyTorch、Keras等。
  3. 數據存儲包括Oracle、SQL Server、MySQL、PostgreSQL等傳統的關係型資料庫,LevelDB、LMDB、Redis等K/V型資料庫,MongoDB等文檔型資料庫,Neo4j等圖形資料庫,HBase、Cassandra等列資料庫,數不勝數。
  4. 數據處理工具則包括批處理、實時處理兩大類。批處理工具有Hadoop,以及基於Hadoop的Hive和Pig。
  5. 實時處理工具有Storm和Hurricane實時處理系統。至於非常有名的Spark應該屬於改良的批處理工具,也能用於實時處理場景。

編輯:於騰凱

—完—

關注清華-青島數據科學研究院官方微信公眾平台「 THU數據派 」及姊妹號「 數據派THU 」獲取更多講座福利及優質內容。

關鍵字: