Comment puis-je convertir la distance (euclidienne) en score de similarité

13

J'utilise means clustering pour regrouper les voix des locuteurs. Lorsque je compare un énoncé avec des données de haut-parleur groupées, j'obtiens une distorsion moyenne (basée sur la distance euclidienne). Cette distance peut être comprise entre . Je veux convertir cette distance en un score de similitude . Veuillez me guider sur la façon dont je peux y parvenir.[ 0 , ] [ 0 , 1 ]k[0,][0,1]

Muhammad
la source

Réponses:

15

Si d(p1,p2) représente la distance euclidienne du point p1 au point p2 ,

11+d(p1,p2)

est couramment utilisé.

TrynnaDoStat
la source
S'il vous plaît me corriger si je me trompe, si nous avons X=(x1,x2,x3,...,xt) et Y=(Y1,Y2,Y3,...,Yn) où chaque x et y est de dimension D . Ensuite, nous pouvons définir la similitude comme,
Similarity=1ti=1t11+minDistance(xi,Y)
.
Muhammad
Je comprends que le plus 1 du dénominateur est d'éviter la division par une erreur nulle. Mais j'ai trouvé que la valeur plus un affecte de manière disproportionnée les valeurs d (p1, p2) qui sont supérieures à 1 et réduit finalement le score de similarité de manière significative. Y a-t-il une autre façon de procéder? Peut-être s = 1-d (p1, p2)
aamir23
9

Vous pouvez également utiliser: où setrouve la fonction de distance souhaitée.1edistdist

Exception non-gérée
la source
Pouvez-vous s'il vous plaît donner un livre de référence / documentation liée à cette équation dans laquelle vous l'avez trouvée? @Dougal
Justlife
@AnimeshKumarPaul Je n'ai pas écrit cette réponse, j'ai juste amélioré sa mise en forme. Mais il est fréquemment utilisé comme version, par exemple, d'un "noyau RBF généralisé"; voir par exemple ici . Cette question concerne la question de savoir si la sortie est un noyau défini positif; si vous ne vous souciez pas de cela, cependant, cela satisfait au moins une notion intuitive de similitude selon laquelle des points plus éloignés sont moins similaires.
Dougal
@Justlife: Google pour celui-ci "encyclopédie des distances" et choisissez le résultat avec le document pdf.
Exception non gérée
7

Il semble que vous vouliez quelque chose qui ressemble à la similitude cosinus, qui est en soi un score de similitude dans l'intervalle unitaire. En fait, il existe une relation directe entre la distance euclidienne et la similitude cosinus!

Observez cela

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

Alors que la similitude cosinus est θest l'angle entrexetx.

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

Quand nous avons | | x - x | | 2 = 2 ( 1 - f ( x , x ) ) et f ( x , x ) = x T x ,||x||=||x||=1,

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

donc

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

D'un point de vue informatique, il peut être plus efficace de simplement calculer le cosinus plutôt que la distance euclidienne, puis d'effectuer la transformation.

Sycorax dit de réintégrer Monica
la source
3

Que diriez-vous d'un noyau gaussien ?

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
la source
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
la source