Информатика / Алгоритмы и анализ данных
Косинусное сходство векторов: формула и расчёт угла
Косинусное сходство сравнивает направление двух ненулевых векторов и принимает значения от −1 до 1. Для неотрицательных векторов оно показывает, насколько совпадает профиль признаков.
Формула
Ненулевые векторы: совпадающие направления дают 1, прямой угол — 0, противоположные направления — −1.
Обозначения
- $a,b$
- сравниваемые векторы одинаковой размерности, числовые компоненты
- $a·b$
- скалярное произведение, квадрат единицы
- $||a||,||b||$
- евклидовы нормы, единица показателя
Условия применения
Векторы должны иметь одинаковое число координат и ненулевые нормы. Компоненты должны быть построены по одному словарю признаков и в одинаковом порядке. Перед расчетом решите, нужны ли отрицательные значения и какое масштабирование применяется.
Ограничения
Нулевая норма делает деление невозможным. Косинус игнорирует длину вектора, поэтому документы с разным объемом могут выглядеть одинаково по направлению. Мера чувствительна к выбору признаков и не учитывает порядок координат вне их соответствия.
Подробное объяснение
Скалярное произведение складывает попарные произведения координат и тем самым измеряет согласованность направлений. Если большие компоненты стоят в одних позициях, произведение растет; противоположные знаки уменьшают его.
Нормы переводят длины векторов в общий масштаб. Деление на произведение норм убирает влияние простого умножения всех координат на один положительный коэффициент: вектор (1,2) и (10,20) имеют одинаковое направление.
Для ортогональных векторов произведение равно нулю и сходство равно 0. Совпадающие направления дают 1, противоположные — −1. Для частот слов обычно используются неотрицательные координаты, поэтому диапазон фактически от 0 до 1.
В информационном поиске вектор строят по одному словарю и часто взвешивают слова. Нельзя сравнивать векторы, где координаты означают разные признаки. Результат всегда дополняют описанием порога, выбранного для конкретной задачи. Поэтому числовой порог выбирают на размеченных примерах, а не переносят механически из другой коллекции.
Как пользоваться формулой
- Сформируйте два вектора одинаковой размерности и согласуйте порядок координат.
- Перемножьте соответствующие компоненты и сложите их, получив скалярное произведение.
- Возведите компоненты первого вектора в квадрат, сложите и извлеките корень.
- Повторите вычисление нормы для второго вектора и проверьте, что обе нормы ненулевые.
- Разделите скалярное произведение на произведение норм без раннего округления.
- Интерпретируйте число с учетом выбранных признаков и проверьте его на граничном примере.
Историческая справка
Скалярное произведение и евклидова норма появились в развитии аналитической геометрии и векторного исчисления XIX века. Связь произведения с углом между векторами стала стандартной частью линейной алгебры. В XX веке представление документов в виде векторов и сравнение их направлений вошли в информационный поиск; векторная модель документов связывается с работами Джерарда Салтона и его коллег, а Стэнфордский учебник по информационному поиску описывает косинусное сходство как нормированное скалярное произведение. Позднее та же операция стала базовой для разреженных матриц признаков и текстовых представлений. Поэтому исторически формула угла старше ее применения к документам, и эти два этапа не следует смешивать к одной дате или одному автору.
Пример
Кейс 1: a=(1,0), b=(1,0). Произведение 1, нормы 1 и 1, сходство 1. Кейс 2: a=(1,0), b=(0,1). Произведение 0, сходство 0. Кейс 3: a=(1,2), b=(2,1). Произведение 4, нормы √5 и √5, поэтому cos θ=4/5=0,8. Последний случай показывает заметное, но неполное совпадение направлений. Если b заменить на (10,20), сходство останется 1 для a=(1,2): длина изменилась, направление нет. Практический вывод: при поиске документов значение 0,8 означает близкое направление профилей по выбранным признакам, но не гарантирует совпадение текста или равное число слов. Перед выбором порога сравните несколько известных пар.
Частая ошибка
Нельзя делить только на одну норму или забывать корень в формуле длины. Векторы разной размерности и разные словари признаков несопоставимы. Нулевая строка требует отдельной обработки. Не трактуйте 0,8 как «80% одинаковых элементов»: это угловая мера, а не доля совпадений.
Практика
Задачи с решением
Ортогональность
Условие. Найдите сходство a=(2,0), b=(0,5).
Решение. Произведение 0, нормы 2 и 5, значит 0/(2·5)=0.
Ответ. 0
Масштаб
Условие. Найдите сходство a=(1,2), b=(3,6).
Решение. b=3a, произведение 15, нормы √5 и 3√5; 15/15=1.
Ответ. 1
Дополнительные источники
- https://nlp.stanford.edu/IR-book/html/htmledition/dot-products-1.html
- https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.cosine_similarity.html
Связанные формулы
Информатика
Индекс Жаккара: сходство через пересечение множеств
Индекс Жаккара показывает долю общих элементов в объединении двух множеств. Он принимает значения от 0 до 1: ноль означает отсутствие пересечения, а единица — совпадение множеств.
Информатика
Расстояние Левенштейна: вставки, удаления и замены
Расстояние Левенштейна — минимальное число вставок, удалений и замен стоимостью 1, превращающих одну строку в другую. Перестановка соседних символов отдельной операцией не считается.
Информатика
Расстояние Хэмминга между двоичными словами
Расстояние Хэмминга между двоичными словами: формула d(x,y)=\sum [x_i\ne y_i] помогает величины d, x_i, y_i заданы для одной и той же ситуации, периода или объекта. В тексте есть условия, пример, ошибки и проверка результата.