判別分析--朴素貝葉斯分類器(NBC)


1 朴素貝葉斯分類

我們使用NaiveBayes()函數來實現朴素貝葉斯分類算法我們分為兩種函數格式來分別介紹

install.packages("klaR")

library(klaR)

library("MASS")

(1)公式 formula格式

nmkat為待判別變量,以datatrain來生成貝葉斯判別規則,過程如下:

fitBayes1<-NaiveBayes(nmkat~.,datatrain)  #nmkat未判別變量,以datatrain來生成貝葉斯判別規則

names(fitBayes1)   #顯示fitBayes1所包含的輸出項名稱

 

fitBayes1$apriori  #顯示該1次執行過程中所用的先驗概率

 

fitBayes1$tables

#tables 項儲存了用於建立判別規則的所有變量在各類別下的條件概率,這是運行貝葉斯判別算法中的一個重要討程:

fitBayes1$tables

 

結果分析:比如,變量Sbad0)”部分記錄了“是否有浴室”變量在各租金等級下,取0(有浴室)和1(無浴室)的概率。具體的,在等級1(不足500馬克)的租金水平下,有浴室的占到約92.4%,無浴室的占7.6%,而且我們看到這兩列數據在各租金水平下的取值差異並不大,最貴的房子(等級5)中有99.3%有浴室,而最便宜的房子(等級1)中也約有90%配有浴室。由此,我們可以認為浴室基本是出租房屋的必備部件,是一種硬需求,對租金水平的高低沒有決定性作用。

 

結果分析:而地理位置 adr和住宅環境wohn變量的情況就與bad0變量不太相同,這兩個變量的取值有着明顯的趨勢:隨着租金水平的提高(等級1至等級5),地理位置/住宅環境較差(1)的房子越來越少,地段較好(取3)的房子越來越多。可見,像地段、環境這種軟需求對於房價的影響是不可忽視的,一個優良的環境和便利的地段往往可以提升租金。

(2) 默認格式

以默認格式建立貝葉斯判別規則,分別設置屬性變量(除第12個變量 nmkat 外)與待判別變量(第12個變量nmkat)的取值,並記為fit_Bayes2,程序代碼列示如下:

 fit_Bayes2=NaiveBayes(data_train[,-12],data_train[,12])

2.各類別下變量密度可視化

我們按照如上得到的判別規則fit_Bayes1,以參與規則建立的其中三個定量變量為例來查看其密度圖像。

這三個變量分別為占地面積wfl、租賃期mvdauer,以及每平方米凈租金nmqm

plot(fitBayes1,vars = "wfl",n=50,col=c(1,"darkgrey",1,"darkgrey",1))

 

結果分析:對於占地面積wfl變量,我們可以看到分別對應於5個租金等級的5條曲線的最高點從15依次右移,即所對應的占地面積水平依次提高,這是符合常識理解的,面積越大的房屋租金往往越高。具體的,可以觀察到,13租金等級的樣本多集中於4060平方米的占地面積水平,而45等級,即租金高於850馬克的房屋則在70~90平方米左右。

plot(fitBayes1,vars = "mvdauer",n=50,col=c(1,"darkgrey",1,"darkgrey",1))

 

結果分析:租金等級為5的房租的租賃年限遠低於其他4個等級,前4個等級的租賃期多為23年至3040年不等,而等級5的租賃期則基本都集中於2年左右。

plot(fitBayes1,vars = "nmqm",n=50,col=c(1,"darkgrey",1,"darkgrey",1))

 

結果分析:每平方米凈租金nmqm變量在各租金水平下的分布看起來要均勻一些,即租金越高的房屋每平方米租金就越高,5條曲線按照等級順序平穩依次右移,這也是符合我們理解的,單位面積租金高則總租金會高。

3.對測試集待判別變量取值進行預測

與討論線性判別的效果時一樣,我們以混淆矩陣和錯誤率兩種方式來評價貝葉斯判別的預測效果,下面首先根據fit_Bayes1判別規則對測試集進行預測。

preBayes1<-predict(fitBayes1,datatest)

preBayes1

 

...

 

結果分析:這里包括預測類別class和后驗概率posterior這兩項,每個樣本屬於各類別的后驗概率最高者為該樣本被判定的類別。

table(datatest$nmkat,preBayes1$class)

#生成混淆矩陣,行為實際,列為預測,

 

結果分析:我們看到15類中的大部分樣本被正確分類,差異性較小的234類則大部分沒有被正確分類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM