Много раз вы будете сталкиваться с ситуацией, когда вам нужно найти сходство между словами, предложениями, документами и т. д. в мире НЛП.

В качестве примера предположим, что у вас есть поле поиска на вашем веб-сайте, и вы хотите знать, сколько людей искали «искусственный интеллект». Теперь может быть вероятность того, что пользователь будет искать «ИИ» или пользователь сделает опечатку, но вам все равно нужно учитывать опечатки, чтобы узнать, сколько людей искали это ключевое слово. Одним из способов сделать это является жесткое кодирование, но обычно это не очень хорошая идея. Я хочу познакомить вас с сопоставлением строк, вычислением подобия или метрическим подходом.

Прежде чем приступить к метрикам сходства, вам нужно иметь некоторые знания о встраивании слов. Поэтому я бы посоветовал вам прочитать о TF-IDF и Word2vec.

Измерить сходство между объектами можно разными способами. В этой статье я рассмотрю основные типы метрик на основе расстояния (евклидова и манхэттенская) и метрик на основе подобия (косинус и Жаккара).

Евклидово расстояние:

По сути, это кратчайшее расстояние между двумя точками. Одна из наиболее часто используемых метрик расстояния для алгоритмов машинного обучения.

Допустим, у нас есть две точки P1 и P2, обозначенные (x1,y1) и (x2,y2) на двумерной плоскости. Кратчайшее расстояние между двумя точками равно d, и его можно найти с помощью теоремы Пифагора.

Итак, евклидово расстояние равно

Он не очень часто используется в мире НЛП.

Манхэттенское расстояние:

В случае с Манхэттеном мы не вычисляем гипотенузу, а вычисляем абсолютную разницу между парой координат, выделенной синим цветом. Мы просто вычисляем перпендикулярное расстояние точек от осей x и y.

Манхэттенское расстояние = |x1 — x2| + |у1 — у2|

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

Если вы хотите определить, насколько похожи два документа/корпуса текста, вы можете использовать косинусное сходство.

Косинусное подобие является мерой косинусного угла между двумя векторами. Во-первых, нам нужно преобразовать все предложения в векторы, используя tf-idf или Word2Vec.

Косинусное сходство возвращает нормализованное скалярное произведение двух векторов. Косинусное сходство полезно, когда нас интересует ориентация, а не величина векторов.

Косинусное сходство = Cos theta, где theta — это угол между двумя линиями. Итак, если угол равен 90, то cos 90 = 0, что означает, что обе точки не подобны. Если угол равен 0, то cos 0 = 1, что означает, что обе точки подобны. По мере увеличения подобия косинуса расстояние начинает уменьшаться.

Итак, косинусное расстояние = 1 - косинусное сходство

Сходство Жаккара. Сходство Жаккара используется для вычисления сходства между двумя текстовыми документами, между двумя двоичными векторами, между двумя наборами. Однако косинус используется для сравнения двух действительных векторов.

Вычисление расстояния Жаккара требует значительных вычислительных ресурсов, поскольку оно сопоставляет все термины одного документа со всеми терминами другого документа.

Теперь я хотел бы сосредоточиться на том, где именно используются эти показатели. Каковы их плюсы и минусы?

Где вы используете Manhattan Distance?

Итак, если вы отправитесь в развитые страны, то увидите, что весь город спланирован по кварталам. Если вы хотите пройти из точки А в точку Б, расстояние не будет рассчитываться по диагонали. Вместо этого он будет следовать дорожному образцу. Он не может пересекать дорогу напрямую. Следовательно, в этом случае мы используем манхэттенское расстояние. В основном используется для многомерных данных.

Манхэттенское расстояние вообще хорошо работает, если точки расположены в виде сетки и задача, над которой мы работаем, отдает больший приоритет расстоянию между точками только по сеткам, а не геометрическому расстоянию. например, шахматный набор данных, или если мы хотим найти расстояние между домами, которые находятся в нескольких кварталах друг от друга.

Другой пример — если входные переменные не похожи по типу, например возраст, пол, рост и т. д.

Где вы используете косинусное сходство?

Метрика косинуса используется в системах рекомендаций на основе совместной фильтрации, чтобы предлагать будущие рекомендации пользователям.

Предположим, пользователь А любит смотреть фильмы ужасов, а пользователь Б любит романтические жанры. В этом случае Пользователю Б не будет рекомендовано смотреть фильм ужасов, так как нет сходства между романтическим жанром и жанром ужасов.

Применение метрики расстояния/сходства в машинном обучении

Хорошая метрика расстояния помогает повысить производительность алгоритма классификации и кластеризации. Это помогает распознавать сходство между содержанием.

KNN использует метрики расстояния, чтобы найти сходства или различия. Мы рассчитываем расстояние между каждым поездом и точкой тестовых данных, а затем выбираем ближайшую вершину в соответствии со значением k. Существует вероятность того, что, используя разные метрики расстояния, мы можем получить разные результаты. Таким образом, в невероятностном алгоритме, таком как KNN, метрика расстояния играет важную роль.

В кластеризации K-средних мы выбираем количество центроидов, которые определяют количество кластеров. Затем каждой точке данных будет присвоен ближайший центроид с использованием евклидова расстояния.

В мире NLP мы можем использовать метрику косинусного подобия, чтобы отфильтровать нерелевантный документ из корпуса. Сначала мы преобразуем неструктурированные данные в векторную форму, а затем применяем косинусное сходство.

Заключение

Итак, в рамках этого блога я попытался осветить некоторые часто используемые метрики расстояния и их применение в машинном обучении. Надеюсь, это помогло.