来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件

实例一、预测性别

在日常生活中,我们往往可以根据一个人的名字判断这个人是男是女,比如李大志,这个名字一听就是男性,因为大和志在男性的名字中用的比较多。通过贝叶斯定理,我们可以求得:

P(gender=malename=DaZhi)=P(name=DaZhigender=male)P(gender=male)P(name=DaZhi) P(gender=male | name=DaZhi) = \frac{P(name=DaZhi | gender=male)P(gender=male)}{P(name=DaZhi)} P(gender=femalename=DaZhi)=P(name=DaZhigender=female)P(gender=female)P(name=DaZhi) P(gender=female | name=DaZhi) = \frac{P(name=DaZhi | gender=female)P(gender=female)}{P(name=DaZhi)}

其中,P(name=DaZhi)P(name=DaZhi) 可以不用计算,P(gender=female)P(gender=female)P(gender=male)P(gender=male) 一般来说差别不大,所以问题可以近似为:比较 P(name=DaZhigender=female)P(name=DaZhi | gender=female)P(name=DaZhigender=male)P(name=DaZhi | gender=male) 的大小。

实例二、预测西瓜好坏

在周志华的西瓜书上,有这样一个数据集:

编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜
1青绿蜷缩浊响清晰凹陷硬滑0.6970.46
2乌黑蜷缩沉闷清晰凹陷硬滑0.7740.376
3乌黑蜷缩浊响清晰凹陷硬滑0.6340.264
4青绿蜷缩沉闷清晰凹陷硬滑0.6080.318
5浅白蜷缩浊响清晰凹陷硬滑0.5560.215
6青绿稍蜷浊响清晰稍凹软粘0.4030.237
7乌黑稍蜷浊响稍糊稍凹软粘0.4810.149
8乌黑稍蜷浊响清晰稍凹硬滑0.4370.211
9乌黑稍蜷沉闷稍糊稍凹硬滑0.6660.091
10青绿硬挺清脆清晰平坦软粘0.2430.267
11浅白硬挺清脆模糊平坦硬滑0.2450.057
12浅白蜷缩浊响模糊平坦软粘0.3430.099
13青绿稍蜷浊响稍糊凹陷硬滑0.6390.161
14浅白稍蜷沉闷稍糊凹陷硬滑0.6570.198
15乌黑稍蜷浊响清晰稍凹软粘0.360.37
16浅白蜷缩浊响模糊平坦硬滑0.5930.042
17青绿蜷缩沉闷稍糊稍凹硬滑0.7190.103

如果这时拿到一个西瓜,特征如下:

色泽根蒂敲声纹理脐部触感密度含糖率
青绿蜷缩浊响清晰凹陷硬滑0.6970.46

那么如何判断这个瓜是好瓜还是坏瓜?

实例三、拼写检查

当用户在输入单词时不小心拼写出现了错误,如何返回他想输入的拼写正确的单词呢?比如,用户输入单词 thew,那么他是想输入 the,还是想输入 thaw?这种拼写检查的问题等同于分类问题:在许多可能拼写正确单词中,到底哪一个最有可能呢?

假设用户输入的单词为 w,要返回的正确单词为 c,拼写检查就是求最大可能的 c:

argmaxcP(cw)=argmaxcP(wc)P(c) \mathop{\arg \max}_c P(c|w) = \mathop{\arg \max}_c P(w|c)P(c)

P(c)P(c) 表示单词 c 出现的概率,这个通过统计文本库中单词 c 出现的频率可以求出来。P(wc)P(w|c) 表示在输入单词 c 时输错成 w 的概率,这需要对大量的输入错误进行统计,这个数据一般不太容易得到,Peter Norvig 在他的一篇文章 How to Write a Spelling Corrector 中介绍了一种方法来近似这个,他使用的是编辑距离(edit distance)。