本文列出了常用的機(jī)器學(xué)習(xí)算法的基本概念、主要特點(diǎn)和適用場(chǎng)景,希望可以在大家選擇合適的機(jī)器學(xué)習(xí)算法解決實(shí)際問(wèn)題時(shí)起到一點(diǎn)參考作用。本文主要提及的機(jī)器學(xué)習(xí)算法包括:
·K近鄰(KNN)算法
·樸素貝葉斯算法
·決策樹(shù)算法
·SVM算法
·adaboost算法
·EM算法(期望最大化算法)
下面我們將具體展開(kāi)介紹:
?
NO.1
KNN算法
KNN算法的基本介紹:假若一個(gè)特征空間中大多數(shù)的樣本屬于某一個(gè)類別,則在這個(gè)特征空間中,k個(gè)最相似的樣本也屬于這個(gè)類別。 該算法由兩個(gè)步驟組成:(1)對(duì)于一個(gè)給定的搜索訓(xùn)練集按一定距離度量,來(lái)找到一個(gè) 的值。(2)在這個(gè)KNN當(dāng)中,根據(jù)大多數(shù)分為一致的類來(lái)進(jìn)行分類。 用以下這幅圖可以很好的解釋kNN算法: 不同形狀的點(diǎn),為不同標(biāo)簽的點(diǎn)。其中綠色點(diǎn)為未知標(biāo)簽的數(shù)據(jù)點(diǎn)?,F(xiàn)在要對(duì)綠色點(diǎn)進(jìn)行預(yù)測(cè)。由圖不難得出: 如果k=3,那么離綠色點(diǎn)最近的有2個(gè)紅色三角形和1個(gè)藍(lán)色的正方形,這3個(gè)點(diǎn)投票,于是綠色的這個(gè)待分類點(diǎn)屬于紅色的三角形。 如果k=5,那么離綠色點(diǎn)最近的有2個(gè)紅色三角形和3個(gè)藍(lán)色的正方形,這5個(gè)點(diǎn)投票,于是綠色的這個(gè)待分類點(diǎn)屬于藍(lán)色的正方形。
K近鄰(KNN)算法優(yōu)點(diǎn):
算法原理簡(jiǎn)單,容易理解,也較容易實(shí)現(xiàn)。
不需要進(jìn)行訓(xùn)練,只需要保存訓(xùn)練樣本和標(biāo)簽。
不易受小錯(cuò)誤概率的影響。經(jīng)理論證明,最近鄰的漸進(jìn)錯(cuò)誤率最壞時(shí)不超過(guò)兩倍的貝葉斯錯(cuò)誤率,最好時(shí)接近或達(dá)到貝葉斯錯(cuò)誤率。
K近鄰(KNN)算法缺點(diǎn):
K的選擇不固定。
預(yù)測(cè)結(jié)果容易受到噪聲數(shù)據(jù)的影響。
當(dāng)樣本不平衡時(shí),新樣本的類別偏向訓(xùn)練樣本中數(shù)量占優(yōu)的類別,容易導(dǎo)致預(yù)測(cè)錯(cuò)誤。
當(dāng)數(shù)據(jù)量較大時(shí),具有較高的計(jì)算復(fù)雜度和內(nèi)存消耗,因?yàn)閷?duì)每一個(gè)待分類的文本,都要計(jì)算它到全體已知樣本的距離,才能求得它的K個(gè)最近鄰。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來(lái)確定所屬類別的,因此對(duì)于類域的交叉或重疊較多的待分樣本集來(lái)說(shuō),KNN方法較其他方法更為適合。在實(shí)際應(yīng)用當(dāng)中,KNN算法在人臉識(shí)別、文字識(shí)別、醫(yī)學(xué)圖像處理等領(lǐng)域可以取得良好的分類效果。
K近鄰(KNN)算法需要注意的問(wèn)題:
數(shù)據(jù)特征之間量綱不統(tǒng)一時(shí),需要對(duì)數(shù)據(jù)進(jìn)行歸一化處理,否則會(huì)出現(xiàn)大數(shù)吃小數(shù)的問(wèn)題;
數(shù)據(jù)之間的距離計(jì)算通常采用歐式距離;
KNN算法中K值的選取會(huì)對(duì)結(jié)果產(chǎn)生較大的影響,一般k值要小于訓(xùn)練樣本數(shù)據(jù)的平方根;
通常采用交叉驗(yàn)證法來(lái)選擇最優(yōu)的K值。
NO.2
樸素貝葉斯算法
樸素貝葉斯分類是一種十分簡(jiǎn)單的分類算法,即對(duì)于給出的待分類項(xiàng),求解在此項(xiàng)出現(xiàn)的條件下各個(gè)類別出現(xiàn)的概率,哪個(gè)最大,就認(rèn)為此待分類項(xiàng)屬于哪個(gè)類別。 以判定外國(guó)友人為例做一個(gè)形象的比喻。 若我們走在街上看到一個(gè)黑皮膚的外國(guó)友人,讓你來(lái)猜這位外國(guó)友人來(lái)自哪里。十有八九你會(huì)猜是從非洲來(lái)的,因?yàn)楹谄つw人種中非洲人的占比最多,雖然黑皮膚的外國(guó)人也有可能是美洲人或者是亞洲人。但是在沒(méi)有其它可用信息幫助我們判斷的情況下,我們會(huì)選擇可能出現(xiàn)的概率最高的類別,這就是樸素貝葉斯的基本思想。
下圖為樸素貝葉斯算法的流程:
? ?
樸素貝葉斯算法注意點(diǎn):
當(dāng)特征屬性值的值類型不是離散值而是連續(xù)值的時(shí)候,需要通過(guò)高斯分布做概率的計(jì)算;
為了避免統(tǒng)計(jì)概率中出現(xiàn)概率為0的情況,可以引入Laplace校準(zhǔn),它的思想非常簡(jiǎn)單,就是對(duì)沒(méi)類別下所有劃分的計(jì)數(shù)加1。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
1. 樸素貝葉斯算法對(duì)待預(yù)測(cè)樣本進(jìn)行預(yù)測(cè),過(guò)程簡(jiǎn)單速度快; 2. 對(duì)于多分類問(wèn)題也同樣很有效,復(fù)雜度也不會(huì)有大程度上升; 3. 在分布獨(dú)立這個(gè)假設(shè)成立的情況下,貝葉斯分類器效果奇好,會(huì)略勝于邏輯回歸,同時(shí)需要的樣本量也更少一點(diǎn)。 4. 對(duì)于類別類的輸入特征變量,效果非常好。對(duì)于數(shù)值型變量特征,我們是默認(rèn)它符合正態(tài)分布的。
主要應(yīng)用領(lǐng)域
文本分類/垃圾文本過(guò)濾/情感判別:多分類較為簡(jiǎn)單,同時(shí)在文本數(shù)據(jù)中,分布獨(dú)立這個(gè)假設(shè)基本是成立的。垃圾文本過(guò)濾(比如垃圾郵件識(shí)別)和情感分析(微博上的褒貶情緒)用樸素貝葉斯也通常能取得很好的效果。
多分類實(shí)時(shí)預(yù)測(cè):對(duì)于文本相關(guān)的多分類實(shí)時(shí)預(yù)測(cè),樸素貝葉斯算法被廣泛應(yīng)用,簡(jiǎn)單又高效。
推薦系統(tǒng):樸素貝葉斯和協(xié)同過(guò)濾(Collaborative Filtering)是一對(duì)好搭檔,協(xié)同過(guò)濾是強(qiáng)相關(guān)性,但是泛化能力略弱,樸素貝葉斯和協(xié)同過(guò)濾一起,能增強(qiáng)推薦的覆蓋度和效果。
NO.3
決策樹(shù)算法
?
決策樹(shù)是一個(gè)樹(shù)結(jié)構(gòu)(可以是二叉樹(shù)或非二叉樹(shù)),其每個(gè)非葉節(jié)點(diǎn)表示一個(gè)特征屬性上的測(cè)試,每個(gè)分支代表這個(gè)特征屬性在某個(gè)值域上的輸出,而每個(gè)葉節(jié)點(diǎn)存放一個(gè)輸出類別。使用決策樹(shù)進(jìn)行決策的過(guò)程就是從根節(jié)點(diǎn)開(kāi)始,測(cè)試待分類項(xiàng)中相應(yīng)的特征屬性,并按照其值選擇輸出分支,直到到達(dá)葉子節(jié)點(diǎn),將葉子節(jié)點(diǎn)存放的類別作為決策結(jié)果。
決策樹(shù)學(xué)習(xí)通常包含這幾個(gè)方面:特征選擇、決策樹(shù)生成、決策樹(shù)剪枝、缺失值/異常值處理、決策樹(shù)集成學(xué)習(xí)。
決策樹(shù)算法注意點(diǎn):
決策樹(shù)算法非常容易過(guò)擬合,導(dǎo)致泛化能力不強(qiáng)??梢酝ㄟ^(guò)設(shè)置節(jié)點(diǎn)最少樣本數(shù)量和限制決策樹(shù)深度來(lái)改進(jìn)。
決策樹(shù)會(huì)因?yàn)闃颖景l(fā)生一點(diǎn)點(diǎn)的改動(dòng),就會(huì)導(dǎo)致樹(shù)結(jié)構(gòu)的劇烈改變。這個(gè)可以通過(guò)集成學(xué)習(xí)之類的方法解決。
尋找最優(yōu)的決策樹(shù)是一個(gè)NP難的問(wèn)題,一般通過(guò)啟發(fā)式方法,容易陷入局部最優(yōu)。可以通過(guò)集成學(xué)習(xí)之類的方法來(lái)改善。
有些比較復(fù)雜的關(guān)系,決策樹(shù)很難學(xué)習(xí),比如異或,一般這種關(guān)系可以換神經(jīng)網(wǎng)絡(luò)分類方法來(lái)解決。
如果某些特征的樣本比例過(guò)大,生成決策樹(shù)容易偏向于這些特征。這個(gè)可以通過(guò)調(diào)節(jié)樣本權(quán)重來(lái)改善(特別注意,在模型訓(xùn)練過(guò)程中,某些特征的權(quán)重排序很大,需要手動(dòng)調(diào)節(jié)樣本的權(quán)重來(lái)影響特征的權(quán)重,主要有樣本的均衡,樣本的過(guò)濾,樣本權(quán)重的調(diào)節(jié))。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
相比其他算法,決策樹(shù)有一個(gè)非常明顯的優(yōu)勢(shì),就是可以很直觀地進(jìn)行可視化,分類規(guī)則好理解,讓非專業(yè)的人也容易看明白,既可以解決分類問(wèn)題(對(duì)應(yīng)的目標(biāo)值是類別型的數(shù)據(jù)),也能解決回歸問(wèn)題(輸出結(jié)果也可以是連續(xù)的數(shù)值),目前廣泛應(yīng)用于語(yǔ)音識(shí)別、人臉識(shí)別、醫(yī)療診斷、模式識(shí)別等領(lǐng)域。
NO.4
SVM算法
支持向量機(jī),support vector machine,簡(jiǎn)稱SVM,是經(jīng)典機(jī)器學(xué)習(xí)的一個(gè)重要分類算法,用于完成數(shù)據(jù)分類。svm算法通過(guò)找出一個(gè)決策超平面(二維空間指直線,三維空間指平面,超過(guò)三維的就是超平面了),將已有訓(xùn)練數(shù)據(jù)集劃分開(kāi),然后對(duì)于新數(shù)據(jù),根據(jù)數(shù)據(jù)是位于超平面的哪一側(cè)完成判斷,得到新數(shù)據(jù)的分類。 因此基礎(chǔ)的svm算法是一個(gè)二分類算法,至于多分類任務(wù),多次使用svm即可解決。 下圖是一組支持向量機(jī)實(shí)現(xiàn)分類的示例。
SVM算法注意點(diǎn):
SVM可以執(zhí)行線性非線性的分類、回歸、異常值檢測(cè)。適用于中小型復(fù)雜數(shù)據(jù)集;
SVM對(duì)特征縮放很敏感,可以在輸入之前采用StandardScaler處理;
如果SVM模型過(guò)擬合,可以通過(guò)降低C來(lái)進(jìn)行正則化;
LinearSVC灰度偏執(zhí)正則化,需要減去平均值,StandardScaler會(huì)自動(dòng)處理;
處理非線性數(shù)據(jù)集的方法之一是添加更多的特征,比如多項(xiàng)式特征。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
支持向量機(jī)(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解決小樣本、非線性及高維模式識(shí)別中表現(xiàn)出許多特有的優(yōu)勢(shì),但它具有以下缺點(diǎn):
無(wú)法應(yīng)對(duì)大規(guī)模訓(xùn)練樣本;
難以解決多分類問(wèn)題;
對(duì)參數(shù)及核函數(shù)選擇非常敏感。
支持向量機(jī)的常見(jiàn)適用范圍如下:
1. 網(wǎng)絡(luò)完全
傳統(tǒng)的網(wǎng)絡(luò)入侵檢測(cè)方法大多采用密碼簽名的方法。在進(jìn)行入侵檢測(cè)方面,機(jī)器學(xué)習(xí)技術(shù)可以幫助我們進(jìn)行網(wǎng)絡(luò)流量的分析,在這里支持向量機(jī)具有檢測(cè)速度快,分類精度高等特點(diǎn),可以幫助安全人員識(shí)別不同類別的網(wǎng)絡(luò)攻擊,例如掃描和欺詐網(wǎng)絡(luò)。
2. 人臉識(shí)別
SVM可以將圖像部分分為人臉和非人臉。它包含nxn像素的訓(xùn)練數(shù)據(jù),具有兩類人臉(+1)和非人臉(-1),然后從每個(gè)像素中提取特征作為人臉和非人臉。根據(jù)像素亮度在人臉周圍創(chuàng)建邊界,并使用相同的過(guò)程對(duì)每個(gè)圖像進(jìn)行分類。
3. 文本和超文本分類
SVM可以實(shí)現(xiàn)對(duì)兩種類型的模型進(jìn)行文本和超文本分類,它主要通過(guò)使用訓(xùn)練數(shù)據(jù)將文檔分類為不同的類別,如新聞文章、電子郵件和網(wǎng)頁(yè)。 對(duì)于每個(gè)文檔,計(jì)算一個(gè)分?jǐn)?shù)并將其與預(yù)定義的閾值進(jìn)行比較。當(dāng)文檔的分?jǐn)?shù)超過(guò)閾值時(shí),則將文檔分類為確定的類別。如果它不超過(guò)閾值,則將其視為一般文檔。 通過(guò)計(jì)算每個(gè)文檔的分?jǐn)?shù)并將其與學(xué)習(xí)的閾值進(jìn)行比較來(lái)對(duì)新實(shí)例進(jìn)行分類。
4.?蛋白質(zhì)折疊和遠(yuǎn)程同源檢測(cè)
蛋白質(zhì)遠(yuǎn)程同源性檢測(cè)是計(jì)算生物學(xué)中的一個(gè)關(guān)鍵問(wèn)題。SVM算法是遠(yuǎn)程同源檢測(cè)最有效的方法之一。這些方法的性能取決于蛋白質(zhì)序列的建模方式。
NO.5
adaboost算法
在了解adaboost算法之前,我們先來(lái)重溫一下三個(gè)臭皮匠頂個(gè)諸葛亮的故事:諸葛亮帶兵過(guò)江,江水湍急,而且里面多是突出水面的礁石。普通竹筏和船只很難過(guò)去,打頭陣的船只都被水沖走觸礁沉沒(méi),諸葛亮一籌莫展,也想不出好辦法,入夜來(lái)了3個(gè)做牛皮活的皮匠獻(xiàn)策。告訴諸葛亮買牛,然后把牛從肚皮下整張剝下來(lái),封好切口后讓士兵往里吹氣,做成牛皮筏子,這樣的筏子不怕撞,諸葛亮按此方法嘗試并順利過(guò)江。 Adaboost就是這樣一種“三個(gè)臭皮匠頂個(gè)諸葛亮”的迭代算法,其核心思想是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來(lái),構(gòu)成一個(gè)更強(qiáng)的最終分類器(強(qiáng)分類器)。
adaboost算法注意點(diǎn):
AdaBoost迭代次數(shù)也就是弱分類器數(shù)目不太好設(shè)定,可以使用交叉驗(yàn)證來(lái)進(jìn)行確定;
數(shù)據(jù)不平衡導(dǎo)致分類精度下降;
訓(xùn)練比較耗時(shí),每次重新選擇當(dāng)前分類器最好切分點(diǎn);
對(duì)異常樣本敏感,異常樣本在迭代中可能會(huì)獲得較高的權(quán)重,影響最終的強(qiáng)學(xué)習(xí)器的預(yù)測(cè)準(zhǔn)確性。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
在機(jī)器學(xué)習(xí)的算法中,Adaboost 算法是一種比較重要且通用的用于特征分類的算法,在圖像檢索和人臉表情識(shí)別等問(wèn)題中都有普遍應(yīng)用。從現(xiàn)狀看,人們對(duì)Adaboost 算法的研究及應(yīng)用主要集中用于分類問(wèn)題上,另外在某些回歸問(wèn)題上也有所涉及,比如兩類問(wèn)題、多類單標(biāo)簽問(wèn)題、多類多標(biāo)簽問(wèn)題和回歸問(wèn)題。 Adaboost 在機(jī)器學(xué)習(xí)領(lǐng)域中十分重要,它是一種提高任意給定學(xué)習(xí)算法準(zhǔn)確度的方法。也就是說(shuō),Adaboost 算法為其他算法提供了一種框架結(jié)構(gòu),而其他算法只在其中作為子分類器,因此 Adaboost 算法可以運(yùn)用在許多方面的實(shí)踐上。
通過(guò) Adaboost 算法: 1. 可以實(shí)現(xiàn)手寫體字符識(shí)別,運(yùn)用到了許多輸入設(shè)備上,如流行的觸屏手機(jī)上的手寫輸入、筆記本電腦的手寫輸入、掃描儀掃面文字轉(zhuǎn)化為電子文檔。 2. 圖像識(shí)別,如人臉識(shí)別、google 上的圖片檢索功能(很方便地找到想要的清晰度更高的圖片)。我們實(shí)現(xiàn)了語(yǔ)音識(shí)別,現(xiàn)在的WIN7上都有了一個(gè)語(yǔ)音識(shí)別的功能,我們能夠讓計(jì)算機(jī)知道我們說(shuō)了什么話,并通過(guò)機(jī)器自動(dòng)學(xué)習(xí)提高語(yǔ)音識(shí)別的精度,聲音輸入和聲控很可能在未來(lái)普及。 3. Adaboost 算法還能做文本分類和醫(yī)療診斷等等。
NO.6
EM算法
最大期望算法(Expectation-maximization algorithm,又譯為期望最大化算法),是在概率模型中尋找參數(shù)最大似然估計(jì)或者最大后驗(yàn)估計(jì)的算法,其中概率模型依賴于無(wú)法觀測(cè)的隱性變量。 以打獵為例做一個(gè)形象的比喻: 比如你一位同學(xué)和一位獵人一起外出打獵,一只野兔從前方竄過(guò)。只聽(tīng)一聲槍響,野兔應(yīng)聲到下,如果要你推測(cè),這一發(fā)命中的子彈是誰(shuí)打的?你就會(huì)想,只發(fā)一槍便打中,由于獵人命中的概率一般大于你那位同學(xué)命中的概率,從而推斷出這一槍應(yīng)該是獵人射中的。 這個(gè)例子所作的推斷就體現(xiàn)了最大似然法的基本思想。 多數(shù)情況下我們是根據(jù)已知條件來(lái)推算結(jié)果,而最大似然估計(jì)是已經(jīng)知道了結(jié)果,然后尋求使該結(jié)果出現(xiàn)的可能性最大的條件,以此作為估計(jì)值。
EM算法注意點(diǎn):
對(duì)初始化數(shù)據(jù)敏感。
EM算法計(jì)算復(fù)雜,收斂較慢,不適于大規(guī)模數(shù)據(jù)集和高維數(shù)據(jù)。
當(dāng)所要優(yōu)化的函數(shù)不是凸函數(shù)時(shí),EM算法容易給出局部最優(yōu)解,而不是全局最優(yōu)解。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
1. K-Means聚類
K-Means是EM算法的一個(gè)特列。在K-Means聚類時(shí),每個(gè)聚類簇的質(zhì)心是隱含數(shù)據(jù)。我們會(huì)假設(shè)K個(gè)初始化質(zhì)心,即EM算法的E步;然后計(jì)算得到每個(gè)樣本最近的質(zhì)心,并把樣本聚類到最近的這個(gè)質(zhì)心,即EM算法的M步。重復(fù)這個(gè)E步和M步,直到質(zhì)心不再變化為止,這樣就完成了K-Means聚類。
2. 高斯混合模型
高斯混合模型(Gaussian Misture Model)的參數(shù)估計(jì)是EM算法的一個(gè)重要應(yīng)用。高斯混合模型應(yīng)用廣泛,在許多情況下, EM算法是學(xué)習(xí)高斯混合模型的有效方法。
3. 隱馬爾科夫模型
EM算法的另一個(gè)重要應(yīng)用是隱馬爾科夫模型。
算法的選擇取決于許多因素,比如問(wèn)題陳述、預(yù)期的輸出類型、數(shù)據(jù)的類型和大小、可用的計(jì)算時(shí)間、特征數(shù)量以及數(shù)據(jù)中的觀測(cè)點(diǎn)等,以上內(nèi)容僅供大家在選擇算法時(shí)作為參考,實(shí)踐和運(yùn)行才是評(píng)估算法的最佳標(biāo)準(zhǔn)。
編輯:黃飛
?
評(píng)論
查看更多