在理解了我們需要解決的機(jī)器學(xué)習(xí)問(wèn)題之后,我們可以思考一下我們需要收集什么數(shù)據(jù)以及我們可以用什么算法。本文我們會(huì)過(guò)一遍最流行的機(jī)器學(xué)習(xí)算法,大致了解哪些方法可用,很有幫助裕寨。
機(jī)器學(xué)習(xí)領(lǐng)域有很多算法,然后每種算法又有很多延伸,所以對(duì)于一個(gè)特定問(wèn)題闸与,如何確定一個(gè)正確的算法是很困難的。本文中我想給你們兩種方法來(lái)歸納在現(xiàn)實(shí)中會(huì)遇到的算法岸售。
學(xué)習(xí)方式
根據(jù)如何處理經(jīng)驗(yàn)践樱、環(huán)境或者任何我們稱(chēng)之為輸入的數(shù)據(jù),算法分為不同種類(lèi)凸丸。機(jī)器學(xué)習(xí)和人工智能課本通常先考慮算法可以適應(yīng)的學(xué)習(xí)方式拷邢。
這里只討論幾個(gè)主要的學(xué)習(xí)風(fēng)格或?qū)W習(xí)模型,并且有幾個(gè)基本的例子屎慢。這種分類(lèi)或者組織的方法很好瞭稼,因?yàn)樗仁鼓闳ニ伎驾斎霐?shù)據(jù)的角色和模型準(zhǔn)備的過(guò)程,然后選擇一個(gè)最適合你的問(wèn)題的算法腻惠,從而得到最佳的結(jié)果环肘。
監(jiān)督學(xué)習(xí)
在監(jiān)督式學(xué)習(xí)下,輸入數(shù)據(jù)被稱(chēng)為“訓(xùn)練數(shù)據(jù)”集灌,每組訓(xùn)練數(shù)據(jù)有一個(gè)明確的標(biāo)識(shí)或結(jié)果廷臼,如對(duì)防垃圾郵件系統(tǒng)中“垃圾郵件”“非垃圾郵件”,對(duì)手寫(xiě)數(shù)字識(shí)別中的“1“绝页,”2“荠商,”3“,”4“等续誉。在建立預(yù)測(cè)模型的時(shí)候莱没,監(jiān)督式學(xué)習(xí)建立一個(gè)學(xué)習(xí)過(guò)程,將預(yù)測(cè)結(jié)果與“訓(xùn)練數(shù)據(jù)”的實(shí)際結(jié)果進(jìn)行比較酷鸦,不斷的調(diào)整預(yù)測(cè)模型饰躲,直到模型的預(yù)測(cè)結(jié)果達(dá)到一個(gè)預(yù)期的準(zhǔn)確率。
監(jiān)督式學(xué)習(xí)的常見(jiàn)應(yīng)用場(chǎng)景如分類(lèi)問(wèn)題和回歸問(wèn)題臼隔。
常見(jiàn)算法有邏輯回歸(Logistic Regression)和反向傳遞神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)
無(wú)監(jiān)督學(xué)習(xí)
在非監(jiān)督式學(xué)習(xí)中嘹裂,數(shù)據(jù)并不被特別標(biāo)識(shí),也沒(méi)有確定的結(jié)果摔握。學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)寄狼。
常見(jiàn)的應(yīng)用場(chǎng)景包括關(guān)聯(lián)規(guī)則的學(xué)習(xí)(Association rule learning)以及聚類(lèi)等。
常見(jiàn)算法包括Apriori算法以及K-均值(k-Means)算法。
半監(jiān)督學(xué)習(xí)
在此學(xué)習(xí)方式下泊愧,輸入數(shù)據(jù)部分被標(biāo)識(shí)伊磺,部分沒(méi)有被標(biāo)識(shí),這種學(xué)習(xí)模型可以用來(lái)進(jìn)行預(yù)測(cè)删咱,但是模型首先需要學(xué)習(xí)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)以便合理的組織數(shù)據(jù)來(lái)進(jìn)行預(yù)測(cè)屑埋。
應(yīng)用場(chǎng)景包括分類(lèi)和回歸。
算法包括一些對(duì)常用監(jiān)督式學(xué)習(xí)算法的延伸痰滋,這些算法首先試圖對(duì)未標(biāo)識(shí)數(shù)據(jù)進(jìn)行建模摘能,在此基礎(chǔ)上再對(duì)標(biāo)識(shí)的數(shù)據(jù)進(jìn)行預(yù)測(cè)。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(jī)(Laplacian SVM.)等敲街。
增強(qiáng)學(xué)習(xí)
在這種學(xué)習(xí)模式下团搞,輸入數(shù)據(jù)作為對(duì)模型的反饋,不像監(jiān)督模型那樣聪富,輸入數(shù)據(jù)僅僅是作為一個(gè)檢查模型對(duì)錯(cuò)的方式莺丑,輸入數(shù)據(jù)可以刺激模型并且使模型做出反應(yīng)。反饋不僅從監(jiān)督學(xué)習(xí)的學(xué)習(xí)過(guò)程中得到墩蔓,還從環(huán)境中的獎(jiǎng)勵(lì)或懲罰中得到梢莽。在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋到模型奸披,模型必須對(duì)此立刻作出調(diào)整昏名。
常見(jiàn)的應(yīng)用場(chǎng)景包括動(dòng)態(tài)系統(tǒng)以及機(jī)器人控制等。
常見(jiàn)算法包括Q-Learning以及時(shí)間差學(xué)習(xí)(Temporal difference learning)
當(dāng)整合數(shù)據(jù)模擬商業(yè)決策時(shí)阵面,大多數(shù)會(huì)用到監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)的方法轻局。當(dāng)下一個(gè)熱門(mén)話題是半監(jiān)督學(xué)習(xí),比如圖像分類(lèi)問(wèn)題样刷,這中問(wèn)題中有一個(gè)大的數(shù)據(jù)庫(kù)仑扑,但是只有一小部分圖片做了標(biāo)記。增強(qiáng)學(xué)習(xí)多半還是用在機(jī)器人控制和其他控制系統(tǒng)的開(kāi)發(fā)上置鼻。
算法相似性
算法基本上從功能或者形式上來(lái)分類(lèi)镇饮。比如,基于樹(shù)的算法箕母,神經(jīng)網(wǎng)絡(luò)算法储藐。這是一個(gè)很有用的分類(lèi)方式,但并不完美嘶是。因?yàn)橛性S多算法可以輕易地被分到兩類(lèi)中去钙勃,比如說(shuō)Learning Vector Quantization就同時(shí)是神經(jīng)網(wǎng)絡(luò)類(lèi)的算法和基于實(shí)例的方法。正如機(jī)器學(xué)習(xí)算法本身沒(méi)有完美的模型一樣聂喇,算法的分類(lèi)方法也沒(méi)有完美的辖源。
在這一部分我列出了我認(rèn)為最直觀的方法歸類(lèi)的算法。我并沒(méi)有窮盡算法或者分類(lèi)方法,但是我想對(duì)于讓讀者有一個(gè)大致了解很有幫助同木。如果有你了解的我沒(méi)有列出來(lái)浮梢,歡迎留言分享□耸現(xiàn)在我們開(kāi)始彤路!
Regression
Regression(回歸分析)是試圖采用對(duì)誤差的衡量來(lái)探索變量之間的關(guān)系的一類(lèi)算法,關(guān)心的是變量之間的關(guān)系〗嬗常回歸算法是統(tǒng)計(jì)機(jī)器學(xué)習(xí)的利器洲尊,應(yīng)用的是統(tǒng)計(jì)方法。在機(jī)器學(xué)習(xí)領(lǐng)域奈偏,人們說(shuō)起回歸坞嘀,有時(shí)候是指一類(lèi)問(wèn)題,有時(shí)候是指一類(lèi)算法惊来,這一點(diǎn)常常會(huì)使初學(xué)者有所困惑丽涩。常見(jiàn)的回歸算法包括:
- 最小二乘法(Ordinary Least Square)
- 邏輯回歸(Logistic Regression)
- 逐步式回歸(Stepwise Regression)
- 多元自適應(yīng)回歸樣條(Multivariate Adaptive Regression Splines)
- 本地散點(diǎn)平滑估計(jì)(Locally Estimated Scatterplot Smoothing)
Instance-based Methods
Instance based learning(基于實(shí)例的學(xué)習(xí))常常用來(lái)對(duì)決策問(wèn)題建立模型,所使用的實(shí)例或者例子是對(duì)模型非常重要的裁蚁。這樣的模型常常先選取一批樣本數(shù)據(jù)矢渊,然后根據(jù)某些近似性把新數(shù)據(jù)與樣本數(shù)據(jù)進(jìn)行比較。通過(guò)這種方式來(lái)尋找最佳的匹配枉证。因此矮男,基于實(shí)例的算法常常也被稱(chēng)為“贏家通吃”學(xué)習(xí)或者“基于記憶的學(xué)習(xí)”,(勝者為王方法和基于內(nèi)存的方法)室谚。
現(xiàn)在關(guān)注的焦點(diǎn)在存儲(chǔ)數(shù)據(jù)的表現(xiàn)形式和相似性測(cè)量方法毡鉴。
- k-Nearest Neighbor(KNN)
- 學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ)
- 以及自組織映射算法(Self-Organizing Map 秒赤, SOM)
Regularization Methods
正則化方法(Regularization Methods)是其他算法(通常是回歸算法)的延伸猪瞬,根據(jù)算法的復(fù)雜度對(duì)算法進(jìn)行調(diào)整。正則化方法通常對(duì)簡(jiǎn)單模型予以獎(jiǎng)勵(lì)而對(duì)復(fù)雜算法予以懲罰入篮。這個(gè)延伸對(duì)越簡(jiǎn)單的模型越有利陈瘦,并且更擅長(zhǎng)歸納。我在這里列出它是因?yàn)樗牧餍泻蛷?qiáng)大崎弃。
- Ridge Regression
- Least Absolute Shrinkage and Selection Operator(LASSO)
- 彈性網(wǎng)絡(luò)(Elastic Net)甘晤。
Decision Tree Learning
Decision tree methods(決策樹(shù)方法) 建立了一個(gè)根據(jù)數(shù)據(jù)中實(shí)際值決策的模型。它根據(jù)數(shù)據(jù)的屬性采用樹(shù)狀結(jié)構(gòu)建立決策模型饲做, 決策樹(shù)模型常常用來(lái)解決分類(lèi)和回歸問(wèn)題线婚。常見(jiàn)的算法包括:
- 分類(lèi)及回歸樹(shù)(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)
Bayesian
Bayesian method(貝葉斯方法)是基于貝葉斯定理的一類(lèi)算法塞弊,主要用來(lái)解決分類(lèi)和回歸問(wèn)題。常見(jiàn)算法包括:
- 樸素貝葉斯算法(Naive Bayes)
- 平均單依賴(lài)估計(jì)(Averaged One-Dependence Estimators, AODE)
- Bayesian Belief Network(BBN)游沿。
Kernel Methods
Kernel Method(基于核的算法)中最著名的莫過(guò)于支持向量機(jī)(SVM)了饰抒。 基于核的算法把輸入數(shù)據(jù)映射到一個(gè)高階的向量空間, 在這些高階向量空間里诀黍, 有些分類(lèi)或者回歸問(wèn)題能夠更容易的解決袋坑。 常見(jiàn)的基于核的算法包括:
- 支持向量機(jī)(Support Vector Machine, SVM)
- 徑向基函數(shù)(Radial Basis Function 眯勾,RBF)
- 線性判別分析(Linear Discriminate Analysis 枣宫,LDA)等
Clustering Methods
Clustering(聚類(lèi)),就像回歸一樣吃环,有時(shí)候人們描述的是一類(lèi)問(wèn)題也颤,有時(shí)候描述的是一類(lèi)算法。聚類(lèi)算法通常按照中心點(diǎn)或者分層的方式對(duì)輸入數(shù)據(jù)進(jìn)行歸并郁轻。所以的聚類(lèi)算法都試圖找到數(shù)據(jù)的內(nèi)在結(jié)構(gòu)翅娶,以便按照最大的共同點(diǎn)將數(shù)據(jù)進(jìn)行歸類(lèi)。常見(jiàn)的聚類(lèi)算法包括:
- k-Means算法
- 期望最大化算法(Expectation Maximization好唯, EM)竭沫。
Association Rule Learning
Association rule learning(聯(lián)合規(guī)則學(xué)習(xí))學(xué)習(xí)通過(guò)尋找最能夠解釋數(shù)據(jù)變量之間關(guān)系的規(guī)則,來(lái)找出大量多元數(shù)據(jù)集中有用的關(guān)聯(lián)規(guī)則渠啊,是用來(lái)對(duì)數(shù)據(jù)間提取規(guī)律的方法输吏,通過(guò)這些規(guī)律可以發(fā)現(xiàn)巨量多維空間數(shù)據(jù)之間的聯(lián)系,而這些重要的聯(lián)系可以被組織拿來(lái)使用替蛉。
- Apriori algorithm
- Eclat algorithm
Artificial Neural Networks
Artificial Neural Networks(人工神經(jīng)網(wǎng)絡(luò))模擬生物神經(jīng)網(wǎng)絡(luò)贯溅,是一類(lèi)模式匹配算法。通常用于解決分類(lèi)和回歸問(wèn)題躲查。人工神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的一個(gè)龐大的分支它浅,有幾百種不同的算法。(其中深度學(xué)習(xí)就是其中的一類(lèi)算法镣煮,我們會(huì)單獨(dú)討論)姐霍,重要的人工神經(jīng)網(wǎng)絡(luò)算法包括:
- 感知器神經(jīng)網(wǎng)絡(luò)(Perceptron Neural Network)
- 反向傳遞(Back Propagation)
- Hopfield網(wǎng)絡(luò)(Hopfield Network)
- 自組織映射(Self-Organizing Map, SOM)
- 學(xué)習(xí)矢量量化(Learning Vector Quantization, LVQ)
Deep Learning
Deep Learning(深度學(xué)習(xí))算法是對(duì)人工神經(jīng)網(wǎng)絡(luò)的發(fā)展典唇。 在計(jì)算能力變得日益廉價(jià)的今天镊折,深度學(xué)習(xí)試圖建立大得多也復(fù)雜得多的神經(jīng)網(wǎng)絡(luò)。很多深度學(xué)習(xí)的算法是半監(jiān)督式學(xué)習(xí)算法介衔,這種學(xué)習(xí)的問(wèn)題中有很大的數(shù)據(jù)恨胚,但是其中很少是被標(biāo)記的數(shù)據(jù)。常見(jiàn)的深度學(xué)習(xí)算法包括:
- 受限波爾茲曼機(jī)(Restricted Boltzmann Machine炎咖, RBN)
- Deep Belief Networks(DBN)
- 卷積網(wǎng)絡(luò)(Convolutional Network)
- 堆棧式自動(dòng)編碼器(Stacked Auto-encoders)赃泡。
Dimensionality Reduction
像聚類(lèi)算法一樣寒波,降低維度算法試圖分析數(shù)據(jù)的內(nèi)在結(jié)構(gòu),追求和利用數(shù)據(jù)中的統(tǒng)一的結(jié)構(gòu)升熊,不過(guò)降低維度算法是以非監(jiān)督學(xué)習(xí)的方式試圖利用較少的信息來(lái)歸納或者解釋數(shù)據(jù)俄烁。這對(duì)于對(duì)數(shù)據(jù)進(jìn)行可視化或者簡(jiǎn)化數(shù)據(jù)很有用。常見(jiàn)的算法包括:
- 主成份分析(Principle Component Analysis级野, PCA)
- 偏最小二乘回歸(Partial Least Square Regression页屠,PLS)
- Sammon映射(Sammon Mapping)
- 多維尺度(Multi-Dimensional Scaling, MDS)
- 投影追蹤(Projection Pursuit)
Ensemble Methods
Ensemble Methods(集成算法)用一些相對(duì)較小的學(xué)習(xí)模型獨(dú)立地就同樣的樣本進(jìn)行訓(xùn)練,然后把結(jié)果整合起來(lái)進(jìn)行整體預(yù)測(cè)勺阐。集成算法的主要難點(diǎn)在于究竟集成哪些獨(dú)立的較弱的學(xué)習(xí)模型以及如何把學(xué)習(xí)結(jié)果整合起來(lái)卷中。這是一類(lèi)非常強(qiáng)大的算法矛双,同時(shí)也非常流行渊抽。常見(jiàn)的算法包括:
- Boosting
- Bootstrapped Aggregation(Bagging)
- AdaBoost
- 堆疊泛化(Stacked Generalization, Blending)
- 梯度推進(jìn)機(jī)(Gradient Boosting Machine, GBM)
- 隨機(jī)森林(Random Forest)议忽。
Probabilistic graphical model
Probabilistic graphical model(概率圖模型)使用一類(lèi)圖來(lái)表達(dá)變量相關(guān)關(guān)系的概率模型愤估,它以圖為工具,最常見(jiàn)的是用一個(gè)節(jié)點(diǎn)表示一個(gè)或一組隨機(jī)變量速址,節(jié)點(diǎn)之間的便表示變量間的概率相關(guān)關(guān)系玩焰,即“變量關(guān)系圖”。根據(jù)變的性質(zhì)不同芍锚,概率圖模型大致可分為兩類(lèi):第一類(lèi)是使用有向無(wú)環(huán)圖表示變量之間的依賴(lài)關(guān)系,稱(chēng)為有向圖模型或者貝葉斯網(wǎng)(Bayesian network);第二類(lèi)是使用無(wú)向圖表示變量之間的相關(guān)關(guān)系堕战,稱(chēng)為無(wú)向圖模型或者馬爾可夫網(wǎng)(Markov network)蹋绽。
- 隱馬爾可夫模型(Hidden Markov Model,HMM)
- 馬爾可夫隨機(jī)場(chǎng)(Markov Random Field,MRF)
- 條件隨機(jī)場(chǎng)(Conditional Random Field,CRF)
其他資源
這趟機(jī)器學(xué)習(xí)算法之旅意在讓你對(duì)有什么算法和關(guān)聯(lián)算法的一些工具給你一個(gè)總體了解。
下面是一些其他資源逃魄, 請(qǐng)不要覺(jué)得太多荤西,了解越多算法對(duì)你越有好處,但是對(duì)某些算法有深層次的了解也會(huì)很有用伍俘。
List of Machine Learning Algorithms: 這是維基上的資源邪锌,雖然很全,但我認(rèn)為分類(lèi)不是很好癌瘾。
Machine Learning Algorithms Category: 這也是在維基上的資源觅丰,比上面的略好一點(diǎn),用字母排序柳弄。
CRAN Task View: Machine Learning & Statistical Learning: 機(jī)器學(xué)習(xí)算法的R語(yǔ)言拓展包舶胀,看看對(duì)于你了解別人都在用什么比較好概说。
Top 10 Algorithms in Data Mining: 這是發(fā)表的文章(Published article),現(xiàn)在是一本書(shū)(book)嚣伐,包括了最流行的數(shù)據(jù)挖掘算法糖赔。另一個(gè)基礎(chǔ)的算法列表,這里列出的算法少很多轩端,有助于你深入學(xué)習(xí)放典。