关于用贝叶斯方法判断性别的教程中Laplace平滑问题

  板凳区 Sofa竞赛3    浏览次数: 180
1

根据名字判断性别有一个朴素贝叶斯教程(http://sofasofa.io/tutorials/naive_bayes_classifier/),但是关于其中Laplace平滑我有一个疑问。


教程作者首先统计了两个性别中,每个字出现的概率。由于最后计算后验概率时需要有公共的部分,因此作者又计算了该公共部分,即如下代码:

base_f = math.log(1 - train['gender'].mean())
base_f += sum([math.log(1 - frequency_list_f[char]) for char in frequency_list_m])

base_m = math.log(train['gender'].mean())
base_m += sum([math.log(1 - frequency_list_m[char]) for char in frequency_list_m])

为了避免新名字中某些字出现的概率变为0,采用了Laplace平滑。即在测试集中,在计算每个字的概率时使用了Laplace平滑。但是在计算base_f和base_m时,作者却并没有用到Laplace平滑。


我认为Laplace平滑应该在计算base_f和base_m时也应该用吧?

 

CharlieGuo   2018-04-12 15:55



   1个回答 
0

不需要吧,教程里的平滑是对词频进行平滑,而base_f和base_m就是训练集中男女的性别比重,不涉及到词频


kidd23   2018-04-12 22:04

你这么说也有道理。确实,在base_f和base_m中,计算的是训练集中的比例,因此不会出现某个字概率为0的情况,不会对取log造成影响。不过在李航的《统计学习方法》中,利用贝叶斯估计的例题中(例4.2),在计算训练集中的条件概率时,也用到了Laplace平滑。这个问题可能还需要探讨吧 - CharlieGuo   2018-04-18 16:17


  相关主题

【站务】SofaSofa为优秀的博客提供赞助   0回答

【站务】2018-05练习赛奖金发布   0回答

【投票】关于是否削减竞赛奖金的投票   2回答

【机器读中文2:“辨古识今”】特征工程大家都是什么思路?   2回答

为什么所有问答题目看不到   1回答

寻求天池比赛队友,比赛:IJCAI-18 阿里妈妈搜索广告转化预测   3回答

【招】计算机视觉专家月薪6万起   0回答

卷1的讨论帖   0回答

【竞赛5】征集标杆模型啦!   1回答

找DS或者ML相关工作leetcode要刷到什么程度?   2回答

形状识别:是方还是圆?这个比赛求思路?   3回答

【招】阿里巴巴盒马机器学习/数据挖掘岗位   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!