Интерпретация отрицательного косинуса сходства


17

Мой вопрос может быть глупым. Поэтому я заранее извинюсь.

Я пытался использовать модель GLOVE, предварительно подготовленную группой Stanford NLP ( ссылка ). Тем не менее, я заметил, что мои результаты сходства показали некоторые отрицательные числа.

Это сразу же побудило меня взглянуть на файл словесных векторных данных. По-видимому, значения в словах векторов было разрешено быть отрицательными. Это объясняет, почему я увидел отрицательное косинусное сходство.

Я привык к понятию косинусного подобия частотных векторов, значения которых ограничены в [0, 1]. Я точно знаю, что скалярное произведение и функция косинуса могут быть положительными или отрицательными, в зависимости от угла между векторами. Но мне действительно трудно понять и интерпретировать это отрицательное косинусное сходство.

Например, если у меня есть пара слов, дающая сходство -0,1, они менее похожи, чем другая пара, чье сходство составляет 0,05? Как насчет сравнения сходства от -0,9 до 0,8?

Или я должен просто посмотреть на абсолютное значение минимальной разности углов от ? Абсолютное значение баллов?nπ

Огромное спасибо.


1
Тег косинуса сходства говорит: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.единственное различие между ними состоит в том, что в корреляционных отклонениях (моментах), которые умножаются перекрестно, они являются от среднего значения, в то время как в косинусах отклонения от первоначального 0, то есть они являются значениями, как они есть ,
ttnphns

2
(продолжение) Понимание положительного или отрицательного коэффициента одинаково в обоих случаях. Отрицательный коэф. означает, что положительные отклонения / значения одного вектора имеют тенденцию сочетаться с отрицательными отклонениями / значениями другого. Означает ли это, что векторы «похожи» или, наоборот, «сильно различаются», зависит от того, что для вас значат положительные и отрицательные отклонения / значения в данных.
ttnphns

@ttnphns Большое спасибо за ваш комментарий! Это вдохновляет меня думать о сходстве косинусов по-новому. В моем случае использования, возможно, я могу думать об этом как о разнице в конечных результатах: если соотношение Doc A и B является отрицательным, и однопрофильный журнал X включает Doc A, то менее вероятно, что X включает B как ну, от некоторой средней вероятности. Эта интерпретация звучит для вас правильно?
Май

Я не смею говорить, потому что я не знаю ваших данных, значения ценностей и вашего исследования.
ttnphns

Ответы:


2

Пусть два вектора и , угол получается скалярным произведением и нормой векторов:abθ

cos(θ)=ab||a||||b||

Поскольку значение находится в диапазоне :cos(θ)[1,1]

  • 1 будет указывать на сильно противоположные векторы
  • 0 независимых (ортогональных) векторов
  • 1 аналогичных (положительно-линейных) векторов. Промежуточные значения используются для оценки степени сходства.

Пример : пусть два пользователя и , а также сходство между этими двумя пользователями в зависимости от их вкуса к фильмам:U1U2sim(U1,U2)

  • sim(U1,U2)=1 если два пользователя имеют одинаковый вкус (или если )U1=U2
  • sim(U1,U2)=0 если мы не обнаружим никакой корреляции между двумя пользователями, например, если они не видели каких-либо распространенных фильмов
  • sim(U1,U2)=1 если пользователи имеют противоположные вкусы, например, если они оценили одни и те же фильмы противоположным образом

0

Не используйте абсолютные значения, так как отрицательный знак не является произвольным. Чтобы получить значение косинуса от 0 до 1, вы должны использовать следующую функцию косинуса:

(Код R)

cos.sim <- function(a,b) 
{
  dot_product = sum(a*b)
  anorm = sqrt(sum((a)^2))
  bnorm = sqrt(sum((b)^2))
  minx =-1
  maxx = 1
  return(((dot_product/anorm*bnorm)-minx)/(maxx-minx))
} 

(Код Python)

def cos_sim(a, b):
    """Takes 2 vectors a, b and returns the cosine similarity according 
to the definition of the dot product"""
    dot_product = np.dot(a, b)
    norm_a = np.linalg.norm(a)
    norm_b = np.linalg.norm(b)
    return dot_product / (norm_a * norm_b)

minx = -1 
maxx = 1

cos_sim(row1, row2)- minx)/(maxx-minx)
```

Где вы устанавливаете minx и maxx? Вы можете применить эту минимальную-максимальную нормализацию к векторным измерениям вместо расчетного расстояния.
Emre может

0

Косинусное сходство похоже на корреляцию Пирсона, но не вычитает средства. Таким образом, вы можете сравнить относительную силу сходства 2 косинусов, посмотрев на абсолютные значения, так же, как вы бы сравнили абсолютные значения 2 корреляций Пирсона.


0

Правильно, что косинусное сходство между частотными векторами не может быть отрицательным, так как количество слов не может быть отрицательным, но с встраиванием слов (например, в перчатку) вы можете иметь отрицательные значения.

Упрощенное представление конструкции встраивания в Word выглядит следующим образом: вы присваиваете каждое слово случайному вектору в R ^ d. Затем запустите оптимизатор, который попытается подтолкнуть два одинаковых вектора v1 и v2 близко друг к другу или направить два разнородных вектора v3 и v4 дальше друг от друга (согласно некоторому расстоянию, скажем, косинусу). Вы выполняете эту оптимизацию для достаточного количества итераций, и, в конце концов, у вас есть вложения слов с единственным критерием, что у похожих слов есть более близкие векторы, а разнородные векторы находятся дальше друг от друга. Конечный результат может привести к тому, что некоторые значения измерений будут отрицательными, а некоторые пары будут иметь отрицательное косинусное сходство - просто потому, что процесс оптимизации не заботился об этом критерии. Это могло бы подтолкнуть некоторые векторы в отрицательные значения. Размеры векторов не соответствуют количеству слов,

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