Есть ли причина (не) L2-нормализовать векторы перед использованием косинусного сходства?

Я читал статью "Улучшение распределительного сходства с помощью уроков, извлеченных из вложений в слова" Леви и др., И во время обсуждения их гиперпараметров они говорили:

Нормализация вектора (nrm) Как упоминалось в разделе 2, все векторы (т.е. строки W) нормализуются к единичной длине (нормализация L2), что делает операцию скалярного произведения эквивалентной косинусному подобию.

Затем я вспомнил, что по умолчанию для sim2 функция векторного сходства в R text2vec Пакет для векторов L2-нормы сначала:

sim2(x, y = NULL, method = c("cosine", "jaccard"), norm = c("l2", "none"))

Поэтому мне интересно, что может быть мотивация для этого, нормализации и косинуса (как с точки зрения text2vec и в целом). Я пытался прочитать о норме L2, но в основном это происходит в контексте нормализации перед использованием евклидова расстояния. Я не смог найти (удивительно) что-нибудь о том, будет ли L2-норма рекомендована за или против в случае косинусного сходства на векторных пространствах / вложениях слов. И у меня нет математических навыков, чтобы разобраться в аналитических различиях.

Итак, вот вопрос, подразумеваемый в контексте векторно-пространственных слов, извлеченных из текстовых данных (либо просто матриц совместного появления, которые можно взвешивать с помощью tfidf, ppmi и т. Д.; или вложений, таких как GloVe), и расчета сходства слов (с целью Конечно, использовать векторное пространство + метрика, которая лучше всего отражает сходство слов в реальном мире).
Есть ли, простыми словами, какая-либо причина (не) использовать норму L2 в матрице характерных слов / матрице совместного использования слов перед вычислением косинусного сходства между векторами / словами?

2 ответа

Решение

text2vec обрабатывает все автоматически - у строк будет стандартная единица L2, а затем вызывается скалярное произведение для вычисления сходства косинусов.

Но если в матрице уже есть строки с единицей L2, то пользователь может указать norm = "none" а также sim2 пропустит первый шаг нормализации (сохранит некоторые вычисления).

Я понимаю путаницу - наверное мне нужно убрать norm опция (не нормализует матрицу).

Если вы хотите получить сходство по косинусу, вам НЕ нужно нормализовать до нормы L2, а затем вычислять сходство по косинусу. Косинусное сходство в любом случае нормализует вектор, а затем принимает скалярное произведение двух.

Если вы вычисляете евклидово расстояние, тогда НУЖНО нормализовать, если расстояние или длина вектора не является важным отличительным фактором. Если длина вектора является отличительным фактором, не нормализуйте и не вычисляйте евклидово расстояние как оно есть.

Другие вопросы по тегам