Spark Naive Bayes模型持久性:理解pi& THETA

时间:2016-08-29 14:11:18

标签: apache-spark naivebayes

我正在开发基于Naive Bayes的实现,我正在使用Spark 2.0,就模型调优而言我完成了它,但我坚持模型的持久性,我很清楚模型Spark 2中的持久性支持,但我关注的是朴素贝叶斯的保存模型的内容,特别是在保存模型的数据文件夹中,它存储了pi(向量)的值,这取决于我们所拥有的类的数量。另一个是theta(矩阵),它取决于班级和班级的数量。为Naive Bayes设置的功能数量,因此模型数据文件夹的排序内容取决于实际数据,并随数据大小增长,

任何人都可以帮助我理解它的存储内容,我基本上需要同样的决定来决定将这些数据放在我的生产架构中。

我试图在这些上找到很多,但不要明白它们是什么......在Spark java docs中它们被提及为

  • @param pi类的先验日志,其维度为C(类的数量)
  • 类条件概率的@param theta log,其尺寸为C(类的数量)乘以D(特征数)

但是我无法理解这些价值到底是什么以及为什么需要这些价值,如果有人帮助理解将会有所帮助

问题还涉及它们是在版本2.0中添加的事实,因此在1.6之前它将在没有pi& THETA

1 个答案:

答案 0 :(得分:0)

这两个属性包括朴素贝叶斯模型。朴素贝叶斯可以在给定特征向量X(您的输入向量)的情况下预测C类。要做到这一点,它依赖于贝叶斯定理。通过一些数学魔法,您可以优化贝叶斯定理进行分类,剩下的就是:

P(C | X)= P(C)* P(x1 | C)* ... * P(xn | C)。

或进一步优化:

P(C | X)= log(P(C))+ log(P(x1 | C))+ ... + log(P(xn | C))

旁注:在这种情况下,符号“=”不准确,更像是某种近似。

因此模型需要知道这些概率。 P(C)似乎是pi矢量。 P(xn | C)似乎是theta矩阵。 θ矩阵不会增长到无穷大。大小取决于输入变量xn的数量和它们可能具有的值。