机器学习:朴素贝叶斯算法对新闻分类

简介: 机器学习:朴素贝叶斯算法对新闻分类

概率基础

概率定义:一件事情发生的可能性

1、联合概率

包含多个条件,且所有条件同时成立的概率

记作: P(A,B)= P(A)P(B)

2、条件概率

事件A在另一个事件B已经发生的条件下发生的概率

记作: P (A∣B)

特性: P (A1 ,A2∣B) = P (A1∣B) P (A2∣B)

注意:此条件概率的成立,是由于A1,A2相互独立的结果

朴素贝叶斯

特征独立

image.png

说明:

W为给定文档的特征值(频数统计,预测文档提供)

C为文档类别

image.png

举例:

训练集统计结果

特征  科技类(30)  娱乐类(60)  汇总(90)
商场    9           51          60
影院    8           56          64
支付宝  20          15          35
云计算  63          0           63
汇总    100         121         221

现有预测文档,出现词汇:影院 支付宝云计算

计算属于科技,娱乐的类别概率

P(科技|影院,支付宝,云计算) 
= P(影院,支付宝,云计算|科技)P(科技)
= P(影院|科技)P(支付宝|科技)P(云计算|科技)P(科技)
= (8/100)(20/100)(63/100)(30/90)
= 0.0034
P(娱乐|影院,支付宝,云计算) 
= P(影院,支付宝,云计算|娱乐)P(娱乐)
= P(影院|娱乐)P(支付宝|娱乐)P(云计算|娱乐)P(娱乐)
= (56/121)(15/121)(0/121)(60/90)
= 0

娱乐的概率为0,这是不合理的

改进方法

拉普拉斯平滑系数

P(F1|C) = (Ni + a)/(N + am)

a为指定的系数,一般为1

m为训练文档中统计出的特征词个数

作用:防止分类概率为0

改进计算

P(科技|影院,支付宝,云计算) 
= ((8+1)/(100+1*4))*((20+1)/(100+1*4))*((63+1)/(100+1*4))*(30/90)
= 0.0036
P(娱乐|影院,支付宝,云计算) 
= ((56+1)/(121+1*4))*((15+1)/(121+1*4))*((0+1)/(121+1*4))*(60/90)
= 0.0003

新闻分类

20newsgroups 数据集下载地址:

http://qwone.com/~jason/20Newsgroups/20news-bydate.tar.gz

如果直接拷贝pkl文件,需要注意python版本

代码示例

# -*- coding: utf-8 -*-
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
# 如果获取不到就下载
data = fetch_20newsgroups(subset="all")
# 数据分割
X_train, X_test, y_train, y_test = train_test_split(
    data.data, data.target, test_size=0.33, random_state=42
)
# 特征抽取
tfidf = TfidfVectorizer()
# 以训练集中的词列表对每篇文章做重要性统计
X_train = tfidf.fit_transform(X_train)
print(tfidf.get_feature_names())
X_test = tfidf.transform(X_test)
# 朴素贝叶斯算法预测,alpha是拉普拉斯平滑系数
mlt = MultinomialNB(alpha=1.0)
mlt.fit(X_train, y_train)
score = mlt.score(X_test, y_test)
print("socre: {}".format(score))
# socre: 0.83

特点:

训练误差大,结果肯定不好

不需要调参

优点:

1、朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率

2、对缺失数据不太敏感,算法也比较简单,常用于文本分类

3、分类准确度高,速度快

缺点:

假设文章中一些词语和另一些词语是独立关系,不太靠谱

由于使用了样本属性独立性的假设,所以样本属性有关联时,效果不好

训练集中进行统计词,会对结果造成干扰

文本分类

-朴素贝叶斯

-神经网络(效果更好)

相关文章
|
1天前
|
机器学习/深度学习 算法
理解并应用机器学习算法:决策树
【5月更文挑战第12天】决策树是直观的分类与回归机器学习算法,通过树状结构模拟决策过程。每个内部节点代表特征属性,分支代表属性取值,叶子节点代表类别。构建过程包括特征选择(如信息增益、基尼指数等)、决策树生成和剪枝(预剪枝和后剪枝)以防止过拟合。广泛应用在信贷风险评估、医疗诊断等领域。理解并掌握决策树有助于解决实际问题。
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】在使用K-means聚类算法时,如何选择K的值?
【5月更文挑战第11天】【机器学习】在使用K-means聚类算法时,如何选择K的值?
|
2天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】为什么K-means算法使用欧式距离度量?
【5月更文挑战第11天】【机器学习】为什么K-means算法使用欧式距离度量?
|
2天前
|
机器学习/深度学习 算法 数据可视化
【机器学习】描述K-means算法的步骤
【5月更文挑战第11天】【机器学习】描述K-means算法的步骤
|
2天前
|
机器学习/深度学习 人工智能 算法
【机器学习】K-means和KNN算法有什么区别?
【5月更文挑战第11天】【机器学习】K-means和KNN算法有什么区别?
|
3天前
|
机器学习/深度学习 存储 算法
【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
【5月更文挑战第11天】【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
|
3天前
|
机器学习/深度学习 算法
【机器学习】比较朴素贝叶斯算法与逻辑回归算法
【5月更文挑战第10天】【机器学习】比较朴素贝叶斯算法与逻辑回归算法
|
3天前
|
机器学习/深度学习
【机器学习】朴素贝叶斯分类器的缺点是什么?
【5月更文挑战第10天】【机器学习】朴素贝叶斯分类器的缺点是什么?
|
3天前
|
机器学习/深度学习 自然语言处理 算法
【机器学习】朴素贝叶斯分类器的优点是什么?
【5月更文挑战第10天】【机器学习】朴素贝叶斯分类器的优点是什么?
|
3天前
|
机器学习/深度学习 数据采集 算法
【机器学习】朴素贝叶斯分类器的工作流程?
【5月更文挑战第10天】【机器学习】朴素贝叶斯分类器的工作流程?