我正在开发基于Naive Bayes的实现,我正在使用Spark 2.0,就模型调优而言我完成了它,但我坚持模型的持久性,我很清楚模型Spark 2中的持久性支持,但我关注的是朴素贝叶斯的保存模型的内容,特别是在保存模型的数据文件夹中,它存储了pi(向量)的值,这取决于我们所拥有的类的数量。另一个是theta(矩阵),它取决于班级和班级的数量。为Naive Bayes设置的功能数量,因此模型数据文件夹的排序内容取决于实际数据,并随数据大小增长,
任何人都可以帮助我理解它的存储内容,我基本上需要同样的决定来决定将这些数据放在我的生产架构中。
我试图在这些上找到很多,但不要明白它们是什么......在Spark java docs中它们被提及为
但是我无法理解这些价值到底是什么以及为什么需要这些价值,如果有人帮助理解将会有所帮助
问题还涉及它们是在版本2.0中添加的事实,因此在1.6之前它将在没有pi& THETA
答案 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的数量和它们可能具有的值。