寫給產(chǎn)品經(jīng)理的幾種機(jī)器學(xué)習(xí)算法原理
本文用盡量直白的語(yǔ)言、較少的數(shù)學(xué)知識(shí)給各位產(chǎn)品經(jīng)理講清楚:“機(jī)器學(xué)習(xí)的過(guò)程”、“什么問(wèn)題適合機(jī)器學(xué)習(xí)?”以及“各個(gè)算法的原理是什么?”
一、機(jī)器學(xué)習(xí)的過(guò)程
機(jī)器學(xué)習(xí)的過(guò)程:從本質(zhì)上來(lái)說(shuō),就是通過(guò)一堆的訓(xùn)練數(shù)據(jù)找到一個(gè)與理想函數(shù)(f)相接近的函數(shù)。
在理想情況下,對(duì)于任何適合使用機(jī)器學(xué)習(xí)的問(wèn)題,在理論上都是會(huì)存在一個(gè)最優(yōu)的函數(shù)讓每個(gè)參數(shù)都有一個(gè)最合適的權(quán)重值,但在現(xiàn)實(shí)應(yīng)用中不一定能這么準(zhǔn)確得找到這個(gè)函數(shù)。所以,我們要去找與這個(gè)理想函數(shù)相接近的函數(shù)。只要是能夠滿足我們的使用的函數(shù),我們就認(rèn)為是一個(gè)好的函數(shù)。
這個(gè)訓(xùn)練數(shù)據(jù)的過(guò)程通常也被解釋為:
在一堆的假設(shè)函數(shù)(Hypothesis set)中,它是包含了各種各樣的假設(shè),其中包括好的和壞的假設(shè)。
我們需要做的就是:從這一堆假設(shè)函數(shù)中挑選出它認(rèn)為最好的假設(shè)函數(shù)(g)——這個(gè)假設(shè)函數(shù)是與理想函數(shù)(f)最接近的。
機(jī)器學(xué)習(xí)這個(gè)過(guò)程就像是:在數(shù)學(xué)上,我們知道了有一個(gè)方程和一些點(diǎn)的坐標(biāo),用這些點(diǎn)來(lái)求這個(gè)方程的未知項(xiàng)從而得出完整的方程。
但在機(jī)器學(xué)習(xí)上,我們往往很難解出來(lái)這個(gè)完整的方程是什么。所以,我們只能通過(guò)各種手段求最接近理想情況下的未知項(xiàng)取值,使得這個(gè)結(jié)果最接近原本的方程。
二、什么問(wèn)題適合用機(jī)器學(xué)習(xí)解決
機(jī)器學(xué)習(xí)不是萬(wàn)能的,并不能解決所有的問(wèn)題。
通過(guò)以上機(jī)器學(xué)習(xí)的過(guò)程可以看出來(lái),實(shí)質(zhì)上,機(jī)器學(xué)習(xí)是:通過(guò)已知經(jīng)驗(yàn)找到規(guī)律來(lái)進(jìn)行預(yù)測(cè)。
銀行想知道應(yīng)該發(fā)放多少貸款給某個(gè)客戶時(shí),可以根據(jù)過(guò)往成功放貸的數(shù)據(jù)找出每個(gè)貸款區(qū)間的人群特點(diǎn)、自身的房車資產(chǎn)狀況等,再看看這個(gè)客戶的特點(diǎn)符合哪個(gè)區(qū)間,以此去確定應(yīng)該發(fā)放多少貸款,這就是適合用機(jī)器學(xué)習(xí)去解決的問(wèn)題。
對(duì)于適合用機(jī)器學(xué)習(xí)解決的問(wèn)題,臺(tái)大的林軒田教授為我們總結(jié)了三個(gè)要素:
- 有規(guī)律可以學(xué)習(xí)
- 編程很難做到
- 有能夠?qū)W習(xí)到規(guī)律的數(shù)據(jù)
只要滿足這三個(gè)條件的問(wèn)題,我們都可以挑選合適的算法去解決。
基于以上的條件,通常我們可以用機(jī)器學(xué)習(xí)解決三類問(wèn)題:
- 預(yù)測(cè)(回歸):根據(jù)已知數(shù)據(jù)和模型,預(yù)測(cè)不同客戶應(yīng)該發(fā)放的貸款額度是多少
- 判別(分類):與預(yù)測(cè)有點(diǎn)類似,也是根據(jù)模型判別這個(gè)客戶屬于過(guò)往哪一類客戶的概率有多大
- 尋找關(guān)鍵因素:客戶的屬性非常多,通過(guò)模型我們可以找出對(duì)放貸影響最大的因素是什么
三、幾種常見的模型和算法
1. 感知機(jī)Perceptron Learning Algorithm,PLA
感知機(jī)學(xué)習(xí)算法是一種二分類的線性分類算法,一般用來(lái)解決二分類(只存在兩個(gè)結(jié)果)的問(wèn)題。
例如:判斷“一個(gè)同學(xué)的考試成績(jī)合格還是不合格?”、“銀行會(huì)不會(huì)給某個(gè)客戶發(fā)放貸款?”等。
這種只存正、負(fù)兩個(gè)結(jié)果的問(wèn)題,就稱為二分類的問(wèn)題。
感知機(jī)學(xué)習(xí)算法的原理非常好理解,有點(diǎn)類似考試的概念:
把很多個(gè)影響因素看成每道題的得分。因?yàn)椴煌}目的權(quán)重不同,所以我們每道題的得分由權(quán)重(重要程度)和這個(gè)因素的得分相乘,最后把所有題目的得分加起來(lái)看看有沒有超過(guò)60分(閾值)。如果超過(guò)了就是及格了(正結(jié)果),即對(duì)應(yīng)的輸出值為1,如果沒有超過(guò)就是不及格(負(fù)結(jié)果),對(duì)應(yīng)的輸出值為-1。
還是以剛才銀行貸款的例子來(lái)解釋:
通常銀行判斷在“給不給某個(gè)客戶放貸款?”時(shí),都是已經(jīng)掌握了客戶的各種信息(如:年薪、負(fù)債情況、社保繳費(fèi)、公積金等等)。
因?yàn)閿?shù)據(jù)的維度不同,描述的單位也不同,我們需要把這些數(shù)據(jù)按照各自維度的標(biāo)準(zhǔn)統(tǒng)一成可以量化的評(píng)分——可以按照年薪在5W以下得1分、5-10W得2分這樣的方式進(jìn)行量化。
每個(gè)維度的重要程度都不同,所以我們?cè)谙嗉拥臅r(shí)候需要考慮為每個(gè)值加上一個(gè)權(quán)重,再看看最后得出來(lái)的結(jié)果有沒有高過(guò)放款的閾值評(píng)分——如果高過(guò)這個(gè)分?jǐn)?shù)就放款,低過(guò)這個(gè)分?jǐn)?shù)就不放款。
首先看看關(guān)于感知機(jī)的數(shù)學(xué)定義:
我們可以轉(zhuǎn)換到幾何的方式去看這個(gè)問(wèn)題:
在二維空間內(nèi),訓(xùn)練的數(shù)據(jù)就變成了平面上的一個(gè)點(diǎn),這些數(shù)據(jù)里面有正樣本以及負(fù)樣本(成功放貸款的以及沒有放貸款的)。
感知機(jī)算法的學(xué)習(xí)過(guò)程就是:找到一個(gè)平面(在二維中表現(xiàn)為一條線)——能夠把所有的正樣本和負(fù)樣本區(qū)分開來(lái)。那么,當(dāng)在應(yīng)用的時(shí)候面對(duì)新來(lái)的客戶,通過(guò)模型算出是正結(jié)果,我們就可以給這個(gè)客戶發(fā)放貸款;算出來(lái)是負(fù)結(jié)果,我們就不發(fā)放貸款。
怎么去找到這條線(超平面)呢?
感知機(jī)使用的學(xué)習(xí)策略是“梯度下降法”。
這種方法的思想是:先在平面內(nèi)隨便找一條線,然后開始把樣本點(diǎn)放到平面內(nèi)。當(dāng)一個(gè)點(diǎn)被誤分類——即位于分類超平面錯(cuò)誤的一側(cè)時(shí),調(diào)整模型的參數(shù)(w和b),使分類超平面向該誤分類點(diǎn)的一側(cè)移動(dòng),以減少該誤分類點(diǎn)與超平面的距離,直到超平面越過(guò)該誤分類點(diǎn)使其被正確分類為止。
感知機(jī)利用梯度下降法的訓(xùn)練過(guò)程
這種方式對(duì)于模型的訓(xùn)練非??焖伲?jì)算量相對(duì)較小。
但同時(shí),這樣的計(jì)算方式追求最大程度正確劃分、最小化訓(xùn)練數(shù)據(jù)的錯(cuò)誤,效果類似下圖的直線——會(huì)導(dǎo)致比較容易造成過(guò)擬合的情況,即:模型對(duì)于新數(shù)據(jù)的包容性差,會(huì)過(guò)度地把新輸入數(shù)據(jù)分成錯(cuò)誤的類別。
2. 線性回歸Linear regression,LR
講邏輯回歸之前,我們先講講“什么是線性回歸?”。
在統(tǒng)計(jì)學(xué)中,線性回歸是指:利用稱為線性回歸方程的最小平方函數(shù),對(duì)一個(gè)或多個(gè)自變量和因變量之間關(guān)系進(jìn)行建模的一種回歸分析。
舉個(gè)直觀的例子:深圳春運(yùn)時(shí)的客流量可能是與過(guò)年的時(shí)間相關(guān)的——越接近過(guò)年這天人流量越大。
如下圖所示:
如果客運(yùn)站想預(yù)測(cè):明天和后天的客流量。
該這么辦?
我們可以用一條線去盡量準(zhǔn)的擬合這些數(shù)據(jù),如果有新的數(shù)據(jù)輸入進(jìn)來(lái),我們就可以找到對(duì)應(yīng)的預(yù)測(cè)點(diǎn):
上述例子就是一個(gè)最簡(jiǎn)單的一元線性回歸分析:y=ax+b。
該式子中只包括一個(gè)自變量和一個(gè)因變量,且二者的關(guān)系可用一條直線近似表示。在收集的數(shù)據(jù)中,每一個(gè)分量,就可以看做一個(gè)特征數(shù)據(jù)。
例如:上述例子的日期是一個(gè)特征,我們還可以找到地區(qū)、節(jié)假日、其他車站的客流量等等不同的因素,每個(gè)特征至少對(duì)應(yīng)一個(gè)未知的參數(shù)。這樣就形成了一個(gè)線性模型函數(shù)。
當(dāng)特征變多時(shí),上述線性回歸的向量表示形式為:
這個(gè)矩陣方程由于計(jì)算量太大很難直接去求解,那么我們要怎么樣去找到這根線的位置呢?
在這里我們可以退一步,把參數(shù)求解的問(wèn)題,轉(zhuǎn)化為求最小誤差的問(wèn)題,讓實(shí)際值與預(yù)測(cè)值之間的誤差變得最小,那么我們的預(yù)測(cè)值就十分接近實(shí)際值了。
這就是損失函數(shù)的來(lái)源。在機(jī)器學(xué)習(xí)的算法中,實(shí)際上存在大量由于計(jì)算量巨大從而無(wú)法求解的問(wèn)題。我們都是把這類問(wèn)題轉(zhuǎn)化成求最小誤差,即:實(shí)際值與預(yù)測(cè)值之間的誤差(損失)問(wèn)題,想辦法求出讓誤差最小的情況,就可以得到問(wèn)題的最優(yōu)解。
線性回歸方程的損失函數(shù)通常是通過(guò)最小二乘法,或者梯度下降法進(jìn)行求解,在這里我們不展開敘述。
線性回歸是目前運(yùn)用最廣泛的模型之一,在金融、經(jīng)濟(jì)學(xué)、醫(yī)學(xué)等領(lǐng)域常常用來(lái)解決預(yù)測(cè)類問(wèn)題。
通過(guò)觀測(cè)數(shù)據(jù)集擬合出一個(gè)預(yù)測(cè)模型,我們就可以知道:一組特定數(shù)據(jù)是否在一段時(shí)間內(nèi)會(huì)增長(zhǎng)或下降?
3. 邏輯回歸 Logistic regression,LR
邏輯回歸實(shí)際上也是一個(gè)線性回歸模型,但是線性回歸常常用來(lái)做預(yù)測(cè),邏輯回歸卻常常用來(lái)解決二分類問(wèn)題。
為什么會(huì)有這么大的差異呢?
如果對(duì)于上面的感知機(jī)算法來(lái)說(shuō),目標(biāo)是為了找到一個(gè)能夠?qū)⒄?fù)樣本完全分開的超平面的話,從另外一個(gè)層面看感知機(jī)算法就相當(dāng)于是一個(gè)躍階函數(shù)。
我們只需要找到閾值,并且拿輸入的數(shù)據(jù)去對(duì)比,得出數(shù)據(jù)是大于還是小于這個(gè)閾值,然后就能給出的就是0或1(正/負(fù)樣本)的反饋。
對(duì)應(yīng)到數(shù)學(xué)模型上:我們只需要把算出來(lái)的結(jié)果映射到這個(gè)躍階函數(shù)上看看大于0還是小于0,就能說(shuō)他是一個(gè)正樣本還是負(fù)樣本。
感知器的模型雖然簡(jiǎn)單直觀,但問(wèn)題在于這個(gè)模型不夠光滑。
如果一個(gè)新的樣本點(diǎn)我們計(jì)算出來(lái)結(jié)果等于0.01——只是比0大了一點(diǎn)點(diǎn),就被分類為正樣本,這樣在實(shí)際應(yīng)用的時(shí)候就可能會(huì)不夠準(zhǔn)確。同時(shí),這個(gè)函數(shù)在0處有一個(gè)躍階導(dǎo)致這一點(diǎn)不連續(xù),在數(shù)學(xué)上也不好處理。
那么有沒有什么方法可以讓這個(gè)函數(shù)更光滑一點(diǎn)呢?
在數(shù)學(xué)上剛好存在一個(gè)sigmoid函數(shù)有這樣的特性。
這個(gè)函數(shù)的輸入范圍是“?∞→+∞”,而值域則光滑地分布在0到1之間。
對(duì)于這個(gè)模型的解釋和感知機(jī)也稍微有些區(qū)別。
感知機(jī):是根據(jù)輸入的條件,判斷是一個(gè)正樣本還是負(fù)樣本。
而邏輯回歸因?yàn)橹涤蚍植荚?到1之間的特性,所以輸出的是判斷是:一個(gè)正樣本或負(fù)樣本的概率是多少?
我們的學(xué)習(xí)策略即是:求所有訓(xùn)練樣本的條件概率之積的最大值——也可以理解為求概率之積盡可能大,這樣模型預(yù)測(cè)的效果就會(huì)越準(zhǔn)確。
邏輯回歸的本質(zhì)上是一個(gè)線性回歸模型,只是在特征到結(jié)果的映射中加入了一層函數(shù)映射——即先把特征線性求和,然后使用函數(shù)g(z)將最為假設(shè)函數(shù)來(lái)預(yù)測(cè)。
我們看到的參數(shù)z,實(shí)際上也是一個(gè)線性回歸的方程,只不過(guò)在這里符號(hào)化表示。實(shí)際上求解的方式與線性回歸是相同的——都是要通過(guò)損失函數(shù)的方式逼近最優(yōu)解。
邏輯回歸的目的是:將樣本分成0或1兩類。
但是,我們也關(guān)心樣本分類的準(zhǔn)確性。
例如:一個(gè)腫瘤被預(yù)測(cè)出來(lái)是惡性的,我們也會(huì)關(guān)心它是惡性的可能性有多大?
對(duì)邏輯回歸的理解也可以是:我們通過(guò)概率將樣本分成了0和1兩類。
因?yàn)檫壿嫽貧w不像感知機(jī)——通過(guò)一個(gè)固定的閥值去判斷樣本數(shù)據(jù)的正負(fù)性,所以在二維平面上也不再是通過(guò)一條直線去判斷數(shù)據(jù)。而是變得更加有包容性,可以把一些不能線性區(qū)分的數(shù)據(jù)集區(qū)分開來(lái)。
其根本原因就是:sigmoid函數(shù)把因變量和自變量變成了曲線的關(guān)系,使得在函數(shù)在二維平面上的表現(xiàn)更為柔和。這里面損失函數(shù)發(fā)揮了很大的作用,這里不再展開說(shuō)明。
邏輯回歸與感知機(jī)相比,有三方面的優(yōu)勢(shì):
- 直接對(duì)分類可能性建模,不需要事先假設(shè)數(shù)據(jù)的分布情況。感知機(jī)算法中如果不先假設(shè)一下數(shù)據(jù)的分布再去確定線的位置的話,很可能會(huì)算錯(cuò),但是邏輯回歸算法就避免了這個(gè)問(wèn)題。
- 不僅可以預(yù)測(cè)出類別,還可以給出具體的概率預(yù)測(cè)值。這對(duì)預(yù)測(cè)結(jié)果有更好的解釋性。
- 有很好的數(shù)學(xué)性質(zhì),方便計(jì)算,工程量較小。
邏輯回歸算法因其是現(xiàn)在最廣泛使用的算法之一,常常用于尋找某一疾病的危險(xiǎn)因素、個(gè)人信用評(píng)估、貸款/金融意圖預(yù)測(cè)等等領(lǐng)域。
同時(shí),也可以用來(lái)對(duì)數(shù)據(jù)做自動(dòng)判別分析,比如:一條評(píng)論是正面還是負(fù)面?一個(gè)用戶的購(gòu)買路徑是男性還是女性?預(yù)測(cè)用戶會(huì)不會(huì)購(gòu)買某種商品?等等。
邏輯回歸應(yīng)用廣泛還是因?yàn)樗哪P团c許多現(xiàn)實(shí)問(wèn)題相吻合,能夠幫助我們快速解決很多實(shí)際的問(wèn)題。
4. K近鄰分類算法 K-Nearest Neighbor,KNN
上面我們說(shuō)到,感知機(jī)以及邏輯回歸實(shí)際上都是一種二分類算法,非黑即白。
那,如果遇到多分類問(wèn)題該如何解決呢?
有一種非常簡(jiǎn)單的算法可以幫助我們快速解決這個(gè)問(wèn)題——K近鄰分類算法。
K近鄰分類算法是一個(gè)理論上比較成熟的方法,也是最簡(jiǎn)單的機(jī)器學(xué)習(xí)算法之一。
用官方的解釋來(lái)說(shuō):所謂K近鄰算法,即存在一個(gè)樣本數(shù)據(jù)(訓(xùn)練樣本)集,并且樣本中每個(gè)數(shù)據(jù)都存在標(biāo)簽(類別)——也就是說(shuō)樣本集中每一個(gè)數(shù)據(jù)都被分到一個(gè)類別中。輸入新的數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中的數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較,然后算法提取樣本集中特征最相似的數(shù)據(jù)的分類標(biāo)簽,即可以為新輸入的數(shù)據(jù)進(jìn)行分類。
在訓(xùn)練數(shù)據(jù)集中找到與該實(shí)例最鄰近的K個(gè)實(shí)例, 如果這K個(gè)實(shí)例的大多數(shù)都屬于同一個(gè)分類,就把該輸入實(shí)例分類到這個(gè)類中。
一般情況下,我們只選擇樣本集中前K個(gè)最相似的數(shù)據(jù),這就是K近鄰算法中k的出處(通常K是不大于20的整數(shù))。
比如:比較3個(gè)最近的數(shù)據(jù),那么K=3。
最后,選擇K個(gè)最相似的數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類,作為新數(shù)據(jù)的分類。
這種思想實(shí)際上也非常好理解,有點(diǎn)像“人以類聚,物以群分”的說(shuō)法——如果你身邊的鄰居都來(lái)自同一個(gè)公司,那么你極有可能也屬于某個(gè)公司;如果你身邊的朋友絕大多數(shù)都屬于某個(gè)學(xué)校畢業(yè),那么你極有可能也曾經(jīng)在這個(gè)學(xué)校讀過(guò)書。
這種方式也很類似投票機(jī)制,新來(lái)的數(shù)據(jù)與舊數(shù)據(jù)相比對(duì),多數(shù)都屬于某個(gè)類別時(shí),采用少數(shù)服從多數(shù)的原則,給新數(shù)據(jù)歸類。
同樣,我們轉(zhuǎn)化到幾何的方式去看這個(gè)算法,KNN可以看成:有那么一堆你已經(jīng)知道分類的數(shù)據(jù),然后當(dāng)一個(gè)新數(shù)據(jù)進(jìn)入的時(shí)候,就開始跟已知數(shù)據(jù)里的每個(gè)點(diǎn)求距離,然后挑離這個(gè)訓(xùn)練數(shù)據(jù)最近的K個(gè)點(diǎn)看看這幾個(gè)點(diǎn)屬于什么類型,就把這個(gè)新的點(diǎn)歸到這個(gè)同屬大多數(shù)的類別里。
K近鄰分類算法的優(yōu)缺點(diǎn)都非常明顯。
優(yōu)點(diǎn)主要有兩個(gè)方面:
- 精度很高,對(duì)異常數(shù)據(jù)也不敏感(所屬類別是由大多數(shù)點(diǎn)決定了,一兩個(gè)異常點(diǎn)不會(huì)有太大的影響)。
- 與上面的PLA、LR算法相比,不需要訓(xùn)練模型,易于實(shí)現(xiàn),來(lái)一個(gè)新數(shù)據(jù)就可以馬上進(jìn)行比對(duì)。
缺點(diǎn)則是:計(jì)算復(fù)雜度比較高。
因?yàn)橐阈聰?shù)據(jù)與每一個(gè)臨近點(diǎn)的距離,當(dāng)維度超過(guò)二維時(shí)這就是一個(gè)空間復(fù)雜度很大的矩陣。
基于KNN算法的特點(diǎn),目前主要應(yīng)用在文本分類與商品推薦等場(chǎng)景。
在文本分類中像信息檢索、手寫字識(shí)別、機(jī)器翻譯這樣的場(chǎng)景都可以使用KNN算法以保證在有限的硬件資源下,提供給用戶一個(gè)高效的檢索系統(tǒng)。
5. 樸素貝葉斯分類器 Naive Bayes Classifier,NBC
貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理和特征條件獨(dú)立假設(shè)為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。
而樸素貝葉斯分類是貝葉斯分類中最簡(jiǎn)單,也是常見的一種分類方法。
樸素貝葉斯的簡(jiǎn)單之處在于:對(duì)于給出的待分類項(xiàng),求解在此待分類項(xiàng)出現(xiàn)的條件下各個(gè)類別出現(xiàn)的概率。哪個(gè)概率最大,就認(rèn)為此待分類項(xiàng)屬于哪個(gè)類別。
這就有點(diǎn)像我們走在街上,迎面走過(guò)來(lái)一個(gè)黑色皮膚的人,那我們就猜他是非洲人,因?yàn)楹谌酥蟹侵奕俗疃唷?/p>
通過(guò)上述例子我們可以看到:我們判斷一個(gè)人是非洲人基于一個(gè)很關(guān)鍵的信息,因?yàn)樗呛谏つw的人。所以,我們的判斷實(shí)際上是發(fā)生在“擁有黑色皮膚”這件事的情況下我們的推斷。
這種在其他已知事件發(fā)生的基礎(chǔ)上去計(jì)算某件事發(fā)生的概率叫做“條件概率”。一般我們使用貝葉斯定理求解條件概率。
要搞懂貝葉斯定理之前,我們首先要搞懂“什么是正向概率?”和“什么是反向(條件)概率?”。
在貝葉斯研究之前, 人們已經(jīng)能夠計(jì)算正向概率。
比如:“假設(shè)袋子里有N個(gè)白球M個(gè)黑球,你伸手進(jìn)去摸一把,摸出黑球的概率有多大?”。
然而在我們實(shí)際生活中,日常能觀察到的只是事物表面的結(jié)果——往往我們只知道從袋子里取出來(lái)的球是什么顏色,并不能看到袋子里的實(shí)際情況。這時(shí)候我們就希望有一些方法可以通過(guò)觀察這些取出來(lái)的球的顏色,可以推測(cè)出袋子里面黑白球的比例是什么樣的。
我們通過(guò)下圖簡(jiǎn)單講一下貝葉斯定理的組成:
樸素貝葉斯分類器的核心在于訓(xùn)練模型階段——需要計(jì)算每個(gè)類別在訓(xùn)練樣本中的出現(xiàn)頻率,以及每個(gè)特征屬性劃分對(duì)每個(gè)類別的條件概率估計(jì),并將結(jié)果記錄。
這一階段是機(jī)械性階段,根據(jù)前面討論的公式可以由程序自動(dòng)計(jì)算完成。
讓我們通過(guò)一個(gè)貝葉斯分類器解決拼寫檢查/糾正的例子加深理解:
當(dāng)一個(gè)用戶輸入了一個(gè)不在字典中的單詞時(shí),我們需要去猜測(cè):這個(gè)人到底想要輸出的單詞是什么呢?如果用戶輸出了一個(gè)theu,那么他到底是想輸入they還是then?到底哪個(gè)猜測(cè)的可能性更大?
這個(gè)問(wèn)題實(shí)際上是在求“已知輸入theu的情況下,我們猜測(cè)他想輸出they\then的概率誰(shuí)更大?”
用上述符號(hào)表示即:P(B|A)。
我們可以很容易計(jì)算出they\then單詞的詞頻P(B),那么要怎么得到P(A|B)呢?
在這里可以用輸入單詞與正確單詞在鍵盤上的距離來(lái)表示P(A|B)——即通過(guò)字母在鍵盤上的距離判斷:下輸入哪個(gè)字母的可能性更高?
比如:在鍵盤上,Y和U離得更近,所以我們會(huì)認(rèn)為要輸入Y但是不小心按成了U的概率更大一些。
通過(guò)上述的信息就可以計(jì)算出輸出哪個(gè)單詞的概率更大。
樸素貝葉斯分類器的以下優(yōu)點(diǎn):
- 生成式模型,通過(guò)計(jì)算概率來(lái)進(jìn)行分類,可以用來(lái)處理多分類問(wèn)題而且分類的結(jié)果很容易被解釋
- 所需估計(jì)的參數(shù)不大,對(duì)缺失數(shù)據(jù)不太敏感
- 無(wú)需復(fù)雜的迭代求解框架,適用于規(guī)模巨大的數(shù)據(jù)集
除了上述說(shuō)到的拼寫糾正以外,貝葉斯分類器還經(jīng)常被用在垃圾郵件分類、文字廣告過(guò)濾、識(shí)別惡性評(píng)論等等領(lǐng)域。
在許多場(chǎng)景下,樸素貝葉斯分類算法可以與后續(xù)講到的決策樹、神經(jīng)網(wǎng)絡(luò)算法相媲美,而且方法簡(jiǎn)單、分類準(zhǔn)確率高、速度快。但這個(gè)算法也有一些像對(duì)輸入數(shù)據(jù)的形式比較敏感、計(jì)算先驗(yàn)概率時(shí)的分類決策可能存在錯(cuò)誤這樣的缺點(diǎn),在使用的時(shí)候還是要根據(jù)具體的場(chǎng)景選擇。
以上簡(jiǎn)單介紹了關(guān)于機(jī)器學(xué)習(xí)的一些算法,最后,感謝一下我的同行好友中翹。
#專欄作家#
夏唬人,公眾號(hào):夏唬人,人人都是產(chǎn)品經(jīng)理專欄作家。某廠策略產(chǎn)品經(jīng)理,關(guān)注推薦,搜索,AI策略方向,用數(shù)據(jù)來(lái)賦能業(yè)務(wù)。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議。
感謝分享~
馬克
請(qǐng)問(wèn)下,我能轉(zhuǎn)發(fā)您的文章到我的個(gè)人公眾號(hào)嗎?我會(huì)標(biāo)明來(lái)源和您的公眾號(hào)。
可以
看不到下面內(nèi)容啊!
這是網(wǎng)站的問(wèn)題了,可以聯(lián)系一下
謝謝分享,很有幫助