入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

文章發佈於公號【數智物語】 (ID:decision_engine),關注公號不錯過每一篇乾貨。

作者 | 塞巴斯蒂安·拉施卡、瓦希德·米爾賈利利

來源 | 出自《Python機器學習(原書第2版)》

轉自 | 大數據(ID:hzdashuju)

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

導讀:機器學習是使數據具有意義的算法的應用和科學,也是計算機科學中最令人興奮的領域!在數據豐沛的時代,計算機可以通過自我學習獲得算法把數據轉化為知識。近年來湧現出了許多強大的機器學習開源軟件庫,現在是進入該領域的最佳時機,掌握強大的算法可以從數據中發現模式並預測未來。

本文將討論機器學習的主要概念、不同類型及相關術語,為利用機器學習技術成功地解決實際問題奠定基礎。

本文將主要涵蓋下述幾個方面:

1. 機器學習的基本概念

2. 三種類型的機器學習及基本術語

3. 成功設計機器學習系統的基石

4. 為數據分析和機器學習安裝和配置Python

01

構建把數據轉換為知識的智能機器

在當今的科技時代,大量結構化和非結構化數據是我們的豐富資源。機器學習在二十世紀下半葉演變為人工智能(AI)的一個分支,它涉及從數據中通過自我學習獲得算法以進行預測。

機器學習並不需要先在大量的數據中進行人工分析,然後提取規則並建立模型,而是提供了一種更有效的方法來捕獲數據中的知識,逐步提高預測模型的性能,以完成數據驅動的決策。

機器學習不僅在計算機科學研究中越來越重要,在日常生活中也發揮出越來越大的作用。歸功於機器學習,今天才會有強大的垃圾郵件過濾、方便的文本和語音識別、可靠的網絡搜索引擎、具有挑戰性的下棋程序,並有希望在不久的將來可以享受安全和高效的自動駕駛。

02

三種不同類型的機器學習

本文將討論有監督、無監督和強化三種不同類型的機器學習,分析它們之間的根本差別,並用概念性的例子開發一個可以解決實際問題的應用:


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


01

用有監督學習預測未來

有監督學習的主要目標是從有標籤的訓練數據中學習模型,以便對未知或未來的數據做出預測。“監督”一詞指的是已經知道樣本所需要的輸出信號或標籤。


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


以垃圾郵件過濾為例,可以採用有監督的機器學習算法,基於打過標籤的電子郵件語料庫來訓練模型,然後用模型來預測新郵件是否屬於垃圾郵件。帶有離散分類標籤的有監督學習也被稱為分類任務,例如上述的垃圾郵件過濾。有監督學習的另一個子類被稱為迴歸,其結果信號是連續的數值。

預測標籤的分類

分類是有監督學習的一個分支,其目的是根據過去的觀測結果來預測新樣本的分類標籤。這些分類標籤是離散的無序值,可以理解為樣本組成員的關係。前面提到的郵件垃圾檢測就是典型的二元分類任務,機器學習算法學習規則以區分垃圾和非垃圾郵件。

但是,數據集的分類並非都是二元的。有監督學習算法經過學習得到的預測模型可以將訓練集中出現過的標籤分配給尚未標記的新樣本。

多元分類任務的典型例子是識別手寫字符。首先,收集包含字母表中所有字母的多個手寫示例形成訓練集。然後,當用戶通過輸入設備提供一個新的手寫字符時,預測模型能夠準確地將其識別為字母表中的正確字母。

然而,如果0~9之間的數字不是訓練集的一部分,那麼機器學習系統將無法正確地識別。

下圖將通過30個訓練樣本闡述二元分類任務的概念,其中15個標籤為陰性(-),另外15個標籤為陽性(+)。該數據集為二元,意味著每個樣本都與x1或x2的值相關。現在,可以通過機器學習算法來形成一組規則,用一條斷線來代表決策邊界以區分兩類數據,並根據x1和x2的值為新數據分類。


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


預測連續結果的迴歸

上一節學習到分類任務是為樣本分配無序的分類標籤。第二類有監督學習是對連續結果的預測,也稱為迴歸分析。迴歸分析包括一些預測(解釋)變量和一個連續的響應變量(結果或目標),試圖尋找那些能夠預測結果的變量之間的關係。

以預測學生SAT數學成績為例。假設學習時間與考試成績相關,可以用該關係訓練數據學習建模,用將來打算參加該項考試學生的學習時間來預測其考試成績。

1886年,弗朗西斯·高爾頓在其論文《迴歸平均的遺傳身高》中首次提到迴歸一詞。高爾頓描述了一種生物學現象,即種群身高的變化不會隨時間的推移而增加。他觀察到父母的身高不會遺傳給自己的孩子,相反,孩子的身高會迴歸種群的均值。

下圖說明了線性迴歸的概念。給定預測變量x和響應變量y,對數據進行線性擬合,謀求樣本點和擬合線之間的平均距離最小(距離方差)。現在可以用從該數據中學習到的截距和斜率來預測新數據的結果變量:


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


02

用強化學習解決交互問題

另一種機器學習是強化學習。強化學習的目標是開發系統或代理,通過它們與環境的交互來提高其預測性能。

當前環境狀態的信息通常包含所謂的獎勵信號,可以把強化學習看作是與有監督學習相關的領域。

然而強化學習的反饋並非標定過的正確標籤或數值,而是獎勵函數對行動的度量。代理可以與環境交互完成強化學習,通過探索性的試錯或深思熟慮的規劃來最大化這種獎勵。

強化學習的常見例子是國際象棋。代理根據棋盤的狀態或環境來決定一系列的行動,獎勵為比賽結果的輸贏:


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


強化學習有許多不同的子類。然而,大邏輯是強化學習代理試圖通過一系列與環境的交互來最大化獎勵。每種狀態都可以與正面或負面的獎勵相關聯,獎勵可以定義為完成一個總目標,如贏棋或輸棋。例如,國際象棋每步的結果都可以認為是一種不同的環境狀態。

為進一步探索國際象棋的案例,觀察一下棋盤上與正面事件相關聯的某些位置,比如吃掉對手或威脅皇后的棋子。棋盤上的其他位置與負面事件相關聯,例如在接下來的回合中輸給對手一個棋子。

實際上並不是每個回合都會有棋子被吃掉,強化學習涉及根據即時或延遲反饋來最大化獎勵,從而學習一系列的走法。

本文對強化學習做了基本概述,請注意強化學習應用已超出了本文的範圍,我們主要關注分類、迴歸分析和聚類。

03

用無監督學習發現隱藏結構

在有監督學習中訓練模型時,事先知道正確的答案;在強化學習過程中,定義了代理對特定動作的獎勵。然而,無監督學習處理的是無標籤或結構未知的數據。使用無監督學習技術,可以在沒有已知結果變量或獎勵函數的指導下,探索數據結構以提取有意義的信息。

3.1 尋找聚類的子集

聚類是探索性的數據分析技術,可以在事先不瞭解組員的情況下,將信息分成有意義的組群。為在分析過程中出現的每個群定義一組對象,它們之間都具有一定程度的相似性,但與其他群中對象的差異性更大,這就是為什麼聚類有時也被稱為無監督分類。

聚類是構造信息和從數據中導出有意義關係的一種有用的技術。例如,它允許營銷人員根據自己的興趣發現客戶群,以便制訂不同的市場營銷計劃。

下圖解釋瞭如何應用聚類把無標籤數據根據x1和x2的相似性分成三組:


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


3.2 通過降維壓縮數據

無監督學習的另一個子類是降維。高維數據的每個觀察通常都伴隨著大量測量數據,這對有限的存儲空間和機器學習算法的計算性能提出了挑戰。

無監督降維是特徵預處理中數據去噪的一種常用方法,它也降低了某些算法對預測性能的要求,並在保留大部分相關信息的同時將數據壓縮到較小維數的子空間上。

降維有時有利於數據的可視化。例如,為了通過二維或三維散點圖或直方圖實現數據的可視化,可以把高維特徵數據集投影到一、二或三維特徵空間。下圖展示了一個採用非線性降維將三維瑞士捲壓縮成新的二維特徵子空間的實例:


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


03

構建機器學習系統的路線圖

前文討論了機器學習的基本概念及其三種不同類型。本文將討論伴隨算法的機器學習系統的其他重要部分。下圖展示了在預測建模中使用機器學習的典型工作流程,將在以下的幾個小節中詳細討論:


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


01

預處理——整理數據

讓我們從討論構建機器學習系統的路線圖開始。原始數據很少以能滿足學習算法最佳性能所需要的理想形式出現。因此,數據的預處理是任何機器學習應用中最關鍵的步驟之一。

以鳶尾花數據集為例,可以把原始數據看成是一系列的花朵圖像,要從中提取有意義的特徵。有意義的特徵可能是顏色、色調、強度、高度、長度和寬度。


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


▲描述鳶尾屬植物數據集的摘要,這是機器學習領域的典型案例,該數據集包含了對Setosa, Versicolor and Virginica三種不同鳶尾屬植物 150多朵鳶尾花的測量結果,數據集中每行代表一朵花的樣本數據,每種花的數據以釐米為單位按列存儲,被稱之為特徵數據集

許多機器學習算法也要求所選擇特徵的測量結果具有相同的單位,以獲得最佳性能,通常通過把特徵數據變換為[0, 1]的取值範圍或者均值和單位方差為0的標準正態分佈來實現。

某些選定的特徵可能是高度相關的,因此在某種程度上是多餘的。在這種情況下,降維技術對於將特徵壓縮到低維子空間非常有價值。降低特徵空間維數的優點是減少存儲空間,提高算法運行的速度。在某些情況下,如果數據集包含大量不相關的特徵或噪聲,即數據集具有較低的信噪比,那麼降維也可以提高模型預測的性能。

為了確定機器學習算法不僅能在訓練集上表現良好,對新數據也有很好的適應性,我們希望將數據集隨機分成單獨的訓練集和測試集。用訓練集來訓練和優化機器學習模型,同時把測試集保留到最後用以評估最終的模型。

02

訓練和選擇預測模型

從戴維·沃爾珀特著名的“天下沒有免費的午餐定理”,可以得出的重要結論是學習不是“免費”的(戴維·沃爾珀特1996年的論文《在學習算法之間沒有先驗差別》以及戴維·沃爾珀特和W. G.麥克裡迪1997年的論文《算法優化沒有免費的午餐定理》)。

直觀地說,可以把這個概念與亞伯拉罕·馬斯洛的說法聯繫起來:“我想這是一種誘惑,如果你擁有的唯一工具就是一把錘子,那會把所有的東西都當作釘子來對待。”

例如,每個分類算法都有其固有的偏差,如果不對任務做任何假設,沒有哪個分類模型更優越。在實踐中,至少要比較幾種不同的算法,以便訓練和選擇性能最好的模型。

但在比較不同模型之前,首先必須確定性能度量的指標。一個常用的度量標準是分類準確度,其定義為正確分類樣本佔所有分類樣本的百分比。

有人可能會問:如果不用測試集進行模型選擇,而將其留做最終的模型評估,那麼如何知道哪個模型在最終測試集和真實數據上表現良好?

為了解決嵌套在這個問題中的問題,可以採用不同的交叉檢驗技術,將訓練集進一步分裂為訓練集和驗證集,以評估模型的泛化性能。最後,也不能期望軟件庫所提供的不同學習算法的參數默認值對特定問題是最優的。

直觀地說,可以把那些超參數看作是從數據中學習不到的,更像模型的旋鈕那樣,可以來回旋轉以改善模型的性能。

03

評估模型和預測新樣本數據

在選擇了適合訓練集的模型之後,可以用測試集來評估它在新數據上的性能,以評估泛化誤差。如果對模型的性能感到滿意,那麼就可以用它來預測未來的新數據。

需要注意的是前面提到的諸如特徵尺度和降維這樣的性能測量參數,僅是從訓練集獲得的,而相同的參數會被進一步轉換成測試集,以及任何新的數據樣本。否則,對測試數據的性能評估可能會過於樂觀。


入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


04

用Python進行機器學習

Python是數據科學中最常用的編程語言,其優秀的開發人員和開源社區為其提供了大量有價值的附加軟件。

像Python這樣的解釋型語言,儘管對計算密集型任務而言,其性能不如低級的編程語言,但是已經在Fortran和C基礎上研發出像NumPy和SciPy這樣的擴展軟件庫,可以實現快速矢量化的多維陣列操作。

機器學習編程主要用scikit-learn,這是目前最為常用和可訪問的開源機器學習庫。

01

從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

02

採用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編程經驗,其主要研究興趣為深度學習和計算機視覺應用。

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見

入門科普:一文看懂機器學習3種類型的概念、根本差別及應用-洞見


分享到:


相關文章: