3

我在这件事上挣扎了好几天……但无济于事。我不是很擅长困难的数学,更不用说这种难度了。

我试图为我的毕业作业在python中实现彩票的最大熵应用程序,尽管该项目的重点是实现一些数据挖掘技术(决策树,Apriori,kmeans)已经完成了一些事情,我就是做不到通过机会做一些更高级的事情....但我想这对我来说太高级了。

所以,我的问题是如何从以下论文中求解非线性方程(8)

参考1:http ://eprints.ecs.soton.ac.uk/901/01/paper05.pdf

该方法基于以下论文

参考文献2:http: //www.stanford.edu/~cover/papers/paper91.pdf

任何帮助(理论上或其他方面)将不胜感激。谢谢

4

1 回答 1

4

您需要结合使用方程式 7 到 9。方程中唯一未知的是拉格朗日乘数,即 lambda。其他一切都取决于可用的经验数据,因此只是数字。

给定一组 lambda 值,您可以计算 G(j,r) 和雅可比 J(j,i,r,s)。反过来,如果您知道残差和雅可比行列式,则可以使用等式 9 中给出的牛顿法来求方程组的根,即满足 G(j,r) = 0 的 lambda 值。

因此,您使用对 lambda 值的初始猜测来计算其他项,然后使用这些项来更新您的猜测。使用等式 7 和 8 根本没有概念上的挑战——只需插入值——但它们加起来了很多数字,所以需要小心。

公式 9 有点棘手,因为它写得不是很清楚。由于本文描述了一个方程组,您通常希望求解一个线性方程:

J * d_lambda = -G

其中 d_lambda 是猜测值变化的向量,G 是函数值的向量,J 是雅可比值矩阵。论文中的符号相当混乱,模糊了应该是一个简单的表达式。您可以通过引入统一索引a来替换索引对is来将其转换为更清晰的形式;作者在讨论该方法时只提到了这种变化,在第 4 页的第二段中给出了计算组合指数的公式。

总体而言,过程变为(使用统一索引):

  1. 选择一些 lambda 作为您的初始猜测。也许是零或随机数。
  2. 评估 G(a) 和 J(a,b)。
  3. 求解线性方程组以更新您的猜测。
  4. 如果更新与您的猜测相比很小,请停止。否则,确定新的猜测并返回步骤 2。

使用 Numpy 看起来非常可行。这篇论文谈到了使用并行计算策略,但那是十多年前的事了;今天这似乎是一个小得多的问题。

于 2011-10-20T16:03:49.340 回答