什麼是機器學習?有哪些分類?怎樣上手開發?終於有人講明白了

導讀:本文首先介紹何謂機器學習,以及與機器學習相關的基本概念,這是學習和理解機器學習的基礎。按照學習方式的不同,機器學習可以分為不同類型,如監督學習、無監督學習、強化學習等,本文會詳細介紹它們各自的特點和使用場景。


其次,藉助本文對機器學習應用開發步驟的詳細說明,讀者能夠清晰地瞭解機器學習應用的開發流程。


最後,大家可以回顧一下我們此前的一篇文章《騰訊阿里都在用!機器學習最熱研究方向入門,附學習路線圖》,瞭解一下目前機器學習領域最熱門的研究方向之一——集成學習,以及XGBoost如何被提出並在業界廣泛應用。


什麼是機器學習?有哪些分類?怎樣上手開發?終於有人講明白了


01 何謂機器學習


近幾年,機器學習可謂是業界最熱門的領域之一,AlphaGo以4 : 1的比分擊敗李世石,人工智能和機器學習一夜火遍世界各地。機器學習離我們並不遙遠,甚至可以說已經滲透到我們生活的方方面面。例如:


  • 網上購物時,電商網站根據用戶偏好為用戶推薦商品;
  • Siri手機語音助手可查詢天氣、播放音樂;
  • 打車時,打車軟件幫我們預估行程時間、規劃行程路線;
  • 點外賣時,外賣App將訂單分配給附近空閒的騎手等。


這些無一不是通過機器學習技術來實現的。


機器學習領域知名學者Tom M.Mitchell曾給機器學習做如下定義:


如果計算機程序針對某類任務T的性能(用P來衡量)能通過經驗E來自我改善,則認為關於T和P,程序對E進行了學習。


通俗來講,機器學習是計算機針對某一任務,從經驗中學習,並且能越做越好的過程。一般情況下,“經驗”都是以數據的方式存在的,計算機程序從這些數據中學習。學習的關鍵是模型算法,它可以學習已有的經驗數據,用以預測未知數據。


在很多領域,僅僅靠人很難從諸多信息中將有效信息提取出來的。例如,我們想知道一個人是否會去購買某個電影的電影票。想要知道這個答案,最直接、有效的方法就是去問他本人,因為他本人的回答是與結果最接近的,也就是相關性最強的一個特徵。


假如我們並不認識這個人,或並沒有條件直接與他本人溝通,那麼還有另外一種思路—問他的朋友,他的朋友可能對他比較瞭解,知道他喜歡哪種類型的影片。但往往這個條件也不一定能達到,因為對於這樣的需求場景,更多的可能是影院想知道他的顧客會不會購買某個電影的電影票。


而影院所擁有的顧客信息通常是用戶的性別、年齡、以往觀影記錄、消費記錄等基本信息。對於普通人來說,通過這些原始數據預測該顧客未來的行為,很難給出一個比較準確的答案。此時便需要機器學習把無序的數據轉換成有用的信息,從而解決相關問題。


機器學習橫跨了多個學科,包括計算機科學、統計學等,而從事機器學習的人不僅需要紮實的計算機知識和數學知識,還需要對機器學習應用場景下的業務知識非常瞭解。因此,很多人覺得機器學習門檻很高,還沒有開始學習就望而卻步了。


其實機器學習的入門並沒有想象中那麼難,當然也不意味著機器學習的技術含量低。機器學習的特點是:入門門檻低,學習曲線陡。很多人入門之後容易陷入一種瓶頸狀態,很難有更高的突破,所以學習機器學習一定要有耐心和毅力。


什麼是機器學習?有哪些分類?怎樣上手開發?終於有人講明白了


學習機器學習所需的基礎知識有以下幾類:


  1. 數學:線性代數(矩陣變換)、高等數學;
  2. 概率分佈、迴歸分析等統計學基礎知識;
  3. Python、NumPy、Pandas等數據處理工具;
  4. Hadoop、Spark等分佈式計算平臺。


讀者不要被上面所羅列的知識嚇到,因為即使你不具備這些知識,也可以學習機器學習,在學習的過程中隨用隨查即可。當然,如果已經事先具備了這些知識,那你學習起來一定事半功倍。下面介紹機器學習相關的基本概念。


02 機器學習常用基本概念


假如我們有一批房屋特徵數據,其中包括臥室數量、房屋面積等信息,如表1-1所示。


什麼是機器學習?有哪些分類?怎樣上手開發?終於有人講明白了


其中,每一條記錄稱為

樣本,樣本的集合稱為一個數據集(data set)。類似臥室數量、房屋面積等列(不包括房價列)稱為特徵(feature)。房價是比較特殊的一列,它是我們需要預測的目標列。在已知的數據集中,目標列稱為標籤(label),它可以在模型學習過程中進行指導。


並非所有的數據集均包含標籤,是否包含標籤決定了採用何種類型的機器學習方法(後續會對不同類型的機器學習方法進行介紹)。數據集一般可以分為訓練集、驗證集和測試集,三者是相互獨立的。


  • 訓練集用於訓練和確定模型參數;
  • 驗證集用於模型選擇,幫助選出最好的模型;
  • 測試集用於評估模型,測試模型用於新樣本的能力(即泛化能力)。


如果機器學習任務的預測目標值是離散值,則稱此類任務為分類任務。比如比較常見的垃圾郵件分類系統,類別只有垃圾郵件、非垃圾郵件兩類,這是一個分類任務,並且是一個二分類任務(類別只有2種)。


若類別有多種,則稱這類任務為多分類任務。例如預測電影所屬類型,其包括動作片、愛情片、喜劇片等多個類別。如果預測值是連續值,則稱為迴歸任務,如表1-1中的預測房價。


另外,還可以對數據進行聚類,即找到數據的內在結構,發現其中隱藏的規律。例如我們以前看過的電影,即使沒有人告訴我們每部電影的類型,我們也可以自己歸納出哪些影片屬於喜劇片、哪些屬於動作片。


什麼是機器學習?有哪些分類?怎樣上手開發?終於有人講明白了


03 機器學習類型


按照學習方式的不同,可以將機器學習劃分為幾種類型:監督學習(supervised learning)、無監督學習

(unsupervised learing)、半監督學習(semi-supervised learning)、強化學習(rein-forcement learning)。


1. 監督學習


顧名思義,即有“監督”的學習,這裡的“監督”指的是輸入的數據樣本均包含一個明確的標籤或輸出結果(label),如前述購票預測系統中的“購票”與“未購票”,即監督學習知道需要預測的目標是什麼。


監督學習如同有一個監督員,監督員知道每個輸入值對應的輸出值是什麼,在模型學習的過程中,監督員會時刻進行正確的指導。


監督學習輸入的數據稱為訓練數據。訓練數據中的每個樣本都由一個輸入對象(特徵)和一個期望的輸出值(目標值)組成,

監督學習的主要任務是尋找輸入值與輸出值之間的規律,例如預測房屋價格系統,輸入值是房屋的面積、房間數量等,輸出值是房屋價格。


監督學習通過當前數據找出房屋面積、房間數量等輸入值與房屋價格之間的內在規律,從而根據新的房屋樣本的輸入值預測房屋價格。


2. 無監督學習


與監督學習相反,即無監督學習輸入的數據樣本不包含標籤,只能在輸入數據中找到其內在結構,發現數據中的隱藏模式。在實際應用中,並非所有的數據都是可標註的,有可能因為各種原因無法實現人工標註或標註成本太高,此時便可採用無監督學習。無監督學習最典型的例子是聚類。


3. 半監督學習


半監督學習是一種介於監督學習和無監督學習之間的學習方式。半監督學習是訓練數據中有少部分樣本是被標記的,其他大部分樣本並未被標記。半監督學習可以用來進行預測,模型需要先學習數據的內在結構,以便得到更好的預測效果。


4. 強化學習


強化學習是智能體(agent)採取不同的動作(action),通過與環境的交互不斷獲得獎勵指導,從而最終獲得最大的獎勵。


監督學習中數據標記的標籤用於檢驗模型的對錯,並不足以在交互的環境中學習。而在強化學習下,交互數據可以直接反饋到模型,模型可以根據需要立即做出調整。強化學習不同於無監督學習,因為無監督學習旨在學習未標記數據間的內在結構,而強化學習的目標是最大化獎勵。


什麼是機器學習?有哪些分類?怎樣上手開發?終於有人講明白了


04 機器學習應用開發步驟


開發機器學習應用時,讀者可以嘗試不同的模型算法,採用不同的方法對數據進行處理,

這個過程十分靈活,但也並非無章可循。本節會對機器學習應用開發中的經典步驟進行逐一介紹。


1. 定義問題


在開發機器學習應用之前,先要明確需要解決的是什麼問題。在實際應用中,很多時候我們得到的並非是一個明確的機器學習任務,而只是一個需要解決的問題。


首先要將實際問題轉化為機器學習問題,例如解決公司員工不斷收到垃圾郵件的問題,可以先對郵件進行分類,通過機器學習算法將垃圾郵件識別出來,然後對其進行過濾。由此,我們將一個過濾垃圾郵件的現實問題轉化為了機器學習的二分類問題(判斷是否是垃圾郵件)。


2. 數據採集


數據對於機器學習是至關重要的,數據採集是機器學習應用開發的基礎。數據採集有很多種方法,最簡單的就是人工收集數據,例如預測房屋價格,可以從和房屋相關的網站上獲取數據、提取特徵並進行標記(如果需要)。人工收集數據耗時較長且非常容易出錯,所以通常是其他方法都無法實現時才會採用。


除人工收集數據外,還可以通過網絡爬蟲從相關網站收集數據,從傳感器收集實測數據(如壓力傳感器的壓力數據),從某些API獲取數據(如交易所的交易數據),從App或Web端收集數據等。對於某些領域,也可直接採用業界的公開數據集,從而節省時間和精力。


3. 數據清洗


通過數據採集得到的原始數據可能並不規範,需對數據進行清洗才能滿足使用需求。例如,去掉數據集中的重複數據、噪聲數據,修正錯誤數據等,最後將數據轉換為需要的格式,以方便後續處理。


4. 特徵選擇與處理


特徵選擇是在原始特徵中選出對模型有用的特徵,去除數據集中與模型預測無太大關係的特徵。通過分析數據,可以人工選擇貢獻較大的特徵,也可以採用類似PCA等算法進行選擇。此外,還要對特徵進行相應處理,如對數值型特徵進行標準化,對類別型特徵進行one-hot編碼等。


5. 訓練模型


特徵數據準備完成後,即可根據具體任務選擇合適的模型並進行訓練。對於監督學習,一般會將數據集分為訓練集和測試集,通過訓練集訓練模型參數,然後通過測試集測試模型精度。而無監督學習則不需對算法進行訓練,而只需通過算法發現數據的內在結構,發現其中的隱藏模式即可。


6. 模型評估與調優


不管是監督學習還是無監督學習,模型訓練完畢後都需要對模型結果進行評估。監督學習可採用測試集數據對模型算法精度進行評估。無監督學習也需採用相應的評估方法檢驗模型的準確性。若模型不滿足要求,則需要對模型進行調整、訓練、再評估,直至模型達到標準。


7. 模型使用


調優之後得到的最優模型一般會以文件的形式保存起來,以待應用時可直接加載使用。機器學習應用加載模型文件,將新樣本的特徵數據輸入模型,由模型進行預測,得到最終預測結果。


關於作者:何龍,現就職於滴滴出行,XGBoost開源社區貢獻者,專注於人工智能和機器學習領域,從底層算法原理到上層應用實踐都有廣泛的興趣和研究。較早接觸XGBoost,熟悉XGBoost應用開發,深入閱讀源碼,具有豐富的項目開發經驗。


分享到:


相關文章: