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

  板凳区 Sofa竞赛3    浏览次数: 474
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


  相关主题

利用朴素贝叶斯对名字进行性别预测   3回答

比赛思路交流群   0回答

有没有赚外快的方法啊   4回答

关于那个autoencode有没有出来解惑一下的。   3回答

地震测评指标   1回答

大家跑模型都用的什么牌子的笔记本   6回答

求教一下:怎么进阶   1回答

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

【招】C轮独角兽招聘算法工程师   1回答

【招聘】华为2012实验室机器学习岗位招聘   0回答

【招】蔚蓝汽车旗下数据岗位实习生   0回答

怎么和领导说自己的模型很好?   3回答



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

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

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

我们谢绝答非所问。

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

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