《機器學習入門實戰(zhàn)》第 01 篇 如何入門機器學習?

作者: 不剪發(fā)的Tony老師
畢業(yè)于北京航空航天大學,十多年數(shù)據(jù)庫管理與開發(fā)經驗,目前在一家全球性的金融公司從事數(shù)據(jù)庫架構設計。CSDN學院簽約講師以及GitChat專欄作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net


文章目錄

        機器學習與數(shù)據(jù)挖掘
        傳統(tǒng)入門方法的問題
        逆向學習方法
        專欄內容介紹
            目標人群
            專欄章節(jié)

機器學習與數(shù)據(jù)挖掘

如果你是一個想要入門數(shù)據(jù)科學的初學者,首先需要面對的就是各種相關的名詞和概念。例如,什么是人工智能、機器學習、數(shù)據(jù)挖掘以及統(tǒng)計分析?簡單來說,它們之間的關系如下圖所示。

在這里插入圖片描述

統(tǒng)計學是通過搜索、整理、分析、描述數(shù)據(jù)等手段,以達到推斷所測對象的本質,甚至預測對象未來的一門綜合性科學。統(tǒng)計學方法主要分為描述統(tǒng)計和推斷統(tǒng)計;例如計算大學生身高的平均數(shù)、標準差以及收入和學歷之間是否具有統(tǒng)計相關性都屬于描述統(tǒng)計,而通過全國人口普查掌握全國人口的基本情況屬于推斷統(tǒng)計。

機器學習是人工智能(AI)的一個分支,涉及概率論、統(tǒng)計學、逼近論、凸分析、算法復雜度理論等多門學科。機器學習專門研究計算機怎樣模擬或實現(xiàn)人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。

數(shù)據(jù)庫是按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫;數(shù)據(jù)倉庫(DW)是為了提供報告服務和決策支持的特定數(shù)據(jù)庫。我們常見的數(shù)據(jù)庫有 Oracle、MySQL、SQL Server、MongoDB、以及 Apace Hive、HBase 等。

數(shù)據(jù)挖掘一般是指從大量的數(shù)據(jù)中通過算法搜索隱藏于其中信息的過程。數(shù)據(jù)挖掘是集統(tǒng)計學、機器學習和數(shù)據(jù)庫技術于一體的多學科領域。為了便于理解,我們可以將數(shù)據(jù)挖掘的作用分為兩種:通過統(tǒng)計數(shù)據(jù)分析來解釋過去以及基于機器學習算法預測未來,如下圖所示。
在這里插入圖片描述

解釋過去本質上也是為了能夠預測未來。通過統(tǒng)計學和可視化的方法對數(shù)據(jù)進行探索,從而發(fā)現(xiàn)歷史數(shù)據(jù)中的規(guī)律或者問題;并且為后續(xù)的數(shù)據(jù)挖掘與數(shù)據(jù)建模工作做好準備。

預測未來的主要方式是建立預測算法模型。如果預測結果是離散的類別值則稱為分類,例如垃圾郵件檢測、圖像識別等;如果預測結果是連續(xù)的數(shù)值則稱為回歸,例如藥物反應、股票價格預測等;聚類則是將相似的觀測值分配同一個組中,例如用戶畫像、推薦系統(tǒng)等;關聯(lián)規(guī)則可以在觀察結果中找到事務的之間關聯(lián),例如哪些產品經常被一起購買。

機器學習領域提供了大量用于數(shù)據(jù)挖掘的算法,同時也給我們的選擇帶來一定的困難;下面是一個常見的機器學習算法速查表(英文原版),可以方便我們需要時查詢。
在這里插入圖片描述

知道這些概念之后,我們來討論一下初學者應該如何入門機器學習。如果你去網絡上搜索,大概會得到以下一些建議:

閱讀專業(yè)書籍
學習 MOOC 課程
閱讀各種博客文章
嘗試 Kaggle/天池競賽

不過,這些建議實際上大部分都不適合入門學習。學習一門技術或者技能的方法概括起來大概也就兩種:理論先行或者實踐先行。
傳統(tǒng)入門方法的問題

大部分傳統(tǒng)學習方法采用理論先行的方式,首先需要我們掌握的基礎包括:

高等數(shù)學
微積分
概論論與統(tǒng)計
線性代數(shù)
信息論
計算機編程語言
數(shù)據(jù)結構與算法
機器學習算法
最優(yōu)化理論

然后,我們可以開始實現(xiàn)簡單的機器學習算法,參加一些相關領域的競賽,嘗試在實際工作中使用所學的知識。

對于任何初學者來說,如果一開始就要面對這么多的理論知識,不但耗時而且很容易影響學習的積極性。記得以前我們學習英語時,老師總是要求背誦各種單詞,記住各種主謂賓、定狀補的語法,而很少能夠有理解語義的鍛煉環(huán)境;導致現(xiàn)在還是有些拒絕學習英語。

english

傳統(tǒng)的機器學習入門方法也存在同樣的問題:過于專注理論算法和底層細節(jié),而不是解決實際問題。
逆向學習方法

與傳統(tǒng)學習方向相反的是,逆向學習方法采用實踐先行的理念,以解決數(shù)據(jù)挖掘的實際問題驅動學習過程。想想我們小時候是怎么學會說話的,肯定不是先學各種拼音、漢字和語法,而是在實際生活中不斷地聽和說就自然會說話了;當然,想要成為語言學家肯定要研究這些語言細節(jié),也需要付出比常人多很多倍的努力。
child
當然,并不是說不需要基礎理論知識。理論非常重要,但是對于入門的初學者,應該先對整體的流程建立認知;然后再從實踐到理論,有針對性的學習各個知識點。這樣更容易獲得成就感,提高學習的積極性,有利于初學者的入門。

因此,我們將會采用以下方法帶領大家入門:

選擇一個行業(yè)成熟的系統(tǒng)化流程;
選擇適合初學者入門的工具平臺;
專注于解決實際的數(shù)據(jù)挖掘問題;
針對性地擴展算法原理和知識點。

首先,我們需要站在前人的基礎上;數(shù)據(jù)挖掘領域實際上很早就建立了成熟的行業(yè)流程,即 CRISP-DM(cross-industry standard process for data mining)。我們將其轉換為以下流程圖:
在這里插入圖片描述

為了解決現(xiàn)實世界中的問題,我們通過采集原始數(shù)據(jù),經過格式化、清洗、轉換和特征選擇等預處理,以及探索性數(shù)據(jù)分析,得到適合建立模型的數(shù)據(jù);然后比較和選擇不同的算法,對其進行評估和調優(yōu);反復整個過程最終獲得并利用結果。

常見的機器學習和數(shù)據(jù)挖掘平臺有很多,包括商業(yè)平臺 SPSS、SAS 以及 Matlab 等;開源的 Python、R 語言等;大數(shù)據(jù)平臺 Mahout、Spark 等。我們將會使用一個免費開源的機器學習平臺:Orange。它是一個非常適合初學者入門的工具,提供了簡單易用的圖形操作界面,無需任何編程和算法基礎就能完成各種機器學習和數(shù)據(jù)挖掘任務。以下是一個 Orange 分類工作流的界面。
在這里插入圖片描述

不僅如此,Orange 基于 Python 開發(fā),并且使用 Python 代碼庫進行科學計算,例如 numpy、scipy 以及 scikit-learn;高級用戶既可以通過 Python 編程為其提供擴展的功能,也可以將其作為 Python 的一個編程模塊使用。