计算基于类型和距离惩罚的度量

时间:2016-03-21 08:08:00

标签: r algorithm machine-learning

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

我想用这些属性计算相对于β点的'Alpha A'的度量标准:

  1. 惩罚距离“Alpha A”更远的距离,无论其类型如何,例如(1 /距离)
  2. 如果type =='Beta A',则给予比类型=='Beta
    更强的权重 B',例如,使'Beta B'为负。
  3. 示例数据框:

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

2 个答案:

答案 0 :(得分:1)

使用此

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

答案 1 :(得分:1)

目前还不清楚你要求的是什么。

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

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

这是你想要的吗?

如果是这样,这是正确的。唯一的问题是,如果它足够快地下降,使其幅度小于某个值,除非&#34;非常接近&#34;通过使用1 /(1-distance ^ 2)来表示。

编辑: 实际上,1 /(1 +距离)可能更好,或者你可能发现自己除以零。