Открыть сервис

Косинусное сходство

Косинусное сходство — это мера сходства между двумя ненулевыми векторами в многомерном пространстве, определяемая как косинус угла между ними. Значение косинусного сходства лежит в диапазоне от -1 до 1, где 1 означает полное совпадение направлений (нулевой угол), 0 — ортогональность (угол 90°), а -1 — противоположные направления (угол 180°). Косинусное сходство широко применяется в анализе данных, машинном обучении, обработке естественного языка и информационном поиске для сравнения объектов, представленных векторами (документы, изображения, признаки). В отличие от евклидова расстояния, косинусное сходство учитывает только направление векторов, а не их длину, что делает его особенно полезным для разреженных данных.

Математическое определение

Для двух векторов A и B одинаковой размерности n косинусное сходство cos(θ) вычисляется как скалярное произведение, делённое на произведение их длин (норм):

$$\text{similarity}(A,B) = \cos(\theta) = \frac{A \cdot B}{\|A\| \|B\|} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^2} \sqrt{\sum_{i=1}^{n} B_i^2}}$$

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

Свойства

Связь с другими мерами

Косинусное сходство тесно связано с корреляцией Пирсона: если вычесть средние значения из компонент векторов перед вычислением, косинусное сходство между центрированными векторами равно коэффициенту корреляции Пирсона. В контексте разреженных двоичных данных (например, присутствие/отсутствие слов в документе) косинусное сходство совпадает с коэффициентом Охаи (Ochiai coefficient). Также оно является частным случаем меры Танимото (для непрерывных векторов).

Применение

Обработка естественного языка (NLP)

Косинусное сходство — основной инструмент для сравнения документов, представленных в виде векторов TF-IDF или эмбеддингов слов (Word2Vec, GloVe, BERT). Оно лежит в основе:

Информационный поиск

В системах поиска (поисковые машины, рекомендательные системы) косинусное сходство между вектором запроса и векторами документов часто используется для ранжирования результатов. Компоненты вектора обычно соответствуют частоте терминов (TF-IDF или BM25), что позволяет игнорировать длину документа и сосредоточиться на тематической близости.

Машинное обучение

Компьютерное зрение

Для сравнения изображений, представленных векторами признаков (например, гистограммы цветов, дескрипторы SIFT или глубокие эмбеддинги), косинусное сходство позволяет оценивать визуальное сходство независимо от яркости и контраста.

Биоинформатика

Используется для сравнения экспрессии генов, профилей метилирования ДНК и других высокоразмерных данных, где важна скорее форма, чем амплитуда.

Пример вычисления

Пусть есть два вектора:

Скалярное произведение: 1·2 + 2·1 + 0·3 = 2 + 2 + 0 = 4. Норма A: √(1²+2²+0²) = √5 ≈ 2,236. Норма B: √(2²+1²+3²) = √14 ≈ 3,742. Косинусное сходство = 4 / (2,236·3,742) ≈ 4 / 8,367 ≈ 0,478.

Значение 0,478 указывает на умеренное положительное сходство.

Реализация в программном обеспечении

Косинусное сходство встроено во многие библиотеки:

Ограничения

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →