Ответ
Косинусное сходство — это метрика, измеряющая косинус угла между двумя не нулевыми векторами в многомерном пространстве. Она оценивает схожесть направлений векторов, игнорируя их абсолютную величину (длину). Диапазон значений от -1 (векторы противоположно направлены) до 1 (векторы сонаправлены), при 0 векторы ортогональны.
Формула: Для векторов ( A ) и ( B ): [ text{cosine_similarity}(A, B) = frac{A cdot B}{|A| cdot |B|} = frac{sum_{i=1}^{n} A_i Bi}{sqrt{sum{i=1}^{n} Ai^2} cdot sqrt{sum{i=1}^{n} B_i^2}} ]
Пример вычисления и применения в Python:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# Пример из NLP: сравнение документов
documents = [
"Машинное обучение — это интересно",
"Глубокое обучение — часть машинного обучения",
"Я люблю программировать на Python"
]
# Векторизуем текст (TF-IDF)
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(documents)
# Вычисляем попарное косинусное сходство
similarity_matrix = cosine_similarity(tfidf_matrix, tfidf_matrix)
print("Матрица сходства:")
print(similarity_matrix)
# Первые два документа будут иметь высокое сходство, третий — низкое.
Основные сферы применения:
- Поисковые системы и NLP: Для сравнения текстовых документов, векторизованных через Bag of Words или TF-IDF.
- Рекомендательные системы: Для нахождения похожих товаров или пользователей на основе их векторных представлений (embeddings).
- Компьютерное зрение: Для сравнения векторных представлений изображений.
Преимущество перед евклидовым расстоянием: Косинусная мера нечувствительна к масштабу, что важно, например, при сравнении текстов разной длины.