Come posso convertire la distanza (euclidea) in punteggio di somiglianza


13

Sto usando k significa raggruppare per raggruppare le voci dei relatori. Quando confronto un'enunciazione con i dati degli altoparlanti raggruppati ottengo una distorsione media (basata sulla distanza euclidea). Questa distanza può essere nell'intervallo di [0,] . Voglio convertire questa distanza in un punteggio di somiglianza [0,1] . Per favore guidami su come posso raggiungere questo obiettivo.

Risposte:


15

Se rappresenta la distanza euclidea dal punto p 1 al punto p 2 ,d(p1,p2)p1p2

11+d(p1,p2)

è comunemente usato.


Si prega di correggermi se sbaglio, se abbiamo e Y = ( Y 1 , Y 2 , Y 3 , . . . , Y n ) dove ogni x ed y è di dimensione D . Quindi possiamo definire la somiglianza come, S i m i lX=(x1,x2,x3,...,xt)Y=(Y1,Y2,Y3,...,Yn)xyD .
Similarity=1ti=1t11+minDistance(xi,Y)
Muhammad,

Comprendo che il segno più 1 nel denominatore serve ad evitare la divisione per errore zero. Ma ho scoperto che il valore più uno influenza in modo sproporzionato i valori di d (p1, p2) che sono maggiori di 1 e alla fine riduce significativamente il punteggio di somiglianza. c'è un altro modo per fare ciò? Forse s = 1-d (p1, p2)
aamir23

9

Puoi anche usare: doveè la funzione distanza desiderata.1edistdist


Potete per favore fornire qualsiasi libro di riferimento / documentazione relativa a questa equazione in cui l'hai trovata? @Dougal
Justlife l'

@AnimeshKumarPaul Non ho scritto questa risposta, ho solo migliorato la sua formattazione. Ma viene spesso usato come versione di un "kernel RBF generalizzato"; vedi ad esempio qui . Questa domanda riguarda se l'output è un kernel definito positivo; se non ti interessa, comunque, soddisfa almeno una nozione intuitiva di somiglianza che punti più distanti sono meno simili.
Dougal,

@Justlife: Google per questa "enciclopedia delle distanze" e scegli il risultato con il documento pdf.
Eccezione non gestita

6

Sembra che tu voglia qualcosa di simile alla somiglianza del coseno, che è esso stesso un punteggio di somiglianza nell'intervallo di unità. In effetti, esiste una relazione diretta tra la distanza euclidea e la somiglianza del coseno!

Osservare che

||xx||2=(xx)T(xx)=||x||+||x||2||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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.