身高、体重、脚长三个数值足以判断一个人的性别?贝叶斯分类模型
你的信用評(píng)分是高還是低?你在某個(gè)App上的活躍度怎么樣?你是什么興趣類型的用戶?
每個(gè)商家對(duì)我們的信息了如指掌,幾乎可以做到精準(zhǔn)推薦,這一點(diǎn)都不奇怪,因?yàn)橛脩舯簧碳医⒌姆诸惸P头诸惲藷o(wú)數(shù)次。商家通過(guò)我們的信息和行為留下的痕跡對(duì)我們進(jìn)行分類,并且隨著我們?cè)谏碳夷抢锪粝碌男袨楹圹E越來(lái)越多,分類結(jié)果會(huì)被自動(dòng)更新,最后模型越來(lái)越精確。
是什么神通廣大的模型讓商家對(duì)用戶能進(jìn)行準(zhǔn)確分類呢?其中最簡(jiǎn)便也應(yīng)用最廣泛的一個(gè)模型就是樸素貝葉斯分類(以下簡(jiǎn)稱貝葉斯分類)。貝葉斯分類因?yàn)榫哂泻?jiǎn)單、準(zhǔn)確率高、速度快的特點(diǎn)而被運(yùn)用到很多大型數(shù)據(jù)庫(kù)中。
什么是貝葉斯分類?
談到貝葉斯分類,不得不提及三個(gè)概念:條件概率、后驗(yàn)概率、全概率公式。下面用體育比賽中的東道主效應(yīng)為例說(shuō)明這三個(gè)概念的含義。
美國(guó)心理學(xué)家Coumeya總結(jié)了棒球、足球、籃球等一些運(yùn)動(dòng)項(xiàng)目的主場(chǎng)勝率,發(fā)現(xiàn)主場(chǎng)明顯高于客場(chǎng):在主客場(chǎng)比賽場(chǎng)次對(duì)等情況下,主隊(duì)在競(jìng)賽中獲勝的比例超過(guò)50%。
如果已知在歷屆世界杯中,德國(guó)隊(duì)贏得冠軍的概率是37%,某一年德國(guó)隊(duì)得到世界杯主辦權(quán)的概率是60%。此時(shí)如果德國(guó)得到世界杯主辦權(quán),那么德國(guó)隊(duì)贏得冠軍的概率應(yīng)該超過(guò)37%,因?yàn)檫@時(shí)德國(guó)隊(duì)贏得冠軍的事件(記為事件A)是在德國(guó)獲得世界杯主辦權(quán)事件(記為事件B)發(fā)生的情況下發(fā)生的,而世界杯比賽有東道主效應(yīng),有利于東道主奪得冠軍。
在上述世界杯的例子中:
(1)事件A在事件B發(fā)生或不發(fā)生條件下的概率,事件B在事件A發(fā)生或不發(fā)生條件下的概率,都可以稱為條件概率。條件概率中,只要存在兩個(gè)事件,兩個(gè)事件可以互為條件。
記A、B分別為事件,B事件分為B1、B2、B3…B10種情況,則:
條件概率(貝葉斯)公式:P(A|B)*P(B)=P(B|A)*P(A)
(2)事件A在事件B已經(jīng)發(fā)生的條件下發(fā)生的概率就是后驗(yàn)概率。
正是因?yàn)楹篁?yàn)概率的應(yīng)用,讓我們可以根據(jù)新出現(xiàn)的信息,改變對(duì)已有結(jié)果推測(cè)的準(zhǔn)確性。貝葉斯概率也因此在數(shù)據(jù)分析、人工智能方面持續(xù)發(fā)光發(fā)熱。
(3)事件A在事件B發(fā)生條件下發(fā)生的概率,記為P(A|B);在事件B不發(fā)生條件下的概率記為P(A|~B),則P(A)= P(A|B)+ P(A|~B)。在事件B有n種情況時(shí),可拓展為:
全概率公式:P(A|B)=P(A|B1)+P(A|B2)+P(A|B3)+…+P(A|Bn)
有了條件概率、后驗(yàn)概率和全概率公式,我們就可以進(jìn)行貝葉斯分類了。
如何進(jìn)行貝葉斯分類?
貝葉斯分類適合預(yù)測(cè)結(jié)果為離散且可窮舉的類型,如等級(jí)評(píng)分(A,B,C)、是否贏得比賽、是否結(jié)婚、是否違約等。
貝葉斯分類模型是根據(jù)計(jì)算得到的每一個(gè)類別的概率確定被分類的對(duì)象屬于哪個(gè)類型,將對(duì)象劃歸到概率最大的類型中。所以貝葉斯分類的主要工作就是計(jì)算概率。
貝葉斯分類的主要步驟如下:
如:在根據(jù)身高、體重、腳長(zhǎng)判斷性別的例子中,特征屬性可以確定為:身高、體重、腳長(zhǎng)三個(gè)。
如果特征屬性本身為類別型變量,則無(wú)需對(duì)特征屬性取值進(jìn)行劃分;如果特征屬性值為連續(xù)型變量,則需要對(duì)特征屬性值進(jìn)行區(qū)間劃分,將連續(xù)的特征屬性值變成類別型的特征屬性值。
之所以對(duì)連續(xù)型特征屬性值進(jìn)行區(qū)間劃分,是因?yàn)檫B續(xù)型變量取值無(wú)限多的特點(diǎn)與貝葉斯分類統(tǒng)計(jì)值出現(xiàn)的頻率和預(yù)測(cè)結(jié)果僅要求劃分少數(shù)類別的特點(diǎn)不一致。連續(xù)型變量可以有無(wú)限多個(gè)取值,而貝葉斯分類是根據(jù)每個(gè)特征屬性值出現(xiàn)的頻率預(yù)測(cè)概率。如果不將連續(xù)型變量轉(zhuǎn)變?yōu)轭悇e型變量,則基本上每個(gè)值都單獨(dú)計(jì)數(shù),最后計(jì)算的每個(gè)特征屬性值出現(xiàn)的次數(shù)都很少,計(jì)算出的概率不準(zhǔn)確。
注:盡量對(duì)連續(xù)型特征屬性的取值進(jìn)行歸一化或標(biāo)準(zhǔn)化處理,然后就可以用統(tǒng)一的區(qū)間標(biāo)準(zhǔn)對(duì)特征屬性的取值進(jìn)行劃分。具體的區(qū)間劃分需根據(jù)實(shí)際情況設(shè)定,主要取決于取值區(qū)間對(duì)應(yīng)的實(shí)際意義。
訓(xùn)練集和測(cè)試集必須有確定的類別,即要預(yù)測(cè)的結(jié)果。這里的類別劃分一般是根據(jù)經(jīng)驗(yàn)人工劃分。訓(xùn)練集的樣本一般在2000以上(可根據(jù)特征屬性的多少,適當(dāng)增加或減少訓(xùn)練集樣本的數(shù)量)
(1) 計(jì)算訓(xùn)練集中各類別出現(xiàn)的概率;
(2) 計(jì)算訓(xùn)練集中各類別下各特征屬性值出現(xiàn)的概率;
(3) 輸入測(cè)試集各特征屬性值,計(jì)算測(cè)試集各樣本屬于各個(gè)類別的概率,取值概率最大的類別即為個(gè)體所屬的類別。
如:x1、x2、x3為某個(gè)體三個(gè)特征屬性的取值,A,B為互斥的類別(除A、B外,沒(méi)有其他類別)。若計(jì)算出
P(A|x1,x2,x3) = P(x1,x2,x3|A)*P(A)/(P(x1)*P(x2)*P(x3))= 0.6,
P(B|x1,x2,x3) = P(x1,x2,x3|B)*P(B/(P(x1)*P(x2)*P(x3)) =0.4,
則P(A|x1,x2,x3) > P(B|x1,x2,x3),可以判斷該個(gè)體屬于A類。
注:在實(shí)際模型計(jì)算中,可以省去分母特征屬性值乘積(P(x1)*P(x2)*P(x3))的計(jì)算,因?yàn)榉帜赶嗤?#xff0c;只需比較分子的大小即可;同時(shí)也可以減少計(jì)算復(fù)雜度,節(jié)省資源。
比較通過(guò)模型預(yù)測(cè)的測(cè)試集分類結(jié)果與已知分類結(jié)果的差異,若差異在設(shè)定的誤差范圍內(nèi),則模型可以接受,并可通過(guò)將新預(yù)測(cè)的個(gè)體加入訓(xùn)練集逐漸擴(kuò)大樣本,對(duì)模型進(jìn)行優(yōu)化。
貝葉斯分類的R語(yǔ)言實(shí)現(xiàn)
預(yù)備步驟:
安裝plyr程輯包,plyr程輯包有數(shù)據(jù)透視表的作用。
plyr包的主函數(shù)是**ply形式,第一個(gè)字母表示輸入的數(shù)據(jù)格式,第二個(gè)字母表示輸出的數(shù)據(jù)格式;首字母可以是(d、l、a),第二個(gè)字母可以是(d、l、a、_),d表示數(shù)據(jù)框,l表示列表,a表示數(shù)組,_表示沒(méi)有輸出。
代碼如下:
library(plyr)
library(reshape2)
貝葉斯分類實(shí)現(xiàn)步驟:
(1)#計(jì)算各類別出現(xiàn)的頻率
(2)#計(jì)算各類別各特征屬性頻率
(3)#使用上述貝葉斯分類器對(duì)訓(xùn)練集進(jìn)行訓(xùn)練,并測(cè)試
一個(gè)身高1.83米、體重59.0千克,腳長(zhǎng)0.24米的人是男人還是女人呢?
訓(xùn)練集如下:
注:這里沒(méi)有對(duì)身高、體重、腳長(zhǎng)的特征屬性值進(jìn)行區(qū)間劃分,也沒(méi)有進(jìn)行歸一化或標(biāo)準(zhǔn)化處理,因?yàn)楸敬嗡褂玫挠?xùn)練集僅有8個(gè)個(gè)體,進(jìn)行區(qū)間分類的意義不大。雖然樣本量少,但在本次預(yù)測(cè)中,預(yù)測(cè)的效率還是很高的。
輸出結(jié)果如下:
0代表女性,1代表男性,說(shuō)明一個(gè)身高1.83米、體重59.0千克,腳長(zhǎng)0.24米的人是女性的概率較大,可以判斷為女性。
看到這,有人可能覺(jué)得只看數(shù)字自己也能判斷出這個(gè)人是女性還是男性,這一點(diǎn)毫無(wú)疑問(wèn),多數(shù)人都能根據(jù)身高、體重、腳長(zhǎng)判斷一個(gè)人的性別。但上述例子中為了展示,僅測(cè)試了一個(gè)個(gè)體,如果有上萬(wàn)個(gè)甚至數(shù)億個(gè)個(gè)體需要判斷呢?利用模型統(tǒng)計(jì)的優(yōu)勢(shì)在于模型可以在很短的時(shí)間內(nèi)實(shí)現(xiàn)對(duì)大型數(shù)據(jù)的計(jì)算和判斷,并且根據(jù)大樣本計(jì)算出的結(jié)果的準(zhǔn)確性也會(huì)較高,而人工就不行啦。
注:若測(cè)試集是多條數(shù)據(jù),則需要使用for循環(huán)對(duì)每一條測(cè)試數(shù)據(jù)調(diào)用一次condition_class_feature函數(shù),并且需要對(duì)輸入和輸入的數(shù)據(jù)框進(jìn)行轉(zhuǎn)置和添加適當(dāng)?shù)妮o助列。
限于篇幅,上述代碼沒(méi)有對(duì)每行添加注釋,若需要獲取帶有注釋的代碼,[關(guān)注“數(shù)學(xué)算法的世界”,回復(fù)“貝葉斯分類”即可。]
數(shù)學(xué)算法的世界
數(shù)據(jù)分析|Python
R|SQL|Excel|科普
總結(jié)
以上是生活随笔為你收集整理的身高、体重、脚长三个数值足以判断一个人的性别?贝叶斯分类模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: IBM小型机AIX操作系统总结03--系
- 下一篇: 月光下的湖岸