问题标签 [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.
algorithm - 如何使用多因素加权排序提供最相关的结果
我需要提供 2+ 个因素的加权排序,按“相关性”排序。但是,这些因素并不是完全孤立的,因为我希望一个或多个因素影响其他因素的“紧迫性”(权重)。
示例:贡献的内容(文章)可以被向上/向下投票,因此具有评级;他们有一个发布日期,并且还带有类别标签。用户撰写文章并可以投票,并且他们自己可能有也可能没有某种排名(专家等)。可能类似于 StackOverflow,对吧?
我想为每个用户提供按标签分组但按“相关性”排序的文章列表,其中相关性是根据文章的评分和年龄计算的,并且可能受作者排名的影响。IE 几年前写的高排名文章可能不一定像昨天写的中等排名文章那样相关。也许如果一篇文章是由专家写的,它会被视为比“Joe Schmoe”写的更相关。
另一个很好的例子是为酒店分配一个由价格、评级和景点组成的“元分数”。
我的问题是,多因素排序的最佳算法是什么?这可能是该问题的重复,但我对任何数量的因素(更合理的预期是 2-4 个因素)的通用算法感兴趣,最好是我不需要的“全自动”功能调整或要求用户输入,我无法解析线性代数和特征向量的古怪。
到目前为止我发现的可能性:
注:S
是“排序分数”
- “线性加权” - 使用类似的函数:,其中是任意分配的权重,并且是因子的值。您还想规范化(即)。我认为这有点像Lucene 搜索的工作原理。
S = (w1 * F1) + (w2 * F2) + (w3 * F3)
wx
Fx
F
Fx_n = Fx / Fmax
- “Base-N weighted” - 更像是分组而不是加权,它只是一个线性加权,其中权重以 base-10 的倍数增加(与CSS 选择器特异性相似的原理),因此更重要的因素显着更高: .
S = 1000 * F1 + 100 * F2 + 10 * F3 ...
- 估计真实价值(ETV) ——这显然是谷歌分析在他们的报告中引入的,其中一个因素的价值影响(权重)另一个因素——结果是对更“统计显着”的值进行排序。该链接很好地解释了它,所以这只是等式: ,其中“更重要”的因素(文章中的“跳出率”)是“显着性修改”因素(文章中的“访问”)。
S = (F2 / F2_max * F1) + ((1 - (F2 / F2_max)) * F1_avg)
F1
F2
- 贝叶斯估计- 看起来与 ETV 非常相似,这就是 IMDb 计算其评级的方式。有关解释,请参阅此 StackOverflow 帖子;equation: ,其中与#3 相同,并且是“显着性”因子的最小阈值限制(即不应考虑小于 X 的任何值)。
S = (F2 / (F2+F2_lim)) * F1 + (F2_lim / (F2+F2_lim)) × F1_avg
Fx
F2_lim
选项 #3 或 #4 看起来很有希望,因为您不必像在 #1 和 #2 中那样选择任意加权方案,但问题是如何针对两个以上的因素进行此操作?
我还遇到了两因素加权算法的 SQL 实现,这基本上是我最终需要编写的。
mahout - 即时更新我的训练模型
我正在使用 apache mahout 的朴素贝叶斯分类器。假设我用 100 个训练数据训练了一个模型,我还有 50 个训练数据。有什么办法可以将新数据附加到经过训练的模型中,还是应该从头开始用 150 个数据重新训练?
如果此功能当前不可用,是否会在将来的版本中提供?
r - Multinomial Naive Bayes Classifier
I have been looking for a multinomial naive Bayes classifier on CRAN, and so far all I can come up with is the binomial implementation in package e1071
. Does anyone know of a package that has a multinomial Bayes classifier?
java - Weka:如何在 java 中获取测试实例的预测值?
我已经成功地训练了一个分类器(bayesnet)并构建了一个测试集(ARFF 格式),它有一个实例,一个缺失值。
如何访问缺失值的预测?我已经使用 GUI 测试了两个 ARFF 结构(培训和测试)。他们工作。我根本不知道,如何访问预测值......
mahout - 贝叶斯分类器的训练数据大小
我正在使用 apache mahout 在客户支持域中执行情绪分析。由于我无法获得适当的训练数据集,所以我自己制作了。现在我有 100 封正面情绪的支持邮件和 100 封负面情绪的支持邮件。
但问题是,我无法达到准确性。它保持在 55% 左右,这是可悲的。大约 70% 左右的准确度将是令人满意的。还要注意,我使用的是免费的 apache mahout 朴素贝叶斯分类器。
准确地说,是较小的数据集大小降低了准确性吗?如果没有,我应该在哪里调整?
php - 用于更大数据集的轻量级贝叶斯过滤器
我想为我的 CMS 创建另一个垃圾邮件检测。目前我确实看到了三个选项:
- 使用简单的 php 类并在 MySQL 中存储令牌
- 安装 spamassassin 并使用 php-connector
- 像mahout这样大的东西
我不喜欢 MySQL 的方法,因为我担心它会随着时间变得非常大,从而降低整个系统的性能。spamassassin 方法似乎更具吸引力,但互联网上到处都有人写道,SA 的规则侧重于邮件和标题,这不是一个理想的方法。最后但并非最不重要的一点是,我知道 mahout,但我担心它可能有点太大并产生大量管理开销。
有没有可以在 linux 服务器上运行并从 php 访问的漂亮、小巧和高效的东西?
r - R中的简单MCMC贝叶斯推理
我正在R中寻找一个简单的MCMC贝叶斯网络推理函数/包。本质上,我只想要一个函数,它接受包含我的样本x我的变量(+可选参数,如老化和迭代计数)的矩阵并返回邻接推断网络的矩阵。
我一直在使用 Matlab 工具包“BayesNet”,它提供了一个简单的“learn_struct_mcmc”函数,它提供了我正在寻找的大部分内容。我正在寻找 R 中的等价物。
我一直在浏览http://cran.r-project.org/web/views/Bayesian.html中的包,但没有看到任何完全符合我要求的东西。我没有接受过统计学家的培训,而且我在该列表中查看的许多软件包要么缺少文档,要么具有比我自己熟悉的更复杂的统计数据。我只需要一个具有“合理”默认值的简单函数即可开始。
利用 Rmpi 或雪的东西的奖励积分。
matlab - MATLAB - 分类输出
我的程序使用来自用户的一组集群的 K 均值聚类。对于这个 k=4 但我想之后通过 matlabs 朴素贝叶斯分类器运行聚类信息。
有没有办法将集群拆分并将它们输入matlab中的不同天真的分类器?
朴素贝叶斯:
K-均值:
类似于将 k 个簇输出为 k1,k2,k3 格式然后让天真的分类器拾取它们,而不是测试它将是 k1,k2 .. 等
但我只是不知道如何将matlab中k个簇的输出发送到某种格式?(对这个程序真的很陌生)
编辑
php - 在非 5 星评级系统中应用贝叶斯平均值
我期待着应用贝叶斯方法来优先考虑可以考虑喜欢、不喜欢和评论计数的列表。
此处列出的方法依赖于贝叶斯平均值:
$bayesian_rating = ( ($avg_num_votes * $avg_rating) + ($this_num_votes * $this_rating) ) / ($avg_num_votes + $this_num_votes);
就我而言,没有,$avg_rating
因为它不是 5 星级系统,它永远不会存在,喜欢、不喜欢和评论的数量总是在增加,因此我需要注意列表的真实表示。
这里的解决方案不足以决定一种方法。
如果我想应用数学方法,最好的解决方案是什么?
编辑添加:参考。@Ina,如果我将喜欢乘以 5,则可以反映 5 星系统,这使其在 5 星系统中具有最高价值。
回到代码,在添加了一些额外的变量来处理(喜欢、不喜欢、评论数量、添加到购物篮的次数)之后,我不确定我可以用什么填充$avg_rating
和$this_rating
?
这是到目前为止的代码:
r - R:分层数据的贝叶斯逻辑回归
这是来自stats.stackexchange的转贴,我没有得到满意的回复。我有两个数据集,第一个是关于学校的,第二个列出了每所学校在标准化考试中不及格的学生(强调是故意的)。可以通过以下方式生成假数据集(感谢Tharen):
我正在尝试估计 P(Fail=1 | Student Race, School Revenue)。如果我在学生数据集上运行多项式离散选择模型,我显然会估计 P(Race | Fail=1)。我显然必须估计这个的倒数。由于两个数据集(P(失败)、P(种族)、收入)中的所有信息都可用,我认为没有理由不能这样做。但我对如何在 R 中实现感到困惑。任何指针都将不胜感激。谢谢。