贝叶斯

作者: Franchen | 来源:发表于2019-02-19 20:50 被阅读0次

原理

关于贝叶斯算法的原理,推荐查看朴素贝叶斯算法原理小结,里面讲的非常详细,这里摘录原理小结。

优点

  • 分类效率稳定。
  • 对缺少数据不太敏感,常用于文本分类。
  • 对小规模数据表现很好,对大规模数据可分批增量式训练。
  • 能处理多分类任务。

缺点

  • 特征较多或特征相关性较大时,分类效果不好。
  • 对数据的表达形式很敏感。
  • 需要知道先验概率(常取决于假设),因此存在一定误差。

sklearn.naive_bayes中有以下朴素贝叶斯分类算法:

适用场景

  • GaussianNB 适用样本特征分布大部分是连续值
  • MultinomialNB 适用样本特征分布大部分是多元离散值
  • BernoulliNB 适用样本特征是二元离散值或很稀疏的多元离散值
  • ComplementNB 适用样本特征分布不平衡(或随机)

二元离散值:只有两种取值的离散值

多元离散值:两种以上取值的离散值。

实例化参数说明

GaussianNB(priors=None)

  • priors 各分类的先验概率。默认Pk=Ck/C(Ck为第k类别的个数,C为样本总个数)

MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)

  • alpha 加法平滑(默认1.0),0表示不处理。解释:贝叶斯公式推导能够成立有个重要前期,就是各个证据(evidence)不能为0。而实际上某些特征未出现在测试集中的情况是可能发生的,因此实现上通常要做一些小的处理,例如把所有计数进行+1。

  • fit_prior 是否考虑先验概率。

  • class_prior 指定各分类的先验概率

    fit_prior 与 class_prior对先验概率Pk的影响如下:

    fit_prior class_prior Pk
    false 忽略 都为1/k
    true None Ck/C
    true Array class_prior

BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)

  • binarize 帮BernoulliNB处理二项分布。若设置该值,则不大于该值为一类,大于该值为另一类。

ComplementNB(alpha=1.0, fit_prior=True, class_prior=None, norm=False)

  • norm 是否执行两次权重正常化。默认行为与Mahout和Weka相似。

常用方法

  • fit(X, y) 训练模型
  • partial_fit(X, y) 增量式训练。大量数据可分若干份,重复调用该方法训练。
  • product(X) 直接给出测试样本分类预测的结果
  • product_proba(X) 给出测试样本属于各分类的概率
  • product_log_proba(X) 给出测试样本属于各分类的概率的对数
  • score(X,y) 返回测试样本映射到指定类标记上的得分(准确率)

例子参考 sklearn朴素贝叶斯类库使用小结

常见模型指标

  • class_prior_ 各个类标记对应的先验概率
  • class_count_ 各类标记对应的训练样本数
  • theta_ 各类标记在各个特征上的均值
  • sigma_ 各个类标记在各个特征上的方差

例子参考 sklearn朴素贝叶斯类库使用小结

相关文章

网友评论

      本文标题:贝叶斯

      本文链接:https://www.haomeiwen.com/subject/cyqqyqtx.html