假设我在一个二维图上有一个重要的点,称为“Alpha A”。图面上所有其他点分为两种类型:“Beta A”和“Beta B”。
我想计算一个关于’Alpha A’相对于Beta点的关系的指标,具有以下特性:
- 无论类型如何,都对远离’Alpha A’的距离进行更大惩罚,例如,使用(1/距离)来表示。
- 如果类型为’Beta A’,则给予比类型为’Beta B’更强的权重,例如,将’Beta B’设为负值。
样本数据框:
color distancematch 10match 33no_match 88match 1000
这里是解决我问题的伪代码中的一个非常简单的解决方案:
metric = 0for (point in df){ if (color == match){ weight = 1*(1/distance) } else { weight = -1*(1/distance) } metric = metric + weight }
我毫不怀疑这个问题很常见,并且有无数的技术可以解决它。然而,由于我不知道正确的术语来搜索,找到信息并不太成功…
需要明确的是,我并不是试图预测’Alpha A’的位置。我只是试图计算一个关于其环境的信息性指标。
DF
df = data.frame(color = c('match', 'match', 'no_match', 'match'), distance = c(10, 33, 1, 0))
回答:
不太清楚您在问什么。
如果您想了解更多关于这方面的文献,这是一个最近邻问题,或者更准确地说,是一个最近集合问题。
您没有解释如何使用这个指标。如果最近的邻居是color==match,这个指标将是最正面的;如果是相反的颜色,则是最负面的;如果与两者等距,则为零。
这是您想要的吗?
如果是的话,这是正确的。唯一的问题是它是否下降得足够快,以至于除非“相当接近”某个集合,否则其大小小于某个值,例如使用1/(1-距离^2)来表示。
编辑:实际上,1/(1+距离)可能会更好,否则您可能会遇到除以零的情况。