一文看懂機器學習3種類型的概念、根本差別及應用
[導 讀]機器學習是使資料具有意義的演算法的應用和科學,也是電腦科學中最令人興奮的領域!在資料豐沛的時代,計算機可以通過自我學習獲得演算法把資料轉化為知識。近年來湧現出了許多強大的機器學習開源軟體庫,現在是進入該領域的最佳時機,掌握強大的演算法可以從資料中發現模式並預測未來。
本文將討論機器學習的主要概念、不同型別及相關術語,為利用機器學習技術成功地解決實際問題奠定基礎。
本文將主要涵蓋下述幾個方面:
-
機器學習的基本概念
-
三種類型的機器學習及基本術語
-
成功設計機器學習系統的基石
-
為資料分析和機器學習安裝和配置Python
一、構建把資料轉換為知識的智慧機器
在當今的科技時代,大量結構化和非結構化資料是我們的豐富資源。 機器學習在二十世紀下半葉演變為人工智慧(AI)的一個分支,它涉及從資料中通過自我學習獲得演算法以進行預測。
機器學習並不需要先在大量的資料中進行人工分析,然後提取規則並建立模型,而是提供了一種更有效的方法來捕獲資料中的知識,逐步提高預測模型的效能,以完成資料驅動的決策。
機器學習不僅在電腦科學研究中越來越重要,在日常生活中也發揮出越來越大的作用。歸功於機器學習,今天才會有強大的垃圾郵件過濾、方便的文字和語音識別、可靠的網路搜尋引擎、具有挑戰性的下棋程式,並有希望在不久的將來可以享受安全和高效的自動駕駛。
二、三種不同型別的機器學習
本文將討論有監督、無監督和強化三種不同型別的機器學習,分析它們之間的 根本差別 ,並用概念性的例子開發一個可以解決實際問題的 應用 :
1. 用有監督學習預測未來
有監督學習的主要目標是從有標籤的訓練資料中學習模型,以便對未知或未來的資料做出預測。“監督”一詞指的是已經知道樣本所需要的輸出訊號或標籤。
以垃圾郵件過濾為例,可以採用有監督的機器學習演算法,基於打過標籤的電子郵件語料庫來訓練模型,然後用模型來預測新郵件是否屬於垃圾郵件。帶有離散分類標籤的有監督學習也被稱為 分類 任務,例如上述的垃圾郵件過濾。有監督學習的另一個子類被稱為 迴歸 ,其結果訊號是連續的數值。
-
預測標籤的分類
分類是有監督學習的一個分支,其目的是根據過去的觀測結果來預測新樣本的分類標籤。這些分類標籤是離散的無序值,可以理解為樣本組成員的關係。前面提到的郵件垃圾檢測就是典型的二元分類任務,機器學習演算法學習規則以區分垃圾和非垃圾郵件。
但是, 資料集的分類並非都是二元的。 有監督學習演算法經過學習得到的預測模型可以將訓練集中出現過的標籤分配給尚未標記的新樣本。
多元分類任務的典型例子是識別手寫字元。首先,收集包含字母表中所有字母的多個手寫示例形成訓練集。然後,當用戶通過輸入裝置提供一個新的手寫字元時,預測模型能夠準確地將其識別為字母表中的正確字母。
然而,如果0~9之間的數字不是訓練集的一部分,那麼機器學習系統將無法正確地識別。
下圖將通過30個訓練樣本闡述二元分類任務的概念,其中15個標籤為陰性(-),另外15個標籤為陽性(+)。該資料集為二元,意味著每個樣本都與x1或x2的值相關。現在,可以通過機器學習演算法來形成一組規則,用一條斷線來代表決策邊界以區分兩類資料,並根據x1和x2的值為新資料分類。
-
預測連續結果的迴歸
上一節學習到分類任務是為樣本分配無序的分類標籤。第二類有監督學習是對連續結果的預測,也稱為迴歸分析。迴歸分析包括一些預測(解釋)變數和一個連續的響應變數(結果或目標),試圖尋找那些能夠預測結果的變數之間的關係。
以預測學生SAT數學成績為例。假設學習時間與考試成績相關,可以用該關係訓練資料學習建模,用將來打算參加該項考試學生的學習時間來預測其考試成績。
1886年,弗朗西斯·高爾頓在其論文《迴歸平均的遺傳身高》中首次提到迴歸一詞。高爾頓描述了一種生物學現象,即種群身高的變化不會隨時間的推移而增加。他觀察到父母的身高不會遺傳給自己的孩子,相反,孩子的身高會迴歸種群的均值。
下圖說明了 線性迴歸 的概念。給定預測變數x和響應變數y,對資料進行線性擬合,謀求樣本點和擬合線之間的平均距離最小(距離方差)。現在可以用從該資料中學習到的截距和斜率來預測新資料的結果變數:
2. 用強化學習解決互動問題
另一種機器學習是強化學習。 強化學習的目標是開發系統或代理,通過它們與環境的互動來提高其預測效能。當前環境狀態的資訊通常包含所謂的獎勵訊號,可以把強化學習看作是與有監督學習相關的領域。
然而強化學習的反饋並非標定過的正確標籤或數值,而是獎勵函式對行動的度量。代理可以與環境互動完成強化學習,通過探索性的試錯或深思熟慮的規劃來最大化這種獎勵。
強化學習的常見例子是 國際象棋。 代理根據棋盤的狀態或環境來決定一系列的行動,獎勵為比賽結果的輸贏:
強化學習有許多不同的子類。然而,大邏輯是強化學習代理試圖通過一系列與環境的互動來最大化獎勵。每種狀態都可以與正面或負面的獎勵相關聯,獎勵可以定義為完成一個總目標,如贏棋或輸棋。例如,國際象棋每步的結果都可以認為是一種不同的環境狀態。
為進一步探索國際象棋的案例,觀察一下棋盤上與正面事件相關聯的某些位置,比如吃掉對手或威脅皇后的棋子。棋盤上的其他位置與負面事件相關聯,例如在接下來的回合中輸給對手一個棋子。
實際上並不是每個回合都會有棋子被吃掉,強化學習涉及根據即時或延遲反饋來最大化獎勵,從而學習一系列的走法。
本文對強化學習做了基本概述,請注意強化學習應用已超出了本文的範圍,我們主要關注分類、迴歸分析和聚類。
3. 用無監督學習發現隱藏結構
在有監督學習中訓練模型時,事先知道正確的答案;在強化學習過程中,定義了代理對特定動作的獎勵。然而,無監督學習處理的是無標籤或結構未知的資料。使用無監督學習技術,可以在沒有已知結果變數或獎勵函式的指導下,探索資料結構以提取有意義的資訊。
3.1 尋找聚類的子集
聚類 是探索性的資料分析技術,可以在事先不瞭解組員的情況下,將資訊分成有意義的組群。為在分析過程中出現的每個群定義一組物件,它們之間都具有一定程度的相似性,但與其他群中物件的差異性更大,這就是為什麼聚類有時也被稱為無監督分類。
聚類是構造資訊和從資料中匯出有意義關係的一種有用的技術。例如,它允許營銷人員根據自己的興趣發現客戶群,以便制訂不同的市場營銷計劃。
下圖解釋瞭如何應用聚類把無標籤資料根據x1和x2的相似性分成三組:
3.2 通過降維壓縮資料
無監督學習的另一個子類是 降維。 高維資料的每個觀察通常都伴隨著大量測量資料,這對有限的儲存空間和機器學習演算法的計算效能提出了挑戰。無監督降維是特徵預處理中資料去噪的一種常用方法,它也降低了某些演算法對預測效能的要求,並在保留大部分相關資訊的同時將資料壓縮到較小維數的子空間上。
降維有時有利於資料的視覺化。例如,為了通過二維或三維散點圖或直方圖實現資料的視覺化,可以把高維特徵資料集投影到一、二或三維特徵空間。下圖展示了一個採用非線性降維將三維瑞士捲壓縮成新的二維特徵子空間的例項:
三、構建機器學習系統的路線圖
前文討論了機器學習的基本概念及其三種不同型別。本文將討論伴隨演算法的機器學習系統的其他重要部分。下圖展示了在預測建模中使用機器學習的典型工作流程,將在以下的幾個小節中詳細討論:
1. 預處理——整理資料
讓我們從討論構建機器學習系統的路線圖開始。原始資料很少以能滿足學習演算法最佳效能所需要的理想形式出現。因此, 資料的預處理是任何機器學習應用中最關鍵的步驟之一。
以鳶尾花資料集為例,可以把原始資料看成是一系列的花朵影象,要從中提取有意義的特徵。有意義的特徵可能是顏色、色調、強度、高度、長度和寬度。
▲描述鳶尾屬植物資料集的摘要,這是機器學習領域的典型案例,該資料集包含了對Setosa, Versicolor and Virginica三種不同鳶尾屬植物 150多朵鳶尾花的測量結果,資料集中每行代表一朵花的樣本資料,每種花的資料以釐米為單位按列儲存,被稱之為特徵資料集
許多機器學習演算法也要求所選擇特徵的測量結果具有相同的單位,以獲得最佳效能,通常通過把特徵資料變換為[0, 1]的取值範圍或者均值和單位方差為0的標準正態分佈來實現。
某些選定的特徵可能是高度相關的,因此在某種程度上是多餘的。在這種情況下, 降維技術對於將特徵壓縮到低維子空間非常有價值。 降低特徵空間維數的優點是減少儲存空間,提高演算法執行的速度。在某些情況下,如果資料集包含大量不相關的特徵或噪聲,即資料集具有較低的信噪比,那麼降維也可以提高模型預測的效能。
為了確定機器學習演算法不僅能在訓練集上表現良好,對新資料也有很好的適應性,我們希望將資料集隨機分成單獨的訓練集和測試集。用訓練集來訓練和優化機器學習模型,同時把測試集保留到最後用以評估最終的模型。
2. 訓練和選擇預測模型
從戴維·沃爾珀特著名的“天下沒有免費的午餐定理”,可以得出的重要結論是學習不是“免費”的(戴維·沃爾珀特1996年的論文《在學習演算法之間沒有先驗差別》以及戴維·沃爾珀特和W. G.麥克裡迪1997年的論文《演算法優化沒有免費的午餐定理》)。
直觀地說,可以把這個概念與亞伯拉罕·馬斯洛的說法聯絡起來:“我想這是一種誘惑,如果你擁有的唯一工具就是一把錘子,那會把所有的東西都當作釘子來對待。”
例如, 每個分類演算法都有其固有的偏差,如果不對任務做任何假設,沒有哪個分類模型更優越。 在實踐中,至少要比較幾種不同的演算法,以便訓練和選擇效能最好的模型。
但在比較不同模型之前,首先必須確定性能度量的指標。一個常用的度量標準是分類準確度,其定義為正確分類樣本佔所有分類樣本的百分比。
有人可能會問:如果不用測試集進行模型選擇,而將其留做最終的模型評估,那麼如何知道哪個模型在最終測試集和真實資料上表現良好?
為了解決巢狀在這個問題中的問題,可以採用不同的交叉檢驗技術,將訓練集進一步分裂為訓練集和驗證集,以評估模型的泛化效能。最後,也不能期望軟體庫所提供的不同學習演算法的引數預設值對特定問題是最優的。
直觀地說,可以把那些超引數看作是從資料中學習不到的,更像模型的旋鈕那樣,可以來回旋轉以改善模型的效能。
3. 評估模型和預測新樣本資料
在選擇了適合訓練集的模型之後,可以用測試集來評估它在新資料上的效能,以評估泛化誤差。 如果對模型的效能感到滿意,那麼就可以用它來預測未來的新資料。
需要注意的是前面提到的諸如特徵尺度和降維這樣的效能測量引數,僅是從訓練集獲得的,而相同的引數會被進一步轉換成測試集,以及任何新的資料樣本。否則,對測試資料的效能評估可能會過於樂觀。
四、用Python進行機器學習
Python是資料科學中最常用的程式語言,其優秀的開發人員和開源社群為其提供了大量有價值的附加軟體。
像Python這樣的解釋型語言,儘管對計算密集型任務而言,其效能不如低階的程式語言,但是已經在Fortran和C基礎上研發出像NumPy和SciPy這樣的擴充套件軟體庫,可以實現快速向量化的多維陣列操作。
機器學習程式設計主要用scikit-learn,這是目前最為常用和可訪問的開源機器學習庫。
1. 從Python包索引安裝Python和其他包
Python可用於微軟Windows、蘋果MacOS和開源Linux所有三大作業系統,可以從Python官網下載安裝程式及文件:
https://www.python.org
建議使用最新的Python 3,儘管大部分的程式碼示例也可以與Python 2.7.13或更新版相容。如果決定使用Python 2.7來執行這些程式碼示例,那麼請確保瞭解這兩個版本之間的主要差異。從下述網站可以找到專門比較Python 3.5和Python 2.7之間差異的優秀總結文章。
https://wiki.python.org/moin/python2orpython3
附加軟體包可以通過pip程式安裝,該程式從Python 3.3起就一直是標準庫的一部分。可以在這裡發現更多關於pip的資訊。
https://docs.python.org/3/installing/index.html
在成功地安裝Python後,可以在終端上執行pip命令來安裝Python的附加包:
pip install SomePackage
對已經安裝的包可以通過- - upgrade選項完成升級:
pip install SomePackage --upgrade
2. 採用Anaconda Python和軟體包管理器
高度推薦由Continuum Analytics發行的Anaconda作為Python的科學計算軟體包。免費的Anaconda既可用於商業,也可供企業使用。該軟體包括資料科學、數學、工程在內的所有基本包,並把它們捆綁在使用者友好的跨平臺版本中。
下載Anaconda的安裝程式:
http://continuum.io/downloads
下載Anaconda的快速啟動指南:
https://conda.io/docs/test-drive.html
在成功地安裝了Anaconda之後,可以執行下述命令安裝Python包:
conda install SomePackage
已經安裝過的包可以通過執行下述命令升級:
conda update SomePackage
關於作者:塞巴斯蒂安·拉施卡(Sebastian Raschka),密歇根州立大學博士,他在計算生物學領域提出了幾種新的計算方法,還被科技部落格Analytics Vidhya評為GitHub上最具影響力的資料科學家。
瓦希德·米爾賈利利(Vahid Mirjalili),密歇根州立大學計算機視覺與機器學習研究員,致力於把機器學習應用到各種計算機視覺研究專案。他在學術和研究生涯中積累了豐富的Python程式設計經驗,其主要研究興趣為深度學習和計算機視覺應用。
本文摘編自《Python機器學習(原書第2版)》,經出版方授權釋出。