機(jī)器學(xué)習(xí)的三種特點(diǎn)和算法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
沒有哪一種算法能夠適用所有情況,只有針對(duì)某一種問題更有用的算法。
機(jī)器學(xué)習(xí)算法不會(huì)要求一個(gè)問題被 100%求解,取而代之的是把問題轉(zhuǎn)化為最優(yōu)化的問題,用不同的算法優(yōu)化問題,從而比較得到盡量好的結(jié)果。因此對(duì)于數(shù)據(jù)科學(xué)家來(lái)說(shuō),理解算法顯得格外重要,理解不同算法的思想可以幫助數(shù)據(jù)科學(xué)家更從容地面對(duì)不同的應(yīng)用場(chǎng)景。
本文列出了常用的機(jī)器學(xué)習(xí)算法的基本概念、主要特點(diǎn)和適用場(chǎng)景,希望可以在大家選擇合適的機(jī)器學(xué)習(xí)算法解決實(shí)際問題時(shí)起到一點(diǎn)參考作用。
本文主要提及的機(jī)器學(xué)習(xí)算法包括:
K近鄰(KNN)算法
樸素貝葉斯算法
決策樹算法
SVM算法
adaboost算法
EM算法(期望最大化算法)
下面我們將具體展開介紹。
1.K近鄰(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)算法需要注意的問題:
·數(shù)據(jù)特征之間量綱不統(tǒng)一時(shí),需要對(duì)數(shù)據(jù)進(jìn)行歸一化處理,否則會(huì)出現(xiàn)大數(shù)吃小數(shù)的問題;
·數(shù)據(jù)之間的距離計(jì)算通常采用歐式距離;
·kNN算法中K值的選取會(huì)對(duì)結(jié)果產(chǎn)生較大的影響,一般k值要小于訓(xùn)練樣本數(shù)據(jù)的平方根;
·通常采用交叉驗(yàn)證法來(lái)選擇最優(yōu)的K值。
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ó)人也有可能是美洲人或者是亞洲人。但是在沒有其它可用信息幫助我們判斷的情況下,我們會(huì)選擇可能出現(xiàn)的概率最高的類別,這就是樸素貝葉斯的基本思想。
下圖為樸素貝葉斯算法的流程:
樸素貝葉斯算法注意點(diǎn):
·當(dāng)特征屬性值的值類型不是離散值而是連續(xù)值的時(shí)候,需要通過(guò)高斯分布做概率的計(jì)算;
·為了避免統(tǒng)計(jì)概率中出現(xiàn)概率為0的情況,可以引入Laplace校準(zhǔn),它的思想非常簡(jiǎn)單,就是對(duì)沒類別下所有劃分的計(jì)數(shù)加1。
適用場(chǎng)景及主要應(yīng)用領(lǐng)域:
1. 樸素貝葉斯算法對(duì)待預(yù)測(cè)樣本進(jìn)行預(yù)測(cè),過(guò)程簡(jiǎn)單速度快;
2. 對(duì)于多分類問題也同樣很有效,復(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)推薦的覆蓋度和效果。深度學(xué)習(xí)(Deep Learning)是人工神經(jīng)網(wǎng)絡(luò)研究的前沿領(lǐng)域。深度學(xué)習(xí)方法是具有多級(jí)特征表示的表示學(xué)習(xí)方法,通過(guò)組合簡(jiǎn)單的非線性模塊,從原始輸入開始逐層學(xué)習(xí)出更高級(jí)、更抽象的特征表示。深度學(xué)習(xí)的典型應(yīng)用包括計(jì)算機(jī)視覺領(lǐng)域的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN),自然語(yǔ)言處理領(lǐng)域的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN),進(jìn)行無(wú)監(jiān)督特征學(xué)習(xí)的自編碼器(Auto-Encoder)等。 我們?cè)谏疃葘W(xué)習(xí)領(lǐng)域的研究工作分為理論研究和應(yīng)用研究?jī)蓚€(gè)方面:理論研究的內(nèi)容是設(shè)計(jì)新的深度學(xué)習(xí)模型和對(duì)現(xiàn)有的模型進(jìn)行分析改進(jìn);應(yīng)用研究的內(nèi)容是將深度學(xué)習(xí)方法應(yīng)用于計(jì)算機(jī)視覺、機(jī)器人設(shè)計(jì)、數(shù)據(jù)挖掘等實(shí)際任務(wù)中,以及參與ImageNet等競(jìng)賽活動(dòng)。深度學(xué)習(xí)的實(shí)質(zhì)是深度神經(jīng)網(wǎng)絡(luò),一般的神經(jīng)網(wǎng)絡(luò)有 3~4 層,而深度神經(jīng)網(wǎng)絡(luò)包含上百層,深度學(xué)習(xí)的提出和發(fā)展歸功于大數(shù)據(jù)的出現(xiàn)和計(jì)算性能的提高。
深度學(xué)習(xí)和傳統(tǒng)機(jī)器學(xué)習(xí)的共同點(diǎn)是對(duì)數(shù)據(jù)進(jìn)行分析,不同之處在于:
傳統(tǒng)機(jī)器學(xué)習(xí)需要人工對(duì)數(shù)據(jù)進(jìn)行特征提取,然后應(yīng)用相關(guān)算法對(duì)數(shù)據(jù)進(jìn)行分類,利用已有數(shù)據(jù)特征和數(shù)據(jù)標(biāo)簽(或者沒有數(shù)據(jù)標(biāo)簽)對(duì)數(shù)學(xué)模型進(jìn)行訓(xùn)練以達(dá)到最優(yōu),繼而對(duì)新數(shù)據(jù)進(jìn)行分類和預(yù)測(cè)。
深度學(xué)習(xí)不需要人工對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行特征提取,直接利用深度神經(jīng)網(wǎng)絡(luò)對(duì)數(shù)據(jù)特征進(jìn)行自學(xué)習(xí)、分類,因此人類也不知道機(jī)器是如何進(jìn)行學(xué)習(xí)的。
圖2是傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)過(guò)程的區(qū)別。
機(jī)器學(xué)習(xí)算法的基本概念
機(jī)器學(xué)習(xí)算法可以看作是一種從輸入到輸出的映射函數(shù),它可以根據(jù)給定的數(shù)據(jù)集(訓(xùn)練集)來(lái)調(diào)整自身的參數(shù),使得輸出能夠盡可能地符合預(yù)期的結(jié)果(標(biāo)簽或目標(biāo)函數(shù))。機(jī)器學(xué)習(xí)算法的核心問題是如何找到最優(yōu)的參數(shù),以及如何評(píng)估參數(shù)的好壞。
為了解決這些問題,機(jī)器學(xué)習(xí)算法通常需要以下幾個(gè)要素:
模型:模型是機(jī)器學(xué)習(xí)算法的數(shù)學(xué)表達(dá)式,它定義了輸入和輸出之間的關(guān)系,以及參數(shù)的含義和范圍。模型可以是線性的、非線性的、概率的、確定性的等等,不同的模型有不同的復(fù)雜度和適用性。
目標(biāo)函數(shù):目標(biāo)函數(shù)是機(jī)器學(xué)習(xí)算法的優(yōu)化目標(biāo),它衡量了模型輸出和預(yù)期結(jié)果之間的差距,也稱為損失函數(shù)或代價(jià)函數(shù)。目標(biāo)函數(shù)可以是平方誤差、交叉熵、對(duì)數(shù)似然等等,不同的目標(biāo)函數(shù)有不同的性質(zhì)和優(yōu)缺點(diǎn)。
優(yōu)化算法:優(yōu)化算法是機(jī)器學(xué)習(xí)算法的求解方法,它通過(guò)迭代更新參數(shù)來(lái)最小化或最大化目標(biāo)函數(shù),也稱為學(xué)習(xí)算法或訓(xùn)練算法。優(yōu)化算法可以是梯度下降、牛頓法、隨機(jī)梯度下降等等,不同的優(yōu)化算法有不同的收斂速度和穩(wěn)定性。
超參數(shù):超參數(shù)是機(jī)器學(xué)習(xí)算法中需要人為設(shè)定的參數(shù),它們影響了模型的結(jié)構(gòu)、復(fù)雜度和泛化能力,也稱為調(diào)節(jié)參數(shù)或元參數(shù)。超參數(shù)可以是學(xué)習(xí)率、正則化系數(shù)、隱藏層個(gè)數(shù)等等,不同的超參數(shù)有不同的敏感度和范圍。
機(jī)器學(xué)習(xí)算法的分類
機(jī)器學(xué)習(xí)算法可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行分類,其中最常見的是根據(jù)學(xué)習(xí)方式和任務(wù)類型進(jìn)行分類。
根據(jù)學(xué)習(xí)方式分類
根據(jù)學(xué)習(xí)方式,機(jī)器學(xué)習(xí)算法可以分為以下三類:
監(jiān)督學(xué)習(xí):監(jiān)督學(xué)習(xí)是指給定輸入和輸出之間存在明確的對(duì)應(yīng)關(guān)系,也就是說(shuō),每個(gè)輸入都有一個(gè)正確的或期望的輸出。監(jiān)督學(xué)習(xí)的目標(biāo)是讓模型能夠從訓(xùn)練集中學(xué)習(xí)到這種對(duì)應(yīng)關(guān)系,并能夠泛化到未知的輸入上。監(jiān)督學(xué)習(xí)的典型應(yīng)用有分類、回歸、序列標(biāo)注等。
無(wú)監(jiān)督學(xué)習(xí):無(wú)監(jiān)督學(xué)習(xí)是指給定輸入之間不存在明確的對(duì)應(yīng)關(guān)系,也就是說(shuō),沒有預(yù)先定義好的輸出或標(biāo)簽。無(wú)監(jiān)督學(xué)習(xí)的目標(biāo)是讓模型能夠從訓(xùn)練集中發(fā)現(xiàn)輸入數(shù)據(jù)的內(nèi)在結(jié)構(gòu)或規(guī)律,并能夠?qū)ξ粗妮斎脒M(jìn)行合理的處理。無(wú)監(jiān)督學(xué)習(xí)的典型應(yīng)用有聚類、降維、生成等。
強(qiáng)化學(xué)習(xí):強(qiáng)化學(xué)習(xí)是指給定輸入和輸出之間存在動(dòng)態(tài)的交互關(guān)系,也就是說(shuō),每個(gè)輸入都會(huì)產(chǎn)生一個(gè)反饋或獎(jiǎng)勵(lì)。強(qiáng)化學(xué)習(xí)的目標(biāo)是讓模型能夠從訓(xùn)練集中學(xué)習(xí)到如何根據(jù)當(dāng)前的狀態(tài)選擇最優(yōu)的行為,并能夠最大化累積的獎(jiǎng)勵(lì)。強(qiáng)化學(xué)習(xí)的典型應(yīng)用有控制、游戲、導(dǎo)航等。
根據(jù)任務(wù)類型分類
根據(jù)任務(wù)類型,機(jī)器學(xué)習(xí)算法可以分為以下四類:
分類:分類是指將輸入數(shù)據(jù)分配到預(yù)先定義好的類別中,也就是說(shuō),輸出是離散的或有限的。分類可以是二分類(只有兩個(gè)類別)或多分類(有多個(gè)類別)。分類的典型應(yīng)用有垃圾郵件檢測(cè)、人臉識(shí)別、情感分析等。
回歸:回歸是指預(yù)測(cè)輸入數(shù)據(jù)的連續(xù)值或?qū)崝?shù)值,也就是說(shuō),輸出是連續(xù)的或無(wú)限的?;貧w可以是線性回歸(輸出和輸入之間存在線性關(guān)系)或非線性回歸(輸出和輸入之間存在非線性關(guān)系)?;貧w的典型應(yīng)用有房?jī)r(jià)預(yù)測(cè)、股票預(yù)測(cè)、年齡估計(jì)等。
聚類:聚類是指將輸入數(shù)據(jù)分組到?jīng)]有預(yù)先定義好的類別中,也就是說(shuō),輸出是未知的或無(wú)標(biāo)簽的。聚類可以是硬聚類(每個(gè)數(shù)據(jù)只屬于一個(gè)類別)或軟聚類(每個(gè)數(shù)據(jù)可以屬于多個(gè)類別)。聚類的典型應(yīng)用有客戶分群、圖像分割、社交網(wǎng)絡(luò)分析等。
生成:生成是指根據(jù)輸入數(shù)據(jù)產(chǎn)生新的數(shù)據(jù),也就是說(shuō),輸出是新穎的或創(chuàng)造性的。生成可以是條件生成(根據(jù)給定的條件生成數(shù)據(jù))或無(wú)條件生成(不需要任何條件生成數(shù)據(jù))。生成的典型應(yīng)用有圖像生成、文本生成、語(yǔ)音合成等。