Как я могу преобразовать расстояние (евклидово) в показатель сходства


13

Я использую k означает кластеризацию для кластеризации голосов ораторов. Когда я сравниваю высказывание с данными кластерного динамика, я получаю (евклидово основанное на расстоянии) среднее искажение. Это расстояние может быть в диапазоне [0,] . Я хочу преобразовать это расстояние в [0,1] сходство. Пожалуйста, объясните мне, как я могу этого достичь.

Ответы:


15

Если представляет евклидово расстояние от точки p 1 до точки p 2 ,d(p1,p2)p1p2

11+d(p1,p2)

обычно используется.


Пожалуйста , поправьте меня , если я ошибаюсь, если мы имеем и Y = ( Y 1 , Y 2 , Y 3 , . . . , Y п ) где каждый х и у имеет размерность D . Тогда мы можем определить сходство, например, S i m i lX=(x1,x2,x3,...,xt)Y=(Y1,Y2,Y3,...,Yn)xyD .
Similarity=1ti=1t11+minDistance(xi,Y)
Мухаммед

Я понимаю, что плюс 1 в знаменателе состоит в том, чтобы избежать деления на ноль ошибок. Но я обнаружил, что значение «плюс один» непропорционально влияет на значения d (p1, p2), которые больше 1, и в конечном итоге значительно снижает оценку сходства. Есть ли другой способ сделать это? Возможно s = 1-d (p1, p2)
aamir23

9

Вы также можете использовать: гдеваша желаемая функция расстояния.1edistdist


Можете ли вы дать какой-либо справочник / документацию, относящуюся к этому уравнению, в котором вы его нашли? @Dougal
Justlife

@AnimeshKumarPaul Я не писал этот ответ, просто улучшил его форматирование. Но он часто используется как версия, например, «обобщенного ядра RBF»; см. например здесь . Этот вопрос касается того, является ли вывод положительно определенным ядром; однако если вас это не волнует, это, по крайней мере, удовлетворяет интуитивному представлению о сходстве, что более отдаленные точки менее похожи.
Дугал

@Justlife: Google для этой "энциклопедии расстояний" и выберите результат в PDF-документе.
необработанное исключение

7

Звучит так, будто вы хотите что-то похожее на косинусное сходство, которое само по себе является показателем сходства в единичном интервале. На самом деле существует прямая связь между евклидовым расстоянием и косинусным сходством!

Обратите внимание, что

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

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

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


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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.