2016-03-21 14 views
0

"Alpha A"という2次元グラフ上に重要なポイントが1つあるとします。表面の他のすべての点には、「ベータA」と「ベータB」の2種類があります。タイプと距離に基づいて罰するメトリックを計算する

私はこれらの性質を持つベータポイントへの「アルファA」の相対的なメトリックを計算したいと思います:

  1. をして、例えば、タイプに関係なく「アルファA」から長い距離を処罰する(1 /距離 ')
  2. タイプ=='ベータA 'の場合、タイプ==' 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)) 
+0

この質問はCrossValidatedには適していませんか?あなたが入力するコードは、Rのようにほとんど動作します。 –

+0

コードはここでは簡単です。私は動作するコードを持っています。だからあなたは正しい:CrossValidatedの方が、実際の質問はコーディングではなく、重み付けに適していたからです。 – lnNoam

答えて

1

それはあなたが求めているものをはっきりしていません。

これに関する詳細は、最近隣の問題か、おそらくより正確には、最寄りの問題です。

このメトリックの使用方法は説明していません。最近隣の色が一致している場合は、最も肯定的です。それらが反対の色である場合は最も負である。両方から等距離にある場合はゼロです。

これは必要なものですか?

もしそうなら、これは正しいです。唯一の疑問は、1 /(1-distance^2)を使って、ある程度「かなり近い」場合を除いて、その大きさがある価値よりも小さくなるように十分急速に落ちる場合です。

編集: 実際には、1 /(1 +距離)が良いかもしれないし、ゼロで割り切っているかもしれません。

+0

はい。まったく。私はちょうど私が欲しかったものについて少し混乱していました。その重みづけはうまく機能します。私は1/distの前に指数関数的減衰f(n)を使用していましたが、それは私の目的にはあまりにも急でした。ありがとう。 – lnNoam

1

使用この

df$weight <- NULL 
df$weight = 1*(1 - 1/df$distance) 
df$weight[df$color!="match"] = -1*df$weight[df$color!="match"] 
関連する問題