【NLP】Day 11: 什麼?妳男友有乾妹妹?那你很大機率被綠了!機器學習:貝氏分類器
“You know what possibly means?”
“Like probably.”
“No, probably means there’s a good chance that we’re going. Possibly means we might, we might not.”
Chris Gardener《當幸福來敲門》
我們終於進入機器學習啦!就像每個初學程式的人都一定要印個Hello World!
,每個剛入門機器學習程式的同學,一定也是要先從貝式分類器(Naive Bayes classifier)開始啦!如同前面所說,所謂的語言模型(Language modeling)就是將每個詞出現的可能化成機率,並以機率的角度去看待整個語言,那貝氏分類器同樣也是一個基於機率的分類器,不過在了解貝氏分類器之前,我們得先知道什麼是貝氏定理。
貝氏定理
大家想必對這四個字可是熟悉又陌生,或許上次見面是高中吧,你心想。只是自己卻又好像沒有很瞭解這是什麼,就像是久久沒聯絡的同學一樣,在一次共同好友的婚禮上見到了,卻不知道要說些什麼,只能說些客套的話。這是什麼JOJO的奇妙比喻
扯遠了。其實貝氏定理就是在描述在一些已知的條件下,某件事情發生的比率。
比如說,我們已經知道伴侶的交友圈,以及伴侶的回家時間,跟他/她是否有第三者有關,那麼使用貝氏定理,就可以透過得知以上資訊,來推斷你的伴侶外遇的機率。假如今天你是一位異性戀女性,你的男朋友每天晚上都說會載女同事回家,所以每天幾乎都要快十點才會到家,你說你很在意,但是男友卻說他們只是朋友關係。某天,男友說,他要載他乾妹妹回家,你問男友說他要載誰,他說就是之前那個同事,但男友一走,卻一直到隔天早上才回家,請問男友有第三者的機率多高?
- 事件A: 你男友有乾妹妹
- 事件B: 有第三者介入你們感情
首先,在確定你男友有第三者之前,對你男友是否有乾妹妹這件事情會有一個基本機率判斷,因此我們稱你男友有乾妹妹的機率為P(A),也就是事前機率。而在確定你男友有第三者之後,我們會重新判斷你男友是否有乾妹妹的機率。亦即,若你男友有第三者之後,男友有認乾妹妹的機率作為P(A|B),也就是事後機率。
相反亦然,在確定你男友是否有乾妹妹之前,會先判斷你男友有第三者的機率,也就是事前機率P(B)。但在確定你男友有乾妹妹之後,會重新判斷你男友在有乾妹妹的前提下,有第三者的機率是多少。也就是說,若你男友認了乾妹妹之後,男友有第三者的機率為P(B|A),也就是事後機率。
貝式學習
至於貝式學習就是要找到一個假設,並以這個假設為前提,找到發生這個事件的最大機率。舉例來說,P(有第三者|有乾妹妹)=0.69,而P(沒有第三者|有乾妹妹)=0.31,貝氏分類器就會將有乾妹妹的特徵分類到「會有第三者」,這是因為0.69 > 0.31。也就是說,在貝式分類器所求的為:
自然語言處理上會怎麼運作?
如上所述,若今天以分類正負面電影評論為例,我們在進行文本計算時,事前機率P(+)就是所有文章中,正面文章的比例;而事前機率P(-)就是所有文章中,負面文章的比例。
假如說今天的測試文本為「電影好看!」,那麼斷詞之後會變成電影/好看
。接著若是以詞頻作為特徵的話,就是要計算這兩個詞分別在訓練資料中正面評價出現幾次,以及在負面評價中出現幾次。另外為了避免出現機率為零的狀況,也會將公式進行smoothing。也就是像這樣。我們直接賦予這些機率一個數字。
要注意的是,以上都是計算這些詞在訓練資料集出現的條件機率。現在要計算測試文本「電影好看!」會是正面還是負面影評的話,就會是這樣算。
最後可以得知,正面評價的機率大於負面評價,因此機器學習模型會將文本分類到正面評價。
問題討論&優缺點
不免俗,文章最後一定都要來討論一下模型的優缺點。貝氏分類器作為早期的分類器,具有堅實的數學基礎,也因此較容易解釋(記得前面我們提到解釋力有多重要),即使是面對許多的缺漏值,也可以很好的進行分類。處理小資料進行分類的時候,也有很優秀的表現。但貝氏分類卻有一個致命缺點,也就是貝氏分類假設屬性間互相獨立,但往往在現實中卻不是如此,所以後續也有許多改良版的模型,如半樸素貝氏分類器。
好,貝氏分類就講到這裡,明天要來講羅吉斯回歸囉!