machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

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

Дата публикации Oct 3, 2019


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

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

В любом типе алгоритма наиболее распространенной мерой подобия является нахождение косинуса угла между векторами, то есть сходства косинусов. Предположим, что A - это список фильмов с рейтингом пользователя, а B - список фильмов с рейтингом пользователя B, тогда сходство между ними можно рассчитать как:

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

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

Возьмите следующий пример изwww.machinelearningplus.com:

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

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

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

Предположим, пользователь дает оценки в 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. «Размер»: для желаемого размера результирующей матрицы. То есть при поиске сходства пользователей или элементов это будет просто количество пользователей или элементов. Таким образом, если у вас есть 500 уникальных пользователей, вы получите матрицу расстояний 500x500

Возьмите следующий пример в качестве ссылки:

user_similarity = adjusted_cos_distance_matrix(n_users,data_matrix,0)
item_similarity = adjusted_cos_distance_matrix(n_items,data_matrix,1)

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

  • Евклидово расстояние: похожие элементы будут лежать в непосредственной близости друг от друга, если они нанесены в n-мерном пространстве.
  • Корреляция Пирсона или корреляционное сходство: он говорит нам, насколько тесно связаны два элемента. Чем выше корреляция, тем выше сходство.
  • Средняя квадратическая разница: о нахождении среднего квадрата расхождения между рейтингами пользователей. MSE уделяет больше внимания наказанию за большие ошибки.

А потом:

Где | 𝐼𝑢𝑣 | это просто количество предметов, оцененных как пользователями 𝑢, так и 𝑣.

Примеры схожести между пользователем и пользователем

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

Давайте наглядно представим разницу между вычислительным использованием пользователей и подобий элементов в системе рекомендаций:

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

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

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

  • Сходство пользователя и пользователя
Изображение и пример взяты из аналитики Vidhya

Изображение и пример взяты из аналитики Vidhya

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

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

  • Схожесть предметов
Изображение и пример взяты из аналитики Vidhya

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

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

Ну, это пока все о Рекомендационных системах. Тем не менее, помните, что показатели сходства и метрики расстояния появляются в машинном обучении как очень фундаментальная концепция. Поэтому я надеюсь, что вы нашли этот контент полезным не только для повышения производительности вашего Рекомендатора;)

Если вам понравился этот пост, не забудьте проверить некоторые из моих последних статей, например10 советов, как улучшить свои навыки прорисовки,6 любительских ошибок, которые я допустил, работая с разделением поезда-тестаилиСоскоб в сети за 5 минут, Все они и многое другое доступно вмой средний профиль,

Связаться также ...

Увидимся в следующем посте!

Приветствия.

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map