小白如何入門機器學習?

  • 2019 年 10 月 6 日
  • 筆記

機器學習作為人工智能領域的一個重要主題,已經被大家關注相當一段時間了。機器學習提供了有吸引力的機會,進入這一領域工作並不像想像中那麼困難。即使你在數學或編程方面沒有任何基礎,這也不是什麼問題。取得成功的最重要的因素是由足夠的興趣和動力去學習。

如果你是一個新手,可能不知道從哪開始學起,也不了解為什麼需要機器學習,以及為什麼機器學習越來越流行,這正是本文的目的!我手機了所有必須的信息和有用的資源來幫助你獲取新的知識並完成第一個項目。

為什麼從Python入手?

如果你的目標是成為一個成功的開發者,那你需要掌握很多技能。但是對於機器學習和數據科學,只要掌握一門編程語言然後自信地使用它就夠了。因此,你不需要是一個編程天才。

對於成功的機器學習歷程,有必要從一開始就選擇合適的編程語言,因為你的選擇將決定你的未來。在這一步,你一定要戰略性思考並且正確安排學習的優先, 以避免將時間花在不必要的事情上。

我的觀點是,Python是初學者的完美選擇,它可以讓你聚焦於機器學習和數據科學本身。Python是一個最小化的直觀的開發語言,有各種功能完善的開發庫/框, 可以顯着地縮短你完成一個任務所需要的時間。

順便說一下,你也可以考慮R語言,但是個人更傾向於Python。

STEP 0:機器學習流程概述

機器學習是基於經驗的學習。這就像一個人是通過觀察其他人下棋來學習如何下象棋一樣。通過給計算機提供訓練信息,就可以讓計算機獲得識別模式的能力。

首先,你需要了解機器學習流程中包含不同的節點:

  • 數據採集
  • 數據排序
  • 數據分析
  • 算法開發
  • 算法校驗
  • 算法利用

為了搜索模式會使用各種算法,這些算法可以分為兩組:

  • 無監督學習
  • 有監督學習

使用無監督學習算法時,你的機器只需要接收輸入數據集。因此機器來決定數據間的關係,這和有監督學習同時接收輸入數據集和驗證數據來進行學習有所不同,無監督學習意味着計算機自己將找出不同數據之間的關係和模式。無監督學習可以進一步分為聚類分析和關聯分析。

有監督學習表示計算機可以基於提供的樣本數據進行識別。例如,你可以訓練你的計算機基於之前收到的信息來過濾垃圾消息。

一些常見的有監督學習算法包括:

  • 決策樹
  • 支持向量機
  • 樸素貝葉斯分類器
  • K近鄰
  • 線性回歸

STEP 1:重溫使用Python數學庫需要的數學技能

在人工智能和機器學習領域工作的人不懂數學,就像一個政客不懂如何說服別人。

是的,不掌握基礎的數學知識,你無法應對機器學習和數據科學項目。但是,這並不是說你一定要有數學專業學位才可以成功。從我個人經歷而言,每天至少化30~45分鐘時間就可以很有幫助,你可以更快地理解並掌握Python中關於數學和統計的高級主題。

你需要閱讀或複習底層原理。不需要閱讀完整的教程,只要關注核心概念即可。

有3個步驟來學習數據分析和機器學習所需要的數學知識:

1 – 線性代數:標量、矢量、矩陣和張量

例如,對於主成分方法,你需要了解特徵向量,而使用回歸算法則要求你掌握矩陣乘法。另外,機器學習通常使用高維數據,這種數據最適合使用矩陣表示。

2 – 數學分析:微分和梯度

數學分析是許多機器學習算法的基礎。優化問題需要使用微分和梯度方面的知識。例如,最常用的優化算法之一就是梯度下降。

要快速學習線性代數和數學分析,我推薦這些教程:

  • 可汗學院:提供線性代數和數學分 析的簡短的實用課程,涵蓋大多數重要的主題。
  • MIT開放課件:提供機器學習相關數學的課程, 包含所有的視頻課件和學習資料。

3 – 梯度下降:從零創建一個簡單的神經網絡

在數據分析和機器學習靈越學習數學的最好的頒發就是從零創建一個簡單的神經網絡。你將使用線性代數來表示網絡,使用數學分析來優化網絡。尤其是你可以從零創建一個梯度下降的實現。不用太擔心神經網絡的差異,你只需要跟着教程編寫實現代碼即可。

下面是一些很好的串講教程:

用Python實現神經網絡 – 這是一個出色的教程,你可以從零創建一個簡單的神經網絡,其中包含了有用的圖示以及梯度下降工作原理的說明、。

下面是稍短一些的教程,也可以幫助你逐步掌握神經網絡:

STEP 2:學習Python語法基礎

好消息是,你不需要一整套Python教程,因為Python和數據分析並不是同義詞。

在開始學習語法之前,我希望分享一個有見地的建議,有助於你盡量避免失敗:

只是閱讀游泳技巧的書籍是不可能學會游泳的,但是在泳池中訓練的同時閱讀這些 書籍可以更高效地掌握有用技能。

在學習編程時也有類似的情況。不需要專註於語法,因為那樣你可能很快就喪失 興趣了。

你也不需要記住所有的東西。每次進步一點點,別擔心在實踐中綜合運用理論只是。專註於直覺地理解。例如,在某個用例中哪個函數是合適的,以及條件操作符的工作原理。你將通過閱讀文檔以及編寫代碼來逐漸地記住語法。很快你就不再需要利用搜索引擎來查找這些東西了。

如果你之前沒有任何的編程經驗,我推薦你閱讀《用Python自動化乏味的任務》。這本書為小白新手提供了實用的編程知識,而且從零教起。可以閱讀第6章,字符串操作,完成課後的實踐練習,這就夠了。

還有一些其他的有用資源:

記住,你越早開始真正的項目,你就可以越快地學會。無論怎樣,你總是可以在需要的時候溫習語法。

STEP 3:探索主流數據分析庫

接下來的階段就是學習Python中與數據科學相關的那部分開發庫或框架。正如之前指出的,Python有大量的開發庫。所謂庫就是一組預先開發好的函數和對象,你可以直接引入你的腳本來使用,這樣就節約了不少時間。

如何使用庫?下面是一些建議:

  • 打開Jupyter Notebook
  • 用大約半個小時過一遍庫的文檔
  • 在你的Jupyter Notebook中導入庫
  • 按照庫文檔中的指南逐步操作
  • 檢查結果和文檔是否一致

我並不推薦立刻深入學習庫的使用,因為當你開始在項目中使用時,有可能已經忘掉了學習的大部分內容。相反,先試着了解每個庫的功能就夠了。

需要學習的Python庫:

Numpy

Numpy是Numerical Python的縮寫,無論初學者還是專業人士,這個庫都是應用最廣泛的。使用Numpy你可以輕鬆操作多維數組和矩陣,Numpy同時也提供了像線性代數操作和數值轉換之類的函數。

文檔 | 快速上手教程

Pandas

Pandas是一個著名的高性能工具,它將數據表示為幀。使用Pandas你幾乎可以從 任何來源載入數據,提供各種計算函數,也可以像SQL那樣使用聚合函數進行查詢,而且pandas提供各種矩陣變換函數。總而言之,Pandas是一個數據專業人士的彈藥庫中不可缺少的武器。

文檔 | 快速上手教程

Matplotlib

Matplotlib是一個靈活的用於創建圖表和可視化的Python庫。它很強大但是有時有點太重量級了。這種情況下你可以跳過Matplotlib而使用Seaborn來切入。

文檔 | 快速上手教程

Scikit-Learn

我敢說這是迄今為止我看到的設計最棒的機器學習開發包。它實現了大量的機器學習算法,而且很容易應用到實際的項目里。你可以使用像回歸、聚類、模型選擇、預處理、分類等各種預置函數。因此,這個庫非常值得學習和使用,一些領先的平台例如Spotify、Booking.com等等都在使用scikit-learn。

STEP 4:開發結構化項目

一旦你掌握了基本的語法,也了解了一些庫的基本情況,就可以開始自己的項目了。有了項目實踐,你就可以學習新東西,同時也為今後的工作提供了基礎。

有很多資源提供結構化的項目主題:

Dataquest – 互動學習Python和數據科學。你需要分析一些列有趣的數據集,從CIA的文檔開始,到統計NBA的比賽數據。你將開發一個使用神經網絡和決策樹的策略算法。

Python數據分析 – 書的作者在Python數據分析方面發表了大量論文

Scikit文檔– 官方文檔

CS109 – 哈佛大學的數據科學課程

STEP 5:做你自己的項目

你能夠找到很多新東西,但是重要的是找到那些可以激發你靈感的項目。但是在找到你夢想工作之前,應當學會如何處理你應用中的錯誤。這方面的資源包括:

你也不應該忽略任何合作的機會。參加所有可能的與Python相關的活動以及一些 有趣的項目。