1. 程式人生 > >機器學習實戰第一章----機器學習基礎小結

機器學習實戰第一章----機器學習基礎小結

     機器學習學習基礎一章先介紹了機器學習的概念,講解了機器學習可以幹什麼,遇到實際問題時應該怎麼選擇合適的機器學習演算法,簡單介紹了機器學習應用程式的步驟,介紹了機器學習實戰過程中當前使用最多的語言python和機器學習中常用的函式庫numpy。

  機器學習是當前IT界非常火的技術之一,屬於人工智慧的一部分,在加速世界生產和生活快速走向智慧化中扮演著重要的作用。機器學習、資料探勘、人工智慧、深度學習、自然語言處理之間都有一定的關聯性,在近幾年大資料和雲端計算興起之後,人類迎來了第三次人工智慧熱潮,也帶來了機器學習熱。機器學習是一個比較複雜的學科,其學科體系非常龐大,在機器學習實戰中,著重從實踐的角度講解機器學習演算法的原理和基於python的程式實踐過程,是入門機器學習和快速入門機器學習不可多得的教材。

  專家學者對機器學習的解釋不盡相同,通俗講,機器學習是使計算機具有模擬人類行為的能力,使經過某種訓練的之後計算機程式可以像人腦一樣執行人類的行為動作。為了更形象的解釋什麼是機器學習以及機器學習中的概念,在機器學習實戰書中,採用機器學習方式識別啄木鳥的案例解釋了什麼是機器學習和機器學習中最常見的概念。一隻鳥有體重、翼展、後背顏色、種屬等多個屬性,屬性也稱為特徵。在這些屬性中,按照監督學習(每一個訓練樣本都給定最終的結果,這樣的學習方式稱為監督學習)的方式訓練的時候,需要對每一個樣本的類別(結果或者目標變數)。要使機器具有人類的思維和執行能力,就需要對機器進行訓練,這也是機器學習的第一個過程,經過訓練之後會得到一個模型,這個過程通常叫做訓練,有時候也叫做建模,需要給定一個訓練集。建模之後的模型並不一定可以立即用於識別鳥的類別,因為建立的模型並不一定適合解決這個問題,或者說這個模型原本就是有問題的。這就需要測試模型的正確性,這個過程稱為測試,需要一個測試集。訓練集與測試集的不同之處在於,訓練集必須保證資料集的完整性,而測試集中不需要指定資料的類別。經過測試之後,如果建立的模型的精確度達到某個指標,我們認為這個模型是合理的,可以直接使用。

  機器學習主要有兩個任務,一是迴歸、一是分類。迴歸主要用於預測數值型資料,分類主要用於把例項資料劃分到合適的分類中。分類和迴歸都屬於監督學習,之所以稱為監督學習,是因為這類演算法必須先知道要預測什麼,即目標變數的分類資訊。與監督學習相對的是無監督學習,在無監督學習中,資料沒有類別資訊,也不會給定目標值。在無監督學習中,將資料集合分成由類似物件組成的多個類的過程稱為聚類;將尋找描述資料統計值的過程稱為密度估計。無監督學習可以減少資料特徵的維度,以便我們可以使用二維或者三維圖形,更加直觀的展示資料資訊。

  那麼該怎麼確定選擇哪個機器學習演算法?這是一個非常泛化的問題,首先需要明確使用機器學習演算法的目的是什麼,要解決的問題屬於哪一類,對應機器學習演算法分類的哪一類,這類機器學習演算法有哪些,這些機器學習演算法有哪些優點和缺點等。在綜合考慮了這些因素之後,一般就可以選擇一個相對比較正確的機器學習演算法了。而有時候還需要考慮資料本身的問題,如:特徵值是離散型還是連續型變數,資料中是否存在缺失值,資料中是否存在異常值,某個特徵發生的頻率如何。在機器學習中,一般不存在最好的演算法或者給出最好結果的演算法,只能在一定程度縮小演算法的選擇的範圍。對於選擇的每種機器學習演算法都可以使用其他機器學習技術改進其效能。在處理資料之後,兩個演算法的執行效果也可能發生變化。

  開發機器學習應用程式的一般步驟:

 (1)收集資料:可以使用多種方法收集資料。如:製作網路爬蟲從網路上抽取資料、從RSS反饋或者API中提取資訊、裝置發過來的實測資料;

 (2)準備輸入資料:得到資料之後必須保證資料格式符合要求,在機器學習實戰中採用的格式是python語言的List。使用這種標準資料格式可以融合演算法和資料來源,方便匹配操作。在機器學習演算法中,還需要注意特徵值的格式,在一些演算法中,要求特徵值和目標變數是字串型別,而另一些演算法可能要求是整形;

 (3)分析輸入資料:人工分析前兩步中得到的資料,檢視資料中是否有空值,是否有異常值等;

 (4)訓練演算法:開始機器學習的訓練過程;

 (5)測試演算法:測試演算法的工作效果,對於監督學習,必須已知用於評估演算法的目標變數值,對於無監督學習,也需要使用其他檢測手段評價演算法的成功率。如果演算法的正確率不能達到要求,需要返回重新訓練演算法;

 (6)使用演算法:把前面幾步訓練得到的結果應用於實際任務

 在機器學習第一章的最後講解了機器學習中常用的python語言和常用的庫(numpy、scipy、matplotpy等)。有關python常見操作和常用的庫的詳細知識,後面以專題的方式進行總結。

 本篇部落格的內容是學習機器學習實戰第一章之後的總結,可以理解為學習筆記。歡迎大家及時指出文中不當之處,同時也歡迎與我交流與學習。