贝叶斯

作者: 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