距離(ユークリッド)を類似度スコアに変換する方法


13

私はを使用してkクラスタリングを行い、話者の声をクラスタリングします。発話をクラスター化されたスピーカーデータと比較すると、(ユークリッド距離に基づく)平均歪みが得られます。この距離は、範囲になります[0,]。私はこの距離を変換したい[0,1]類似性スコア。これを達成する方法を教えてください。

回答:


15

d(p1,p2)がポイントp1からポイントまでのユークリッド距離を表す場合p2

11+d(p1,p2)

一般的に使用されます。


我々が持っている場合、私は、間違っているなら、私を修正してくださいX=(x1,x2,x3,...,xt)Y=(Y1,Y2,Y3,...,Yn)ここで、各xおよびy の次元はDです。次に、S i m i lなどの類似性を定義できます。
Similarity=1ti=1t11+minDistance(xi,Y)
ムハンマド

分母のプラス1はゼロ除算エラーを回避するためのものであることを理解しています。しかし、プラス1の値は、1より大きいd(p1、p2)値に不釣り合いに影響し、最終的に類似性スコアを大幅に低下させることがわかりました。これを行う別の方法はありますか?たぶんs = 1-d(p1、p2)
aamir23

9

次を使用することもできます:1edistここdistで、目的の距離関数を指定します。


あなたがそれを見つけたこの方程式に関連する参考書/文書を教えてください。@Dougal
Justlife

@AnimeshKumarPaulこの答えは書きませんでしたが、フォーマットを改善しただけです。しかし、たとえば「一般化されたRBFカーネル」のバージョンとして頻繁に使用されます。ここを参照してください。その質問は、出力が正定値カーネルかどうかに関するものです。ただし、それを気にしない場合は、少なくとも、遠いポイントほど類似性が低いという直感的な概念を満たします。
ドゥーガル

@Justlife:この「距離の百科事典」のためにGoogleがPDFドキュメントで結果を選びます。
未処理の例外

6

余弦類似性に似たものが欲しいように思えますが、それ自体が単位区間の類似性スコアです。実際、ユークリッド距離とコサイン類似度の間には直接的な関係が存在します!

それを守っ

||xx||2=(xx)T(xx)=||x||+||x||2||xx||.

コサイン類似度は ここで、θxx′の間の角度です。

f(x,x)=xTx||x||||x||=cos(θ)
θxx

When ||x||=||x||=1, we have

||xx||2=2(1f(x,x))
and
f(x,x)=xTx,

so

1||xx||22=f(x,x)=cos(θ)
in this special case.

From a computational perspective, it may be more efficient to just compute the cosine, rather than Euclidean distance and then perform the transformation.


I'm confused by your notation here. Is x,x2 supposed to be xx2 (in which case I think the relation is incorrect, as it doesn't account for x or x), or something based on x,x? The cosine similarity I'm familiar with is simply xTx/(xx), though Wikipedia says the "angular similarity" 12πxTxxx is also sometimes called that.
Dougal

@Dougal Blah. Correct. I've revised to make it intelligible.
Sycorax says Reinstate Monica

Cool. Note though that since the OP said distances are unbounded, it seems like we don't have x=1. Also, your expansion of xx2 is mistaken; it should be x2+x22xTx, though the rest of your post handles it correctly. :)
Dougal

3

How about a Gaussian kernel ?

K(x,x)=exp(xx22σ2)

The distance xx is used in the exponent. The kernel value is in the range [0,1]. There is one tuning parameter σ. Basically if σ is high, K(x,x) will be close to 1 for any x,x. If σ is low, a slight distance from x to x will lead to K(x,x) being close to 0.


1
Note that this answer and @Unhandled exception's are very related: this is exp(γd(x,x)2), where that one [introducing a scaling factor] is exp(γd(x,x)), a Gaussian kernel with d as the metric. This will still be a valid kernel, though the OP doesn't necessarily care about that.
Dougal

0

If you are using a distance metric that is naturally between 0 and 1, like Hellinger distance. Then you can use 1 - distance to obtain similarity.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.