- 數據分析與挖掘算法:Python實戰
- 張曉東
- 2723字
- 2022-05-06 13:10:45
1.3 數據挖掘與機器學習的關系
在前文中明確了什么是數據挖掘。為了厘清數據挖掘與機器學習的關系,這里有必要對機器學習進行介紹。
那么,什么是機器學習呢?機器學習專門用于研究計算機如何模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構并不斷改善自身的性能。
通俗地講,機器學習就是計算機模仿人類的思維和學習過程,實現自主學習,并做出判斷與決策。機器學習要用有限的可觀測樣本訓練分類器(雖然幾乎所有文獻都叫作分類器,但筆者認為叫作“學習器”更為妥當),使分類器自己理解、學習、歸納樣本特征的分布規律,從而使其能夠對隨機輸入的未知數據做出判斷和決策。
機器學習與人腦思考的方式一樣:通過對歷史數據的訓練進行學習,從而形成自己的思維模式(特征規律等),再對輸入的數據進行分類識別與預測。機器學習與人腦思考的對比如圖1-3所示。

圖1-3
1.數據集
數據集包括訓練集、驗證集和測試集,這3個詞在機器學習中經常被提到,但初學者非常容易弄混。下面簡單介紹一下這3個詞。
訓練集(Training_Set)是機器學習的樣本數據集,用于訓練模型內參數的數據集。機器學習通過匹配一些參數來建立一種分類方式,也就是建立一個分類器。訓練集主要用來訓練模型。
驗證集(Validation_Set)是調整分類器參數的數據集,用于在訓練過程中檢驗模型的狀態和收斂情況。驗證集通常用于調整超參數[1],根據若干組模型在驗證集上的表現決定哪組超參數擁有最好的性能。同時驗證集在訓練過程中還可以用來監控模型是否發生過擬合,一般來說,驗證集表現穩定后,若繼續訓練,則訓練集的表現還會繼續上升,但是驗證集的表現會出現不升反降的情況,這樣一般就發生了過擬合。所以驗證集也被用來判斷何時停止訓練。
測試集(Test_Set)是評估模型泛化能力的數據集。即之前模型使用驗證集確定了超參數,使用訓練集調整了參數,最后使用一個從沒有見過的數據集來判斷這個模型是否同樣適用。
總結一下:訓練集用于訓練模型,驗證集用于調整和選擇模型,測試集用于評估最終的模型。當我們拿到數據之后,規范的方法是把數據分成這樣的3份:訓練集(60%)、驗證集(20%)、測試集(20%)。形象地說,訓練集就是學生在上課學習,驗證集就是課后的作業,測試集就是期末的考試,最終我們根據以上數據評選出優秀的學生(模型)。
2.機器學習的類別
自20世紀90年代以來,從樣本中學習被認為是最有前途的機器學習的途徑,根據訓練期間接受的監督數量和監督類型,可以將機器學習分為以下4類:無監督學習、監督學習、半監督學習和強化學習。
(1)無監督學習是一種自學習的學習方式,通過對沒有標記的訓練樣本進行學習。也就是說,無監督學習沒有將目標變量放入模型里,完全讓模型自己去挖掘數據中的內在聯系或挖掘未知數據間隱藏的結構關系。由于輸入分類器的樣本都是未經標注的,分類器在處理完這些數據后也就不會得到相應的反饋信息來評價學習結果。常用的無監督學習算法有關聯規則和聚類分析。
(2)監督學習是一種借助人工參與的學習方式,用一定數量的有標記數據作為訓練樣本(通俗地講,就是標記出分類的目標變量,以及影響目標變量變化的自變量)。監督學習通過對有標記的訓練樣本進行學習,盡可能正確地對訓練樣本之外的樣本進行預測。在監督學習中,每個輸入樣本都包括樣本的特征向量和樣本標記。在訓練過程中,訓練算法通過分析樣本的特征向量,將預測結果與訓練樣本的實際標記情況進行比較,然后不斷調整模型,直到模型的準確率達到預期的準確率。監督學習常用于樣本分類問題和回歸問題,一般分為3步,分別是標記樣本、訓練模型和估計概率。常用的監督學習算法有邏輯回歸、決策樹和反向傳遞神經網絡。
(3)半監督學習是一種根據已知的有限有標記數據和大量無標記數據,在分類過程中不斷訓練模型的學習方式。該模型也可被用來預測,但是在建立模型前首先要用已知的有標記數據訓練模型,使模型學習數據的內在結構聯系,以便合理地組織數據進行預測。半監督學習可以使分類的準確性得到很大的提高,并且這種模型更類似人的學習過程,能夠像人一樣觸類旁通。在實際的使用過程中,有標記數據較難獲得,因為標記一般要人去操作,而在實際中由人去標記海量的數據并不現實,人只能標記極少的數據,其他都要計算機通過算法實現標記。并且利用計算機標記數據再去訓練模型,使模型不斷學習和更新,這種方式具有較高的實用價值。常用的半監督學習算法有支持向量機。
(4)強化學習是一種通過與環境的試探性交互來估計和優化實際動作,最終實現序列決策的任務。在這種學習方式下,輸入數據作為對模型的反饋,不像在監督學習中,輸入數據僅僅作為一個檢查模型對錯的方式。在強化學習中,輸入數據直接反饋到模型,模型對此立刻做出相應的調整。在這種學習方式中,學習機制根據試探性交互選擇并執行動作,使系統狀態發生變化,并根據系統狀態變化獲得某種強化信號,最終實現與環境的交互。如在機器人控制過程中,系統根據機器人在運動過程中的不同狀態反饋隨時糾正機器人的姿態,從而使其直立行走。常用的強化學習算法有時間差學習等。
下面舉一個形象的例子——教小明畫畫來理解這4種機器學習方式。無監督學習是直接跟小明說,畫一輛汽車吧,這時小明完全靠自己的理解畫一輛汽車;半監督學習是告訴小明,這輛汽車有方向盤、輪胎、車燈等,此時你的描述不是很完善,比如沒有描述方向盤的位置、輪胎是圓形的等,小明根據你的描述和自己的聯想,畫出了一輛汽車;有監督學習是把所有要畫的東西(如汽車的形狀、位置、顏色)都詳細地告訴小明,小明完全依靠你的描述,畫出了汽車;強化學習是當小明畫完汽車后,你領著他去看實際的汽車是什么樣子的,小明見到實物后,再在畫上進行改動,形成最終的汽車。
3.數據挖掘與機器學習
數據挖掘是建立在龐大的知識體系之上的,從業務角度出發,使用一系列處理方法挖掘隱藏在數據背后的信息,在解決問題的同時使用了大量的機器學習算法。機器學習則是一門以統計學為支撐的偏理論的學科,它關注的是使計算機程序能夠像人一樣,根據經驗的積累,自動提高處理問題的性能。
論述到此,這里有必要對模型與算法的關系做一下闡述。模型反映了特定問題或特定事物系統內的數學關系結構,也可以將其理解為一個系統中各變量間的關系的數學表達。算法是一個定義明確的計算過程,可以用一些值或一組值作為輸入,并產生一些值或一組值作為輸出。因此,算法就是將輸入轉換為輸出的一系列計算步驟(通常用程序實現)。也就是說,模型是根據業務的訴求和目的,將具體的業務場景或業務邏輯映射為數學領域的關系表達。可以說,模型是具體的應用,而算法是解決問題(應用)的內在技術,即模型是算法(技術)與業務(商業經驗)的結合。因此,在不涉及業務的時候,模型與算法的說法無異。
- JavaScript百煉成仙
- PHP程序設計(慕課版)
- Mastering Entity Framework
- Visual C++數字圖像模式識別技術詳解
- 跟小海龜學Python
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- Web程序設計(第二版)
- 深入淺出Serverless:技術原理與應用實踐
- Python忍者秘籍
- 軟件品質之完美管理:實戰經典
- Simulation for Data Science with R
- Mastering jQuery Mobile
- Julia數據科學應用
- C語言程序設計
- Building Web and Mobile ArcGIS Server Applications with JavaScript(Second Edition)