Spark Naive Bayes 模型持久性:理解 pi 和 theta

Posted

技术标签:

【中文标题】Spark Naive Bayes 模型持久性:理解 pi 和 theta【英文标题】:Spark Naive Bayes model persistence : understanding pi & theta 【发布时间】:2017-01-05 14:38:25 【问题描述】:

我正在研究基于朴素贝叶斯的实现,并且我正在使用 Spark 2.0,就模型调整而言,我已经完成了它,但是我坚持模型的持久性,我很清楚模型Spark 2 中的持久性支持,但我担心的是为朴素贝叶斯保存模型的内容,特别是在保存模型的数据文件夹中,它存储 pi (向量)的值,这取决于我们拥有的类数,其他是 theta (矩阵)取决于为朴素贝叶斯设置的类数和特征数,因此模型数据文件夹的排序内容取决于实际数据,并且会随着数据大小而增长,

任何人都可以帮助我了解它究竟存储了什么,我基本上需要同样的信息来决定将这些数据放在我的生产架构中的哪个位置。

我试图在这些上找到很多,但不明白它们到底是什么.. 在 Spark java 文档中它们被称为

@param pi 类先验日志,维度为 C(类数) @param theta 类条件概率日志,维度为 C(类数)乘 D(特征数)

但我无法理解这些值究竟是什么以及为什么需要它们,如果有人帮助理解会有所帮助

问题还与它们是在 2.0 版本中添加的事实有关,因此在 1.6 之前它可以在没有 pi 和 theta 的情况下工作

【问题讨论】:

你有没有找到一个好的来源? 【参考方案1】:

这两个属性构成了朴素贝叶斯模型。在给定特征向量 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 矩阵。 theta 矩阵不会增长到无穷大。大小取决于输入变量 xn 的数量以及它们可能具有的值。

【讨论】:

以上是关于Spark Naive Bayes 模型持久性:理解 pi 和 theta的主要内容,如果未能解决你的问题,请参考以下文章

Spark MLlib速成宝典模型篇04朴素贝叶斯Naive Bayes(Python版)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

Spark MLlib 源码学习---朴素贝叶斯模型(Naive Bayes)

大数据:Spark mlib Naive bayes朴素贝叶斯分类之多元朴素贝叶斯源码分析