7

我一直在尝试在 Ruby 中实现局部加权逻辑回归算法。据我所知,目前还没有这个算法的库,而且可用的信息很少,所以很难。

我的主要资源是Kan Deng 博士的论文,他在其中描述了算法,我觉得很简单。到目前为止,我在图书馆的工作就在这里

我在尝试计算B(beta)时遇到了麻烦。据我了解,B是一个(1+d x 1)表示特定点的局部权重的向量。之后,pi该点的(正输出概率)是基于该点的 sigmoid 函数B。要获得B,请递归使用 Newton-Raphson 算法一定次数,可能不超过 10 次。

第 66 页上的公式 4-4,Newton-Raphson 算法本身,对我来说没有意义。根据我对什么X和 W 的理解,(x.transpose * w * x).inverse * x.transpose * w应该是一个(1+d x N)矩阵,它与 不匹配B,即(1+d x 1). 那么,唯一可行的方法是,如果 e 是一个(N x 1)向量。

但是,在第 67 页的顶部,在图片下方,邓博士只是说 e 是一个比率,这对我来说没有意义。是 e 欧拉常数吗?碰巧这个比率总是 2.718:1,还是别的什么?无论哪种方式,对我来说,解释似乎都没有暗示它是一个向量,这让我感到困惑。

的使用pi'也让我感到困惑。方程 4-5 是 sigmoid 函数 wrt B 的导数,给出一个常数乘以一个向量,或一个向量。不过,根据我的理解,pi'它应该是一个数字,乘以 w 并形成权重算法 W 的对角线。

所以,我的两个主要问题是e,第 67 页上的内容是什么,这是1xN我需要的矩阵,以及pi'等式 4-5 中的数字是如何结束的?

我意识到这是一个很难回答的问题,所以如果有一个好的答案,那么我会在几天后回来并给它一个 50 分的赏金。我会给邓博士发一封电子邮件,但我一直无法查明他在 1997 年之后发生了什么事。

如果有人对此算法有任何经验或知道任何其他资源,我们将不胜感激!

4

1 回答 1

5

据我所知,这只是 Logistic 回归的一个版本,其中对数似然函数中的项具有乘法权重,具体取决于它们与您尝试分类的点的距离。我将从熟悉逻辑回归的解释开始,例如http://czep.net/stat/mlelr.pdf。您提到的“e”似乎与欧拉常数完全无关——我认为他使用 e 表示错误。

如果您可以从 Ruby 调用 Java,则可以使用http://weka.sourceforge.net/doc.stable/weka/classifiers/functions/Logistic.html中描述的 Weka 中的逻辑分类器- 这表示“虽然原始逻辑回归不处理实例权重,但我们稍微修改算法以处理实例权重。” 如果没有别的,你可以下载它并查看它的源代码。如果您这样做,请注意这是一种相当复杂的方法 - 例如,他们事先检查所有点是否实际上几乎位于输入空间的某个子空间中,如果是,则向下投影几个维度。

于 2012-10-14T05:45:42.450 回答