问题标签 [dirichlet]

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.

0 投票
2 回答
381 浏览

scala - Scala Breeze Dirichlet 分布参数估计

我正在尝试使用 Scala 的微风库估计数据集的参数(Dirichlet 分布)。我已经有一个工作 python (pandas/dataframes) 和它的 R 代码,但我很好奇如何在 Scala 中做到这一点。我也是 Scala 的新手。

我似乎无法让它工作。我想在语法上我没有正确的东西。

我尝试使用的代码在这里:https ://github.com/scalanlp/breeze/blob/master/math/src/main/scala/breeze/stats/distributions/Dirichlet.scala#L111

根据上面的代码: ExpFam[T,I] 接受两个参数 T 和 I。我不知道 T 和 I 是什么。T 可以是密集矩阵吗?

我正在做的是:

此外,如果有一个像这样的数据矩阵 DenseMatrix((1.0, 2.0, 3.0),(4.0, 5.0, 6.0)) 如何在 Scala 中估计参数(Dirichlet)。

0 投票
0 回答
139 浏览

r - 使用贝叶斯统计的帐户赢/输概率

我正在尝试估计赢得或丢失帐户的概率,我想使用贝叶斯方法来做到这一点。我对这些方法不是很熟悉,但我想我理解大体的想法。

我知道一些关于输赢的信息。胜利通常以某种活动的组合为特征;损失通常是不同活动组合的特征。我希望能够根据与该帐户关联的当前活动数量来获得新观察是否会赢或输的后验概率。

这是我的数据示例:(为简单起见,这只是一个示例)

所以从这里我知道 30% 的观察结果为 1(获胜),70% 的结果为 0(失败)。假设我想使用其他列来获取新观察的赢/输概率,该观察可能有少量事件(电子邮件、电话和回调)与之相关联。

现在假设我想使用不同事件的计数/比例作为新观察的先验。这就是我开始被绊倒的地方。我的想法是为赢和输创建一个狄利克雷分布,所以有两个独立的分布,一个代表赢,一个代表输。使用每个结果的事件计数/比例作为先验。我想我不确定如何在 R 中做到这一点。我认为我的行动方案是使用最大似然估计每个结果的狄利克雷分布(因为我有 3 个变量)。我一直在尝试使用 R 包中的dirichlet.simulanddirichlet.mle函数sirt。我不确定是否需要先模拟一个?

另一个问题是,一旦我有了这个分布,我就不清楚如何获得新观察的后验分布。我已经阅读了几篇论文,似乎无法找到一个简单的过程来说明如何做到这一点。(或者我的理解可能存在一些漏洞)。任何朝着正确方向的推动将不胜感激。

这是我到目前为止尝试过的代码:

不确定这是否是正确的方法或如何从这里获得后验。我意识到所有输赢账户的输出看起来都相似。我只是使用了一些模拟数据来代表我正在使用的内容。

0 投票
1 回答
560 浏览

python - 带有小参数的 np.random.dirichlet:在当前的 numpy 中嵌入未来的解决方案

关于当前np.random.dirichlet函数的讨论正在进行中,因为它不适用于小参数:

可以在此处此处阅读讨论并指出这是一个规范化错误。目前,出于多种原因,针对小参数切换采样器的提议增强无法合并到 numpy 的 master 中。

问题:有人可以建议一种不同的方法来在 python 中绘制 dirichlets 或者指出一个解决方案来使用新的采样器而不重新编译我的 numpy 和/或在未发布的分支上工作?

0 投票
1 回答
1193 浏览

c++ - fftw3 用于计算域所有边的具有狄利克雷边界条件的泊松

我正在尝试用 Dirichlet 边界条件为计算域的四个边求解 Poison 方程。众所周知,我应该使用 FFTW_RODFT00 来满足条件。但是,结果不正确。您能帮帮我吗?

}

0 投票
0 回答
467 浏览

python - Polya 分布的 MLE

我正在使用 scipy 为 Polya 发行版编写 MLE。Nelder-Mead 方法有效,但是我得到一个“由于精度损失而不一定实现的预期误差”。运行 BFGS 时出错。Nelder-Mead 方法似乎对我的需求来说太慢了(我有很多相当大的数据,比如 1000 个表,在某些情况下大到 10x10000)。我尝试使用 check_grad 函数,但在下面的示例中结果很小(顺序 10^-2),所以我不确定这是否意味着对数似然梯度中存在错误或者可能性非常强烈达到顶峰。对于它的价值,我已经非常努力地盯着我的代码,但我看不到问题所在。这是一些重现问题的示例代码

这是我的功能的代码


更新:仍然对此感到好奇,但对于那些对此问题的工作实现感兴趣的人,以下用于实现 Minka 定点算法的代码似乎运行良好(即快速恢复接近真实 dirichlet 参数的值)。

0 投票
2 回答
350 浏览

r - R中镶嵌分割链的包,spatstat包?

我正在尝试创建漂亮的聚集点图形。是否有一个包可以在点的镶嵌之间创建分界链?理想情况下,它适合在ggplot.

这是一些示例代码:

这输出如下:http: //imgur.com/CCXeOEB

没有划分的点簇

我正在寻找的是这个:http: //imgur.com/7nmtXjo

具有分隔链的点簇

我知道存在一种算法。

有什么想法/替代方案吗?

0 投票
1 回答
135 浏览

process - 如何在 Dirichlet 过程聚类中决定组分配

与狄利克雷聚类一样,狄利克雷过程可以表示为:

  • 中餐厅流程
  • 断棒过程
  • 聚瓮模型

例如,如果我们考虑Chinese Restaurant Process过程如下:

  • 最初餐厅是空的
  • 第一个进入的人(爱丽丝)坐在一张桌子旁(选择一组)。
  • 第二个进入的人(鲍勃)坐在一张桌子旁。
  • 他坐在哪张桌子上?
  • 他很有可能在一张新桌子旁坐下α/(1+α)
  • 他很有可能与 Alice 坐在现有的桌子旁(意味着他将加入现有的小组)1/(1+α)
  • 第 (n+1)-st 个人以 概率 坐在一张新桌子旁,以 概率 坐在 kα/(n+α)α/(n+α)桌旁nk/(n+α)nk/(n+α),其中nk是当前坐在 k 桌旁的人数。

问题是:

最初,第一个人会加入,比如 G1(即第 1 组),
现在第二个人会加入

现在,如果我计算新条目的概率,我将得到 ieP(N)P(E). 然后,

  • 我将如何决定新条目将加入哪个组G1G2
  • 会根据两个概率的值来决定吗?

作为,

0 投票
1 回答
3128 浏览

r - R监督潜在狄利克雷分配包

我正在为 R 使用这个 LDA 包。具体来说,我正在尝试进行有监督的潜在狄利克雷分配 (slda)。在链接的包中,有一个slda.em函数。然而让我困惑的是它要求 alpha、eta 和方差参数。据我了解,我认为这些参数在模型中是未知数。所以我的问题是,包的作者的意思是说这些是对参数的初步猜测吗?如果是,似乎没有办法从运行的结果中访问它们slda.em

除了在算法中编码额外的 EM 步骤之外,是否有建议的方法来猜测这些参数的合理值?

0 投票
0 回答
149 浏览

python - 字典中的重复值

我有一个问题,在外循环结束后,两个字典都指向相同的值。我有这样的代码:

我在第 2 行之后插入了一条打印语句,以查看 dirichlet 函数是否每次都返回相同的值。它没有,并且在内部循环退出后打印每个状态的字典的值确实表明,首先每个状态的字典都有自己的值。

我认为这可能是深拷贝与浅拷贝的问题,所以我将第 4 行替换为state.dict[i] = copy.deepcopy(probab_dist[j],但这并没有改变任何东西。

有什么想法我可以尝试下一步吗?

0 投票
2 回答
536 浏览

graph - 可视化潜在狄利克雷分配结果

我正在尝试使用来自 genism library for Python 的 Latent Dirichlet Allocation LDA。有没有办法以图形的形式显示算法在训练集上的结果?也许有维恩的图表,或者一些字符?