Ⅰ 樸素貝葉斯以及三種常見模型推導
樸素貝葉斯演算法Naive Bayes定義中有兩個關鍵定義:特徵之間強假設獨立和貝葉斯定理.這兩個定義就是樸素貝葉斯的關鍵.接下來先了解一下這兩個定義.
貝葉斯定義是概率論中的一個定理,它跟隨機變數的條件概率以及邊緣概率分布有關.
通常,事件A在事件B(發生)的條件下的概率,與事件B在事件A(發生)的條件下的概率是不一樣的,然而,這兩者之間是有確定的關系的,貝葉斯定理就是這種關系的陳述。貝葉斯公式的一個用途在於通過已知的三個概率函數推出第四個.
直接給出公式:
其中,P(A|B)是指事件B發生的情況下事件A發生的概率(條件概率).在貝葉斯定理中,每個名詞都有約定俗成的名稱:
按這些術語,貝葉斯定理可以表述為:
後驗概率 = (似然性 * 先驗概率)/標准化常量
也就是說,後驗概率與先驗概率和相似度的乘積成正比.
同時,分母P(B),可以根據全概率公式分解為:
如果P(X,Y|Z)=P(X|Z)P(Y|Z),或等價地P(X|Y,Z)=P(X|Z),則稱事件X,Y對於給定事件Z是條件獨立的,也就是說,當Z發生時,X發生與否與Y發生與否是無關的。
應用在自然語言處理中,就是說在文章類別確定的條件下,文章的各個特徵(單詞)在類別確定的條件下是獨立的,並不相關,用通俗的話說,在文章類別確定的條件下,文章各個詞之間出現與否沒有相關性(事實上,並不成立).這是一個非常強的假設,但對問題的求解來說變得更加簡單.
設輸入空間 為n為向量的集合,輸出空間為類標記集合 .輸入為特徵向量 ,輸出為類標記 . X是定義在輸入空間X上的隨機變數,Y是定義在輸出空間Y上的隨機變數.P(X,Y)是X和Y的聯合概率分布.訓練數據集:
由P(X,Y)獨立同分布產生.因此樸素貝葉斯模型也是一個生成模型.
樸素貝葉斯演算法通過訓練集學習聯合概率分布P(X,Y),具體地,學習先驗概率分布以及條件概率分布.其中先驗概率分布
條件概率分布
, k=1,2,...,K
通過兩個概率得到聯合概率分布P(X,Y) = P(X|Y)P(Y).
條件概率分布P(X=x|Y=c_k)有指數級數量的參數,其估計實際上不可行的.假設 有 個取值,j=1,2,...,n,Y有K個取值,那麼參數個數為 .
指數級的參數估計事實上並不可行,因此樸素貝葉斯演算法針對各個特徵之間做了假設,也就是對條件概率分布作了條件獨立性假設,這是一個很強的假設,通過這個假設,我們的參數求解變得可行,這也就是樸素貝葉斯的"樸素"的由來.這種情況下,我們同樣假設 有 個取值,j=1,2,...,n,Y有K個取值,那麼參數個數為 ,需要估計的參數量大大減少.條件獨立性假設是
樸素貝葉斯演算法分類時,對給定輸入x,通過學習到的模型計算後驗概率分布 ,將後驗概率最大的類作為輸入x的類輸出.後驗概率根據貝葉斯定理計算:
上面的公式是後驗概率分布中的一項,由於對於相同輸入x下不同類別的後驗概率的分母都相同,而最終的類輸出是後驗概率分布中概率最大對應的類別,所以我們可以簡化為只比較分子的大小就可以確定最終的結果,也就是說,最終類輸出為:
.
如果我們對右邊的乘積概率取log,連乘積就可以轉換成為和,計算更簡單(加法總比乘法簡單),上訴公式存在一種變種:
.
同時這種形式,也可以看做是一種線性回歸,權重系數為1.
介紹完,樸素貝葉斯的概率模型之後,我們目前的主要問題就集中在如何估計這個模型的 個參數: ,估算出參數,我們就可以對輸入向量x做預測.針對這些參數的求解方法不同,存在不同的樸素貝葉斯類型,具體介紹三種:伯努利樸素貝葉斯,多項式樸素貝葉斯和高斯樸素貝葉斯.不同類型的樸素貝葉斯對參數的求法不同,而根源在於對P條件概率(X=x|Y=c_k)的假設分布不同,也就是說在給定類別的情況下,對X假設的分布不同:伯努利假設是伯努利分布(其實應該是多變數伯努利分布),多項式假設是多項式分布,而高斯也就是假設是高斯分布(其實是多變數高斯分布).然後,我們細化到三種不同類型的樸素貝葉斯理論中.
伯努利樸素貝葉斯,其實應該叫"Multi-variate Naive Bayes",假設P(X=x|Y=c_k)是多變數伯努利分布.在了解多變數伯努利分布之前,先介紹一下什麼是(單變數的)伯努利分布.
伯努利分布,又叫做兩點分布或0-1分布,是一個離散型概率分布.稱隨機變數X有伯努利分布,參數為p(0< p <1),它分別以概率p和1-p取1和0為值.
最簡單的例子就是拋硬幣,硬幣結果為正或反.
冪次運算變成乘法運算,更簡單.當x=1時,概率是P(X=1)=p,當x=0時,概率P(X=0)=1-p,這樣就可以將兩種情況合在一起.
了解了什麼是伯努利分布之後,我們再看什麼是多元伯努利分布(多變數 multi-variate Bernoulli).
多元伯努利分布,通俗的講就是同時進行多個不同的伯努利實驗, ,其中x是一個向量, 也是一個向量,表示不同伯努利實驗的參數.
伯努利多項式將文檔的生成模型P(X=x|Y=c_k)假設服從為多元伯努利分布,由於我們之前做的特徵獨立性假設, 是一個向量形式,而其中 ,也就是說x向量是onehot形式的向量(每個維度值是0或1),表示這個維度的特徵是否出現.特徵集 有n個特徵,特徵集的維度決定了輸入空間X的維度,而且特徵集的維度可以對應到輸入空間的各個維度上.
因為特徵之間的獨立性,所以多元伯努利變成各個伯努利分布的連乘積,需要注意的一點是 因為是伯努利分布,0-1,特徵出現有一個概率p,特徵不出現也有一個概率1-p .最終模型的參數估計完成之後,對新樣本進行預測時,如果某個特徵不出現,需要 乘上這個特徵不出現的概率 ,不能只計算特徵出現的概率!!!兩個向量直接相乘,並不能得到最終的結果.
對應的伯努利樸素貝葉斯模型為:
為了簡化運算,我們可以將分母忽略,雖然對應的結果不是真正的概率,但是相同樣本的各個後驗概率之間的大小關系保持不變,同時如果兩邊同時做log運算,後驗概率之間的大小關系同樣保持不變.因此,
.
了解了多元伯努利分布之後,接下來的工作就是對參數進行估計,計算 , .
參數估計的過程也是樸素貝葉斯分類器學習的過程.而參數估計可以使用極大似然估計.先驗概率 的極大似然估計是
, k=1,2,...,K
其中,I(x)是一個指示函數,如果x為真,I(x)結果為1,如果x為假,I(x)=0.用語言描述來說, 這個概率等於在N個樣本的數據集中,類別為 的樣本所佔的比例.
條件概率 的極大似然估計是:
用語言描述來說,條件概率 等於在類別為 的樣本集合(數據集的子集)中,第i個特徵等於 的概率, 是0或1,而且 服從伯努利分布,所以只需要計算一個,比如P , ,因為兩個概率和為1(這是 同一個變數 ).
這些參數估計完之後,樸素貝葉斯就完成了學習過程,接下來就可以使用它去進行預測了(應用才是最終的目的).
由於 是伯努利分布,參數p在[0,1]之間,有可能存在 ,也就是存在0概率.
舉例來說,在當前類別下的所有樣本中特徵i都出現了(=1),根據上面的條件概率極大似然估計,可以知道 ,那麼對應的, ,那麼當新樣本來的時候,加入存在一條記錄x,它很巧地沒有第i個特徵(這不巧了嗎?不是),由於0概率的存在,那麼使用上面的貝葉斯公式,就會出現屬於某個列別的概率為0, .但這種情況是應該避免的,那麼如何避免呢?
我們在對條件概率進行極大似然估計時,針對分子和分母做一些小變動,
其中, 表示第i個特徵不同取值的個數,由於這里是one-hot,取值為2,所以 , 乘以 是保證 個不同取值對應的條件概率之和為1,不偏袒任意一種情況,一視同仁.
To Be Continued.
多項式樸素貝葉斯,假設P(X=x|Y=c_k)是多項式分布.在了解多項式樸素貝葉斯之前,先介紹一下什麼是多項式分布?
將伯努利分布的單變數擴展到d維向量 ,其中 ,且 ,假設 的概率是 ,並且 ,則將得到離散分布:
.
其中x, 都是d維向量形式.在此的基礎上擴展二項分布到多項式分布(Multinomial distribution),該分布描述的是在n次獨立實驗中有 詞 的概率,其密度函數可以表達為如下形式:
多項式分布的期望,方差如下:
多項式分布應用到樸素貝葉斯上,對於文檔分類問題來說,假設給定文檔類型的基礎上文檔生成模型 是一個多項式分布.這樣對應關系就是:
需要注意的是,應用在文本分類的多項式樸素貝葉斯模型之前,一般多項式條件概率如下:
我們的多項式樸素貝葉斯概率模型為:
這里為了方便,首先我們假設文章長度和文章的類別之間沒有相關性(事實上也並不成立,比如說相對較長的郵件,相比垃圾郵件而言,正常郵件的概率更大),也就是說P(|x|)的分布與文章所屬類別無關.另一方面,由於最終所屬類別是後驗概率最大對應的類別,所以,我們可以將文章長度P(|x|)建模的概率,忽略掉,就像我們之前忽略伯努利分布中的分母一樣.
再者,為了更加方便,我們通常對兩邊取log運算,將冪次運算轉換成線性運算:
我們也可以將文章長度階乘省略,然後變成:
.
這樣就變成線性運算,就和線性回歸一樣,運算高效而簡單.
將文檔模型對應到多項式分布上得到多項式樸素貝葉斯,在我們對其做出假設分布之後,剩下的工作就是對假設分布下每個類別下的d個條件概率以及先驗分布進行估計.此外,還需要說明的一點是:多項式樸素貝葉斯模型採用詞袋模型,每個 表示第i個特徵出現的次數,也就是詞頻term-frequency,有時候也可以使用tf-idf作為值.
參數估計的過程也是樸素貝葉斯分類器學習的過程.而參數估計可以使用極大似然估計.先驗概率 的極大似然估計是
, k=1,2,...,K
其中,I(x)是一個指示函數,如果x為真,I(x)結果為1,如果x為假,I(x)=0.用語言描述來說, 這個概率等於在N個樣本的數據集中,類別為 的樣本所佔的比例.
條件概率 的極大似然估計是:
用語言描述來說,條件概率 等於在類別為 的樣本集合(數據集的子集)中,第t個特徵出現的概率等於 類樣本第t個特徵出現的總次數(考慮詞頻,不再是0,1)占 類樣本的總詞數(文章長度之和,文章單詞特徵是固定的,考慮了詞頻)的比例.
為了方便理解,將 表示為第k類樣本集合中第t個特徵出現的總次數, 表示為在所有樣本中第k類樣本的總詞數(第k類樣本長度之和,考慮頻數),簡寫成:
和伯努利樸素貝葉斯模型類似,有可能存在某一維度,數據集在這一維度上都是0,對應到文檔分類上,就是這個詞在所有文章中都沒有出現過(詞典選的不好,特徵選擇不好),這種情況就會出現0概率.所以我們需要對條件概率做一點小改動:
其中,d表示數據維度為d(有d個特徵,每個特徵都加 ,保證概率和為1, 需要乘d).當 時,叫做Laplace Smoonthing拉普拉斯平滑,當然 也可以小於1.
To Be Continued
高斯樸素貝葉斯,假設P(X=x|Y=c_k)是多元高斯分布.在了解高斯樸素貝葉斯之前,先介紹一下什麼是高斯分布,什麼是多元高斯分布?
高斯分布又稱正態分布,在實際應用中最為廣泛。對於單變數 ,高斯分布的參數有兩個,分別是均值 和方差 ,其概率密度函數為
其中, 是D維均值向量, 是DxD的協方差矩陣, 是 的行列式.多元高斯分布的期望是 ,方差是
特殊的, 如果D個維度之間相互獨立,那麼多元高斯分布就可以表示成單元高斯分布概率密度函數的連乘積 .
高斯樸素貝葉斯模型是假設條件概率P(X=x|Y=c_k)是多元高斯分布,另一方面,由之前的特徵的條件獨立性假設,我們就可以通過對每個特徵的條件概率建模, 每個特徵的條件概率 也服從高斯分布 .
在 類下第i個詞對應的高斯分布為:
其中, , 表示c類下第i個特徵的均值和方差.
由於特徵之間的獨立性假設,我們可以得到條件概率:
一共有d個特徵.
高斯樸素貝葉斯變成:
.
了解了多元高斯分布分布之後,接下來的工作就是對參數進行估計,計算 和 .
先驗概率和之前的估算方法相同,不再描述.主要是對高斯分布的均值和方差的估計,採用的方法仍然是極大似然估計.
均值的估計 是在樣本類別 中,所有 的平均值;
方差的估計 為樣本類別 中所有 的方差.
對於一個連續的樣本值,帶入高斯分布,就可以求出它的概率分布了.
所有參數估計完成之後,就可以計算給定樣本的條件概率 ,進而可以計算 ,之後就可以確定樣本類別,完成模型預測.
Ⅱ 數據挖掘十大經典演算法之樸素貝葉斯
樸素貝葉斯,它是一種簡單但極為強大的預測建模演算法。之所以稱為樸素貝葉斯,**是因為它假設每個輸入變數是獨立的。**這個假設很硬,現實生活中根本不滿足,但是這項技術對於絕大部分的復雜問題仍然非常有效。
貝葉斯原理、貝葉斯分類和樸素貝葉斯這三者之間是有區別的。
貝葉斯原理是最大的概念,它解決了概率論中「逆向概率」的問題,在這個理論基礎上,人們設計出了貝葉斯分類器,樸素貝葉斯分類是貝葉斯分類器中的一種,也是最簡單,最常用的分類器。樸素貝葉斯之所以樸素是因為它假設屬性是相互獨立的,因此對實際情況有所約束,**如果屬性之間存在關聯,分類准確率會降低。**不過好在對於大部分情況下,樸素貝葉斯的分類效果都不錯。
樸素貝葉斯分類器依靠精確的自然概率模型,在有監督學習的樣本集中能獲取得非常好的分類效果。在許多實際應用中,樸素貝葉斯模型參數估計使用最大似然估計方法,換而言之樸素貝葉斯模型能工作並沒有用到貝葉斯概率或者任何貝葉斯模型。
樸素貝葉斯分類 常用於文本分類 ,尤其是對於英文等語言來說,分類效果很好。它常用於垃圾文本過濾、情感預測、推薦系統等。
1、 需要知道先驗概率
先驗概率是計算後驗概率的基礎。在傳統的概率理論中,先驗概率可以由大量的重復實驗所獲得的各類樣本出現的頻率來近似獲得,其基礎是「大數定律」,這一思想稱為「頻率主義」。而在稱為「貝葉斯主義」的數理統計學派中,他們認為時間是單向的,許多事件的發生不具有可重復性,因此先驗概率只能根據對置信度的主觀判定來給出,也可以說由「信仰」來確定。
2、按照獲得的信息對先驗概率進行修正
在沒有獲得任何信息的時候,如果要進行分類判別,只能依據各類存在的先驗概率,將樣本劃分到先驗概率大的一類中。而在獲得了更多關於樣本特徵的信息後,可以依照貝葉斯公式對先驗概率進行修正,得到後驗概率,提高分類決策的准確性和置信度。
3、分類決策存在錯誤率
由於貝葉斯分類是在樣本取得某特徵值時對它屬於各類的概率進行推測,並無法獲得樣本真實的類別歸屬情況,所以分類決策一定存在錯誤率,即使錯誤率很低,分類錯誤的情況也可能發生。
第一階段:准備階段
在這個階段我們需要確定特徵屬性,同時明確預測值是什麼。並對每個特徵屬性進行適當劃分,然後由人工對一部分數據進行分類,形成訓練樣本。
第二階段:訓練階段
這個階段就是生成分類器,主要工作是 計算每個類別在訓練樣本中的出現頻率 及 每個特徵屬性劃分對每個類別的條件概率。
第三階段:應用階段
這個階段是使用分類器對新數據進行分類。
優點:
(1)樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率。
(2)對小規模的數據表現很好,能個處理多分類任務,適合增量式訓練,尤其是數據量超出內存時,我們可以一批批的去增量訓練。
(3)對缺失數據不太敏感,演算法也比較簡單,常用於文本分類。
缺點:
(1)理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為樸素貝葉斯模型給定輸出類別的情況下,假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。而在屬性相關性較小時,樸素貝葉斯性能最為良好。對於這一點,有半樸素貝葉斯之類的演算法通過考慮部分關聯性適度改進。
(2)需要知道先驗概率,且先驗概率很多時候取決於假設,假設的模型可以有很多種,因此在某些時候會由於假設的先驗模型的原因導致預測效果不佳。
(3)由於我們是通過先驗和數據來決定後驗的概率從而決定分類,所以分類決策存在一定的錯誤率。
(4)對輸入數據的表達形式很敏感。
參考:
https://blog.csdn.net/qiu__liao/article/details/90671932
https://blog.csdn.net/u011067360/article/details/24368085
Ⅲ 2019-03-28
基於模型的協同過濾演算法是源自於推薦過程可以被視為分類或預測問題的這一思想,它將評分矩陣作為訓練數據和測試數據,使用統計學、機器學習、數據挖掘等方法構建出用戶與物品之間的關系模型,然後據此產生合理的推薦。
它是基於用戶觀看或者或者評分等歷史行為數據,從中挖掘出用戶隱含的興趣,即隱因子,然後將用戶或視頻用隱因子來分類,最後通過這些隱因子進行推薦,用戶會對某些特定的隱因子有一定的喜好度,這樣便可以利用這種用戶或視頻與隱因子的關系來做出推薦。
用SVD分解技術來從用戶評分數據中確定出隱因子,以及確定出如何計算用戶或視頻與隱因子的關系,SVD將U-V矩陣所表示的用戶評分數據分解為用戶與隱因子的關系矩陣U、視頻與隱因子的關系矩陣V,以及表示隱因子的矩陣(求和符號)。
在計算用戶對視頻的喜好程度時,公式中包含了用戶和某一個隱類的關系,也包含了視頻和隱類的關系,要計算這兩個參數,需要一個訓練集,對於每個用戶,訓練集都包含了用戶喜歡的物品和不感興趣的物品,通過學習這個數據集,就可以獲得上面的模型參數。
推薦系統的用戶行為分為顯性反饋和隱性反饋,顯性反饋就是用戶對視頻的打分,隱性反饋就是用戶的觀看瀏覽行為。隱因子模型在顯性反饋數據上解決評分預測問題得到了很好的精度。但是對於隱性反饋數據集,這種數據集只有正樣本(用戶觀看了什麼視頻),而沒有負樣本(用戶對什麼視頻不感興趣),因而存在一個負樣本采樣過程。根據以往的經驗總結,負樣本采樣需要遵循以下原則:
(1)對每個用戶,要保證正負樣本的平衡。
(2)對每個用戶采負樣本時,要選取那些很熱門,而用戶卻沒有行為的視頻。
基於隱因子模型的推薦演算法流程如下:
訪問用戶行為數據——構造訓練數據集——迭代求解目標函數的參數——當收斂時——輸出用戶興趣向量和視頻的類別向量—
獲取用戶U的興趣向量P(u)——獲取視頻i的類別向量q(i)——計算用戶對視頻的喜好度——根據喜好度進行排序——輸出Top-k視頻列表。
演算法輸入:用戶行為日誌,用戶興趣向量、視頻類別向量。
演算法輸出:初始推薦結果。
1.從用戶行為日誌中獲取最近瀏覽過視頻的用戶集合U.
2.針對集合U中的每個用戶u(可並行處理):
2.1從用戶行為日誌中獲取該用戶近期觀看的視頻集合M(u);
2.2訪問「基於隱因子的視頻相似矩陣」獲取與M(u)相似的視頻集合N(u);
2.3針對視頻集合N(u)中的每個視頻,計算用戶對該視頻的偏好值;
2.4依據用戶偏好值,對N(u)的視頻進行排序;
2.5取Top-k個視頻,為每個視頻賦予解釋,如「您近期瀏覽過與之近似的視頻」;
2.6保存Top-k個視頻到「初始推薦結果」中。
它主要適用於缺少用戶興趣信息和視頻類別信息,但是具有大量的用戶行為的系統,它一般適用於離線推薦,不適用於實時推薦。
演算法原理:由於推薦問題可以被看成分類問題,因此可以使用一些機器學習領域中的分類演算法對推薦問題加以解決,樸素貝葉斯的基本思想是:對於給出的待分類物品和既定的類別,計算該物品在各個類別中出現的概率,哪個類別計算出的概率最大就將帶分類物品分到那個類別。
樸素貝葉斯分類在推薦系統中有著一定程度的應用,它能用於在已知某些評分的情況下通過計算概率預測出未知評分。
演算法輸入:已知目標用戶對視頻Vx之外的視頻評分情況,以及其他用戶對各視頻的評分情況。
演算法輸出:確定目標用戶對視頻Vx的評分。
樸素貝葉斯實現起來比較簡單,准確率較高,但是分類的時候需要學習全部樣本的信息。因此,樸素貝葉斯分類更適用於數據量不大,類別較少的分類問題。
他以物品的內容描述信息為依據來做出推薦,本質上是基於對物品和用戶自身的特徵或屬性的直接分析與計算。CB推薦方法是依賴於用戶過去時的數據對現在時的用戶進行推薦,所以不能像CF那樣實現實現用戶潛在興趣的挖掘。
在CB推薦系統中,需要為每個物品創建一個物品畫像用於記錄該物品的內容固有屬性,也需要為每個用戶創建一個用戶畫像用於記錄用戶的特定偏好,物品/用戶畫像的本質是由一些表示特徵的向量組成的。我們嘗試使用向量來表示物品的所有屬性,例如,由於演員是電影的一個屬性,那麼就假設每個演員都是這個屬性的一個向量分量,其中,若向量中相應位置的演員有出演這部電影,則該向量中的對應位置值設為1,否則為0.同樣的電影的導演、類型等其他固有屬性也可以用0、1來表示。
我們用效用矩陣代表用戶和物品之間的聯系。對於用戶喜歡的物品,我們可以做的最好預測是聚合這些物品畫像。如果效用矩陣只有1這個取值,那麼,最簡單的聚合就是將效用矩陣中各個值為1的位置對應的物品畫像中的向量取值求平均值得到結果。
例如,假設用戶對電影的效用矩陣只有0和1兩種取值,代表用戶是否看過電影,若用戶U看過的電影中由百分之30的電影都有演員王俊凱,那麼用戶U的用戶畫像中對應王俊凱的分量取值就是0.3.
如果效用矩陣不是布爾型,比如評分取值1~5,那麼我們就可以通過數值來衡量物品相似度。將每個元素減去這個用戶評分的平均值進行正則化是很有必要的。通過正則化,當用戶物品評分低於均值時就會得到一個負值,當用戶對物品評分高於均值時我們能得到一個正數。例如,考慮和上例相同的電影信息,但是現在效用矩陣的元素取值為1~5.假設用戶U對於所有電影的平均分為3,其中4部電影有王俊凱參演,對應電影評分分別是3、4、5、4.那麼在用戶U的畫像中,對應王俊凱的分量取值就是0、1、2、1的平均值,即為1.
該方法不考慮非結構化特徵,不考慮反饋,單純基於視頻的內容固有屬性來進行相似度計算及視頻推薦。在內容過濾視頻推薦系統中,最基礎的就是抽取出特徵,以及如何通過這些特徵計算視頻間的相似度。每個視頻可以用特徵向量矩陣來表示,通過該向量和用戶偏好內容偏好進行加權內積,則可以得到該視頻和用戶喜好的相關程度,進而用相關程度排序就可以進行視頻推薦了。
利用視頻的基本信息和用戶偏好內容的相似性進行視頻推薦。通過分析用戶已經觀看過的電影的內容,如演員、導演、風格等,生成用戶的偏好內容,然後推薦與用戶感興趣的電影內容相似度高的其他電影
視頻信息(類型、演員、上映時間等)——內容分析器——視頻特徵矩陣(1)
用戶行為(評價、分享、收藏、瀏覽的視頻)——概要學習器——用戶內容偏好(2)
(1)和(2)相似度計算——根據相似度排序——輸出Top-k視頻列表
演算法輸入:視頻信息,用戶行為日誌。
演算法輸出:初始推薦結果。
1.視頻表示:每個視頻使用特徵向量表示,分量為視頻的特徵屬性,如視頻名稱、導演、主演等。
2.從「用戶行為日誌中」,獲取該用戶所瀏覽、收藏、評價、分享的視頻集合M,根據視頻集合M中視頻的特徵數據,可以學習得到用戶的內容偏好。用戶的喜好模型包括如下內容:
2.1視頻的導演列表:每個導演之間用$符號隔開;
2.2視頻的演員列表:每個演員之間用$符號隔開;
2.3通過計算用戶喜好模型與每個視頻特徵向量間的相似度;
2.4對相似度進行排序,取Top-k個視頻,為每個視頻賦予解釋。
3.保存Top-k個視頻到「初始推薦結果中」。
這種方法尤其對新上線視頻會馬上被推薦非常有效,被推薦的機會與老的視頻時相同的。
該方法重點考慮非結構化的處理
1.演算法背景:
在實際的視頻推薦中,上線視頻往往還會結合用戶給予的評論信息進行實時推薦。用戶的評論一般分為評分與文字評論兩種,前者通過分數直接反應用戶對視頻的喜惡,後者則需要我們從冗長的文字中提取關鍵信息。TF-IDF等技術被引入。
TF指的是某一個給定的詞語在該文件中出現的次數,這個數字通常會被正則化,以防止它偏向長的文件(同一個詞語在長文件里可能會比短文件有更高的詞頻,而不管該詞語重要與否)。IDF是一個詞語普遍重要性的度量,某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。
TF-IDF演算法基於這樣一個假設:若一個詞語在目標文檔中出現的頻率高而在其他文檔中出現的頻率低,那麼這個詞語就可以用來區分出目標目標文檔。這個假設需要掌握的由兩點:
1.在本文檔出現的頻率高;
2.在其他文檔出現的頻率低。
因此,TF-IDF演算法的計算可以分為詞頻TF和逆轉文檔頻率IDF兩部分,由TF和IDF的乘積來設置文檔詞語的權重。
TF指的是一個詞語在文檔中的出現頻率。假設文檔集包含的文檔數為N,文檔集中包含關鍵詞Ki的文檔數為Ni,Fij表示關鍵詞Ki在文檔Dj中出現的次數,Fdj表示文檔Dj中出現的詞語總數,Ki在文檔Dj中的詞頻TFij定義為
TFij=Fij/Fdj
這個數字通常會被正則化,以防止它偏向長的文件(同一個詞語在長文件里可能會比短文件有更高的詞頻,而不管該詞語重要與否)。
IDF是一個詞語普遍重要性的度量。ni/N表示某一詞語在整個文檔集中出現的頻率,由它計算的結果取對數得到關鍵詞ki的逆文檔頻率IDFi
IDFi=logN/ni
由TF和IDF計算詞語的權重為TFij*IDFi=Fij/Fdj*logN/ni
可以看出,TF-IDF與詞語在文檔中的出現次數成正比,與該詞在整個文檔集中的出現次數成反比。在目標文檔中,提取關鍵詞的方法就是將該文檔所有詞語的TF-IDF計算出來並進行對比,取其中TF-IDF值最大的K個數組成目標文檔的特徵向量用以表示文檔。在此,注意一點,文檔中存在的停用詞,如『是』、『的』之類的,對於文檔的中心思想表達沒有意義的詞,在分詞時需要先過濾掉再計算其他詞語的TF-IDF值。
對於計算影評的TF-IDF,以電影「加勒比海盜:黑珍珠號的詛咒」為例,假設它總共由1000篇影評,其中一篇影評的總詞語數為200,其中出現最頻繁的詞語為「海盜」、「船長」、「自由」出現最頻繁,分別時20、15、10次,並且這三個詞在所有影評中被提及的次數分別為1000、800、100就這三個詞語作為關鍵詞的順序計算如下。
1.將影評中出現的停用詞過濾掉,計算其他詞語的詞頻,以出現最多的三個詞為例進行計算如下。「海盜」出現的詞頻為20/200=0.1、「船長」出現的詞頻為0.075,「自由」出現的詞頻為0。05;
2.計算詞語的逆文檔頻率如下。海盜的IDF為IDF=log1000/1000=0、船長出現的IDF為log(1000/800)=0.3,自由的IDF為log(1000/100)=1.
3.由1和2的計算的結果求出詞語的TF-IDF結果,海盜為0、船長為00225,自由為0.05.通過對比可得,該篇影評的關鍵詞排序應為:自由、船長、海盜。把這些詞語的TF-IDF值作為它們的權重按照對應的順序依次排列,就得到這篇影評的向量,我們就用這個向量來代表這篇影評,向量中每一個維度的大小對應這個屬性的重要性。將總的影評集中所有的影評向量與特定的系數相乘求和,得到這部電影的綜合影評向量,與電影的基本屬性結合構建視頻的物品畫像,同理構建用戶畫像,可採用多種方法計算視頻的物品畫像和用戶畫像之間的相似度,為用戶做出推薦。
該方法其實是一種接近無反饋的方法。
KNN演算法基於這樣的假設,如果在特徵空間中,一個樣本的K個最鄰近樣本中的大多數樣本屬於某一個類別,則該樣本也屬於這個類別,KNN演算法通過計算樣本個體間的距離或相似度來確定最近鄰,演算法的時間復雜度跟樣本的個數直接相關。應用在推薦系統中時,KNN演算法能夠將與目標物品的內容的k個最相似物品推薦給用戶。由於內容固有屬性一旦創建就基本保持不變,所以基於內容固有屬性的KNN最近鄰計算不需要頻繁的重復刷新。
由於KNN演算法依賴於周圍有限的已正確分類的鄰居樣本來對待分類樣本進行分類,所以它更適合類域的交叉或重疊較多的待分類樣本集的分類問題。同時,KNN演算法的主要不足是當分類的各樣本容量不平衡時,會出現計算結果不準確的問題,為了克服這個問題,就需要採用一些賦權值的方法來加以改進。
KNN在CB推薦演算法中的應用與在CF推薦演算法中的應用極為相似,它們都是要首先找到與目標物品相似的且已經被用戶u評價過的k個物品,然後根據用戶U對這K個物品的評價來預測其對目標物品的評價。它們的差別在於,CF推薦演算法中的KNN時根據用戶對物品的評分來計算物品間相似度的,而CB推薦演算法中KNN是根據物品畫像來計算物品間相似度的,所以對於後者來說,如何通過物品畫像來計算物品間的相似度是演算法中的關鍵步驟,相似度的計算可以使用傑卡德距離(對於結構化的數據)、餘弦相似度(對於用向量空間模型表示的物品)或者Pearson相關系數的計算方法。KNN演算法流程如下:
演算法輸入:用戶已評分視頻、目標視頻i.
演算法輸出:用戶對目標視頻i的評分。
由於用戶對視頻的評分趨勢各有不同,如有的用戶評分嚴格,有的用戶評分寬松,這種趨勢被稱為全局作用,所以也需要在KNN的基本模型中考慮到全局作用的影響。常用的全局作用有1.全局評分的平均值2.電影的被評分傾向、用戶的評分傾向、以及用戶第一次評分後相距當前的用時。將全局作用納入在KNN模型的目標是為該全局作用計算出一個特定的參數,在計算這樣的參數時,每次只考慮一個全局作用,並使用前一次計算全局作用時的預測評分與真實評分之差作為本次計算的真實評分。
該方法是一種側重考慮反饋的方法
1.演算法背景
Rocchio是從用戶觀看歷史中抽取用戶喜好的視頻特徵構建用戶畫像常用的一種演算法是信息檢索領域處理相關反饋的一個著名演算法,它提供了如何通過用戶觀看視頻的反饋計算用戶特徵向量中屬性值的方法。舉例來說,假如用戶觀看過星球大戰和加勒比海盜並給予高分,那麼根據用戶的歷史行為數據構建用戶畫像時,用戶的特徵向量可表示為{「動作」:1、「歐美」:1,「科幻」:0.5,「冒險」:0.5},當該用戶觀看電影「2012」並為其打了個低分時,用戶特徵向量更新為{「動作」:1、「歐美」:0.8,「科幻」:0.3,「冒險」:0.5}
在視頻推薦系統中,Rocchio演算法根據用戶的歷史數據對用戶的原始特徵向量不斷地進行修改,實現實時更新用戶畫像的功能。Rocchio演算法基於這樣的假設:如果我們需要計算出最精確用戶特徵向量Uc,那麼這個用戶特徵向量應該與用戶喜歡的視頻特徵最相似,與用戶討厭的視頻特徵最不同。若V1表示用戶喜歡的視頻,Vh表示用戶討厭的視頻,那麼根據Rocchio演算法的思想,定義最優的用戶特徵向量為:用戶特徵向量與用戶喜歡的視頻的相似度減去用戶特徵向量與用戶討厭的視頻的相似度的最大值。在基於內容的視頻推薦中,根據用戶的歷史行為數據建立用戶畫像,我們可以採用Rocchio演算法不斷地調整用戶的特徵向量Uc.
1.演算法背景
構建基於內容的推薦系統的另外一個學習演算法是基於決策樹的推薦演算法,不同於其他演算法,該演算法在訓練階段會生成一個顯式的決策模型。決策樹可以通過訓練數據集構建並有效判斷一個新的視頻是否可能受用戶喜歡,當視頻的特徵屬性較少時採用決策樹演算法能夠取得不錯的效果,另外,決策樹學習的思想也比較容易被人理解,在視頻推薦理由的可解釋方面較好。
2.演算法原理
在視頻推薦系統中,決策樹的內部節點通常表示視頻的特徵屬性,這些節點用於區分視頻集合,例如,通過視頻中是否包含這個特徵將其進行分類。在只有兩個分類的簡單數據集中,用戶是否對視頻感興趣一般出現在決策樹的葉子節點上。
如當系統為用戶A做推薦時,首先根據用戶的歷史觀看記錄和對視頻的評分構建用戶畫像並得出一個結論:當視頻是奇幻或冒險類型的喜劇片,該用戶很可能會喜歡它,當系統為用戶推薦一部新的視頻,首先判斷視頻是否時喜劇,若視頻不是喜劇,系統直接判定該用戶不會喜歡這部視頻並尋找新的視頻繼續進行決策判斷:若視頻時喜劇,那麼系統接著判斷視頻是否屬於奇幻或冒險題材,當視頻滿足其中一個條件時,系統將做出決策:該視頻時該用戶可能喜歡的視頻:否則判定為用戶不喜歡的類型。
1.演算法背景:
將基於內容的視頻推薦問題視為分類問題時,多種機器學習的方法都可以被採用。從一個更抽象的角度上看,大部分學習方法致力於找到一個可以准確區分用戶喜歡和不喜歡的視頻的線性分類模型系數。
將視頻數據用n維特徵向量進行表示,那麼視頻可用點在n維空間表示,線性分類器試圖在給定的視頻數據空間中找出一個能夠將視頻正確分類的平面,一類點盡可能在平面的某一邊,另一類則在平面的另一邊,在視頻推薦中,就是將視頻分為用戶喜歡和不喜歡兩類。例如,用戶A只喜歡看喜劇電影,那麼劃分用戶A觀看視頻類別的分界條件就是視頻是否為喜劇。
2.演算法原理
基於線性分類器的CB推薦演算法通過視頻特徵的線性組合進行分類,若輸入的視頻特徵向量為V,輸出的結果y表示用戶是否喜歡視頻,則線性分類器可以表示為視頻特徵向量對應的權重和V向量的內積,然後根據輸入的視頻特徵屬性做出決定輸出結果。
二維的分類器擴展為在多維中劃分類別界限的超平面。
使用線性分類器的另一個挑戰是處理數據的雜訊。數據集上的視頻向量若存在雜訊分量則可能會導致錯誤的分類結果。另外,也有可能存在雜訊視頻,由於不知名的原因錯誤的分類或者處於分類的邊緣地帶,這種雜訊在數據中的識別並不容易,這些問題在使用線性分類器時需要注意。
1.演算法背景
貝葉斯定理描述在一個隨機事件發生下另一個隨機事件發生的條件概率的定理。樸素貝葉斯演算法是一種常用的分類方法,基於樸素貝葉斯的推薦系統判斷用戶是否對某個視頻有興趣的方法是將這個問題轉化為分類問題,例如,將其分為兩類,一類是喜歡,另一類是不喜歡,樸素貝葉斯演算法假設用戶和視頻的特徵向量中的各個分量相互之間獨立並成功的應用在基於內容的視頻推薦系統中。
2.計算原理
視頻推薦系統中,分類C下的一個視頻的特徵屬性Vi的條件概率用Vi在分類C下所有視頻中出現的頻率近似表示。即它等於Vi在標記為C的視頻中出現的次數(即頻度),除以在這些視頻中出現的所有特徵屬性的個數,為了預防計算概率為0的情況,對式子進行平滑論,即分子加1,分母加所有視頻中的出現的不同特徵屬性數(類似文章的詞彙量)。
基於知識的推薦方法,是區別基於CB和基於CF的常見推薦方法。知識表示是一組為實現知識形式化描述而做的約定,是把知識客體中的知識因子與知識關聯起來,便於人們的識別和對知識的理解,它是知識組織的前提和基礎,任何知識組織方法都是建立在知識表示的基礎上。
基於知識的推薦方法是針對該領域的特殊需求和更為精細的結構化內容,包括專業性的優質特徵,幫助提高搜索引擎在特定領域的服務。以視頻推薦為例,一部電影的上映時間和檔期熱度,哪些導演指導的一定是大片,變形金剛和指環王系列口碑肯定不會差到多少等,都是非常有價值的推薦信息。因此,推薦系統需要利用特定領域相關的或者常識相關的額外的因果知識生成推薦或者輔助推薦決策。
此外,基於知識的推薦,也是更加容易滿足主觀個性化需求的方法。例如,只要是VIP付費用戶,如果配置了偏好類型,就可以為其提供更加專注、精準和深入的推薦服務。這里主要是面向兩種常見的知識展開基於知識的推薦方法描述:一種是約束知識,主要面向人工知識庫,構建if-then推薦規則;另一種是關聯知識,利用數據挖掘理論構建基於數據規律的自動學習的推薦規則。
Ⅳ 樸素貝葉斯分類原理
貝葉斯分類演算法是統計學的一種分類方法,它是一類利用概率統計知識進行分類的演算法。在許多場合,樸素貝葉斯(Naïve Bayes,NB)分類演算法可以與決策樹和神經網路分類演算法相媲美,該演算法能運用到大型資料庫中,而且方法簡單、分類准確率高、速度快。
由於貝葉斯定理假設一個屬性值對給定類的影響獨立於其它屬性的值,而此假設在實際情況中經常是不成立的,因此其分類准確率可能會下降。
Ⅳ 樸素貝葉斯的應用
和決策樹模型相比,樸素貝葉斯分類器(Naive Bayes Classifier,或 NBC)發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,演算法也比較簡單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。
解決這個問題的方法一般是建立一個屬性模型,對於不相互獨立的屬性,把他們單獨處理。例如中文文本分類識別的時候,我們可以建立一個字典來處理一些片語。如果發現特定的問題中存在特殊的模式屬性,那麼就單獨處理。
這樣做也符合貝葉斯概率原理,因為我們把一個片語看作一個單獨的模式,例如英文文本處理一些長度不等的單詞,也都作為單獨獨立的模式進行處理,這是自然語言與其他分類識別問題的不同點。
實際計算先驗概率時候,因為這些模式都是作為概率被程序計算,而不是自然語言被人來理解,所以結果是一樣的。
在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。但這點有待驗證,因為具體的問題不同,演算法得出的結果不同,同一個演算法對於同一個問題,只要模式發生變化,也存在不同的識別性能。這點在很多國外論文中已經得到公認,在機器學習一書中也提到過演算法對於屬性的識別情況決定於很多因素,例如訓練樣本和測試樣本的比例影響演算法的性能。
決策樹對於文本分類識別,要看具體情況。在屬性相關性較小時,NBC模型的性能稍微良好。屬性相關性較小的時候,其他的演算法性能也很好,這是由於信息熵理論決定的。
Ⅵ 數據挖掘十大經典演算法(1)——樸素貝葉斯(Naive Bayes)
在此推出一個演算法系列的科普文章。我們大家在平時埋頭工程類工作之餘,也可以抽身對一些常見演算法進行了解,這不僅可以幫助我們拓寬思路,從另一個維度加深對計算機技術領域的理解,做到觸類旁通,同時也可以讓我們搞清楚一些既熟悉又陌生的領域——比如數據挖掘、大數據、機器學習——的基本原理,揭開它們的神秘面紗,了解到其實很多看似高深的領域,其實背後依據的基礎和原理也並不復雜。而且,掌握各類演算法的特點、優劣和適用場景,是真正從事數據挖掘工作的重中之重。只有熟悉演算法,才可能對紛繁復雜的現實問題合理建模,達到最佳預期效果。
本系列文章的目的是力求用最干練而生動的講述方式,為大家講解由國際權威的學術組織the IEEE International Conference on Data Mining (ICDM) 於2006年12月評選出的數據挖掘領域的十大經典演算法。它們包括:
本文作為本系列的第一篇,在介紹具體演算法之前,先簡單為大家鋪墊幾個數據挖掘領域的常見概念:
在數據挖掘領域,按照演算法本身的行為模式和使用目的,主要可以分為分類(classification),聚類(clustering)和回歸(regression)幾種,其中:
打幾個不恰當的比方 :
另外,還有一個經常有人問起的問題,就是 數據挖掘 和 機器學習 這兩個概念的區別,這里一句話闡明我自己的認識:機器學習是基礎,數據挖掘是應用。機器學習研製出各種各樣的演算法,數據挖掘根據應用場景把這些演算法合理運用起來,目的是達到最好的挖掘效果。
當然,以上的簡單總結一定不夠准確和嚴謹,更多的是為了方便大家理解打的比方。如果大家有更精當的理解,歡迎補充和交流。
好了,鋪墊了這么多,現在終於進入正題!
作為本系列入門的第一篇,先為大家介紹一個容易理解又很有趣的演算法—— 樸素貝葉斯 。
先站好隊,樸素貝葉斯是一個典型的 有監督的分類演算法 。
光從名字也可以想到,要想了解樸素貝葉斯,先要從 貝葉斯定理 說起。
貝葉斯定理是我們高中時代學過的一條概率學基礎定理,它描述了條件概率的計算方式。不要怕已經把這些知識還給了體育老師,相信你一看公式就能想起來。
P(A|B)表示事件B已經發生的前提下,事件A發生的概率,叫做事件B發生下事件A的條件概率。其基本求解公式為:
其中,P(AB)表示A和B同時發生的概率,P(B)標識B事件本身的概率。
貝葉斯定理之所以有用,是因為我們在生活中經常遇到這種情況:我們可以很容易直接得出P(A|B),P(B|A)則很難直接得出,但我們更關心P(B|A)。
而貝葉斯定理就為我們打通從P(A|B)獲得P(B|A)的道路。
下面不加證明地直接給出貝葉斯定理:
有了貝葉斯定理這個基礎,下面來看看樸素貝葉斯演算法的基本思路。
你看,其思想就是這么的樸素。那麼,屬於每個分類的概率該怎麼計算呢?下面我們先祭出形式化語言!
那麼現在的關鍵就是如何計算第3步中的各個條件概率。我們可以這么做:
因為分母對於所有類別為常數,因為我們只要將分子最大化皆可。又因為各特徵屬性是條件獨立的,所以有:
如果你也跟我一樣,對形式化語言有嚴重生理反應,不要怕,直接跳過前面這一坨,我們通過一個鮮活的例子,用人類的語言再解釋一遍這個過程。
某個醫院早上收了六個門診病人,如下表。
現在又來了第七個病人,是一個打噴嚏的建築工人。請問他最有可能患有何種疾病?
本質上,這就是一個典型的分類問題, 症狀 和 職業 是特徵屬性, 疾病種類 是目標類別
根據 貝葉斯定理
可得
假定"打噴嚏"和"建築工人"這兩個特徵是獨立的,因此,上面的等式就變成了
這是可以計算的。
因此,這個打噴嚏的建築工人,有66%的概率是得了感冒。同理,可以計算這個病人患上過敏或腦震盪的概率。比較這幾個概率,就可以知道他最可能得什麼病。
接下來,我們再舉一個樸素貝葉斯演算法在實際中經常被使用的場景的例子—— 文本分類器 ,通常會用來識別垃圾郵件。
首先,我們可以把一封郵件的內容抽象為由若干關鍵片語成的集合,這樣是否包含每種關鍵詞就成了一封郵件的特徵值,而目標類別就是 屬於垃圾郵件 或 不屬於垃圾郵件
假設每個關鍵詞在一封郵件里出現與否的概率相互之間是獨立的,那麼只要我們有若干已經標記為垃圾郵件和非垃圾郵件的樣本作為訓練集,那麼就可以得出,在全部垃圾郵件(記為Trash)出現某個關鍵詞Wi的概率,即 P(Wi|Trash)
而我們最重要回答的問題是,給定一封郵件內容M,它屬於垃圾郵件的概率是多大,即 P(Trash|M)
根據貝葉斯定理,有
我們先來看分子:
P(M|Trash) 可以理解為在垃圾郵件這個范疇中遇見郵件M的概率,而一封郵件M是由若干單詞Wi獨立匯聚組成的,只要我們所掌握的單詞樣本足夠多,因此就可以得到
這些值我們之前已經可以得到了。
再來看分子里的另一部分 P(Trash) ,這個值也就是垃圾郵件的總體概率,這個值顯然很容易得到,用訓練集中垃圾郵件數除以總數即可。
而對於分母來說,我們雖然也可以去計算它,但實際上已經沒有必要了,因為我們要比較的 P(Trash|M) 和 P(non-Trash|M) 的分母都是一樣的,因此只需要比較分子大小即可。
這樣一來,我們就可以通過簡單的計算,比較郵件M屬於垃圾還是非垃圾二者誰的概率更大了。
樸素貝葉斯的英文叫做 Naive Bayes ,直譯過來其實是 天真的貝葉斯 ,那麼他到底天真在哪了呢?
這主要是因為樸素貝葉斯的基本假設是所有特徵值之間都是相互獨立的,這才使得概率直接相乘這種簡單計算方式得以實現。然而在現實生活中,各個特徵值之間往往存在一些關聯,比如上面的例子,一篇文章中不同單詞之間一定是有關聯的,比如有些詞總是容易同時出現。
因此,在經典樸素貝葉斯的基礎上,還有更為靈活的建模方式—— 貝葉斯網路(Bayesian Belief Networks, BBN) ,可以單獨指定特徵值之間的是否獨立。這里就不展開了,有興趣的同學們可以做進一步了解。
最後我們來對這個經典演算法做個點評:
優點:
缺點:
好了,對於 樸素貝葉斯 的介紹就到這里,不知道各位看完之後是否會對數據挖掘這個領域產生了一點興趣了呢?
Ⅶ 樸素貝葉斯的推理學習演算法
樸素貝葉斯的推理學習演算法
貝葉斯公式簡易推導式:
樸素貝葉斯的樸素在於假設B特徵的每個值相互獨立,所以樸素貝葉斯的公式是這樣的
學習與分類演算法:
(1)計算先驗概率和條件概率
拉普拉斯平滑:
(2)代入被測樣本向量,得到不同類別P,再根據後驗概率最大化,取P最大的類別作為該標簽類別。
樸素貝葉斯優點在於對於小規模數據很好,適合多分類。缺點是數據輸入形式敏感而且特徵值之間的相互獨立很難保證帶來的影響。
Ⅷ 樸素貝葉斯演算法
貝葉斯演算法是由英國數學家托馬斯·貝葉斯提出的,這個演算法的提出是為了解決「逆向概率」的問題。首先我們先來解釋下正向概率與逆向概率的含義:
正向概率 :假設一個箱子里有5個黃色球和5個白色球,隨機從箱子里拿出一個球,請問取出的是黃球的概率是多少?很容易計算P(黃球)= N(黃球)/N(黃球)+ N(白球) = 5/5+5 = 1/2。
逆向概率 :起初我們並不知道箱子里有多少個球,我們依次從箱子里取出10個球,發現這個10個球中有7個白球,3個黃球,那麼我們會根據我們觀察到的結果去推測箱子里白球與黃球的分布比例大概是7:3,但是我們無法推測出箱子里的球的個數。
貝葉斯演算法是一種基於概率統計的機器學習演算法,它會計算出每種情況發生的概率,然後對其進行分類,貝葉斯演算法經常用於文本分類問題和垃圾郵件過濾問題。假設有一篇新聞報道news report,我們使用貝葉斯演算法來判斷它們的類別,結果如下:
p(politics|news) = 0.2
p(entertainment|news) = 0.4
p(sports|news) = 0.7
因為p(sports|news)的概率最大,所以我們判斷這篇新聞報道為體育類報道。「|」左邊為要判斷的類別,右邊是我們給定的文章。
貝葉斯公式推導
接下來,我們將通過一個例子來推導貝葉斯公式。在一所學校里,男生和女生的比例分別是60%和40%,男生全部穿長褲,女生一半穿長褲,一半穿裙子。現迎面走來一個同學,你只能看清他(她)穿的是長褲,而無法分辨出他(她)的性別,請問他(她)是女生的概率?
下面我們逐步計算這個問題:
假設學校里的學生總數為N。
男生人數:N * P(boys),女生人數:N * P(girls)。
穿長褲的男生人數:N * P(boys) * P(pants|boys),其中P(pants|boys)是條件概率的表達形式,意思是男生中穿長褲的概率。因為男生都穿長褲,所以N * P(boys) * P(pants|boys) = 60% * N。
穿長褲的女生的人數:N * P(girs) * P(pants|girls) = 0.2 * N。
穿長褲的總人數:N * P(boys) * P(pants|boys) + N * P(girs) * P(pants|girls)
穿長褲的同學是女生的概率:P(girl|pants) = N * P(girs) * P(pants|girls) / N * P(boys) * P(pants|boys) + N * P(girs) * P(pants|girls) = P(girs)*P(pants|girls) / P(pants),分母用P(pants)表示穿長褲的概率。
最終結果:P(girl | pants) = P(pants | girl) * P(girl) / P(pants)
其中:P(girl)我們稱為先驗概率,是已知值,在這個例子中P(girl) = 40%。先驗概率:根據以往的經驗和分析得到的結果,先驗概率和其他條件的影響不受樣本影響。
P(girl | pants)我們稱為後驗概率,根據觀察到的結果,去反推是女生的概率。
貝葉斯數學表達式
貝葉斯演算法在垃圾郵件過濾中的應用
給定一封郵件,判定它是否屬於垃圾郵件?用D 來表示這封郵件,注意D 由N 個單片語成。我們用h+ 來表示垃圾郵件,h-表示正常郵件。
有貝葉斯公式可得:
P(h+ | D) = P(D | h+) * P(h+) / P(D)
P(h- | D) = P(D | h-) * P(h-) / P(D)
其中P(h+),P(h-)為先驗概率,假如我們有1000封郵件,其中有50封是垃圾郵件,其他都是正常郵件,那麼P(h+),P(h-)的概率就是已知的。兩個式子的分母都是P(D),所以P(D)對於最終結果的比較是沒有影響的。接下來就是要求P(D | h+),P(D | h-)垃圾郵件中或正常郵件中是郵件D的概率。
我們都知道一封郵件是由許多詞構成的,所以我們將P(D | h+)的表達式轉化為P(d1,d2,d3......dn | h+),就是看垃圾郵件中出現d1,d2...dn這些詞的概率是多少。
P(d1,d2,d3......dn | h+) = P(d1 | h+) * P(d2 |d1,h+) * P(d3 |d1,d2,h+) ...
這個式子計算起來非常困難,所以在這里我們做一個假設,假設每個詞都是獨立的並且互不影響,那麼這個式子就可以表示為:
P(d1,d2,d3......dn | h+) = P(d1 | h+) * P(d2 | h+) * P(d3 | h+) ...P(dn | h+)
P(h+ | D) = {P(d1 | h+) * P(d2 | h+) * P(d3 | h+) ...P(dn | h+)}* P(h+) / P(D)
上述這個式子我們就稱為樸素貝葉斯公式,樸素貝葉斯公式是對貝葉斯公式的簡化,它建立在每個條子互相獨立的基礎上。
在現實生活中,我們寫的每一句話中詞與詞之間肯定是有相互聯系,如果沒有聯系,那麼這句話是讀不通的。那麼為什麼樸素貝葉斯能夠在計算中使用,首先是計算簡單,其次對最終結果的影響非常小。
參考資料
1.唐宇迪,《機器學習與數據分析實戰》課程。
2.Peter,《機器學習實戰》。
Ⅸ 分類演算法 - 樸素貝葉斯演算法
相信很多同學在高中或者大學的時候都學過貝葉斯原理,即條件原理。
現分別有 A、B 兩個容器,在容器 A 里分別有 7 個紅球和 3 個白球,在容器 B 里有 1 個紅球和 9 個白球,現已知從這兩個容器里任意抽出了一個紅球,問這個球來自容器 A 的概率是多少?
假設已經抽出紅球為事件 B,選中容器 A 為事件 A,則有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10,按照公式,則有:P(A|B) = (7/10)*(1/2) / (8/20) = 0.875
之所以稱為樸素貝葉斯, 是因為它假設每個輸入變數是獨立的。 現實生活中這種情況基本不滿足,但是這項技術對於絕大部分的復雜問題仍然非常有效。
樸素貝葉斯模型由兩種類型的概率組成:
1、每個類別的概率P(Cj);
2、每個屬性的條件概率P(Ai|Cj)。
為了訓練樸素貝葉斯模型,我們需要先給出訓練數據,以及這些數據對應的分類。那麼上面這兩個概率,也就是類別概率和條件概率。他們都可以從給出的訓練數據中計算出來。一旦計算出來,概率模型就可以使用貝葉斯原理對新數據進行預測。
貝葉斯原理、貝葉斯分類和樸素貝葉斯這三者之間是有區別的
貝葉斯原理是最大的概念,它解決了概率論中「逆向概率」的問題,在這個理論基礎上,人們設計出了貝葉斯分類器,樸素貝葉斯分類是貝葉斯分類器中的一種,也是最簡單,最常用的分類器。樸素貝葉斯之所以樸素是因為它假設屬性是相互獨立的,因此對實際情況有所約束, 如果屬性之間存在關聯,分類准確率會降低。
(1) 演算法邏輯簡單,易於實現
(2)分類過程中時空開銷小(假設特徵相互獨立,只會涉及到二維存儲)
(1)理論上,樸素貝葉斯模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為樸素貝葉斯模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,在屬性個數比較多或者屬性之間相關性較大時,分類效果不好。
(2)在屬性相關性較小時,樸素貝葉斯性能最為良好。對於這一點,有半樸素貝葉斯之類的演算法通過考慮部分關聯性適度改進。
庫有3種演算法:GaussianNB、MultinomialNB和BernoulliNB。
這三個類適用的分類場景各不相同,主要根據數據類型來進行模型的選擇。一般來說,如果樣本特徵的分布大部分是連續值,使用GaussianNB會比較好。如果如果樣本特徵的分大部分是多元離散值,使用MultinomialNB比較合適。而如果樣本特徵是二元離散值或者很稀疏的多元離散值,應該使用BernoulliNB。
Ⅹ 樸素貝葉斯演算法是什麼
樸素貝葉斯方法是在貝葉斯演算法的基礎上進行了相應的簡化,即假定給定目標值時屬性之間相互條件獨立。
也就是說沒有哪個屬性變數對於決策結果來說佔有著較大的比重,也沒有哪個屬性變數對於決策結果佔有著較小的比重。雖然這個簡化方式在一定程度上降低了貝葉斯分類演算法的分類效果,但是在實際的應用場景中,極大地簡化了貝葉斯方法的復雜性。
樸素貝葉斯分類(NBC)是以貝葉斯定理為基礎並且假設特徵條件之間相互獨立的方法,先通過已給定的訓練集,以特徵詞之間獨立作為前提假設,學習從輸入到輸出的聯合概率分布,再基於學習到的模型,輸入X求出使得後驗概率最大的輸出Y。
個人貢獻:
貝葉斯在數學方面主要研究概率論。他首先將歸納推理法用於概率論基礎理論,並創立了貝葉斯統計理論,對於統計決策函數、統計推斷、統計的估算等做出了貢獻。1763年發表了這方面的論著,對於現代概率論和數理統計都有很重要的作用。貝葉斯的另一著作《機會的學說概論》發表於1758年.貝葉斯所採用的許多術語被沿用至今。
他對統計推理的主要貢獻是使用了"逆概率"這個概念,並把它作為一種普遍的推理方法提出來。貝葉斯定理原本是概率論中的一個定理,這一定理可用一個數學公式來表達,這個公式就是著名的貝葉斯公式。