當前位置:
首頁 > 最新 > 機器學習:從入門到絕不放棄!

機器學習:從入門到絕不放棄!

前段時間,人工智慧又戰略級霸屏,從兩會工作報告到南京大學成立國內首個「人工智慧學院」,已經沒有什麼可以阻擋人工智慧的飛速發展了。機器學習作為人工智慧一個不可缺少的研究課題,其重要性也是不言而喻。

不管你之前有沒有關注過,機器學習也早已覆蓋了你的生活。從自動推薦看什麼電影、點什麼食物、買什麼商品,到個性化的在線電台和從照片中識別好友等等,這些服務的核心都是機器學習演算法。

之前已經有很多人加入了機器學習的行列,在知乎上僅機器學習這個話題就有850,279的人關注。前幾天谷歌發布機器學習速成課,各種霸屏,相信會引發新的「機器學習熱」。小圖貼心地給出了《谷歌機器學習速成課預備書單》,在微博和微信收到了小夥伴們的好評。

可能你也曾想奮不顧身一躍入坑,怎奈老是覺得機器學習知識體系過於龐雜,或者擔憂自己的數學成為短板,還沒開始,就已放棄......

今天這篇文章分享給那些入坑受阻,或者還沒來得及入坑但一直處於備戰狀態,還差臨門一腳的讀者;以及因為恐懼數學想入坑卻猶豫不決的讀者。

一、什麼是機器學習?

1. 機器學習是人工智慧的一個分支

機器學習是實現人工智慧的一種途徑,它從數據中提取知識,在近30多年已發展為一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。

機器學習理論主要是設計和分析一些讓計算機可以自動「學習」的演算法。

機器學習演算法是一類從數據中自動分析獲得規律,並利用規律對未知數據進行預測的演算法。

2. 機器學習能夠解決什麼問題?

最成功的機器學習演算法是能夠將決策過程自動化的那些演算法,這些決策過程是從已知示例中泛化得出的。

在這種叫作監督學習(supervised learning)的方法中,用戶將成對的輸入和預期輸出提供給演算法,演算法會找到一種方法,根據給定輸入給出預期輸出。

垃圾郵件分類就是監督學習很好的例子,利用機器學習演算法,用戶為演算法提供大量電子郵件(作為輸入),以及這些郵件是否為垃圾郵件的信息(作為預期輸出)。給定一封新郵件,演算法就能夠預測它是否為垃圾郵件。

還有另一類演算法是無監督學習演算法(unsupervised learning algorithm)。在無監督學習中,只有輸入數據是已知的,沒有為演算法提供輸出數據。

檢測網站的異常訪問模式就是無監督學習:

想要識別網站的濫用或bug,找到異常的訪問模式往往是很有用的。每種異常訪問模式都互不相同,而且你可能沒有任何記錄在案的異常行為示例。在這個例子中你只是觀察流量,並不知道什麼是正常訪問行為和異常訪問行為,所以這是一個無監督學習問題。

無論是監督學習任務還是無監督學習任務,將輸入數據表徵為計算機可以理解的形式都是十分重要的。通常來說,將數據想像成表格是很有用的。

3. 怎樣構建機器學習解決方案?

構建機器學習解決方案的時候,最重要的部分是理解你正在處理的數據,以及這些數據與你想要解決的任務之間的關係。

在構建機器學習解決方案的過程中,你應該給出下列問題的答案,或者至少要將這些問題記在腦中。

我想要回答的問題是什麼?已經收集到的數據能夠回答這個問題嗎?

要將我的問題表示成機器學習問題,用哪種方法最好?

我收集的數據是否足夠表達我想要解決的問題?

我提取了數據的哪些特徵?這些特徵能否實現正確的預測?

如何衡量應用是否成功?

機器學習解決方案與我的研究或商業產品中的其他部分是如何相互影響的?

從更大的層面來看,機器學習演算法和方法只是解決特定問題的過程中的一部分,一定要始終牢記整個項目的大局。許多人浪費大量時間構建複雜的機器學習解決方案,最終卻發現沒有解決正確的問題。

二、選擇Python入坑機器學習

Python 既有通用編程語言的強大功能,也有特定領域腳本語言(比如MATLAB 或R)的易用性。它有用於數據載入、可視化、統計、自然語言處理、圖像處理等各種功能的庫。這個大型工具箱為數據科學家提供了大量的通用功能和專用功能。

使用Python 的主要優點之一,就是利用終端或其他類似Jupyter Notebook 的工具能夠直接與代碼進行交互;機器學習和數據分析本質上都是迭代過程,由數據驅動分析。這些過程必須要有快速迭代和易於交互的工具。

作為通用編程語言,Python 還可以用來創建複雜的圖形用戶界面(graphical user interface,GUI)和Web 服務,也可以集成到現有系統中。

三、機器學習必要的庫和工具

1.scikit-learn

scikit-learn 是一個開源項目,可以免費使用和分發,任何人都可以輕鬆獲取其源代碼來查看其背後的原理。scikit-learn 項目正在不斷地開發和改進中,它的用戶社區非常活躍。它包含許多目前最先進的機器學習演算法,每個演算法都有詳細的文檔。

http://scikit-learn.org/stable/documentation

scikit-learn 是一個非常流行的工具,也是最有名的Python 機器學習庫。它廣泛應用於工業界和學術界,網上有大量的教程和代碼片段。scikit-learn也可以與其他大量Python 科學計算工具一起使用。

2. Jupyter Notebook

Jupyter Notebook 是可以在瀏覽器中運行代碼的交互環境。這個工具在探索性數據分析方面非常有用,在數據科學家中廣為使用。它支持多種編程語言。用Jupyter Notebook 整合代碼、文本和圖像非常方便。

3. NumPy

NumPy 是Python 科學計算的基礎包之一。它的功能包括多維數組、高級數學函數(比如線性代數運算和傅里葉變換),以及偽隨機數生成器。

在 scikit-learn 中,NumPy 數組是基本數據結構。scikit-learn 接受 NumPy 數組格式的數據。你用到的所有數據都必須轉換成 NumPy 數組。NumPy 的核心功能是 ndarray 類,即多維(n 維)數組。數組的所有元素必須是同一類型。

4. SciPy

SciPy 是 Python 中用於科學計算的函數集合。它具有線性代數高級程序、數學函數優化、信號處理、特殊數學函數和統計分布等多項功能。scikit-learn 利用 SciPy 中的函數集合來實現演算法。

5. matplotlib

matplotlib 是 Python 主要的科學繪圖庫,其功能為生成可發布的可視化內容,如折線圖、直方圖、散點圖等。

6. pandas

pandas 是用於處理和分析數據的 Python 庫。它基於一種叫作 DataFrame 的數據結構,這種數據結構模仿了R 語言中的DataFrame。簡單來說,一個pandas DataFrame 是一張表格,類似於 Excel 表格。pandas 中包含大量用於修改表格和操作表格的方法,尤其是可以像 SQL 一樣對表格進行查詢和連接。

NumPy 要求數組中的所有元素類型必須完全相同,而 pandas 不是這樣,每一列數據的類型可以互不相同(比如整型、日期、浮點數和字元串)。

pandas 的另一個強大之處在於,它可以從許多文件格式和資料庫中提取數據,如SQL、Excel 文件和逗號分隔值(CSV)文件。

四、參考圖書推薦

今天介紹的這兩本圖書,有個共同點,使用 Python 實現那是必然的,我們強調的共同點是這兩本書偏重實現與實踐,而不糾纏數學,是小夥伴們上手Python 機器學習的首選參考書。

1. 《Python機器學習基礎教程》

最新上架、非常受歡迎的機器學習入門書:

Andreas C. Müller ,Sarah Guido 著

張亮(hysic) 譯

¥ 79.00元 / 電子書 ¥ 39.99元

這是近期非常受讀者喜愛的 Python 機器學習入門書。原版Introduction to Machine Learning with Python: A Guide for Data Scientists在 Amazon 不論是演算法還是機器學習分類都是穩居前十的。第一作者 Andreas C. Müller 是 scikit-learn 庫維護者和核心貢獻者,去他 GitHub 頁面翻了翻,發現這書的 star 是1.9k,關注度還是不錯的。

《Python機器學習基礎教程》重點討論的是機器學習演算法的實踐而不是其背後的數學,為數學所困的小夥伴們大可放心。跟著書中的內容,你可以使用 Python 和 scikit-learn 庫一步一步構建一個有效的機器學習應用。

目錄

第1章 引言

1.1 為何選擇機器學習

1.2 為何選擇Python

1.3 scikit-learn

1.4 必要的庫和工具

1.5 Python 2與Python 3的對比

1.6 本書用到的版本

1.7 第一個應用:鳶尾花分類

1.8 小結與展望

第2章 監督學習

2.1 分類與回歸

2.2 泛化、過擬合與欠擬合

2.3 監督學習演算法

2.4 分類器的不確定度估計

2.5 小結與展望

第3章 無監督學習與預處理

3.1 無監督學習的類型

3.2 無監督學習的挑戰

3.3 預處理與縮放

3.4 降維、特徵提取與流形學習

3.5 聚類

3.6 小結與展望

第4章 數據表示與特徵工程

4.1 分類變數

4.2 分箱、離散化、線性模型與樹

4.3 交互特徵與多項式特徵

4.4 單變數非線性變換

4.5 自動化特徵選擇

4.6 利用專家知識

4.7 小結與展望

第5章 模型評估與改進

5.1 交叉驗證

5.2 網格搜索

5.3 評估指標與評分

5.4 小結與展望

第6章 演算法鏈與管道

6.1 用預處理進行參數選擇

6.2 構建管道

6.3 在網格搜索中使用管道

6.4 通用的管道介面

6.5 網格搜索預處理步驟與模型參數

6.6 網格搜索選擇使用哪個模型

6.7 小結與展望

第7章 處理文本數據

7.1 用字元串表示的數據類型

7.2 示例應用:電影評論的情感分析

7.3 將文本數據表示為詞袋

7.4 停用詞

7.5 用tf-idf縮放數據

7.6 研究模型係數

7.7 多個單詞的詞袋(n元分詞)

7.8 高級分詞、詞幹提取與詞形還原

7.9 主題建模與文檔聚類

7.10 小結與展望

第8章 全書總結

8.1 處理機器學習問題

8.2 從原型到生產

8.3 測試生產系統

8.4 構建你自己的估計器

8.5 下一步怎麼走

8.6 總結

2. 《機器學習實戰》

最暢銷的機器學習實戰圖書,介紹並實現機器學習主流演算法:

Peter Harrington 著

李銳,李鵬,曲亞東,王斌 譯

¥ 69.00元 / 電子書 ¥ 39.99元

圖靈最受歡迎的機器學習演算法書。跟前一本風格類似,也是更多地討論如何編碼實現機器學習演算法,而盡量減少討論數學理論。將數學矩陣描述的機器學習演算法轉化為可以實際工作的應用程序,是本書的主要目的。

全書通過精心編排的實例,切入日常工作任務,摒棄學術化語言,利用高效的可復用Python代碼來闡釋如何處理統計數據,進行數據分析及可視化。

通過各種實例,讀者可從中學會機器學習的核心演算法,並能將其運用於一些策略性任務中,如分類、預測、推薦。另外,還可用它們來實現一些更高級的功能,如匯總和簡化等。

目錄

第一部分 分類

第1章 機器學習基礎閱讀

第2章 k-近鄰演算法

第3章 決策樹

第4章 基於概率論的分類方法:樸素貝葉斯閱讀

第5章 Logistic回歸

第6章 支持向量機

第7章 利用AdaBoost元演算法提高分類性能

第二部分 利用回歸預測數值型數據

第8章 預測數值型數據:回歸

第9章 樹回歸

第三部分 無監督學習

第10章 利用K-均值聚類演算法對未標註數據分組

第11章 使用Apriori演算法進行關聯分析

第12章 使用FP-growth演算法來高效發現頻繁項集

第四部分 其他工具

第13章 利用PCA來簡化數據

第14章 利用SVD簡化數據

第15章 大數據與MapReduce

附錄A Python入門

附錄B 線性代數

附錄C 概率論複習

附錄D 資源

●編號549,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

演算法與數據結構

更多推薦18個技術類公眾微信

涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

一周入門,一年自通,機器學習沒那麼難
火到半邊天的機器學習到底是啥?

TAG:機器學習 |