理性看待機器學習,不吹不黑。
本章對一些機器學習的術語進行介紹,還將對一些常用的參數符號進行解釋,后文里不再贅述。
1、輸入與輸出
在機器學習過程中,首先我們要喂給機器很多數據,然后機器根據一定的算法給出結果。這是一個包含了輸入和輸出的過程。
輸入:我們稱之為屬性值Attributes,或稱之為特征Feature,統(tǒng)計學中稱之為變量Variable。為了統(tǒng)一概念,后續(xù)文章里對機器學習的輸入我們稱都其為特征。
輸出:最終需要預測的信息,稱其為目標Target。
2、特征表現(xiàn)方式
比如一份體檢報告中,我們想預測一個人是男是女。這些體檢報告中的數據稱之為特征,其中可能包括身高、體重、腰圍,這三個變量,并為之設三個變量:x1、x2、x3。
注意下標的方式,為了以后的文章里統(tǒng)一概念,一般幾號特征就定義其下標是多少。
比如,小明的體檢報告:用 x小明 來表示。
比如,小明的體重:用 x2小明 或 x體重小明 來表示。
3、造物主的公式
終極目標:我們想要得到一個特征與目標之間的映射:
理想公式 (造物主公式) f:特征值 → 目標值
為了實現(xiàn)理想公式,我們將大量的數據喂給機器,并指揮機器不斷學習和優(yōu)化。
輸入數據:D={(x1,y1),(x2,y2),(x3,y3), …… ,(xn,yn)}(歷史記錄信息)
最終獲得了最優(yōu)性能假設公式 g:特征值 → 目標值 (學習得到的最終公式)
最優(yōu)性能假設公式形成后,再輸入新的特征值便可直接獲得對應的目標值。尋找這種映射的過程是我們工作的核心內容。
然而事實上,我們真的得到理想公式了么?理想公式到底是什么?只有造物主才能百分百的確定。我們使用機器學習最后得到的算法,最多只能說是盡可能得去接近于造物主創(chuàng)造的映射公式,我們做不到完美,只能靠機器學習去獲得一個最優(yōu)性能假設的公式。
再比如后續(xù)會提到機器學習模型調參的操作,不斷調整參數的過程就是為了找到一個更加優(yōu)秀的映射關系來解釋造物主公式的過程。
所以,機器學習中無法獲得一個完美的造物主公式。
4、機器學習概念
定義:對于某給定的 ,在合理的
的前提下,某計算機程序可以自主學習任務T的
; 隨著提供合適、優(yōu)質、大量的經驗E,該程序對于任務T的性能逐步提高。
例:蓋一個金茂大廈是我的 "任務T" ,一些用來檢驗我蓋的樓像不像金茂大廈的方式稱為 “合理的性能度量P” ,"經驗E" 是我們按照圖紙蓋樓的磚。當磚足夠多的時候,不斷反復的蓋樓,這張蓋樓的圖紙不斷優(yōu)化,最后蓋出來的樓也越來越像金貿大廈。這張蓋樓的圖紙是最后的產物,即上文提到的 "最優(yōu)性能假設公式”。
從機器學習的概念轉化為實際的開發(fā)思路:
算法T:根據業(yè)務需要和數據特征,選擇則相關的算法。
模型E:基于數據和算法構建出來的模型。
評估/測試(P):對模型進行評估的策略。
機器學習步驟: 算法 → 模型 → 評估 → 算法
機器學習是人工智能的一個分支。機器學習的思路是:根據大量的訓練數據,按照一定的方式來指導機器學習;隨著機器訓練次數的增加不斷得學習和改進,最終使得學習模型能夠用于預測相關問題的輸出。拿之前蓋樓的例子來說,我們要不斷得修改圖紙的內容,使其越來越像金茂大廈。
5、向量和矩陣
在機器學習中,如果定義了一個向量,那么一定是列向量,多個列向量組成一個矩陣。
下圖是一個3行2列的矩陣,3行代表有3個體檢報告的樣本(維度是3),2列代表每個體檢報告的樣本包含2個特征。
| 身高 | 體重 |
|---|---|
| 175 | 70 |
| 160 | 58 |
| 85 | 77 |
將樣本數據傳入最優(yōu)性能假設公式進行計算,得出了目標值:判斷樣本數據的所有者是男是女。1代表男,0代表女。
| 身高 | 體重 | 目標 |
|---|---|---|
| 175 | 70 | 1 |
| 160 | 58 | 0 |
| 85 | 77 | 1 |
x(i) 表示第i個樣本的x向量。即一個樣本的值 ,包含一組特征 (身高,體重)
xi 表示x向量的第i維度的值。即一個特征的所有值(x2=體重向量)
6、魯棒性
Robwst,翻譯成中文是穩(wěn)健性、健壯性的意思。當存在異常數據的時候,算法也會擬合數據。簡單的說,系統(tǒng)能夠識別出異常的數據,不會讓它影響到計算的結果。
魯棒性強,意味著異常數據對系統(tǒng)的影響較小。魯棒性差,意味著一旦出現(xiàn)了異常數據,模型會去迎合這些異常數據,使結果收到干擾。
7、過擬合和欠擬合
算法太符合樣本的特征,對于實際的數據特征反而無法擬合。
拿之前體檢樣本的例子來說,如果有一天來體檢的全是女子籃球隊的,人人一米八、一米九的身高。算法如果太擬合這份樣本數據,按照這樣去計算,那大街上就沒幾個男人了。
算法不太符合樣本的數據特征。
如果本來計算的目標就是想預測女籃的身高,但是算法結果中表明女籃平均身高是一米五、一米六的。這顯然低于普遍的女籃身高,這種現(xiàn)象稱為算法欠擬合。
總體來說,過擬合是在訓練集上表現(xiàn)出色,但是在測試集上表現(xiàn)不好。而欠擬合在訓練集上的表現(xiàn)就已經不太好了,自然都不用拿測試集去驗證了。
8、常見的應用框架
scikit-learn(Python)
http://scikit-learn.org/stable/
后續(xù)文章主要介紹的是scikit-learn框架。
安裝scikit-learn的方法:
1、 安裝Anaconda3
2、 打開Anaconda-Prompt
3、 輸入pip install scikit-learn
4、導入該庫的指令 import sklearn
具體的安裝方法日后可以看我的AI-開發(fā)工具文集,里面會詳細介紹。
以下兩種是基于大數據處理的框架,暫時不作介紹。
Mahout(Hadoop,基于MapReduce)
http://mahout.apache.org/
Spark MLlib
http://spark.apache.org/
9、商業(yè)場景
模式識別、數據挖掘、統(tǒng)計學習
圖像識別、語音識別、自然語言處理
數據分析、數據挖掘、機器學習之間的區(qū)別和聯(lián)系
對海量的數據進行分析,并提取有用的信息,以及形成結論。是一種對數據詳細研究和概括的過程。實際工作中可以幫助人們做出判斷,數據分析一般而言可以分為統(tǒng)計分析、探索性數據分析、驗證性數據分析三大類。
其中統(tǒng)計分析和驗證性數據分析在機器學習中也會用到。需要我們對數學統(tǒng)計中的概念有基本的認知。比如中位數、方差、均值、特征值之間的協(xié)方差等等,都需要了解,對樣本的初步瀏覽過程就是探索性分析。驗證性數據分析是對結果是否合理進行分析,在機器學習中就是不斷地判斷模型的效果指標是否在提升。
一般值從大量數據中通過算法搜索隱藏于其中信息的過程。通常通過統(tǒng)計、檢索、機器學習、模式匹配等諸多方法來實現(xiàn)這個過程。
涉及面非常廣,很多時候企業(yè)有數據卻不知道從何下手。數據挖掘就是從毫無頭緒的數據中大膽預測并分析出有價值的信息。
是數據分析和數據挖掘的一種比較常用、比較好的手段。
工作中會遇到一些坑:比如有些客戶提出做一些數據分析的需求,但是客戶不懂技術,給的數據又少又亂,很多時候還需要提醒客戶補充一些必要的數據。從客戶立場上來說,數據即是金錢。客戶透露的數據越多,損失就越大。因此做人工智能相關的工作非??简灩こ處煹臏贤芰Γ刂瓶蛻舻钠谕?,充分告訴客戶我們分析的產物能夠為企業(yè)提供哪些幫助、我們做的模型比別人好在哪里。
10、機器學習分類
有目標值,標簽化訓練數據。
判別式模型:對條件概率進行建模。線性回歸、決策樹等。
生成式模型:對聯(lián)合分布概率進行建模。隱馬爾可夫、LDA等。
生成式模型適用面更廣,關注數據是如何產生的,尋找的是數據的分布模型。
判別式模型更直接,目標性比較強。只想看看某個條件的情況下的分布是什么樣的。關注的是數據的差異性,尋找的是分類面。
因此生成式的模型可以轉化成判別式的模型,反之則不行。在后文具體模型中進一步細說,面試中考官有時會問某個模型屬于生成式還是判別式,記住這點即可。
無目標值,為了推斷出數據的一些內在結構,一種探索性分析的過程。
利用少量標注樣本和大量未標注樣本進行訓練和分類的問題。發(fā)展不是很完整,和流形學習有點關系,本文集不做討論。
結語
很想直接進入算法的部分,但是覺得在深入介紹之前,我們還是要把鋪墊做做充分。
昨天就有人問我這次寫的文集是僅僅搞理論,還是會深入進去研究?我的回答是:落地。但是學習人工智能的過程和學習JAVA開發(fā)不同,不是簡單看幾行代碼,查兩幾份資料就能迅速入門的。所以我花了點心思設計了幾個例子讓大家管中窺豹,對機器學習的工作有大概的理解。也許有不貼切的地方,但隨著日后的文章,從多個角度進行分析,相信大家的認知會越來越深刻。