自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

經(jīng)驗(yàn)之談:如何為你的機(jī)器學(xué)習(xí)問(wèn)題選擇合適的算法?

開(kāi)發(fā) 開(kāi)發(fā)工具 算法
隨著機(jī)器學(xué)習(xí)越來(lái)越流行,也出現(xiàn)了越來(lái)越多能很好地處理任務(wù)的算法。本文介紹了如何依靠已有的方法(模型選擇和超參數(shù)調(diào)節(jié))去指導(dǎo)你更好地去選擇算法。

隨著機(jī)器學(xué)習(xí)越來(lái)越流行,也出現(xiàn)了越來(lái)越多能很好地處理任務(wù)的算法。但是,你不可能預(yù)先知道哪個(gè)算法對(duì)你的問(wèn)題是***的。如果你有足夠的時(shí)間,你可以嘗試所有的算法來(lái)找出***的算法。本文介紹了如何依靠已有的方法(模型選擇和超參數(shù)調(diào)節(jié))去指導(dǎo)你更好地去選擇算法。本文作者為華盛頓大學(xué) eScience Institute 和 Institute for Neuroengineering 的數(shù)據(jù)科學(xué)博士后 Michael Beyeler。

如何為你的機(jī)器學(xué)習(xí)問(wèn)題選擇合適的算法?

步驟一:了解基本知識(shí)

在我們深入學(xué)習(xí)之前,我們先重溫基礎(chǔ)知識(shí)。具體來(lái)說(shuō),我們應(yīng)該知道機(jī)器學(xué)習(xí)里面三個(gè)主要類別:監(jiān)督學(xué)習(xí),無(wú)監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。

機(jī)器學(xué)習(xí)里面三個(gè)主要類別

1. 在監(jiān)督學(xué)習(xí)(supervised learning)中,每個(gè)數(shù)據(jù)點(diǎn)都會(huì)獲得標(biāo)注,如類別標(biāo)簽或與數(shù)值相關(guān)的標(biāo)簽。一個(gè)類別標(biāo)簽的例子:將圖片分類為「貓」或「狗」;數(shù)值標(biāo)簽的例子如:預(yù)測(cè)一輛二手車的售價(jià)。監(jiān)督學(xué)習(xí)的目的是通過(guò)學(xué)習(xí)許多有標(biāo)簽的樣本,然后對(duì)新的數(shù)據(jù)做出預(yù)測(cè)。例如,準(zhǔn)確識(shí)別新照片上的動(dòng)物(分類)或者預(yù)測(cè)二手車的售價(jià)(回歸)。

2. 在無(wú)監(jiān)督性學(xué)習(xí)(unsupervised learning)中,數(shù)據(jù)點(diǎn)沒(méi)有相關(guān)的標(biāo)簽。相反,無(wú)監(jiān)督學(xué)習(xí)算法的目標(biāo)是以某種方式組織數(shù)據(jù),然后找出數(shù)據(jù)中存在的內(nèi)在結(jié)構(gòu)。這包括將數(shù)據(jù)進(jìn)行聚類,或者找到更簡(jiǎn)單的方式處理復(fù)雜數(shù)據(jù),使復(fù)雜數(shù)據(jù)看起來(lái)更簡(jiǎn)單。

3. 在強(qiáng)化學(xué)習(xí)(reinforcement learning)中,算法會(huì)針對(duì)每個(gè)數(shù)據(jù)點(diǎn)來(lái)做出決策(下一步該做什么)。這種技術(shù)在機(jī)器人學(xué)中很常用。傳感器一次從外界讀取一個(gè)數(shù)據(jù)點(diǎn),算法必須決定機(jī)器人下一步該做什么。強(qiáng)化學(xué)習(xí)也適合用于物聯(lián)網(wǎng)應(yīng)用。在這里,學(xué)習(xí)算法將收到獎(jiǎng)勵(lì)信號(hào),表明所做決定的好壞,為了獲得***的獎(jiǎng)勵(lì),算法必須修改相應(yīng)的策略。

步驟二:對(duì)問(wèn)題進(jìn)行分類

接下來(lái),我們要對(duì)問(wèn)題進(jìn)行分類,這包含兩個(gè)過(guò)程:

1. 根據(jù)輸入數(shù)據(jù)分類:如果我們的數(shù)據(jù)有標(biāo)簽,這就是一個(gè)監(jiān)督學(xué)習(xí)問(wèn)題;如果數(shù)據(jù)沒(méi)有標(biāo)簽而且我們想找出數(shù)據(jù)的內(nèi)在結(jié)構(gòu),那這就是無(wú)監(jiān)督學(xué)習(xí);如果我們想通過(guò)與環(huán)境交互來(lái)優(yōu)化目標(biāo)函數(shù),這是強(qiáng)化學(xué)習(xí)。

2. 根據(jù)輸出結(jié)果分類:如果模型輸出結(jié)果是一個(gè)數(shù)值,這是回歸問(wèn)題;如果輸出結(jié)果是一個(gè)類別,這是分類問(wèn)題;如果輸出結(jié)果是一組輸入數(shù)據(jù),那這是聚類問(wèn)題。

就是這么簡(jiǎn)單!

更一般地說(shuō),我們可以詢問(wèn)我們自己:我們的算法要實(shí)現(xiàn)什么目標(biāo),然后以此來(lái)找到正確的算法類別。

算法類別

上面的描述包括了幾個(gè)我們還沒(méi)有提到的專業(yè)術(shù)語(yǔ):

  • 分類(classification):當(dāng)使用數(shù)據(jù)來(lái)預(yù)測(cè)類別時(shí),監(jiān)督學(xué)習(xí)也被叫做分類。比如將含有「貓」或「狗」的圖片識(shí)別出來(lái),分類為「貓」或「狗」,這就是二分類問(wèn)題(two-class or binomial classification)。當(dāng)存在更多類別時(shí)(例如預(yù)測(cè)下一屆諾貝爾物理學(xué)家的獲得者是誰(shuí)),這就是所謂的多分類問(wèn)題(multi-class classification)。
  • 回歸(regression):當(dāng)要預(yù)測(cè)數(shù)值時(shí)(比如預(yù)測(cè)股價(jià)),監(jiān)督學(xué)習(xí)也被稱為回歸。
  • 聚類(clustering):聚類或聚類分析(cluster analysis)是無(wú)監(jiān)督學(xué)習(xí)中最常見(jiàn)的方法之一。聚類是將一組對(duì)象以某種方式分組,使得同一組中的數(shù)據(jù)比不同組的數(shù)據(jù)有更多的相似性。
  • 異常檢測(cè)(Anomaly detection):有時(shí)我們需要找出數(shù)據(jù)點(diǎn)中的異常點(diǎn)。例如,在欺詐檢測(cè)中,任何極不尋常的信用卡消費(fèi)都是可疑的;欺詐具有大量不同的形式,而訓(xùn)練樣本又非常少,使得我們不可能完全了解欺詐活動(dòng)應(yīng)該是什么樣。異常檢測(cè)所采取的方法就是了解正常情況下的表現(xiàn)行為(使用非欺詐交易的歷史數(shù)據(jù)),并識(shí)別出顯著不同的表現(xiàn)行為。

步驟三:尋找可用的算法

現(xiàn)在我們已經(jīng)將問(wèn)題進(jìn)行了分類,我們就可以使用我們所掌握的工具來(lái)識(shí)別出適當(dāng)且實(shí)用的算法。

Microsoft Azure 創(chuàng)建了一個(gè)方便的算法列表,其展示了哪些算法可用于哪種類別的問(wèn)題。雖然該表單是針對(duì) Azure 軟件定制的,但它具有普遍的適用性(該表單的 PDF 版本可查閱 http://suo.im/3Ss2zW ):

Microsoft Azure 創(chuàng)建了一個(gè)方便的算法列表

一些值得注意的算法如下:

1. 分類:

  • 支持向量機(jī)(SVM)可用于找到盡可能寬的分類的邊界。當(dāng)兩個(gè)分類不能被清楚地分開(kāi)時(shí),該算法會(huì)找到其所能找到的***邊界。其真正的亮點(diǎn)在于處理特征密集的數(shù)據(jù),比如文本或者基因組(特征數(shù)量> 100)。在這些情況下,除了僅需要適量的記憶外,支持向量機(jī)(SVM)能夠比其它大多數(shù)算法更快且更少過(guò)擬合地進(jìn)行分類。
  • 人工神經(jīng)網(wǎng)絡(luò)是涵蓋二分類、多分類和回歸問(wèn)題的腦啟發(fā)式學(xué)習(xí)算法。它們有***的種類,包括感知器和深度學(xué)習(xí)。它們需要很長(zhǎng)時(shí)間來(lái)訓(xùn)練,但已知其在多種應(yīng)用領(lǐng)域都實(shí)現(xiàn)了當(dāng)前***的表現(xiàn)。
  • logistic 回歸:即便名字中有著「回歸」,但 logistic 回歸實(shí)際上是一種可用于二分類和多分類問(wèn)題的強(qiáng)大工具。它快速且簡(jiǎn)單。事實(shí)上,它使用「S」形曲線而非直線,所以它自然適合用于數(shù)據(jù)分組。logistic 回歸可以給出線性分類邊界,所以如果你要使用它,你一定要確保你能接受線性的近似。
  • 決策樹(shù)和隨機(jī)森林:決策森林(decision forests)(回歸、二分類、多分類),決策叢林(decision jungles)(二分類和多分類)和提升決策樹(shù)(boosted decision trees)(回歸和二分類)都基于決策樹(shù)。這是一個(gè)基本的機(jī)器學(xué)習(xí)概念。決策樹(shù)有許多不同的變體,但它們都在做同樣的事情—將特征空間(feature space)細(xì)分為具有大致相同標(biāo)簽的區(qū)域。這些區(qū)域可以是一致的類別或者恒定值,具體取決于你進(jìn)行的是分類還是回歸。

2. 回歸:

  • 線性回歸是將一條線(或平面、或超平面)擬合到一個(gè)數(shù)據(jù)集上。這是一種主要的工具,簡(jiǎn)單且快速,但對(duì)于一些問(wèn)題而言,它可能過(guò)于簡(jiǎn)單。
  • 貝葉斯線性回歸有著非常理想的特性:它可以避免過(guò)擬合。貝葉斯方法通過(guò)事先對(duì)答案的可能分布做出一些假設(shè)來(lái)做到這一點(diǎn)。這種方法的另一個(gè)副產(chǎn)品是它們具有非常少的參數(shù)。
  • 提升決策樹(shù)回歸(Boosted decision tree regression):如上所述,提升決策樹(shù)(回歸和二分類)均基于決策樹(shù),并通過(guò)將特征空間細(xì)分為具有大致相同標(biāo)簽的區(qū)域發(fā)揮效用。提升決策樹(shù)通過(guò)限制其可以細(xì)分的次數(shù)以及每個(gè)區(qū)域中所允許的最少數(shù)據(jù)點(diǎn)來(lái)避免過(guò)擬合。該算法會(huì)構(gòu)造一個(gè)樹(shù)的序列,其中每棵樹(shù)都會(huì)學(xué)習(xí)彌補(bǔ)之前的樹(shù)留下來(lái)的誤差。這能得到一個(gè)會(huì)使用大量的內(nèi)存的非常精確的學(xué)習(xí)器。

3. 聚類:

  • 層次聚類(Hierarchical Clustering)的目標(biāo)是構(gòu)建聚類的層次結(jié)構(gòu),它有兩種形式。聚集聚類(agglomerative clustering)是一種「自下而上」的方法,其中每個(gè)觀察(observation)在其自己的聚類中開(kāi)始,隨著其在層次中向上移動(dòng),成對(duì)的聚類會(huì)進(jìn)行融合。分裂聚類(divisive clustering)則是一種「自上而下」的方法,其中所有的觀察都從一個(gè)聚類開(kāi)始,并且會(huì)隨觀察向下的層次移動(dòng)而遞歸式地分裂。整體而言,這里的融合和分裂是以一種激進(jìn)的方式確定的。層次聚類的結(jié)果通常表示成樹(shù)狀圖(dendrogram)的形式。
  • k-均值聚類(k-means clustering)的目標(biāo)是將 n 組觀測(cè)值分為 k 個(gè)聚類,其中每個(gè)觀測(cè)值都屬于其接近的那個(gè)均值的聚類——這些均值被用作這些聚類的原型。這會(huì)將數(shù)據(jù)空間分割成 Voronoi 單元。

4. 異常檢測(cè):

  • k 最近鄰(k-nearest neighbors / k-NN)是用于分類和回歸的非參數(shù)方法。在這兩種情況下,輸入都是由特征空間中與 k 最接近的訓(xùn)練樣本組成的。在 k-NN 分類中,輸出是一個(gè)類成員。對(duì)象通過(guò)其 k 最近鄰的多數(shù)投票來(lái)分類,其中對(duì)象被分配給 k 最近鄰中最常見(jiàn)的類(k 為一正整數(shù),通常較小)。在 k-NN 回歸中,輸出為對(duì)象的屬性值。該值為其 k 最近鄰值的平均值。
  • 單類支持向量機(jī)(One-class SVM):使用了非線性支持向量機(jī)的一個(gè)巧妙的擴(kuò)展,單類支持向量機(jī)可以描繪一個(gè)嚴(yán)格概述整個(gè)數(shù)據(jù)集的邊界。遠(yuǎn)在邊界之外的任何新數(shù)據(jù)點(diǎn)都是非正常的,值得注意。

步驟四:實(shí)現(xiàn)所有適用的算法

對(duì)于任何給定的問(wèn)題,通常有多種候選算法可以完成這項(xiàng)工作。那么我們?nèi)绾沃肋x擇哪一個(gè)呢?通常,這個(gè)問(wèn)題的答案并不簡(jiǎn)單,所以我們必須反復(fù)試驗(yàn)。

原型開(kāi)發(fā)***分兩步完成。在***步中,我們希望通過(guò)最小量的特征工程快速且粗糙地實(shí)現(xiàn)一些算法。在這個(gè)階段,我們主要的目標(biāo)是大概了解哪個(gè)算法表現(xiàn)得更好。這個(gè)步驟有點(diǎn)像招聘:我們會(huì)盡可能地尋找可以縮短我們候選算法列表的理由。

一旦我們將列表減少至幾個(gè)候選算法,真正的原型開(kāi)發(fā)開(kāi)始了。理想情況下,我們會(huì)建立一個(gè)機(jī)器學(xué)習(xí)流程,使用一組經(jīng)過(guò)仔細(xì)選擇的評(píng)估標(biāo)準(zhǔn)來(lái)比較每個(gè)算法在數(shù)據(jù)集上的表現(xiàn)。在這個(gè)階段,我們只處理一小部分的算法,所以我們可以把注意力轉(zhuǎn)到真正神奇的地方:特征工程。

步驟五:特征工程

或許比選擇算法更重要的是正確選擇表示數(shù)據(jù)的特征。從上面的列表中選擇合適的算法是相對(duì)簡(jiǎn)單直接的,然而特征工程卻更像是一門(mén)藝術(shù)。

主要問(wèn)題在于我們?cè)噲D分類的數(shù)據(jù)在特征空間的描述極少。利如,用像素的灰度值來(lái)預(yù)測(cè)圖片通常是不佳的選擇;相反,我們需要找到能提高信噪比的數(shù)據(jù)變換。如果沒(méi)有這些數(shù)據(jù)轉(zhuǎn)換,我們的任務(wù)可能無(wú)法解決。利如,在方向梯度直方圖(HOG)出現(xiàn)之前,復(fù)雜的視覺(jué)任務(wù)(像行人檢測(cè)或面部檢測(cè))都是很難做到的。

雖然大多數(shù)特征的有效性需要靠實(shí)驗(yàn)來(lái)評(píng)估,但是了解常見(jiàn)的選取數(shù)據(jù)特征的方法是很有幫助的。這里有幾個(gè)較好的方法:

  • 主成分分析(PCA):一種線性降維方法,可以找出包含信息量較高的特征主成分,可以解釋數(shù)據(jù)中的大多數(shù)方差。
  • 尺度不變特征變換(SIFT):計(jì)算機(jī)視覺(jué)領(lǐng)域中的一種有專利的算法,用以檢測(cè)和描述圖片的局部特征。它有一個(gè)開(kāi)源的替代方法 ORB(Oriented FAST and rotated BRIEF)。
  • 加速穩(wěn)健特征(SURF):SIFT 的更穩(wěn)健版本,有專利。
  • 方向梯度直方圖(HOG):一種特征描述方法,在計(jì)算機(jī)視覺(jué)中用于計(jì)數(shù)一張圖像中局部部分的梯度方向的 occurrence。

更多算法請(qǐng)參考:https://en.wikipedia.org/wiki/Visual_descriptor

當(dāng)然,你也可以想出你自己的特征描述方法。如果你有幾個(gè)候選方法,你可以使用封裝好的方法進(jìn)行智能的特征選擇。

1. 前向搜索:

  • 最開(kāi)始不選取任何特征。
  • 然后選擇最相關(guān)的特征,將這個(gè)特征加入到已有特征;計(jì)算模型的交叉驗(yàn)證誤差,重復(fù)選取其它所有候選特征;***,選取能使你交叉驗(yàn)證誤差最小特征,并放入已選擇的特征之中。
  • 重復(fù),直到達(dá)到期望數(shù)量的特征為止!

2. 反向搜索:

  • 從所有特征開(kāi)始。
  • 先移除最不相關(guān)的特征,然后計(jì)算模型的交叉驗(yàn)證誤差;對(duì)其它所有候選特征,重復(fù)這一過(guò)程;***,移除使交叉驗(yàn)證誤差***的候選特征。
  • 重復(fù),直到達(dá)到期望數(shù)量的特征為止!
  • 使用交叉驗(yàn)證的準(zhǔn)則來(lái)移除和增加特征!

步驟六:超參數(shù)優(yōu)化

***,你可能想優(yōu)化算法的超參數(shù)。例如,主成分分析中的主成分個(gè)數(shù),k 近鄰算法的參數(shù) k,或者是神經(jīng)網(wǎng)絡(luò)中的層數(shù)和學(xué)習(xí)速率。***的方法是使用交叉驗(yàn)證來(lái)選擇。

一旦你運(yùn)用了上述所有方法,你將有很好的機(jī)會(huì)創(chuàng)造出強(qiáng)大的機(jī)器學(xué)習(xí)系統(tǒng)。但是,你可能也猜到了,成敗在于細(xì)節(jié),你可能不得不反復(fù)實(shí)驗(yàn),***才能走向成功。

原文:http://www.askaswiss.com/2017/02/how-to-choose-right-algorithm-for-your-machine-learning-problem.html

【本文是51CTO專欄機(jī)構(gòu)機(jī)器之心的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2009-11-09 17:06:38

WCF選擇綁定

2009-12-23 10:07:57

學(xué)習(xí)WPF

2010-04-30 14:31:58

Unix系統(tǒng)

2020-01-10 18:25:00

Go語(yǔ)言JavaScript編程語(yǔ)言

2024-05-23 16:48:42

機(jī)器學(xué)習(xí)算法人工智能

2010-08-09 14:28:04

職業(yè)生涯

2022-03-17 17:08:05

機(jī)器學(xué)習(xí)算法類型

2012-05-23 09:43:59

Linux升級(jí)經(jīng)驗(yàn)

2017-05-25 11:14:21

機(jī)器學(xué)習(xí)算法神經(jīng)網(wǎng)絡(luò)

2017-05-25 13:37:46

機(jī)器學(xué)習(xí)算法神經(jīng)網(wǎng)絡(luò)

2020-05-26 18:35:00

機(jī)器學(xué)習(xí)人工智能AI

2010-07-26 15:36:59

CCNP

2023-11-28 12:08:56

機(jī)器學(xué)習(xí)算法人工智能

2010-05-10 18:18:46

Unix系統(tǒng)

2009-12-17 18:12:31

Ruby框架應(yīng)用

2010-04-29 12:09:42

Unix服務(wù)器

2012-07-06 15:31:29

Linux系統(tǒng)

2009-12-09 16:58:03

PHP strtoti

2010-03-02 17:48:35

WCF尋址報(bào)頭

2018-08-03 10:30:16

算法回歸機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)