问题标签 [bayesian]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - 实现用于文本分类的朴素贝叶斯的对数可能性
我正在实现用于文本分类的朴素贝叶斯算法。我有大约 1000 个用于培训的文档和 400 个用于测试的文档。我想我已经正确地实施了培训部分,但我在测试部分感到困惑。这是我所做的简要介绍:
在我的训练功能中:
我想我正确理解并实施了培训部分,但我不确定我能否正确实施测试部分。在这里,我试图检查每个测试文档,并为每个文档计算 logP(spam|d) 和 logP(non-spam|d)。然后我比较这两个数量以确定类别(垃圾邮件/非垃圾邮件)。
在我的测试功能中:
我的问题是;我想返回每个类的概率,而不是精确的 1 和 0(垃圾邮件/非垃圾邮件)。我想看看例如 newclass = 0.8684212 所以我可以稍后应用阈值。但我在这里很困惑。如何计算每个文档的概率?我可以使用 logProbabilities 来计算吗?
command-line - 从命令行运行 weka - 找不到类 NaiveBayes
我正在尝试从命令行运行 Weka 分类,但我的代码:
出现错误消息:
“找不到主类:weka.classifiers.bayes.NaiveBayes。程序将退出。”
我在包含 weka.jar 的目录中运行命令。怎么找不到分类器?
algorithm - 泛滥的贝叶斯评级会产生超出范围的值
我正在尝试应用贝叶斯评级公式,但如果我在 5000 分中给 1 分打分,则最终评级大于 5。
例如,给定项目没有投票,在投票 170,000 次并获得 1 星后,其最终评分为 5.23。如果我给 100 分,它有一个正常值。
这是我在 PHP 中所拥有的。
即使我用 1 或 2 泛滥:
100,000票后的最终评分超过5。
我刚刚做了一个新的测试
在 100,000 之后,我得到了一个完全超出范围范围(10.53)的值。我知道在正常情况下,没有一个项目会获得 170,000 票,而所有其他项目都没有投票。但我想知道我的代码是否有问题,或者考虑到大量选票,这是否是贝叶斯公式的预期行为。
编辑
为了清楚起见,这里是对一些变量的更好解释。
公式为:( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) ) / (avg_num_votes + this_num_votes)
。取自这里
php - 向贝叶斯排名系统添加额外因素(点击次数)
我为业余音乐家经营一个音乐网站,我们有一个基于 10 分的评分系统,然后将其计算为总分 100 分。我们有一个直接影响平均分数的用户“可信度”积分系统在评级点,但下一步是实施一个有效使用这些数据的图表系统。
我将尝试准确解释这一切是如何工作的,以便您可以查看我拥有哪些数据。
- 网站成员对曲目的评分介于 1 到 10 之间。
- 该站点成员具有“可信度”分数,这只是站点周围各种活动累积的总积分。例如,用户给出评分可以获得 100 分,因此他们给出的评分越多,他们的“可信度”分数就越高。只有总的可信度得分保存在数据库中,每次用户执行带有积分奖励的活动时都会更新。这些单独的活动不会被存储。
- 根据该用户与其他已评价曲目的用户相比的可信度,计算该曲目的加权平均值,然后将其作为 1 到 100 之间的数字存储在曲目表中。
- 在曲目表中,曲目被收听的次数(即播放次数)也被存储为总数。
所以我必须使用的数据是:
- 曲目的总体评分(1 到 100 之间的数字)
- 曲目的评分数
- 曲目的播放次数
在图表系统中,我想创建一个排名,使用上述 3 组数据在质量(总体评分,用评分数标准化)和流行度(播放次数)之间建立公平的平衡。但是系统应该比流行度更重视质量,例如质量方面占标准化排名的 75%,流行度占 25%。
在这个网站上搜索后,我发现IMDB 贝叶斯风格的系统有助于解决质量方面的问题,但我如何添加流行度(播放次数)并以我想要的方式平衡它?
如果有帮助,该站点是用 PHP 和 MySQL 编写的。
编辑:标题说“点击次数”,但这基本上直接相当于“播放次数”。
artificial-intelligence - 理想的算法方法——规则引擎/决策树和一些学习逻辑?
我的要求可能接近人们对“专家系统”的期望。并寻找最简单的解决方案,它可以为我提供实时或接近实时的推理,并具有一些离线(非实时)学习能力。
详细地说,我的问题是——
观看实时更新的日志,并将每个条目分类为红色、绿色和蓝色。红、绿、蓝的分类是基于编码为生产规则的逻辑(就像我今天想象的那样)。
它变得具有挑战性的地方是——
1)标记为蓝色的日志条目最终必须标记为红色/绿色,基于后续的日志条目,我们希望有更详细的信息,所以有一点记住要做。等待的确切持续时间事先不知道,但有一个最大限制。当然,在任何给定时间点,都可能有数十万个条目被标记为蓝色。
2) 确定红色和绿色的规则并不完美,因此有时会出现标签错误。因此,偶尔的人工审核会发现这些错误。我的主要挑战是看看我是否可以用最少的编程工作来自动化规则更新的某些部分。
我的(继续研究)表明基于 RETE 算法的规则引擎可能会为我的分类和标记服务,包括重新标记。如果可行,我仍然需要弄清楚如何自动化“从错误中学习”的部分?可以采取一种统计方法 - 贝叶斯分类吗?此外,对于我已经充分手动训练系统的初始分类,是否可以完全采用贝叶斯分类而不是规则引擎?贝叶斯方法似乎通过“信任统计”方法“简化”了维护一组正确规则的任务,尤其是在这些定期手动审计的情况下。
PS> 我的主要应用程序是用 C++ 编写的(如果重要的话)。
ruby - 在大型 Rails 站点上构建灵活的垃圾邮件检测的好的开源包是什么?
我的网站越来越大,并且开始通过各种渠道吸引大量垃圾邮件。该网站有许多不同类型的 UGC(个人资料、论坛、博客评论、状态更新、私人消息等)。我正在进行各种缓解工作,我希望以闪电战的方式进行部署,以使垃圾邮件发送者相信我们不是一个值得攻击的目标。我对自己在功能方面所做的事情非常有信心,但缺少的一部分是一次杀死所有旧垃圾邮件。
这是我所拥有的:
- 大的好/坏语料库(5 位数的坏,6 或 7 位数的好)。很多垃圾邮件都有非常可靠的指纹,而我已经忽略了 6 个月的事实有所帮助:)
- 部署到 AWS 的大型模块化 Rails 站点。这不是一个巨大的流量站点,但我们正在运行 8 个实例,并开始了 SOA。
- Ruby、Redis、Resque、MySQL、Varnish、Nginx、Unicorn、Chef,都在 Gentoo
我的要求:
- 考虑到数据量,我希望它表现得相当好(因此我对纯红宝石解决方案持谨慎态度)。
- 我应该能够针对不同类型的内容训练多个分类(419-scam vs botnet link spam)
- 我希望能够根据我们自己的侦探工作(模式匹配、IP 重用等)添加手动因素
- 最终,我想构建一个与 Ruby 一起使用的漂亮接口。如果这需要在 C 或其他语言中弄脏我的手,我可以处理它,但如果可以的话,我会避免它。
我意识到这是一个冗长而模糊的问题,但我要寻找的主要只是一个好的软件包列表,其次是来自已经建立类似系统的人的任何随机想法,关于如何处理它。
algorithm - 如何预测数据质量?
如果我提前措辞错误,我很抱歉,但我有一个大数据集,我正在尝试分析它,但大多数数据不正确,需要一些帮助来弄清楚如何选择正确的数据。
这里有一些更多的信息来清除它。例如,我有以下内容:
如果只给出值和总数,我会发现有 36 个可能的答案:
如您所见,在可能的情况下,我得到了正确答案,但也有许多其他答案。现在假设我再添加一个红色(所以总红色为 3),那么我现在有 49 个结果,但是如果您考虑与第一个结果集的关系,则第二组中的一些结果不太可能。我假设当我获得更多数据结果时,我可以更准确地删除不起作用的结果。
我试图弄清楚是否有任何研究或标准方法可以将结果缩小到更有意义的范围内。我不是 100% 确定,但我认为谷歌可能是一个例子,因为每个查询不仅针对数据运行,而且还针对您的历史记录(我有一个排名非常低的网站,当我点击它然后搜索再次,它总是出现在顶部..但是当我在我朋友的计算机上搜索时,相同的站点显示在底部)。我想也许谷歌与我们的多个搜索查询建立关系的方式,我可以使用类似的方法从我上面的数据中删除不正确的结果。
很抱歉对于这个误会。我对算法有点陌生,我无法解释这一点。如果这没有意义,请告诉我。
提前致谢!
bayesian - 如何使用朴素贝叶斯实现 TF_IDF 特征加权
我正在尝试实现用于情感分析的朴素贝叶斯分类器。我计划使用 TF-IDF 加权度量。我现在只是有点卡住了。NB 一般使用词(特征)频率来寻找最大似然。那么如何在朴素贝叶斯中引入 TF-IDF 加权度量呢?
machine-learning - 朴素贝叶斯分类器有偏输出?
我正在使用Emgu CV 在 c# 中实现机器学习技术,将图像的像素分类为 3 个不同的类别。
到目前为止,一切都很完美,但问题是它是全自动的。我想让它成为半自动的,这意味着用户可以“重视”这三个结果中的每一个。这是为了让用户能够很好地调整结果。
知道怎么做吗?
我能想到的第一件事是实际修改输入,使其对其中一个输出有偏差(例如,通过修改红色通道使其更红)。但我虽然可能有一种我不知道的通用方法。
谢谢。
php - 贝叶斯评级
3的意义是什么?可能的最高评分是多少?