1. 程式人生 > >機器學習基本概念梳理

機器學習基本概念梳理

1. 什麼是機器學習?

權威定義:

Arthur samuel: 在不直接針對問題進行程式設計的情況下,賦予計算機學習能力的一個研究領域。

Tom Mitchell: 對於某類任務T和效能度量P,如果計算機程式在T上以P衡量的效能隨著經驗E而自我完善,那麼就稱這個計算機程式從經驗E學習。

其實隨著學習的深入,慢慢會發現機器學習越來越難定義,因為涉及到的領域很廣,應用也很廣,現在基本成為計算機相關專業的標配,但是在實際的操作過程中,又慢慢會發現其實機器學習也是很簡單的一件事,我們最的大部分事情其實就是兩件事情,一個是分類,一個是迴歸。比如房價的預測、股價的預測等是迴歸問題,情感判別、信用卡是否發放等則是屬於分類。現實的情況 一般是給我們一堆資料,我們根據專業知識和一些經驗提取最能表達資料的特徵,然後我們再用演算法去建模,等有未知資料過來的時候我們就能夠預測到這個是屬於哪個類別或者說預測到是一個什麼值以便作出下一步的決策。比如說人臉識別系統,目的是作為一個驗證系統,可能是一個許可權管理,如果是系統中的人則有許可權否則沒有許可權,首先給到我們的資料是一堆人臉的照片,第一步要做的事情是對資料進行預處理,然後是提取人臉特徵,最後選擇演算法比如說SVM或者RF等等,演算法的最終選擇設計到評價標準,這個後面具體講,這樣我們就建立了一個人臉識別的模型,當系統輸入一張人臉,我們就能夠知道他是不是在系統之中。機器學習的整個流程不過就這幾步,最後不過就是引數尋優,包括現在如火如荼的機器學習。

當我們判斷是否要使機器學習時,可以看看是不是以下的場景

1)人類不能手動程式設計;

2)人類不能很好的定義這個問題的解決方案是什麼;

3)人類不能做i到的需要極度快速決策的系統;

4)大規模個性化服務系統;


2.機器學習分類

監督學習:資料集是有標籤的,就是說對於給出的樣本我們是知道答案的,我們大部分學到的模型都是屬於這一類的,包括線性分類器、支援向量機等等;

無監督學習:跟監督學習相反,資料集市完全沒有標籤的,主要的依據是相似的樣本在資料空間中一般距離是相近的,這樣就能通過距離的計算把樣本分類,這樣就完全不需要label,比如著名的kmeans演算法就是無監督學習應用最廣泛的演算法;

半監督學習:半監督學習一般針對的問題是資料量超級大但是有標籤資料很少或者說標籤資料的獲取很難很貴的情況,訓練的時候有一部分是有標籤的而有一部分是沒有的;

強化學習:一直激勵學習的方式,通過激勵函式來讓模型不斷根據遇到的情況做出調整;

3.感知機

感知機是最簡單的機器學習演算法,一般作為機器學習的入門級演算法,也很好理解,但是麻雀雖小,五臟俱全,機器學習大致的思想和過程都涉及到了。

感知機可以認為是線性二元分類器,我們有一些特徵資料,根據這些特徵資料我們線性迴歸出一個值,如果超過了某個閾值,我們就說YES,否則say NO.這其實就是簡單的判斷題了,一個簡單的現例項子就是信用卡的發放問題,銀行得到使用者的一些個人資訊,比如年齡,收入,信用記錄等,針對這些資訊我們賦予一些權重,這樣我們就能夠得到一個具體的數值,以此來判斷是否發信用卡。具體演算法執行如下


當然這是針對線性可分的情況,線性可分的意思是針對一個如果現行不可分這就要無限迴圈下去了,在現實生活中我們往往不能事先判斷是否線性可分,一般的做法是限制迭代次數,儲存當前最好結果。感知機的證明很簡單,有興趣可以參考林軒田老師的機器學習基石課程。

4.機器學習演算法的評價

在生活當中,我們有一個直觀的感受,針對相同的問題,不同的人可能會有不同的看法,不同的答案,這是因為我們從不同的角度出發,也就是說我們的評價體系是不一樣的。而在機器學習中,這個影響尤其明顯,不同的評價標準會造成完全不一樣的預測。

這就需要從統計學的一個問題出發,對於一個樣本大小為N的抽樣資料集,如果N足夠大,滿足Hoeffding不等式,


這個不等式的意思是說當N足夠大時,我們能夠大約認為樣本的屬效能夠代表整體的屬性。

這個不等式很重要!這個不等式很重要!這個不等式很重要!!!這也使我們談機器學習的基礎。

在機器學習中,當樣本N足夠i大並且是獨立同分布的條件下,我們能夠認為看到的樣本能夠代表未知樣本的情況,也就是說我們通過已知資料找出的規律能夠用來預測未知資料。

在機器學習的過程中,我們一般會把資料集分成兩部分,一部分作為訓練集,用來訓練模型用,一部分用來做測試,當作我們的未知資料,訓練測錯誤作為我們的評價標準,因為我們最終應用機器學習模型時,面臨的是未知的資料,如果用訓練錯誤來作為評判標準,可能引起的問題是過擬合,也就是我們訓練效果很好而實際預測情況很糟糕,這是我們不想看到的。

總的來說,在機器學習中,我們要做兩件事,做好這兩件事其實就是表示我們學習到了:

1)測試錯誤接近於0,越小越好;

2)訓練錯誤能夠大致認為是預測錯誤,並且儘量使訓練錯誤為零;

5 . VC維


k 代表 最小的break point

VC維具體的作用是證明誤差有上限的,這很重要!如果VC維是有限的,表明訓練誤差和測試誤差可以大致等同。


訓練誤差和測試誤差中間差的其實就是模型複雜度的懲罰,這跟我們的樣本大小N、VC維和H空間有關,上圖描述了VC維、訓練誤差和測試誤差之間的關係。

隨著模型複雜度的上升,訓練誤差會逐漸減小,但是測試誤差會先減小,但是後面會增加,上升的那段其實就是過擬合了,我們並不需要這麼複雜的模型,因此並不代表我模型越複雜,泛化的效果就會越好,我們往往要做的是平衡,從簡單的模型嘗試,慢慢找到最好的分類器。



在實際運用中,N=10VC就夠了!因為在證明的時候上限放的是很大的,在實際情況下我們並不會一直碰到壞情況。

6.  線性迴歸和邏輯迴歸

線性迴歸其實對於每個屬性都配一個權重,然後最後得到一個值,和感知機的區別在於感知機預測到值之後是取正負號的而線性迴歸直接拿到值就好了,比如說一個人的信用分評測或則房價的預測等等。

線性迴歸評價採用平方誤差,問題就轉化為一個優化問題,求解平方誤差的最小值,求偏導然後等於零解出權重。


線性迴歸取個符號就變成了線性分類,並且線性迴歸的錯誤取得是比0/1錯誤取得大的,能夠用線性迴歸來做分類。

邏輯迴歸和現行迴歸不一樣的地方在於sigmoid函式的介入,



邏輯迴歸的誤差通過最大似然估計來評價,最終轉化成如下優化問題

通過梯度下降來求解,


學習速率可以動態調整,梯度大時學習率大些,因為可以更快接近最優值而梯度小時慢些。

7. 非線性變換


非線性變換主要解決的問題是一些線性不可分的情況,其實做的工作就是對特徵進行變換,以上圖為例,很明顯資料集是線性不可分的,但是我們能夠i通過曲線進行分離,比如說圓,圓是二次的,因此我們把特徵變化到另一個空間維度,在新的空間維度下,資料是線性可分的,我們就能用線性分類器來處理了。

更高次的變化也是一樣的,但是要注意的是在特徵變換的過程中,引數變多了,計算的複雜度上升了,模型的複雜度也上升了。

8. 過擬合

過擬合的特徵一般是具有很小的訓練錯誤,但是泛化能力很差,具有很高的泛化誤差。

過擬合在我們實際的操作中經常出現,主要的原因在於模型的複雜度太高。

造成過擬合的原因主要是下面四個方面:


解決過擬合的方法:

1)從簡單的模型開始嘗試;

2)資料預處理,資料清洗;

3)額外的資料;

4)正則化,regularization;

5)驗證,validation;

9. 正則化

正則化相當於給訓練誤差加了一個懲罰項,以防止過擬合的發生。

用的比較多的正則項是L1和L2,


正則化通過犧牲一定的準確率而增加一定的泛化能力。

10. 驗證

驗證的目的是選擇最優的模型,而依據就是泛化誤差,因為我們最終把模型應用的是未知資料。

目前用的最廣泛的是V-fold cross validation,把資料集分成V份,每次拿出V-1作為訓練集,而剩下的一份作為驗證,通過V次的訓練,把最後訓練錯誤的平均值作為該模型的評價,然後選出最佳。


條件允許的條件下,儘量採用交叉驗證,一般用5折或者10折

致謝:

感謝臺灣大學的林軒田老師,《機器學習基石》課程讓我更進一步理解機器學習的基本概念,層層深入的教學方式讓我受益頗多!文中內容也是參考此課程。

Andrewseu 2016/12/7