HanLP-樸素貝葉斯分類預測缺陷
文章整理自 的知乎專欄, 感興趣的朋友可以去關注下這位大神的專欄,很多關於自然語言處理的文章寫的很不錯。昨天看到他的分享的兩篇關於 樸素貝葉斯分類 預測的文章,整理了一下分享給給大家,文章已做部分修改!
樸素貝葉斯分類時,最好取對數變相乘為相加,防止預測結果溢位。可能出現的 badcase 就是明明訓練語料 X 類目下沒有詞語 t ,而系統就將文字預測為 X 類目。解決方法就時改相乘為取對數相加。 HanLP 的樸素貝葉斯分類計算沒有用對數相加的方法,而是直接用的機率相乘,很有可能溢位。
對上述內容做一些更正 , HanLP 的樸素貝葉斯是按照機率取對數相加做的。
看一下下邊的程式碼
@Override
public double[] categorize(Document document) throws IllegalArgumentException, IllegalStateException
{
Integer category;
Integer feature;
Integer occurrences;
Double logprob;
double[] predictionScores = new double[model.catalog.length];
for (Map.Entry<Integer, Double> entry1 : model.logPriors.entrySet())
{
category = entry1.getKey();
logprob = entry1.getValue(); // 用類目的對數似然初始化機率
// 對文件中的每個特徵
for (Map.Entry<Integer, int[]> entry2 : document.tfMap.entrySet())
{
feature = entry2.getKey();
if (!model.logLikelihoods.containsKey(feature))
{
continue; // 如果在模型中找不到就跳過了
}
occurrences = entry2.getValue()[0]; // 獲取其在文件中的頻次
logprob += occurrences * model.logLikelihoods.get(feature).get(category); // 將對數似然乘上頻次
}
predictionScores[category] = logprob;
}
if (configProbabilityEnabled) MathUtility.normalizeExp(predictionScores);
return predictionScores;
}
這麼看來, 之前 遇到的下邊的這個 badcase 就還要再分析
[1] 化驗指標一變化患者就六神無主,看醫生怎麼講解
核心詞:患者 看醫生
這裡 “患者”和“看醫生”兩個詞都沒在“藝術”類訓練語料中出現,但是預測機率最大的反倒是“藝術”。
由於用 PyHanLP 沒法看到預測機率的計算過程,所以還是把 Python 的分類預測程式碼改為 Java 程式碼調式看一下。今天移植了預處理,資源載入,人工干預部分的程式碼,明天把剩餘預測部分移植為 Java 再來看這個 badcase 。這就是樸素貝葉斯的優勢,分析起來非常清晰容易。不過從 PyHanLP 的預測輸出機率值來看,不太像是取了對數相加得到的,因為都是 0-1 之間的數值,這一看就是機率值。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2651272/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 樸素貝葉斯分類
- 樸素貝葉斯和半樸素貝葉斯(AODE)分類器Python實現Python
- 樸素貝葉斯/SVM文字分類文字分類
- 分類演算法-樸素貝葉斯演算法
- 樸素貝葉斯實現文件分類
- Sklearn中的樸素貝葉斯分類器`
- 樸素貝葉斯分類流程圖介紹流程圖
- 樸素貝葉斯--新浪新聞分類例項
- 機器學習之樸素貝葉斯分類機器學習
- [譯] Sklearn 中的樸素貝葉斯分類器
- 樸素貝葉斯分類和預測演算法的原理及實現演算法
- 樸素貝葉斯模型模型
- (實戰)樸素貝葉斯實現垃圾分類_201121
- 樸素貝葉斯分類-實戰篇-如何進行文字分類文字分類
- ML-樸素貝葉斯
- 簡單易懂的樸素貝葉斯分類演算法演算法
- 概率分類之樸素貝葉斯分類(垃圾郵件分類python實現)Python
- 樸素貝葉斯與Laplace平滑
- 樸素貝葉斯演算法演算法
- 樸素貝葉斯—印第安人
- 有監督學習——支援向量機、樸素貝葉斯分類
- 第7章 基於樸素貝葉斯的垃圾郵件分類
- 機器學習經典演算法之樸素貝葉斯分類機器學習演算法
- 監督學習之樸素貝葉斯
- 04_樸素貝葉斯演算法演算法
- 高階人工智慧系列(一)——貝葉斯網路、機率推理和樸素貝葉斯網路分類器人工智慧
- 使用樸素貝葉斯過濾垃圾郵件
- Python實現 利用樸素貝葉斯模型(NBC)進行問句意圖分類Python模型
- 機器學習Sklearn系列:(四)樸素貝葉斯機器學習
- 【機器學習基礎】樸素貝葉斯對B站彈幕分類(是否永久封禁)機器學習
- 樸素貝葉斯演算法的實現與推理演算法
- ML-樸素貝葉斯-先驗分佈/後驗分佈/似然估計
- 《統計學習方法》——樸素貝葉斯程式碼實現
- 【火爐煉AI】機器學習010-用樸素貝葉斯分類器解決多分類問題AI機器學習
- 100天搞定機器學習|Day15 樸素貝葉斯機器學習
- 資料探勘從入門到放棄(三):樸素貝葉斯
- 詳解樸素貝葉斯的來源,原理以及例項解析
- Python機器學習筆記:樸素貝葉斯演算法Python機器學習筆記演算法