【问题标题】:Compute a metric that punishes on the basis of type and distance计算基于类型和距离进行惩罚的度量
【发布时间】:2016-07-07 15:42:06
【问题描述】:

假设我在一个名为 “Alpha A” 的 2D 图上有一个重要的点。表面上的所有其他点有两种类型:“Beta A”和“Beta B”。

我想使用以下属性计算相对于 Beta 点的“Alpha A”度量:

  1. 无论类型如何,惩罚与“Alpha A”更远的距离,例如,使用 (1/distance)
  2. 如果 type == 'Beta A',赋予比 type == 'Beta 更强的权重
    B',例如,将 'Beta B' 设为负数。

示例数据框:

color     distance
match        10
match        33
no_match     88
match       1000

这是我的伪代码问题的一个非常天真的解决方案:

metric = 0

for (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))

【问题讨论】:

  • 这个问题不是更适合 CrossValidated 吗?您键入的代码几乎可以像在 R 中一样工作。
  • 这里的代码非常简单。我有有效的代码。所以你是对的:这更适合 CrossValidated,因为真正的问题是关于权重,而不是编码。

标签: r algorithm machine-learning


【解决方案1】:

使用这个

df$weight <- NULL
df$weight = 1*(1 - 1/df$distance)
df$weight[df$color!="match"] = -1*df$weight[df$color!="match"]

【讨论】:

    【解决方案2】:

    不清楚你在问什么。

    如果是如何找到更多与此相关的文献,那就是最近邻问题,或者更准确地说,是最近集问题。

    您尚未解释如何使用此指标。如果最近的邻居是颜色==匹配,那将是最积极的;如果它们的颜色相反,则最负面;如果两者距离相等,则为零。

    这是你想要的吗?

    如果是这样,这是正确的。唯一的问题是它是否足够快地下降,以至于它的幅度小于某个值,除非“非常接近”某个集合,比如使用 1/(1-distance^2)。

    编辑: 实际上,1/(1+distance) 可能更好,或者您可能会发现自己被零除。

    【讨论】:

    • 是的。确切地。我只是对我到底想要什么感到有点困惑。这种加权效果很好。我在 1/dist 之前使用了指数衰减 f(n),这对于我的目的来说太陡了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2019-07-10
    • 1970-01-01
    • 2019-05-26
    • 2021-01-14
    • 1970-01-01
    • 2021-05-10
    • 2022-06-11
    相关资源
    最近更新 更多