貝葉斯統(tǒng)計(jì)學(xué)
? ? 基于(總體信息+樣本信息+先驗(yàn)信息)進(jìn)行統(tǒng)計(jì)推斷的方法和理論
先驗(yàn)信息:抽樣之前终抽,有關(guān)推斷問(wèn)題中未知參數(shù)的一些信息庞瘸,通常來(lái)自于經(jīng)驗(yàn)或歷史資料
貝葉斯定理:
????
給定觀測(cè)數(shù)據(jù)樣本
,假設(shè)
是成立的概率许赃,是后驗(yàn)概率,比如一份特定郵件中馆类,
是垃圾郵件的概率
是
的先驗(yàn)概率混聊,比如總體郵件中垃圾郵件的概率,
是
的先驗(yàn)概率乾巧,比如總體郵件中帶有特定特征的郵件概率
可以通過(guò)抽樣來(lái)計(jì)算先驗(yàn)概率
eg:
總體100句喜,正常70,垃圾30沟于,辦證在正常郵件中出現(xiàn)10次咳胃,垃圾郵件中出現(xiàn)15次。
設(shè)X為辦證旷太,H為垃圾郵件
包含辦證這個(gè)詞的郵件屬于垃圾郵件的概率為
多個(gè)特征會(huì)使統(tǒng)計(jì)量巨大展懈,所有特征需要計(jì)算次销睁,n是特征數(shù)
樸素貝葉斯(Naive Bayes)
? ? 假設(shè):特征之間都是相互獨(dú)立的
多項(xiàng)式模型:重復(fù)的詞語(yǔ)我們視其出現(xiàn)多次('a','b'存崖,'c'冻记,'a','d'来惧,'a')
eg:
伯努利模型:重復(fù)的詞我們視其為出現(xiàn)一次('a'冗栗,'b','c'供搀,'d')
eg:
混合模型:在計(jì)算句子概率時(shí)隅居,不考慮重復(fù)詞語(yǔ)出現(xiàn)的次數(shù),但是在統(tǒng)計(jì)計(jì)算詞語(yǔ)的概率時(shí)葛虐,卻考慮重復(fù)詞語(yǔ)出現(xiàn)的次數(shù)
高斯模型:連續(xù)型變量胎源,轉(zhuǎn)換成離散型的值
詞袋模型(Bag of Words)
BoW模型最早出現(xiàn)在自然語(yǔ)言處理(Natural Language Processing)和信息檢索(Information Retrieval)領(lǐng)域。該模型忽略掉文本的語(yǔ)法和語(yǔ)序等要素挡闰,將其僅僅看作是若干個(gè)詞匯的集合乒融,文檔中每個(gè)單詞的出現(xiàn)都是獨(dú)立的。BoW使用一組無(wú)序的單詞來(lái)表達(dá)一段文字或一個(gè)文檔摄悯。
eg:John likes to watch movies,Marry likes too.John also likes to watch football games.
構(gòu)成詞典:
{"John" : 1 , "likes" 2 , "to" : 3 , "watch" : 4 , "movies" : 5 , "also" : 6 , "football" : 7 , "games" : 8 , "Marry" : 9 , "too" : 10}
則上述兩個(gè)文本可用向量表示:
[ 1 , 2 , 1 , 1 , 1 , 0 , 0 , 0 , 1 , 1 ]
[ 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 0 , 0 ]
向量與原來(lái)文本中單詞出現(xiàn)的順序無(wú)關(guān)赞季,而是詞典中每個(gè)單詞在文本中出現(xiàn)的頻率
python中使用CountVictorizer方法構(gòu)建單詞的字典,每個(gè)單詞實(shí)例被轉(zhuǎn)換為向量的一個(gè)數(shù)值特征奢驯,每個(gè)元素是特定單詞在文本中出現(xiàn)的次數(shù)
from sklearn.feature-extraction.text import CountVectorizer
TF-IDF
提取文章關(guān)鍵詞:
1申钩、提取詞頻(Term Frequency,TF)瘪阁,但出現(xiàn)最多的詞可能是“的撒遣,是,在”等對(duì)文章分類或搜索沒(méi)有幫助的停用詞(stop words)
2管跺、假設(shè)停用詞都過(guò)濾掉了义黎,但仍會(huì)有關(guān)鍵詞排序問(wèn)題,比如“中國(guó)”豁跑,“蜜蜂”廉涕,“養(yǎng)殖”三個(gè)詞TF相同,但相對(duì)而言艇拍,后兩個(gè)比前一個(gè)不那么常見(jiàn)狐蜕,對(duì)于一篇文章,三者TF相同卸夕,那么在關(guān)鍵詞排序上层释,后兩者應(yīng)該在“中國(guó)”之前,所以需要一個(gè)重要性調(diào)整系數(shù)快集,衡量一個(gè)詞是否是常見(jiàn)詞贡羔。常見(jiàn)詞的權(quán)重 < 不常見(jiàn)詞的權(quán)重廉白,這個(gè)權(quán)重叫做“逆文本頻率(Inverse Document Frequency,IDF)”其大小與一個(gè)詞的常見(jiàn)程度成反比治力。
詞頻(TF) = 某個(gè)詞在文章中的出現(xiàn)次數(shù)
詞頻(TF) =?
詞頻(TF) =?
TF-IDF = TF * IDF
sklearn實(shí)現(xiàn)蒙秒,可以使用 TfidfVectorizer()
from sklearn.feature-extraction.text import TfidfVectorizer
代碼:
import numpyas np
from sklearnimport datasets
from sklearn.model_selectionimport train_test_split
from sklearn.metricsimport classification_report, confusion_matrix
from sklearn.naive_bayesimport MultinomialNB, BernoulliNB, GaussianNB
# 載入數(shù)據(jù)
iris = datasets.load_iris()
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)
mul_nb = MultinomialNB()
mul_nb.fit(x_train, y_train)
print(classification_report(mul_nb.predict(x_test), y_test))
print(confusion_matrix(mul_nb.predict(x_test), y_test))
Ber_nb = BernoulliNB()
Ber_nb.fit(x_train, y_train)
print(classification_report(Ber_nb.predict(x_test), y_test))
print(confusion_matrix(Ber_nb.predict(x_test), y_test))
Gau_nb = GaussianNB()
Gau_nb.fit(x_train, y_train)
print(classification_report(Gau_nb.predict(x_test), y_test))
print(confusion_matrix(Gau_nb.predict(x_test), y_test))