首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多项式朴素贝叶斯参数α设置?科学知识-学习

多项式朴素贝叶斯参数α设置?科学知识-学习
EN

Stack Overflow用户
提问于 2015-11-20 15:59:13
回答 3查看 33.9K关注 0票数 11

在进行朴素贝叶斯分类时,有谁知道如何设置alpha参数吗?

例如,我首先用一袋单词来构造特征矩阵,矩阵的每个单元格都是单词计数,然后用tf(词频)对矩阵进行规范化。

但是当我使用朴素贝叶斯建立分类器模型时,我选择使用多项式N.B (我认为这是正确的,而不是Bernoulli和bayes )。默认的alpha设置是1.0 (文档说是Laplace平滑,我不知道是什么)。

结果真的很糟糕,比如只有21%的回忆才能找到正类(目标类)。但是当我设定alpha = 0.0001时(我随机选择),结果是95%的回忆分数。

此外,我检查了多项式N.B 公式,我认为这是因为alpha问题,因为如果我使用单词计数作为特征,alpha =1并不会影响结果,但是,由于tf在0-1之间,alpha =1确实会影响这个公式的结果。

我还测试了不使用tf的测试结果,只使用了纸袋计数,结果也是95%,那么,有没有人知道如何设置alpha值呢?因为我得用tf作为特征矩阵。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-11-21 06:39:32

在多项式朴素贝叶斯中,alpha参数被称为https://en.wikipedia.org/wiki/Hyperparameter_optimization,即控制模型本身形式的参数。在大多数情况下,确定超参数最优值的最佳方法是通过网格搜索而不是可能的参数值,使用交叉验证在每个值上评估模型对数据的性能。阅读上面的链接,以了解如何使用scikit-学习的详细信息。

票数 11
EN

Stack Overflow用户

发布于 2019-11-27 11:10:07

为什么要用阿尔法?

对于在NB P(Y=1|W)或P(Y=0|W)中对查询点进行分类(考虑二值分类),W是单词W= w1、w2、w3.wd d=特征数

所以,在训练时找出所有这些的概率

P(w1|Y=1) * P(w2|Y=1) *.P(wd|Y=1)* P(Y=1)

对于Y=0,也应该这样做。

对于朴素的Bayes公式,请参考以下内容(分类器)

现在,在测试的时候,考虑到你遇到的单词在火车集合中不存在,那么它在一个类中存在的概率是零,这将使整个概率0,这是不好的。

考虑W* word在训练集中不存在

P(W*|Y=1) = P(W*,Y=1)/P(Y=1)

代码语言:javascript
复制
      = Number of training points such that w* word present and Y=1 / Number of training point where Y=1
      = 0/Number of training point where Y=1

为了解决这个问题,我们做了Laplace平滑。我们将α添加到分子和分母字段中。

代码语言:javascript
复制
     = 0 + alpha / Number of training point where Y=1 + (Number of class labels in classifier * alpha)
  1. 在现实世界中,如果分子场和分母场都是很小的,那么有些词发生的次数较少,或以不同的方式思考,在上述公式(P(W|Y=1) = P(W,Y=1)/P(Y=1) )中,分子和分母场很容易受到孤立点或噪声的影响。在这里,alpha也有帮助,因为随着alpha的增加,我的概率可能趋于均匀分布。

因此alpha是超参数,您必须使用网格搜索(如jakevdp所提到的)或随机搜索等技术对其进行优化。(https://towardsdatascience.com/hyperparameter-tuning-c5619e7e6624)

票数 4
EN

Stack Overflow用户

发布于 2022-06-03 06:05:59

最好使用Gridsearchcv或RandomSearchcv(在低规范模型上使用此方法)来自动化您的超参数,在MultinomialNB情况下为alpha。

就像这样:

代码语言:javascript
复制
 model=MultinomialNB()
 param={'alpha': [0.00001, 0.0001, 0.001, 0.1, 1, 10, 100,1000]}
    
 clf=GridSearchCV(model,param,scoring='roc_auc',cv=10,return_train_score=True)  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33830959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档