Косинусная близость
Косинусная близость (также косинусное сходство, косинусная мера) — это метрика, используемая для измерения сходства между двумя ненулевыми векторами в многомерном пространстве. Она определяется как косинус угла между этими векторами, что позволяет оценить, насколько векторы сонаправлены, независимо от их длины. Значение косинусной близости лежит в диапазоне от -1 до 1, где 1 означает полное совпадение направлений, 0 — ортогональность (отсутствие сходства), а -1 — противоположные направления. Метрика широко применяется в анализе текстов, поисковых системах, машинном обучении и рекомендательных системах, особенно при работе с разреженными данными, такими как частотные векторы слов.
Математическое определение
Пусть даны два вектора A и B в n-мерном евклидовом пространстве. Косинусная близость cos(θ) между ними вычисляется по формуле:
cos(θ) = (A · B) / (||A|| × ||B||),
где A · B — скалярное произведение векторов, а ||A|| и ||B|| — их евклидовы нормы (длины). Если один из векторов является нулевым, метрика не определена, и на практике такие случаи обрабатываются отдельно (например, присваивается значение 0).
Свойства
- Нормированность: результат всегда лежит в интервале [-1, 1].
- Инвариантность к масштабу: умножение любого из векторов на положительную константу не меняет значение косинусной близости. Это свойство отличает её от метрик, основанных на расстоянии, таких как евклидово расстояние.
- Симметричность: cos(θ) для пары (A, B) равен cos(θ) для пары (B, A).
- Неотрицательность для неотрицательных векторов: если все компоненты векторов неотрицательны (что характерно для частотных представлений текстов), значение косинусной близости лежит в диапазоне [0, 1].
Отличие от других метрик
Косинусная близость часто путают с косинусным расстоянием, которое определяется как 1 - cos(θ). Косинусное расстояние не является метрикой в строгом смысле, так как не удовлетворяет неравенству треугольника, но используется как мера различия.
В отличие от евклидова расстояния, которое чувствительно к длине векторов, косинусная близость фокусируется на угле между ними. Например, в задачах анализа текстов два документа, один из которых содержит в два раза больше слов, но с теми же пропорциями, будут иметь косинусную близость 1, хотя евклидово расстояние между ними может быть большим.
Применение
Обработка естественного языка и информационный поиск
Косинусная близость является стандартной мерой для сравнения документов, представленных в виде векторов по модели «мешок слов» (bag-of-words) или с использованием TF-IDF (Term Frequency — Inverse Document Frequency). В поисковых системах она позволяет ранжировать результаты по релевантности: чем выше косинусная близость между вектором запроса и вектором документа, тем более релевантным считается документ.
В задачах семантического анализа, где используются векторные представления слов (word embeddings), такие как Word2Vec или GloVe, косинусная близость служит для оценки семантической близости между словами. Например, векторы слов «кошка» и «собака» будут иметь более высокую косинусную близость, чем «кошка» и «автомобиль».
Рекомендательные системы
В коллаборативной фильтрации косинусная близость применяется для вычисления сходства между пользователями или элементами на основе их оценок. Например, в системах, подобных Netflix, она помогает найти пользователей со схожими предпочтениями, чтобы рекомендовать фильмы.
Кластеризация и классификация
Во многих алгоритмах машинного обучения, таких как k-ближайших соседей (k-NN) или спектральная кластеризация, косинусная близость используется в качестве функции расстояния. Она особенно эффективна для данных с высокой размерностью, где евклидово расстояние теряет различительную способность (так называемое «проклятие размерности»).
Компьютерное зрение
В задачах распознавания изображений косинусная близость применяется для сравнения дескрипторов признаков, например, в методах на основе гистограмм ориентированных градиентов (HOG) или свёрточных нейронных сетей (CNN). Она используется для проверки сходства между лицами или объектами на изображениях.
Пример вычисления
Рассмотрим два двумерных вектора: A = (1, 2) и B = (4, 3). Скалярное произведение A · B = 1×4 + 2×3 = 10. Норма ||A|| = √(1² + 2²) = √5 ≈ 2,236, норма ||B|| = √(4² + 3²) = 5. Косинусная близость cos(θ) = 10 / (2,236 × 5) ≈ 10 / 11,18 ≈ 0,894. Это указывает на высокое сходство: угол между векторами составляет около 26,6 градусов.
Ограничения и критика
- Чувствительность к разреженности: при работе с разреженными векторами, характерными для текстовых данных, косинусная близость может давать завышенные оценки сходства для документов, содержащих мало общих слов.
- Игнорирование длины: в некоторых задачах, например, при анализе тональности текста, длина вектора (общее количество слов) может быть информативной, но косинусная близость её не учитывает.
- Неприменимость к нулевым векторам: если документ не содержит ни одного слова из словаря, его вектор является нулевым, и метрика не может быть вычислена без дополнительных допущений.
- Отсутствие семантики: в моделях «мешок слов» косинусная близость не учитывает порядок слов и их синтаксические связи, что может приводить к ложным совпадениям.
Варианты и модификации
- Нормированная косинусная близость: применяется после нормализации векторов к единичной длине, что упрощает вычисления.
- Сферическая косинусная близость: используется в задачах, где данные распределены на сфере, например, в анализе угловых данных.
- Косинусная близость с учётом весов: в некоторых реализациях TF-IDF веса компонентов могут быть дополнительно модифицированы для повышения точности.
История
Концепция косинусного сходства восходит к работам по векторной алгебре, но её активное применение в информационном поиске началось в 1960-х годах с развитием векторной модели документов, предложенной Джерардом Солтоном и его коллегами в Корнеллском университете. Система SMART (System for the Mechanical Analysis and Retrieval of Text), разработанная в 1960-х годах, одной из первых использовала косинусную близость для ранжирования результатов поиска. С ростом популярности методов машинного обучения и обработки естественного языка в 2000-х годах метрика стала стандартной в библиотеках, таких как scikit-learn и TensorFlow.
Источники
- Солтон, Джерард. «Автоматическая обработка текстов: информационный поиск и анализ». — М.: Мир, 1973.
- Мэннинг, Кристофер Д., Рагхаван, Прабхакар, Шютце, Хинрих. «Введение в информационный поиск». — Вильямс, 2011.
- Документация библиотеки scikit-learn: «Косинусное сходство» (Cosine Similarity).
- Jurafsky, Dan, Martin, James H. «Speech and Language Processing». — 3rd ed., 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →