Основы машинного обучения: что такое меры сходства и расстояния

машинное обучение
Меры сходства и меры расстояния являются очень фундаментальными понятиями в области машинного обучения, и исследователь данных Гонсало Феррейро Вольпи недавно представил эти понятия и то, как они рассчитываются, на простом для понимания примере рекомендательной системы.
Из Medium, Гонсало Феррейро Вольпи, составлено Heart of the Machine, при участии: Panda.

В рекомендательных системах мы часто говорим о понятии «мера сходства». Зачем? Потому что в рекомендательных системах как алгоритмы фильтрации на основе контента, так и алгоритмы совместной фильтрации используют некоторую конкретную меру подобия для определения степени равенства между двумя векторами пользователей или элементов. Так что в целом мера сходства — это не просто расстояние между векторами.

Примечание. Вся моя работа доступна на моей странице GitHub: https://github.com/gonzaferreiro, которая, конечно, также включает кодовую базу для этой статьи и другие сведения о рекомендательных системах.
В алгоритмах любого типа наиболее распространенной мерой подобия является косинус угла между векторами или косинусное сходство. Пусть A будет списком рейтинга фильмов пользователя A, а B будет списком рейтинга фильмов пользователя B, тогда сходство между ними можно рассчитать следующим образом:

Математически сходство косинусов измеряет косинус угла между двумя векторами, проецируемыми в многомерное пространство. При построении косинусного сходства в многомерном пространстве косинусное сходство отражает отношение направлений (угол) каждого вектора, а не величину. Если вам нужна величина, вы должны рассчитать евклидово расстояние.

Косинусное сходство выгодно, потому что даже два похожих файла находятся далеко друг от друга на евклидовом расстоянии из-за их размера (например, слово, которое встречается в документе много раз, или пользователь, который смотрел один и тот же фильм несколько раз), они также могут иметь меньший угол между ними. Чем меньше прилежащий угол, тем выше сходство.

Как показано в примере ниже, с сайта www.machinelearningplus.com

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

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

Давайте взглянем на следующий пример из Stack Overflow, который лучше объясняет разницу между косинусным сходством и скорректированным косинусным сходством:

Предположим, пользователь поставил двум фильмам оценку от 0 до 5 соответственно.

Интуитивно мы видим, что у пользователей b и c похожие вкусы, а у a совершенно разные. Но подобие регулярного косинуса дает разные результаты. В таких случаях вычисление скорректированного косинусного сходства может помочь нам лучше понять, насколько похожи пользователи.

Кстати, в нашей прошлой статье о рекомендательных системах мы привели следующую функцию для вычисления скорректированного косинусного сходства:
from scipy import spatialdef adjusted_cos_distance_matrix(size, matrix, row_column):    distances = np.zeros((size,size))    if row_column == 0:        M_u = matrix.mean(axis=1)        m_sub = matrix - M_u[:,None]    if row_column == 1:        M_u = matrix.T.mean(axis=1)        m_sub = matrix.T - M_u[:,None]    for first in range(0,size):        for sec in range(0,size):            distance = spatial.distance.cosine(m_sub[first],m_sub[sec])            distances[first,sec] = distance    return distances
Способ использования этой функции очень прост, просто введите:
  1. матрица: это необработанная матрица оценок или мнений среди пользователей и т. д. Вы измеряете что-то или свой бизнес-продукт.

  2. row_columns: установите значение 1, если вы измеряете расстояние между столбцами, установите значение 0, если вы измеряете расстояние между строками;

  3. size: Желаемый размер результирующей матрицы. То есть при поиске сходства пользователя или элемента это количество пользователей или элементов. Итак, если есть 500 разных пользователей, размер матрицы расстояний будет 500×500.

Справочный пример приведен ниже:

  • user_similarity = adjusted_cos_distance_matrix(n_users,data_matrix,0)

  • item_similarity = adjusted_cos_distance_matrix(n_items,data_matrix,1)

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

1. Евклидово расстояние. При построении в n-мерном пространстве сходные члены зависят от того, насколько близко они расположены друг к другу.

2. Корреляция Пирсона или сходство корреляции: говорит нам о степени корреляции между двумя элементами. Чем выше корреляция, тем выше сходство.

3. Среднеквадратическая разница: вычисляет среднеквадратичную разницу между оценками пользователей. MSE больше ориентирован на наказание за большие ошибки.

Потом:

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

Примеры подобия пользователь-пользователь и элемент-элемент

Давайте кратко рассмотрим, как работает коллаборативная фильтрация с помощью нашей предыдущей статьи о рекомендательных системах: допустим, мне нравятся книги «Слепой убийца» и «Московский джентльмен», моему другу Матиасу также нравятся «Слепой убийца» и «Московский джентльмен». Джентльмен», но и как «Где раки поют». Похоже, у меня те же интересы, что и у Матиаса. Так что вы можете подумать, что мне тоже понравится «Там, где поют раки», даже если я еще не читал ее. Совместная фильтрация также основана на этой логике, за исключением того, что вы можете сравнивать не только пользователей, но и продукты.

Мы визуально сравниваем разницу между сходством между пользователями и сходством между элементами для рекомендательных систем:

Сходство пользователей

Сходство предметов

Теперь, имея это в виду, давайте проиллюстрируем некоторые показатели на следующем примере, который, как мне кажется, четко определяет сходство между пользователями и элементами:

Объяснение сходства между пользователями

Вот матрица пользовательских рейтингов фильмов. Чтобы понять это на практике, давайте сначала посчитаем сходство между пользователями (A, C) и (B, C) на основе приведенной выше таблицы. К фильмам, совместно используемым пользователями A и C, относятся x2 и x4, а к фильмам, совместно используемым пользователями B и C, относятся x2, x4 и x5. Зная эту информацию, вычисляем корреляцию Пирсона или корреляционное сходство:

Корреляция между А и С больше, чем корреляция между В и С. Следовательно, A и C более похожи, фильмы, которые нравятся A, будут рекомендованы C, а фильмы, которые нравятся C, также будут рекомендованы A.

Товарно-товарное подобие


Средняя оценка элемента здесь представляет собой среднее значение всех оценок для данного элемента (сравните с таблицей, которую мы видели при фильтрации пользователей). Здесь рассчитывается не сходство между пользователями, а сходство между элементами. Для этого нам сначала нужно найти пользователей, которые оценили эти элементы, а затем вычислить сходство между этими элементами на основе этих оценок. Подсчитаем сходство между фильмами (x1, x4) и (x1, x5). Пользователи, которые оценили фильмы x1 и x4, — это A и B, а пользователи, которые оценили фильмы x1 и x5, — также A и B.

Сходство между x1 и x4 больше, чем сходство между x1 и x5. На основе этих значений схожести, если какой-либо пользователь ищет фильм x1, ему будет рекомендован x4, и наоборот.

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

Оригинальный адрес:
https://medium.com/dataseries/similarity-and-distance-metrics-for-data-science-and-machine-learning-e5121b3956f8