小强学AI之 - 2你患癌症的概率(朴素贝叶斯)

前提

请先认真阅读下面两篇博文:
阮一峰博客(贝叶斯推断及其互联网应用(一):定理简介)
阮一峰博客(贝叶斯推断及其互联网应用(二):过滤垃圾邮件)

举例:

假设某种癌症的患病率是1%
若得了这种癌症,检查结果呈阳性的概率90%(敏感性sensitivity)
若没有得这种癌症,检查结果90%呈阴性(特异性specificity),但仍然有10%的可能性检查呈阳性。

在没有任何症状的情况下,你到医院检查,得到的结果是阳性。
那么你真正患癌症的概率是多少?

答:
先验概率:
P(C) = 0.01 = 1%(患病概率)
P(ℸC) = 0.99(非患病概率)

由前面,我们得知:
P(Pos|C) = 0.9(敏感性(患病情况下,检查呈阳性的概率))
P(Neg|ℸC) = 0.9(未患病情况下,检查呈阴性的概率)
即可得出:
P(Pos|ℸC) = 0.1(未患病情况下,检查呈阳性的概率)

联合概率:
P(C, Pos) = P(C) • P(Pos|C) (先验概率乘以敏感性)
P(ℸC, Pos) = P(ℸC) • P(Pos|ℸC)(在阳性情况下,未得癌症的概率)

P(Pos) = P(C, Pos) + P(ℸC, Pos)(被检测为阳性的概率)

那么:
P(Pos) = 0.01 • 0.9 + 0.99 • 0.1 = 0.108
P(C|Pos) = P(C) • P(Pos|C) / P(Pos) = 0.01 • 0.9 / 0.108 = 0.083333

结果:
你得癌症的概率是8.333% ,所以,如果真的被检测为癌症阳性。也不要悲观,因为误诊的概率还是非常大的。^_^

正题

决策面

前面我们提到,在监督学习中,我们需要大量的数据提供给计算机学习。这些数据都是经过标记(tagged)的数据。

那么“一般”(因为我们先讨论最简单的二值分类)的标记为二值的,也就是说True和False。
我们要喂给计算机这些经过标记的数据。计器学习算法会定义决策面(dicision surface,也就是可以根据数据的特性判定数据为True还是False的界线)。
如下:
假设提供的数据散点分布如下:
这里写图片描述

那么,经过良好的训练之后,或许我们会得到如下的决策面:
这里写图片描述

有了这样的决策面之后,再给计算机提供测试数据时,就可以确定该测试数据位于决策面的哪一侧,也就得到了True或False.

当然,大家也看到了这里有一定的准确率。当提供足够多的数据进行训练,这种准确率就会越来越高。当高到一定的程度时,我们就可以认为计算机“学会”了如何分类。

朴素贝叶斯(Naive bayes)

关于朴素贝叶斯的概念,及应用请参考阮一峰大侠的博客。

高斯朴素贝叶斯(GassianNB)

GassianNB是朴素贝叶斯算法的一种。而朴素贝叶斯算法也源于一个算法库:scikit-learn简写为sklearn

使用方法如下:

# 导入sklearn库中的高斯贝叶斯算法
from sklearn.naive_bayes import GaussianNB

# 创建分类器
clf = GaussianNB()

# 提供训练特性集(向量集)和训练标签(向量集)来训练此分类器
clf.fit(features_train, labels_train)

# 给训练好的分类器提供测试数据集(向量集)得到类别标签
print(clf.predict(features_test))

假设你想知道这个训练好的分类器的精度,那么可以通过调用score函数。

# 给score函数提供测试集和对应的正确的标签集,返回精确度
accuracy = clf.score(features_test, labels_test)

或者如下:

# 测试分类器
pred = clf.predict(features_test)

# 导入accuracy_score函数
from sklearn.metrics import accuracy_score

# 计算精度
accuracy = accuracy_score(pred, labels_test)

总结

  1. 理解朴素贝叶斯理论
  2. 使用高斯贝叶斯分类器,对数据集进行训练。
  3. 使用测试集检测分类器的精度
  4. 朴素贝叶斯分类有优点也有缺点。优点:易于执行,特征空间大,运行容易,比较有效。缺点:会有间断(比如搜索芝加哥公牛,会得到芝加哥和公牛两种事物的结果),所以由多个单词组成且意义明显不同的短语就不适合朴素贝叶斯。

代码下载

以下代码来源:
高斯贝叶斯分类器 - 产生决策面
高斯贝叶斯分类器 - 精度

参考:

阮一峰博客(贝叶斯推断及其互联网应用(一):定理简介)
阮一峰博客(贝叶斯推断及其互联网应用(二):过滤垃圾邮件)
机器学习入门 - Udacity

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. K-近邻算法:K-近邻算法是一种基于实例的习方法,它通过计算样本之间的距离,将新的样本赋予距离最近的K个样本中出现次数最多的类别,作为该新样本的类别。该算法简单易懂,但容易受到噪声和样本分布的影响。 2. 决策树算法:决策树算法是一种基于树形结构的分类方法,它通过对数据集进行分裂,不断构建树形结构,最终得到一个决策树模型。决策树的优点是易于理解和解释,但容易出现过拟合问题。 3. 朴素贝叶斯算法:朴素贝叶斯算法是一种基于概率统计的分类算法,它通过计算样本属于每个类别的概率,选择概率最大的类别作为该样本的分类。该算法简单、快速,但对于特征之间存在依赖关系的数据集效果不佳。 4. 逻辑回归算法:逻辑回归算法是一种广义线性模型,它通过对数据进行建模,将输入特征映射到0到1之间的概率值,从而进行分类。该算法易于实现和解释,但容易受到异常值和共线性的影响。 5. 支持向量机算法:支持向量机算法是一种基于边界的分类方法,它通过找到数据集中的最优超平面,将不同类别的样本分隔开来。该算法具有很好的泛化性能,但计算复杂度较高。 6. 随机森林算法:随机森林算法是一种集成习方法,它通过构建多个决策树,并对每个树进行随机特征选择和样本选择,最终通过投票的方式进行分类。该算法具有很好的鲁棒性和泛化性能,但模型解释性较差。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值