Bagaimana saya dapat mengkonversi jarak (Euclidean) ke skor kesamaan

13

Saya menggunakan means clustering untuk mengelompokkan suara speaker. Ketika saya membandingkan ucapan dengan data speaker yang dikelompokkan, saya mendapatkan distorsi rata-rata (jarak Euclidean). Jarak ini bisa dalam kisaran [ 0 , ] . Saya ingin mengonversi jarak ini ke skor kesamaan [ 0 , 1 ] . Tolong bimbing saya tentang bagaimana saya bisa mencapai ini.k[0,][0,1]

Muhammad
sumber

Jawaban:

15

Jika d(p1,p2) mewakili jarak euclidean dari titik p1 ke titik p2 ,

11+d(p1,p2)

umumnya digunakan.

TrynnaDoStat
sumber
Harap perbaiki saya jika saya salah, jika kita memiliki X=(x1,x2,x3,...,xt) dan Y=(Y1,Y2,Y3,...,Yn) di mana setiap dan y adalah dimensi D . Kemudian kita dapat mendefinisikan kesamaan seperti, S i m i lxyD
Similarity=1ti=1t11+minDistance(xi,Y)
.
Muhammad
Saya mengerti bahwa plus 1 dalam penyebut adalah untuk menghindari pembagian dengan kesalahan nol. Tetapi saya telah menemukan bahwa nilai plus satu secara tidak proporsional mempengaruhi nilai-nilai d (p1, p2) yang lebih besar dari 1 dan akhirnya mengurangi skor kesamaan secara signifikan. Apakah ada cara lain untuk melakukan ini? Mungkin s = 1-d (p1, p2)
aamir23
9

Anda juga dapat menggunakan: manaadalah fungsi jarak yang Anda inginkan.1edistdist

Pengecualian yang tidak tertangani
sumber
Bisakah Anda memberikan buku referensi / dokumentasi yang terkait dengan persamaan ini di mana Anda menemukannya? @Dougal
Justlife
@AnimeshKumarPaul Saya tidak menulis jawaban ini, hanya memperbaiki formatnya. Tetapi ini sering digunakan sebagai versi dari misalnya "kernel RBF yang digeneralisasi"; lihat misalnya di sini . Pertanyaan itu menyangkut apakah outputnya adalah kernel pasti positif; Namun, jika Anda tidak peduli tentang itu, setidaknya itu memenuhi gagasan intuitif tentang kesamaan bahwa poin yang lebih jauh kurang serupa.
Dougal
@Justlife: Google untuk "ensiklopedia jarak" yang satu ini dan pilih hasilnya dengan dokumen pdf.
Pengecualian tanpa
6

Kedengarannya seperti Anda menginginkan sesuatu yang mirip dengan cosinus similarity, yang dengan sendirinya skor kesamaan dalam interval satuan. Faktanya, ada hubungan langsung antara jarak Euclidean dan persamaan cosinus!

Perhatikan itu

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

Sedangkan cosinus similarity adalah manaθadalah sudut antaraxdanx.

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

Kapan kami memiliki | | x - x | | 2 = 2 ( 1 - f ( x , x ) ) dan f ( x , x ) = x T x ,||x||=||x||=1,

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

begitu

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

Dari perspektif komputasi, mungkin lebih efisien untuk hanya menghitung cosinus, daripada jarak Euclidean dan kemudian melakukan transformasi.

Sycorax berkata Reinstate Monica
sumber
x,x2xx2xxx,xxTx/(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.

wij
sumber
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
sumber