Wie kann ich Distanz (Euklidisch) in Ähnlichkeit umwandeln?

13

Ich benutze k bedeutet Clustering, um Lautsprecherstimmen zu gruppieren. Wenn ich eine Äußerung mit gruppierten Sprecherdaten vergleiche, erhalte ich eine (euklidische entfernungsbasierte) durchschnittliche Verzerrung. Dieser Abstand kann im Bereich von . Ich möchte diesen Abstand in einen Ähnlichkeitswert umrechnen . Bitte leiten Sie mich, wie ich dies erreichen kann.[0,][0,1]

Muhammad
quelle

Antworten:

15

Wenn d(p1,p2) den euklidischen Abstand von Punkt p1 zu Punkt p2 ,

11+d(p1,p2)

wird häufig verwendet.

TrynnaDoStat
quelle
Bitte korrigieren Sie mich , wenn ich falsch bin, wenn wir X=(x1,x2,x3,...,xt) und Y=(Y1,Y2,Y3,...,Yn) wobei jedes x und y Dimension D . Dann können wir Ähnlichkeiten definieren, wie z. B. .
Similarity=1ti=1t11+minDistance(xi,Y)
Muhammad
Ich verstehe, dass das Plus 1 im Nenner ist, um Division durch Null Fehler zu vermeiden. Ich habe jedoch festgestellt, dass der Wert plus eins d (p1, p2) -Werte, die größer als 1 sind, überproportional beeinflusst und letztendlich die Ähnlichkeitsbewertung signifikant verringert. Gibt es eine andere Möglichkeit, dies zu tun? Vielleicht s = 1-d (p1, p2)
aamir23
9

Sie könnten auch verwenden: , woSiegewünschte Abstandsfunktion ist.1edistdist

Unbehandelte Ausnahme
quelle
Können Sie bitte ein Nachschlagewerk / eine Dokumentation zu dieser Gleichung angeben, in der Sie sie gefunden haben? @Dougal
Justlife
@AnimeshKumarPaul Ich habe diese Antwort nicht geschrieben, sondern nur die Formatierung verbessert. Es wird jedoch häufig als Version eines "generalisierten RBF-Kernels" verwendet. siehe zB hier . Diese Frage betrifft, ob es sich bei der Ausgabe um einen positiv definierten Kernel handelt. Wenn Ihnen das egal ist, befriedigt es zumindest eine intuitive Vorstellung von Ähnlichkeit, dass weiter entfernte Punkte weniger ähnlich sind.
Dougal
@ Justlife: Google für diese eine "Enzyklopädie der Entfernungen" und wählen Sie das Ergebnis mit dem PDF-Dokument.
Unbehandelte Ausnahme
6

Es hört sich so an, als ob Sie eine Ähnlichkeit mit dem Kosinus wünschen, was selbst eine Ähnlichkeitsbewertung im Einheitsintervall ist. Tatsächlich besteht eine direkte Beziehung zwischen euklidischer Distanz und Kosinusähnlichkeit!

Beachten Sie, dass

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

Während die Cosinusähnlichkeit wobeiθder Winkel zwischenxundx'ist.

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

Wann wir haben | | x - x | | 2 = 2 ( 1 - f ( x , x ' ) ) und f ( x , x ' ) = x T x ' ,||x||=||x||=1,

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

so

in diesem Spezialfall.

1||xx||22=f(x,x)=cos(θ)

Aus rechnerischer Sicht kann es effizienter sein, statt der euklidischen Distanz nur den Kosinus zu berechnen und dann die Transformation durchzuführen.

Sycorax sagt Reinstate Monica
quelle
x,x2xx2xxx,xxTx/(xx)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.

wij
quelle
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.

Brad
quelle