經(jīng)常用的機(jī)器學(xué)習(xí)方法
據(jù)數(shù)據(jù)類型的不同,對一個問題的建模有不同的方式。在機(jī)器學(xué)習(xí)或者人工智能領(lǐng)域,人們首先會考慮算法的學(xué)習(xí)方式。在機(jī)器學(xué)習(xí)領(lǐng)域,有幾種主要的學(xué)習(xí)方式。將算法按照學(xué)習(xí)方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據(jù)輸入數(shù)據(jù)來選擇最合適的算法來獲得最好的結(jié)果。
1. 監(jiān)督式學(xué)習(xí):
在監(jiān)督式學(xué)習(xí)下,輸入數(shù)據(jù)被稱為“訓(xùn)練數(shù)據(jù)”,每組訓(xùn)練數(shù)據(jù)有一個明確的標(biāo)識或結(jié)果,如對防垃圾郵件系統(tǒng)中“垃圾郵件”“非垃圾郵件”,對手寫數(shù)字識別中的“1“,”2“,”3“,”4“等。在建立預(yù)測模型的時候,監(jiān)督式學(xué)習(xí)建立一個學(xué)習(xí)過程,將預(yù)測結(jié)果與“訓(xùn)練數(shù)據(jù)”的實(shí)際結(jié)果進(jìn)行比較,不斷的調(diào)整預(yù)測模型,直到模型的預(yù)測結(jié)果達(dá)到一個預(yù)期的準(zhǔn)確率。監(jiān)督式學(xué)習(xí)的常見應(yīng)用場景如分類問題和回歸問題。常見算法有邏輯回歸(Logistic Regression)和反向傳遞神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)
2. 非監(jiān)督式學(xué)習(xí):
在非監(jiān)督式學(xué)習(xí)中,數(shù)據(jù)并不被特別標(biāo)識,學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)。常見的應(yīng)用場景包括關(guān)聯(lián)規(guī)則的學(xué)習(xí)以及聚類等。常見算法包括Apriori算法以及k-Means算法。
3. 半監(jiān)督式學(xué)習(xí):
在此學(xué)習(xí)方式下,輸入數(shù)據(jù)部分被標(biāo)識,部分沒有被標(biāo)識,這種學(xué)習(xí)模型可以用來進(jìn)行預(yù)測,但是模型首先需要學(xué)習(xí)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)以便合理的組織數(shù)據(jù)來進(jìn)行預(yù)測。應(yīng)用場景包括分類和回歸,算法包括一些對常用監(jiān)督式學(xué)習(xí)算法的延伸,這些算法首先試圖對未標(biāo)識數(shù)據(jù)進(jìn)行建模,在此基礎(chǔ)上再對標(biāo)識的數(shù)據(jù)進(jìn)行預(yù)測。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(jī)(Laplacian SVM.)等。
4. 強(qiáng)化學(xué)習(xí):
在這種學(xué)習(xí)模式下,輸入數(shù)據(jù)作為對模型的反饋,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個檢查模型對錯的方式,在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋到模型,模型必須對此立刻作出調(diào)整。常見的應(yīng)用場景包括動態(tài)系統(tǒng)以及機(jī)器人控制等。常見算法包括Q-Learning以及時間差學(xué)習(xí)(Temporal difference learning)
在企業(yè)數(shù)據(jù)應(yīng)用的場景下, 人們最常用的可能就是監(jiān)督式學(xué)習(xí)和非監(jiān)督式學(xué)習(xí)的模型。在圖像識別等領(lǐng)域,由于存在大量的非標(biāo)識的數(shù)據(jù)和少量的可標(biāo)識數(shù)據(jù), 目前半監(jiān)督式學(xué)習(xí)是一個很熱的話題。而強(qiáng)化學(xué)習(xí)更多的應(yīng)用在機(jī)器人控制及其他需要進(jìn)行系統(tǒng)控制的領(lǐng)域。
5. 算法類似性
根據(jù)算法的功能和形式的類似性,我們可以把算法分類,比如說基于樹的算法,基于神經(jīng)網(wǎng)絡(luò)的算法等等。當(dāng)然,機(jī)器學(xué)習(xí)的范圍非常龐大,有些算法很難明確歸類到某一類。而對于有些分類來說,同一分類的算法可以針對不同類型的問題。這里,我們盡量把常用的算法按照最容易理解的方式進(jìn)行分類。
6. 回歸算法:
回歸算法是試圖采用對誤差的衡量來探索變量之間的關(guān)系的一類算法?;貧w算法是統(tǒng)計機(jī)器學(xué)習(xí)的利器。在機(jī)器學(xué)習(xí)領(lǐng)域,人們說起回歸,有時候是指一類問題,有時候是指一類算法,這一點(diǎn)常常會使初學(xué)者有所困惑。常見的回歸算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐步式回歸(Stepwise Regression),多元自適應(yīng)回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點(diǎn)平滑估計(Locally Estimated Scatterplot Smoothing)
7. 基于實(shí)例的算法
基于實(shí)例的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數(shù)據(jù),然后根據(jù)某些近似性把新數(shù)據(jù)與樣本數(shù)據(jù)進(jìn)行比較。通過這種方式來尋找最佳的匹配。因此,基于實(shí)例的算法常常也被稱為“贏家通吃”學(xué)習(xí)或者“基于記憶的學(xué)習(xí)”。常見的算法包括 k-Nearest Neighbor(KNN), 學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map , SOM)
8. 正則化方法
正則化方法是其他算法(通常是回歸算法)的延伸,根據(jù)算法的復(fù)雜度對算法進(jìn)行調(diào)整。正則化方法通常對簡單模型予以獎勵而對復(fù)雜算法予以懲罰。常見的算法包括:Ridge Regression,Least Absolute Shrinkage and Selection Operator(LASSO),以及彈性網(wǎng)絡(luò)(Elastic Net)。
9. 決策樹學(xué)習(xí)
決策樹算法根據(jù)數(shù)據(jù)的屬性采用樹狀結(jié)構(gòu)建立決策模型, 決策樹模型常常用來解決分類和回歸問題。常見的算法包括:分類及回歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機(jī)森林(Random Forest), 多元自適應(yīng)回歸樣條(MARS)以及梯度推進(jìn)機(jī)(Gradient Boosting Machine, GBM)
10. 貝葉斯方法
貝葉斯方法算法是基于貝葉斯定理的一類算法,主要用來解決分類和回歸問題。常見算法包括:樸素貝葉斯算法,平均單依賴估計(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
11. 基于核的算法
基于核的算法中最著名的莫過于支持向量機(jī)(SVM)了?;诤说乃惴ò演斎霐?shù)據(jù)映射到一個高階的向量空間, 在這些高階向量空間里, 有些分類或者回歸問題能夠更容易的解決。常見的基于核的算法包括:支持向量機(jī)(Support Vector Machine, SVM), 徑向基函數(shù)(Radial Basis Function ,RBF), 以及線性判別分析(Linear Discriminate Analysis ,LDA)等
12.聚類算法
聚類,就像回歸一樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法通常按照中心點(diǎn)或者分層的方式對輸入數(shù)據(jù)進(jìn)行歸并。所以的聚類算法都試圖找到數(shù)據(jù)的內(nèi)在結(jié)構(gòu),以便按照最大的共同點(diǎn)將數(shù)據(jù)進(jìn)行歸類。常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。
13. 關(guān)聯(lián)規(guī)則學(xué)習(xí)
關(guān)聯(lián)規(guī)則學(xué)習(xí)通過尋找最能夠解釋數(shù)據(jù)變量之間關(guān)系的規(guī)則,來找出大量多元數(shù)據(jù)集中有用的關(guān)聯(lián)規(guī)則。常見算法包括 Apriori算法和Eclat算法等。
14. 人工神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)算法模擬生物神經(jīng)網(wǎng)絡(luò),是一類模式匹配算法。通常用于解決分類和回歸問題。人工神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的一個龐大的分支,有幾百種不同的算法。(其中深度學(xué)習(xí)就是其中的一類算法,我們會單獨(dú)討論),重要的人工神經(jīng)網(wǎng)絡(luò)算法包括:感知器神經(jīng)網(wǎng)絡(luò)(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網(wǎng)絡(luò),自組織映射(Self-Organizing Map, SOM)。學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ)
在大部分機(jī)器學(xué)習(xí)課程中,回歸算法都是介紹的第一個算法。原因有兩個:一回歸算法比較簡單,介紹它可以讓人平滑地從統(tǒng)計學(xué)遷移到機(jī)器學(xué)習(xí)中。二回歸算法是后面若干強(qiáng)大算法的基石,如果不理解回歸算法,無法學(xué)習(xí)那些強(qiáng)大的算法。回歸算法有兩個重要的子類:即線性回歸和邏輯回歸。
線性回歸就是我們前面說過的房價求解問題。如何擬合出一條直線最佳匹配我所有的數(shù)據(jù)?一般使用“最小二乘法”來求解?!白钚《朔ā钡乃枷胧沁@樣的,假設(shè)我們擬合出的直線代表數(shù)據(jù)的真實(shí)值,而觀測到的數(shù)據(jù)代表擁有誤差的值。為了盡可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。最小二乘法將最優(yōu)問題轉(zhuǎn)化為求函數(shù)極值問題。函數(shù)極值在數(shù)學(xué)上我們一般會采用求導(dǎo)數(shù)為0的方法。但這種做法并不適合計算機(jī),可能求解不出來,也可能計算量太大。
計算機(jī)科學(xué)界專門有一個學(xué)科叫“數(shù)值計算”,專門用來提升計算機(jī)進(jìn)行各類計算時的準(zhǔn)確性和效率問題。例如,著名的“梯度下降”以及“牛頓法”就是數(shù)值計算中的經(jīng)典算法,也非常適合來處理求解函數(shù)極值的問題。梯度下降法是解決回歸模型中最簡單且有效的方法之一。從嚴(yán)格意義上來說,由于后文中的神經(jīng)網(wǎng)絡(luò)和推薦算法中都有線性回歸的因子,因此梯度下降法在后面的算法實(shí)現(xiàn)中也有應(yīng)用。
邏輯回歸是一種與線性回歸非常類似的算法,但是,從本質(zhì)上講,線型回歸處理的問題類型與邏輯回歸不一致。線性回歸處理的是數(shù)值問題,也就是最后預(yù)測出的結(jié)果是數(shù)字,例如房價。而邏輯回歸屬于分類算法,也就是說,邏輯回歸預(yù)測結(jié)果是離散的分類,例如判斷這封郵件是否是垃圾郵件,以及用戶是否會點(diǎn)擊此廣告等等。