本地加权逻辑回归

我一直在尝试在Ruby中实现一个本地加权逻辑回归算法。据我所知,目前没有针对此算法的库可用,相关信息也非常有限,所以这项工作相当困难。

我的主要参考资料是Kan Deng博士的论文,他在其中对算法的描述我觉得相当简略。我目前在库上的工作进展在这里

在尝试计算B(beta)时遇到了麻烦。据我了解,B是一个(1+d x 1)的向量,表示特定点的本地加权。之后,该点的pi(正输出概率)是基于该点B的Sigmoid函数。为了得到B,需要递归使用牛顿-拉弗森算法一定次数,可能不超过十次。

第66页的方程4-4,牛顿-拉弗森算法本身,对我来说并不清楚。根据我对XW的理解,(x.transpose * w * x).inverse * x.transpose * w应该是一个(1+d x N)的矩阵,这与B(1+d x 1)不匹配。那么,唯一可能成立的情况是e是一个(N x 1)的向量。

然而,在第67页顶部,图片下方,Deng博士只是说e是一个比率,这对我来说并不合理。e是欧拉常数吗?这个比率总是2.718:1,还是其他什么?无论如何,这个解释似乎并没有暗示它是一个向量,这让我感到困惑。

pi'的使用也让我感到困惑。方程4-5,Sigmoid函数对B的导数,给出了一个常数乘以一个向量,或者是一个向量。但据我所知,pi'应该只是一个数字,用来乘以w并形成权重算法W的对角线。

所以,我这里的两个主要问题是,第67页上的e是什么,是我需要的1xN矩阵吗?以及方程4-5中的pi'如何变成一个数字?

我意识到这是一个难以回答的问题,所以如果有好的答案,我会在几天后回来并给予五十点的奖励。我本想给Deng博士发邮件,但自1997年后我一直无法找到他的消息。

如果有人对这个算法有经验或知道其他资源,任何帮助都将不胜感激!


回答:

据我所见,这只是逻辑回归的一种版本,其中对数似然函数中的项根据它们与你试图分类的点的距离有一个乘法权重。我建议先熟悉逻辑回归的解释,比如http://czep.net/stat/mlelr.pdf。你提到的“e”似乎与欧拉常数完全无关——我认为他用e表示误差。

如果你能从Ruby中调用Java,你可能能够使用Weka中描述的逻辑分类器,详见http://weka.sourceforge.net/doc.stable/weka/classifiers/functions/Logistic.html – 该文档提到“虽然原始逻辑回归不处理实例权重,但我们对算法稍作修改以处理实例权重。”如果没有其他办法,你可以下载它并查看其源代码。如果你这样做,请注意这是一种相当复杂的方法——例如,他们会先检查所有点是否实际上大致位于输入空间的某个子空间中,如果是,他们会投影到几个维度上。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注