盡管機器學習從分類上而言只是人工智能(也就是常說的AI)的分支之一,但其本身也是一個相當巨大的命題。在未來的一段時間里,我將花時間在專欄寫一些我比較熟悉的機器學習相關的概念和算法,最主要的目的是為了梳理自己的知識體系,也是希望和大家分享學習的歷程和感悟,以達到交流的目的。
這兩年大數(shù)據(jù)火了,機器學習、神經(jīng)網(wǎng)絡、數(shù)據(jù)挖掘、強化學習等等這些名詞都火了,然而我常常在想,把這些名詞掛在嘴邊的我們,究竟能否在這個領域飛速發(fā)展的情況下,清楚地了解到自己說的每一個名詞——誰是誰的分支,哪個和哪個又是同等關系或是沒有關系的——在名詞爆炸的狀態(tài)下,想學什么,了解其基礎概念是必不可少的。
與數(shù)據(jù)相關的概念
假如我們有一組天氣數(shù)據(jù),是來自全世界不同國家和地區(qū)的每日天氣,內(nèi)容包括最高溫度、最低溫度、平均濕度、風速之類的相關數(shù)據(jù),例如數(shù)據(jù)的一部分是這樣的:
城市 | 最高溫度 | 最低溫度 | 相對濕度 | 某時刻風速 |
---|---|---|---|---|
A市 | 36℃ | 28℃ | 58% | 16.7km/h |
B市 | 28℃ | 17℃ | 86% | / |
C市 | 34℃ | 29℃ | 39% | 20.4km/h |
在這組數(shù)據(jù)中,我們將稱A市、B市、C市等市以及其情況的總和稱為數(shù)據(jù)集(data set)。表格中的每一行,也就是某城市和它的情況被稱為一個樣例(sample/instance)。表格中的每一列(不包括城市),例如最高溫度、最低溫度,被稱為特征(feature/attribute),而每一列中的具體數(shù)值,例如36℃ 、28℃,被稱為屬性值(attribute value)。數(shù)據(jù)中也可能會有缺失數(shù)據(jù)(missing data),例如B市的某時刻風速,我們會將它視作缺失數(shù)據(jù)。
如果我們想預測城市的天氣,例如是晴朗還是陰雨天,這些數(shù)據(jù)是不夠的,除了特征以外,我們還需要每個城市的具體天氣情況,也就是通常語境下的結(jié)果。在機器學習中,它會被稱為標簽(label),用于標記數(shù)據(jù)。值得注意的是,數(shù)據(jù)集中不一定包含標簽信息,而這種區(qū)別會引起方法上的差別。我們可以給上述示例加上一組標簽:
城市 | 天氣 |
---|---|
A市 | 晴朗 |
B市 | 陰雨 |
C市 | 晴朗 |
視具體情況,用來進行機器學習的一個數(shù)據(jù)集往往會被分為兩個數(shù)據(jù)集——訓練數(shù)據(jù)(training data)和測試數(shù)據(jù)(testing data)。 顧名思義,訓練數(shù)據(jù)在機器學習的過程中使用,目的是找出一套機器學習的方法;而測試數(shù)據(jù)用于判斷找出的方法是否足夠有效。如果在訓練的過程中需要確定方法的準確度,有時會將訓練數(shù)據(jù)分成訓練集(training set)和驗證集(validation set)——驗證集合測試數(shù)據(jù)不同的地方在于驗證集在訓練過程中使用,而測試數(shù)據(jù)事實上是在模型建立后才被使用的。
與方法相關的概念
根據(jù)數(shù)據(jù)有沒有標簽,我們可以將機器學習分類為監(jiān)督學習(Supervised Learning)、無監(jiān)督學習(Unsupervised Learning)和半監(jiān)督學習(Semi-Supervised Learning)。
監(jiān)督學習是學習給定標簽的數(shù)據(jù)集,比如說有一組病人,給出他們的詳細資料,將他們是否已確診癌癥作為標簽,然后預測一名(其他的)病人是否會患有癌癥,就是一種典型的監(jiān)督學習。監(jiān)督學習中也有不同的分類,如果我們訓練的結(jié)果是得癌癥和不得癌癥之類離散的類型,則稱為分類(Classification),如果只有兩種類型的話可以進一步稱為二分類(Binary Classification);如果我們訓練的結(jié)果是得癌癥的概率為0.87之類連續(xù)的數(shù)字,則稱為回歸(Regression)。
無監(jiān)督學習是學習沒有標簽的數(shù)據(jù)集,比如在分析大量語句之后,訓練出一個模型將較為接近的詞分為一類,而后可以根據(jù)一個新的詞在句子中的用法(和其他信息)將這個詞分入某一類中。其中比較微妙的地方在于,這種問題下使用聚類(Clustering)(方法)所獲得的簇(Cluster)(結(jié)果),有時候是無法人為地觀察出其特征的,但是在得到聚類后,可能會對數(shù)據(jù)集有新的啟發(fā)。
半監(jiān)督學習的數(shù)據(jù)集比較特殊,是部分有標簽部分無標簽的數(shù)據(jù)集。由于有標簽的數(shù)據(jù)很多時候需要花大量人力物力去分類和生成,半監(jiān)督學習也被視作當前機器學習的重要部分。半監(jiān)督問題往往會利用一些假設,將半監(jiān)督學習轉(zhuǎn)化為傳統(tǒng)的監(jiān)督學習或非監(jiān)督學習問題。
與結(jié)果相關的概念
二分類問題
衡量結(jié)果精度的有一些相關術語,首當其沖的是準確率(Accuracy)、精確率(Precision)和召回率(Recall)。這三個詞匯應用于二分類問題:將數(shù)據(jù)分為正例(Positive Class)和反例(Negative Class)
一張形象的維基百科圖:也就是說,準確率是預測和標簽一致的樣本在所有樣本中所占的比例;精確率是你預測為正類的數(shù)據(jù)中,有多少確實是正類;召回率是所有正類的數(shù)據(jù)中,你預測為正類的數(shù)據(jù)有多少。這三個數(shù)據(jù)往往用來衡量一個二分類算法的優(yōu)劣。
回歸問題
回歸問題往往會通過計算誤差(Error)來確定模型的精確性。誤差由于訓練集和驗證集的不同,會被分為訓練誤差(Training Error)和驗證誤差(Validation Error)。但值得注意的是,模型并不是誤差越小就一定越好,因為如果僅僅基于誤差,我們可能會得到一個過擬合(Overfitting)的模型;但是如果不考慮誤差,我們可能會得到一個欠擬合(Underfitting)的模型,用圖像來說的話大致可以這樣理解:
如果模型十分簡單,往往會欠擬合,對于訓練數(shù)據(jù)和測試數(shù)據(jù)的誤差都會很大;但如果模型太過于復雜,往往會過擬合,那么訓練數(shù)據(jù)的誤差可能相當小,但是測試數(shù)據(jù)的誤差會增大。好的模型應當平衡于這兩者之間:
聚類問題
聚類問題的標準一般基于距離:簇內(nèi)距離(Intra-cluster Distance)和簇間距離(Inter-cluster Distance)。根據(jù)常識而言,簇內(nèi)距離是越小越好,也就是簇內(nèi)的元素越相似越好;而簇間距離越大越好,也就是說簇間(不同簇)元素越不相同越好。一般來說,衡量聚類問題會給出一個結(jié)合簇內(nèi)距離和簇間距離的公式。
總結(jié)
機器學習的基本概念并不多,但搞清楚具體每個算法適用于怎樣的數(shù)據(jù)、應當怎樣去評價是比較重要的一點。
在之后的專欄中,我們將更多的討論具體的算法,比較它們的優(yōu)劣,研究它們的局限性和適用性。
希望大家在了解機器學習的時候把一句話永遠放在心中:
All models are wrong but some are useful.