<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                作者:?[龍心塵](http://blog.csdn.net/longxinchen_ml?viewmode=contents)?&&?[寒小陽](http://blog.csdn.net/han_xiaoyang?viewmode=contents)? 時間:2016年2月。? 出處:[http://blog.csdn.net/longxinchen_ml/article/details/50629110](http://blog.csdn.net/longxinchen_ml/article/details/50629110)? [http://blog.csdn.net/han_xiaoyang/article/details/50629587](http://blog.csdn.net/han_xiaoyang/article/details/50629587)? 聲明:版權所有,轉載請聯系作者并注明出處 ### 1\. 引言 上一篇文章我們主要從理論上梳理了樸素貝葉斯方法進行文本分類的基本思路。這篇文章我們主要從實踐上探討一些應用過程中的tricks,并進一步分析貝葉斯方法,最后以情緒褒貶分析和拼寫糾錯為例展示這種簡單強大的方法在自然語言處理問題上的具體應用。 ### 2\. 為什么不直接匹配關鍵詞來識別垃圾郵件? 看了上一篇文章的一些同學可能會問:“何必費這么大勁算那么多詞的概率?直接看郵件中有沒有‘代開發票’、‘轉售發票’之類的關鍵詞不就得了?如果關鍵詞比較多就認為是垃圾郵件唄。” 咳咳,其實關鍵詞匹配的方法如果有效的話真不必用樸素貝葉斯。畢竟這種方法簡單嘛,就是一個字符串匹配。從歷史來看,之前沒有貝葉斯方法的時候主要也是用關鍵詞匹配。但是這種方法準確率太低。我們在工作項目中也嘗試過用關鍵詞匹配的方法去進行文本分類,發現大量誤報。感覺就像扔到垃圾箱的郵件99%都是正常的!這樣的效果不忍直視。而加一個樸素貝葉斯方法就可能把誤報率拉低近一個數量級,體驗好得不要不要的。 另一個原因是詞語會隨著時間不斷變化。發垃圾郵件的人也不傻,當他們發現自己的郵件被大量屏蔽之后,也會考慮采用新的方式,如變換文字、詞語、句式、顏色等方式來繞過反垃圾郵件系統。比如對于垃圾郵件“我司可辦理正規發票,17%增值稅發票點數優惠”,他們采用火星文:“涐司岢辦理㊣規髮票,17%增値稅髮票嚸數優蕙”,那么字符串匹配的方法又要重新找出這些火星文,一個一個找出關鍵詞,重新寫一些匹配規則。更可怕的是,這些規則可能相互之間的耦合關系異常復雜,要把它們梳理清楚又是大一個數量級的工作量。等這些規則失效了又要手動更新新的規則……無窮無盡貓鼠游戲最終會把貓給累死。 而樸素貝葉斯方法卻顯示出無比的優勢。因為它是基于統計方法的,只要訓練樣本中有更新的垃圾郵件的新詞語,哪怕它們是火星文,都能自動地把哪些更敏感的詞語(如“髮”、“㊣”等)給凸顯出來,并根據統計意義上的敏感性給他們分配適當的權重,這樣就不需要什么人工了,非常省事。你只需要時不時地拿一些最新的樣本扔到訓練集中,重新訓練一次即可。 小補充一下,對于火星文、同音字等替代語言,一般的分詞技術可能會分得不準,最終可能只把一個一個字給分出來,成為“分字”。當然也可以用過n-gram之類的語言模型(后續博客馬上提到,盡請關注),拿到最常見短語。對于英文等天生自帶空格來間隔單詞的語言,分詞則不是什么問題,使用樸素貝葉斯方法將會更加順暢。 ### 3.工程上的一些tricks 應用樸素貝葉斯方法的過程中,一些tricks能顯著幫助工程解決問題。我們畢竟經驗有限,無法將它們全都羅列出來,只能就所知的一點點經驗與大家分享,歡迎批評指正。 **3.1 trick1:取對數** 我們上一篇文章用來識別垃圾郵件的方法是比較以下兩個概率的大小(字母S表示“垃圾郵件”,字母H表示“正常郵件”): > C=P(“我”|S)P(“司”|S)P(“可”|S)P(“辦理”|S)P(“正規發票”|S)? > ×P(“保真”|S)P(“增值稅”|S)P(“發票”|S)P(“點數”|S)P(“優惠”|S)P(“垃圾郵件”)? > Cˉˉˉ=P(“我”|H)P(“司”|H)P(“可”|H)P(“辦理”|H)P(“正規發票”|H)? > ×P(“保真”|H)P(“增值稅”|H)P(“發票”|H)P(“點數”|H)P(“優惠”|H)P(“正常郵件”) 但這里進行了很多乘法運算,計算的時間開銷比較大。尤其是對于篇幅比較長的郵件,幾萬個數相乘起來還是非常花時間的。如果能把這些乘法變成加法則方便得多。剛好數學中的對數函數log就可以實現這樣的功能。兩邊同時取對數(本文統一取底數為2),則上面的公式變為: > logC=logP(“我”|S)+logP(“司”|S)+logP(“可”|S)+logP(“辦理”|S)+logP(“正規發票”|S)? > +logP(“保真”|S)+logP(“增值稅”|S)+logP(“發票”|S)+logP(“點數”|S)+logP(“優惠”|S)+logP(“垃圾郵件”)? > logCˉˉˉ=logP(“我”|H)+logP(“司”|H)+logP(“可”|H)+logP(“辦理”|H)+logP(“正規發票”|H)? > +logP(“保真”|H)+logP(“增值稅”|H)+logP(“發票”|H)+logP(“點數”|H)+logP(“優惠”|H)+logP(“正常郵件”) 有同學可能要叫了:“做對數運算豈不會也很花時間?”的確如此,但是可以在訓練階段直接計算?logP?,然后把他們存在一張大的hash表里。在判斷的時候直接提取hash表中已經計算好的對數概率,然后相加即可。這樣使得判斷所需要的計算時間被轉移到了訓練階段,實時運行的時候速度就比之前快得多,這可不止幾個數量級的提升。 **3.2 trick2:轉換為權重** 對于二分類,我們還可以繼續提高判斷的速度。既然要比較logC?和logCˉˉˉ?的大小,那就可以直接將上下兩式相減,并繼續化簡: > logCCˉ=logP(“我”|S)P(“我”|H)+logP(“司”|S)P(“司”|H)+logP(“可”|S)P(“可”|H)+logP(“辦理”|S)P(“辦理”|H)+logP(“正規發票”|S)P(“正規發票”|H)? > +logP(“保真”|S)P(“保真”|H)+logP(“增值稅”|S)P(“增值稅”|H)+logP(“發票”|S)P(“發票”|H)+logP(“點數”|S)P(“點數”|H)+logP(“優惠”|S)P(“優惠”|H)+logP(“正常郵件”|S)P(“正常郵件”) logCCˉ?如果大于0則屬于垃圾郵件。我們可以把其中每一項作為其對應詞語的權重,比如logP(“發票”|S)P(“發票”|H)?就可以作為詞語“發票”的權重,權重越大就越說明“發票”更可能是與“垃圾郵件”相關的特征。這樣可以根據權重的大小來評估和篩選顯著的特征,比如關鍵詞。而這些權重值可以直接提前計算好而存在hash表中?。判斷的時候直接將權重求和即可。 關鍵詞hash表的樣子如下,左列是權重,右列是其對應的詞語,權重越高的說明越“關鍵”:? ![](https://box.kancloud.cn/2016-03-11_56e24310bd45a.jpg)? **3.3 trick3:選取topk的關鍵詞** 前文說過可以通過提前選取關鍵詞來提高判斷的速度。有一種方法可以省略提前選取關鍵詞的步驟,就是直接選取一段文本中權重最高的K個詞語,將其權重進行加和。比如Paul Graham 在《黑客與畫家》中是選取郵件中權重最高的15個詞語計算的。 通過權重hash表可知,如果是所有詞語的權重,則權重有正有負。如果只選擇權重最高的K個詞語,則它們的權重基本都是正的。所以就不能像之前那樣判斷logCCˉ?是否大于0來區分郵件了。而這需要依靠經驗選定一個正數的閾值(門檻值),依據logCCˉ?與該門檻值的大小來識別垃圾郵件。 如下圖所示,藍色點代表垃圾郵件,綠色點代表正常郵件,橫坐標為計算出來的logCCˉ?值,中間的紅線代表閾值。? ![](https://box.kancloud.cn/2016-03-11_56e24310d24e9.jpg)? **3.4 trick4:分割樣本** 選取topk個詞語的方法對于篇幅變動不大的郵件樣本比較有效。但是對篇幅過大或者過小的郵件則會有判斷誤差。 比如這個垃圾郵件的例子:(“我”,“司”,“可”,“辦理”,“正規發票”,“保真”,“增值稅”,“發票”,“點數”,“優惠”)。分詞出了10個詞語,其中有“正規發票”、“發票”2個關鍵詞。關鍵詞的密度還是蠻大的,應該算是敏感郵件。但因為采用最高15個詞語的權重求和,并且相應的閾值是基于15個詞的情況有效,可能算出來的結果還小于之前的閾值,這就造成漏判了。 類似的,如果一封稅務主題的郵件有1000個詞語,其中只有“正規發票”、“發票”、“避稅方法”3個權重比較大的詞語,它們只是在正文表述中順帶提到的內容。關鍵詞的密度被較長的篇幅稀釋了,應該算是正常郵件。但是卻被閾值判斷成敏感郵件,造成誤判了。 這兩種情況都說明topk關鍵詞的方法需要考慮篇幅的影響。這里有許多種處理方式,它們的基本思想都是選取詞語的個數及對應的閾值要與篇幅的大小成正比,本文只介紹其中一種方方法:? - 對于長篇幅郵件,按一定的大小,比如每500字,將其分割成小的文本段落,再對小文本段落采用topk關鍵詞的方法。只要其中有一個小文本段落超過閾值就判斷整封郵件是垃圾郵件。? - 對于超短篇幅郵件,比如50字,可以按篇幅與標準比較篇幅的比例來選取topk,以確定應該匹配關鍵詞語的個數。比如選取?50500×15≈2?個詞語進行匹配,相應的閾值可以是之前閾值的?215?。以此來判斷則更合理。 **3.5 trick5:位置權重** 到目前為止,我們對詞語權重求和的過程都沒有考慮郵件篇章結構的因素。比如“正規發票”如果出現在標題中應該比它出現在正文中對判斷整個郵件的影響更大;而出現在段首句中又比其出現在段落正文中對判斷整個郵件的影響更大。所以可以根據詞語出現的位置,對其權重再乘以一個放大系數,以擴大其對整封郵件的影響,提高識別準確度。 比如一封郵件其標題是“正規發票”(假設標題的放大系數為2),段首句是“發票”,“點數”,“優惠”(假設段首的放大系數為1.5),剩下的句子是(“我”,“司”,“可”,“辦理”,“保真”)。則計算logCCˉ?時的公式就可以調整為: > logCCˉ=2×logP(“正規發票”|S)P(“正規發票”|H)+1.5×logP(“發票”|S)P(“發票”|H)+1.5×logP(“點數”|S)P(“點數”|H)+1.5×logP(“優惠”|S)P(“優惠”|H)? > +logP(“我”|S)P(“我”|H)+logP(“司”|S)P(“司”|H)+logP(“可”|S)P(“可”|H)+logP(“辦理”|S)P(“辦理”|H)+logP(“保真”|S)P(“保真”|H)+logP(“正常郵件”|S)P(“正常郵件”) **3.6 trick6:蜜罐** 我們通過辛辛苦苦的統計與計算,好不容易得到了不同詞語的權重。然而這并不是一勞永逸的。我們我們之前交代過,詞語及其權重會隨著時間不斷變化,需要時不時地用最新的樣本來訓練以更新詞語及其權重。 而搜集最新垃圾郵件有一個技巧,就是隨便注冊一些郵箱,然后將它們公布在各大論壇上。接下來就坐等一個月,到時候收到的郵件就絕大部分都是垃圾郵件了(好奸詐)。再找一些正常的郵件,基本就能夠訓練了。這些用于自動搜集垃圾郵件的郵箱叫做“蜜罐”。“蜜罐”是網絡安全領域常用的手段,因其原理類似誘捕昆蟲的裝有蜜的罐子而得名。比如殺毒軟件公司會利用蜜罐來監視或獲得計算機網絡中的病毒樣本、攻擊行為等。 ### 4\. 貝葉斯方法的思維方式 講了這么多tricks,但這些手段都是建立在貝葉斯方法基礎之上的。因此有必要探討一下貝葉斯方法的思維方式,以便更好地應用這種方法解決實際問題。 **4.1 逆概問題** 我們重新看一眼貝葉斯公式: > P(Y|X)=P(X|Y)P(Y)P(X) 先不考慮先驗概率P(Y)與P(X),觀察兩個后驗概率P(Y|X)與P(X|Y),可見貝葉斯公式能夠揭示兩個相反方向的條件概率之間的轉換關系。 從貝葉斯公式的發現歷史來看,其就是為了處理所謂“逆概”問題而誕生的。比如P(Y|X)?不能通過直接觀測來得到結果,而P(X|Y)?卻容易通過直接觀測得到結果,就可以通過貝葉斯公式從間接地觀測對象去推斷不可直接觀測的對象的情況。 好吧,我們說人話。基于郵件的文本內容判斷其屬于垃圾郵件的概率不好求(不可通過直接觀測、統計得到),但是基于已經搜集好的垃圾郵件樣本,去統計(直接觀測)其文本內部各個詞語的概率卻非常方便。這就可以用貝葉斯方法。 引申一步,基于樣本特征去判斷其所屬標簽的概率不好求,但是基于已經搜集好的打上標簽的樣本(有監督),卻可以直接統計屬于同一標簽的樣本內部各個特征的概率分布。因此貝葉斯方法的理論視角適用于一切分類問題的求解。 **4.2 處理多分類問題** 前面我們一直在探討二分類(判斷題)問題,現在可以引申到多分類(單選題)問題了。 還是用郵件分類的例子,這是現在不只要判斷垃圾郵件,還要將正常郵件細分為私人郵件、工作郵件。現在有這3類郵件各1萬封作為樣本。需要訓練出一個貝葉斯分類器。這里依次用Y1,Y2,Y3表示這三類郵件,用X表示被判斷的郵件。套用貝葉斯公式有: > P(Y1|X)=P(X|Y1)P(Y1)P(X)? > P(Y2|X)=P(X|Y2)P(Y2)P(X)? > P(Y3|X)=P(X|Y3)P(Y3)P(X) 通過比較3個概率值的大小即可得到X所屬的分類。發現三個式子的分母P(X)?一樣,比較大小時可以忽略不計,于是就可以用下面這一個式子表達上面3式: > P(Yi|X)∝P(X|Yi)P(Yi);i=1,2,3 其中?∝?表示“正比于”。而P(X|Yi)?則有個特別高逼格的名字叫做“似然函數”。我們上大學的時候也被這個名字搞得暈暈乎乎的,其實它也是個概率,直接理解成“P(Yi|X)?的逆反條件概率”就方便了。 這里只是以垃圾郵件3分類問題舉了個例子,對于任意多分類的問題都可以用這樣的思路去理解。比如新聞分類、情感喜怒哀樂分類等等。 **4.3 先驗概率的問題** 在垃圾郵件的例子中,先驗概率都相等,P(Y1)=P(Y2)=P(Y3)=10000/30000=1/3,所以上面是式子又可以進一步化簡: > P(Yi|X)∝P(X|Yi);i=1,2,3 只需比較右邊式子(也就是“似然函數”)的大小就可以了。這種方法就是傳說中的最大似然法:不考慮先驗概率而直接比較似然函數。 關于選出最佳分類Yi是否要考慮先驗概率P(Yi)的問題,曾經在頻率學派和貝葉斯學派之間產生了激烈的教派沖突。統計學家(頻率學派)說:我們讓數據自己說話。言下之意就是要摒棄先驗概率。而貝葉斯學派支持者則說:數據會有各種各樣的偏差,而一個靠譜的先驗概率則可以對這些隨機噪音做到健壯。對此有興趣的同學可以找更多資料進行了解,本文在此不做更多的引申,只基于垃圾郵件識別的例子進行探討。 比如我們在采集垃圾郵件樣本的時候,不小心delete掉了一半的數據,就剩下5000封郵件。則計算出來的先驗概率為: > P(Y1)=5000/25000=1/5,? > P(Y2)=P(Y3)=10000/25000=2/5 如果還用貝葉斯方法,就要在似然函數后面乘上先驗概率。比如之前用最大似然法算出Y1?垃圾郵件的概率大,但是因為P(Y1)特別小,用貝葉斯方法得出的結果是Y2?私人郵件的概率大。那相信哪個呢?其實,我們刪掉了部分帶標簽的樣本,從計算結果看P(Y1),P(Y2),P(Y3)的概率分布變化了,但實際上這三個類別的真實分布應該是一個客觀的狀態,不應該因為我們的計算方法而發生變化。所以是我們計算出來的先驗概率失真,應該放棄這樣計算出來的先驗概率,而用最大似然法。但即便我們不刪掉一半垃圾郵件,這三類郵件的分布就真的是1:1:1那樣平均嗎?那也未必。我們只是按1:1:1這樣的方式進行了抽樣而已,真正在郵箱里收到的這三類郵件的分布可能并不是這樣。也就是說,在我們對于先驗概率一無所知時,只能假設每種猜測的先驗概率是均等的(其實這也是人類經驗的結果),這個時候就只有用最大似然了。在現實運用過程中如果發現最大似然法有偏差,可以考慮對不同的似然函數設定一些系數或者閾值,使其接近真實情況。 但是,如果我們有足夠的自信,訓練集中這三類的樣本分布的確很接近真實的情況,這時就應該用貝葉斯方法。難怪前面的貝葉斯學派強調的是“靠譜的先驗概率”。所以說貝葉斯學派的適用范圍更廣,關鍵要先驗概率靠譜,而頻率學派有效的前提也是他們的先驗概率同樣是經驗統計的結果。 ### 5\. (樸素)貝葉斯方法的常見應用 說了這么多理論的問題,咱們就可以探討一下(樸素)貝葉斯方法在自然語言處理中的一些常見應用了。以下只是從原理上進行探討,對于具體的技術細節顧及不多。 **5.1 褒貶分析** 一個比較常見的應用場景是情感褒貶分析。比如你要統計微博上人們對一個新上映電影的褒貶程度評價:好片還是爛片。但是一條一條地看微博是根本看不過來,只能用自動化的方法。我們可以有一個很粗略的思路: * 首先是用爬蟲將微博上提到這個電影名字的微博全都抓取下來,比如有10萬條。 * 然后用訓練好的樸素貝葉斯分類器分別判斷這些微博對電影是好評還是差評。 * 最后統計出這些好評的影評占所有樣本中的比例,就能形成微博網友對這個電影綜合評價的大致估計。 接下來的核心問題就是訓練出一個靠譜的分類器。首先需要有打好標簽的文本。這個好找,豆瓣影評上就有大量網友對之前電影的評價,并且對電影進行1星到5星的評價。我們可以認為3星以上的評論都是好評,3星以下的評論都是差評。這樣就分別得到了好評差評兩類的語料樣本。剩下就可以用樸素貝葉斯方法進行訓練了。基本思路如下: * 訓練與測試樣本:豆瓣影評的網友評論,用爬蟲抓取下100萬條。 * 標簽:3星以上的是好評,3星以下的是差評。 * 特征:豆瓣評論分詞后的詞語。一個簡單的方法是只選擇其中的形容詞,網上有大量的情緒詞庫可以為我們所用。 * 然后再用常規的樸素貝葉斯方法進行訓練。 但是由于自然語言的特點,在提取特征的過程當中,有一些tricks需要注意: * 對否定句進行特別的處理。比如這句話“我不是很喜歡部電影,因為它讓我開心不起來。”其中兩個形容詞“喜歡”、“開心”都是褒義詞,但是因為句子的否定句,所以整體是貶義的。有一種比較簡單粗暴的處理方式,就是“對否定詞(“不”、“非”、“沒”等)與句尾標點之間的所有形容詞都采用其否定形式”。則這句話中提取出來的形容詞就應該是“不喜歡”和“不開心”。 * 一般說來,最相關的情感詞在一些文本片段中僅僅出現一次,詞頻模型起得作用有限,甚至是負作用,則使用伯努利模型代替多項式模型。這種情況在微博這樣的小篇幅文本中似乎不太明顯,但是在博客、空間、論壇之類允許長篇幅文本出現的平臺中需要注意。 * 其實,副詞對情感的評價有一定影響。“不很喜歡”與“很不喜歡”的程度就有很大差異。但如果是樸素貝葉斯方法的話比較難處理這樣的情況。我們可以考慮用語言模型或者加入詞性標注的信息進行綜合判斷。這些內容我們將在之后的文章進行探討。 當然經過以上的處理,情感分析還是會有一部分誤判。這里涉及到許多問題,都是情感分析的難點: * 情緒表達的含蓄微妙:“導演你出來,我保證不打死你。”你讓機器怎么判斷是褒還是貶? * 轉折性表達:“我非常喜歡這些大牌演員,非常崇拜這個導演,非常贊賞這個劇本,非常欣賞他們的預告片,我甚至為了這部影片整整期待了一年,最后進了電影院發現這是個噩夢。” 五個褒義的形容詞、副詞對一個不那么貶義的詞。機器自然判斷成褒義,但這句話是妥妥的貶義。 **5.2 拼寫糾錯** 拼寫糾錯本質上也是一個分類問題。但按照錯誤類型不同,又分為兩種情況: * 非詞錯誤(Non-word Errors):指那些拼寫錯誤后的詞本身就不合法,如將“wifi”寫成“wify”; * 真詞錯誤(Real-word Errors):指那些拼寫錯誤后的詞仍然是合法的情況,如將“wifi”寫成“wife”。 真詞錯誤復雜一些,我們將在接下來的文章中進行探討。而對于非詞錯誤,就可以直接采用貝葉斯方法,其基本思路如下: * 標簽:通過計算錯誤詞語的最小編輯距離(之前咱們提到過的),獲取最相似的候選詞,每個候選詞作為一個分類。 * 特征:拼寫錯誤的詞本身。因為它就一個特征,所以沒有什么條件獨立性假設、樸素貝葉斯啥的。它就是純而又純的貝葉斯方法。 * 判別公式: > P(候選詞i|錯誤詞)∝P(錯誤詞|候選詞i)P(候選詞i);i=1,2,3,... * 訓練樣本1:該場景下的正常用詞語料庫,用于計算P(候選詞i)。 > P(候選詞i)=候選詞出現的次數所有詞出現的次數 * 訓練樣本2:該場景下錯誤詞與正確詞對應關系的語料庫,用于計算P(錯誤詞|候選詞i) > P(錯誤詞|候選詞i)=候選詞被拼寫成該“錯誤詞”的次數候選詞出現的次數 由于自然語言的特點,有一些tricks需要注意: * 據統計,80%的拼寫錯誤編輯距離為1,幾乎所有的拼寫錯誤編輯距離小于等于2。我們只選擇編輯距離為1或2的詞作為候選詞,這樣就可以減少大量不必要的計算。 * 由于我們只選擇編輯距離為1或2的詞,其差別只是一兩個字母級別差別。因此計算似然函數的時候,可以只統計字母層面的編輯錯誤,這樣搜集的樣本更多,更滿足大數定律,也更簡單。對于編輯距離為1的似然函數計算公式可以進化為: > > > P(錯誤詞|候選詞i)=???????????????????字母“xy”被拼寫成“y”的次數字母“xy”出現的次數,字母“x”被拼寫成“xy”的次數字母“x”出現的次數,字母“x”被拼寫成“y”的次數字母“x”出現的次數,字母“xy”被拼寫成“yx的次數字母“xy”出現的次數, * 鍵盤上臨近的按鍵更容易拼寫錯誤,據此可以對上面這個條件概率進行加權。? ![](https://box.kancloud.cn/2016-03-11_56e24310effe8.jpg)? ### 6\. 小結 從這兩篇文章大家基本可以看出,工程應用不同于學術理論,有許多tricks需要考慮,而理論本質就是翻來倒去折騰貝葉斯公式,都快玩出花來了。但是如果只用樸素貝葉斯,很多情況還是無法應付,需要我們在貝葉斯公式上再折騰出一些花樣。詳細內容,請聽下回分解。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看