小型购物网站,沈阳京科医院是正规医院吗,网站如何备案要关站吗,无锡网站建设365caiyi朴素贝叶斯算法基本原理与计算案例 文章目录 朴素贝叶斯算法基本原理与计算案例1. 朴素贝叶斯算法的基本原理2. 概率基础3. 朴素贝叶斯简单计算案例4. 朴素贝叶斯算法对文本进行分类5. 拉普拉斯平滑系数6. 案例#xff1a;20类新闻分类7. 总结 1. 朴素贝叶斯算法的基本原理
朴…朴素贝叶斯算法基本原理与计算案例 文章目录 朴素贝叶斯算法基本原理与计算案例1. 朴素贝叶斯算法的基本原理2. 概率基础3. 朴素贝叶斯简单计算案例4. 朴素贝叶斯算法对文本进行分类5. 拉普拉斯平滑系数6. 案例20类新闻分类7. 总结 1. 朴素贝叶斯算法的基本原理
朴素贝叶斯算法的基本原理建立在贝叶斯定理的基础上它用于分类和概率估计。算法的核心思想是根据已知数据计算不同类别的条件概率并利用这些概率进行分类。以下是朴素贝叶斯算法的基本原理 贝叶斯定理朴素贝叶斯算法基于贝叶斯定理该定理描述了在给定某些观察数据的情况下如何计算某一事件的条件概率。数学表示如下 P(A|B) (P(B|A) * P(A)) / P(B) P(A|B)在给定B的条件下事件A发生的概率。P(B|A)在给定A的条件下事件B发生的概率。P(A)事件A发生的先验概率。P(B)事件B发生的先验概率。 朴素假设朴素贝叶斯算法做出一个朴素的假设即特征之间是相互独立的。这意味着在分类时它假设每个特征对于类别的影响是相互独立的。尽管这个假设在实际情况中通常不成立但它简化了计算使算法易于实现。 学习阶段在朴素贝叶斯的学习阶段使用已知的训练数据来估计每个特征在不同类别下的条件概率。这包括计算每个类别的先验概率每个类别发生的概率以及每个特征在每个类别下的条件概率。 预测阶段在预测阶段算法使用已经估计的条件概率来对新的、未知的数据点进行分类。它计算每个类别的后验概率给定数据点的情况下每个类别发生的概率然后选择具有最高后验概率的类别作为预测结果。
具体步骤包括计算每个特征在给定类别下的条件概率然后将这些条件概率组合起来使用贝叶斯定理来计算后验概率。
朴素贝叶斯算法在特征之间相关性较高的情况下可能表现不佳因为它的独立性假设通常不成立。
2. 概率基础
联合概率包含多个条件且这些条件同时成立的概率记作P(A,B,…)条件概率就是事件A在另外一个事件B已经发生条件下的发生概率记作P(A|B)相互独立如果P(A,B)P(A)*P(B)则称事件A和事件B相互独立
3. 朴素贝叶斯简单计算案例
下面是训练集
样本数职业体型女神是否喜欢1程序员超重不喜欢2产品经理匀称喜欢3程序员匀称喜欢4程序员超重喜欢5美工匀称不喜欢6美工超重不喜欢7产品经理匀称喜欢
下面是测试集
测试集小明产品经理超重
我们先来明确一下目标已知小明是一个产品经理体重超重是否会被女神喜欢从测试集来看这是一个分类问题而且还是一个二分类问题。先来解决以下的概率问题
女神喜欢的概率P(喜欢)4/7职业是程序员并且体型匀称的概率P(程序员匀称)1/7 联合概率在女神喜欢的条件下职业是程序员的概率P程序|喜欢)2/41/2 条件概率在女神喜欢的条件下职业是程序员体重是超重的概率P(程序员超重|喜欢)1/4 联合条件概率
解决完以上的问题之后就来解决小明的问题。
目标P(喜欢|产品经理超重)? and 贝叶斯公式 P ( A ∣ B ) P ( B ∣ A ) ⋅ P ( A ) P ( B ) P(A|B) \frac{P(B|A) \cdot P(A)}{P(B)} P(A∣B)P(B)P(B∣A)⋅P(A)
接下来就是简单的计算在计算的过程中我们会发现P(产品经理超重)0回到朴素贝叶斯算法的i定义两事件之间是相互独立的所以P(产品经理超重)P(产品经理)*P(超重)7/12所以很大可能内女神喜欢但是也是不实际的因为样本量太小而且做出了相互独立的假设。
4. 朴素贝叶斯算法对文本进行分类
文档ID文档中的词属于cChina类训练集1Chinese Beijing ChineseYes2Chinese Chinese ShanghaiYes3Chinese MacaoYes4Tokyo Japan ChineseNo测试集5Chinese Chinese Chinese Tokyo Japan
如果朴素贝叶斯公式用在文章分类的场景中我们可以这样看 P ( C ∣ F 1 , F 2 , F 3 , F 4... ) P ( F 1 , F 2 , F 3 , F 4... ∣ C ) ⋅ P ( C ) P ( F 1 , F 2 , F 3 , F 4... ) P(C|F1,F2,F3,F4...) \frac{P(F1,F2,F3,F4...|C) \cdot P(C)}{P(F1,F2,F3,F4...)} P(C∣F1,F2,F3,F4...)P(F1,F2,F3,F4...)P(F1,F2,F3,F4...∣C)⋅P(C) 其中C可以是不同类别公式分为三个部分
P©每个文档类别的概率某文档类别数/总文档数量P(W|C)给定类别下特征被预测文档中出现的词的概率计算方法P(F1|C)Ni/N训练文档中去计算Ni为该F1词在C类别所有文档中出现的次数N为所需类别C下的文档所有词出现次数和P(F1,F2,F3,…)预测文档中每个词的概率
首先明确目标我们要求的是P(C|Chinese,Chinese,Chinese,Tokyo,Japan)即求P(Chinese,Chinese,Chinese,Tokyo,Japan|C)P©P(Chinese,Chinese,Chinese,Tokyo,Japan)
根据朴素贝叶斯算法假设每一个事件相互独立所以P(Chinese,Chinese,Chinese,Tokyo,Japan|C)P(Chinese|C)^3*P(Tokyo|C)*P(Japan|C)我们可以算出P(Chinese|C)5/8而在算P(Tokyo|C)和P(Japan|C)的时候发现为0这会对结果产生很大的影响发生这种情况的原因就是样本量太小了那么如何避免这情况呢这就要用到拉普拉斯平滑系数了。
5. 拉普拉斯平滑系数
拉普拉斯平滑系数是一种在统计学和机器学习中用于处理概率估计问题的技术。它的主要作用是解决在统计分析中遇到的一些问题如零概率问题和过拟合问题。具体来说拉普拉斯平滑系数通常用于计算一个特定事件在一个样本空间中的概率。在统计中如果一个事件在训练数据中没有观察到那么根据最大似然估计其概率会被估计为零。这可能导致问题因为零概率的事件在实际应用中可能不是完全不可能发生的而只是未观察到而已。
简单来说就是防止计算出的分类概率为0 P ( F 1 ∣ C ) N i α N α m P(F1|C) \frac{Niα}{Nαm} P(F1∣C)NαmNiα α为指定系数一般为1m为训练文档中统计出的特征词个数例如
P(Chinese|C)(51)/(81*6)3/7
P(Tokyo|C)(01)/(81*6)1/14
P(Japean|C)01)/(81*6)1/146. 案例20类新闻分类
sklearn.naive_bayes.MultinomialNB(alpha1.0) 朴素贝叶斯分类alpha拉普拉斯平滑系数
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_splitdef nb_news_demo():用朴素贝叶斯算法对新闻进行分类1.获取数据2.划分数据集3.特征工程文本特征抽取-tfidf4.朴素贝叶斯算法预估器5.模型评估:return:news fetch_20newsgroups(subset all)x_train, x_test, y_train, y_test train_test_split(news.data, news.target)transfer TfidfVectorizer()x_train transfer.fit_transform(x_train)x_test transfer.transform(x_test)estimator MultinomialNB()estimator.fit(x_train, y_train)# 模型评估方法1直接比对真实值和预测值y_predict estimator.predict(x_test)print(y_predict:\n, y_predict)print(直接比对真实值和预测值\n, y_test y_predict)# 方法2计算准确率score estimator.score(x_test, y_test)print(准确率为, score)return Noney_predict:[ 4 15 9 ... 4 0 6]
直接比对真实值和预测值[ True False True ... False False True]
准确率为 0.84995755517826827. 总结
优点朴素贝叶斯模型发源于古典数学理论有稳定的分类效率对缺失数据不太敏感算法比较简单常用于文本分类分类准确率高速度快。缺点由于使用了样本属性独立性的假设所以如果特征属性有关联时效果不好。