Меры сходства и меры расстояния являются очень фундаментальными понятиями в области машинного обучения, и исследователь данных Гонсало Феррейро Вольпи недавно представил эти понятия и то, как они рассчитываются, на простом для понимания примере рекомендательной системы.
В рекомендательных системах мы часто говорим о понятии «мера сходства». Зачем? Потому что в рекомендательных системах как алгоритмы фильтрации на основе контента, так и алгоритмы совместной фильтрации используют некоторую конкретную меру подобия для определения степени равенства между двумя векторами пользователей или элементов. Так что в целом мера сходства — это не просто расстояние между векторами.
Математически сходство косинусов измеряет косинус угла между двумя векторами, проецируемыми в многомерное пространство. При построении косинусного сходства в многомерном пространстве косинусное сходство отражает отношение направлений (угол) каждого вектора, а не величину. Если вам нужна величина, вы должны рассчитать евклидово расстояние.
Как показано в примере ниже, с сайта www.machinelearningplus.com
По определению регулярное косинусное сходство отражает различия в ориентации, а не в расположении. Следовательно, такие различия, как пользовательские рейтинги, нельзя учитывать с помощью метрики косинусного подобия. Скорректированное косинусное сходство может облегчить эту проблему, вычитая среднюю оценку соответствующего пользователя из каждой парной пары с общей оценкой, которая определяется следующим образом:
Предположим, пользователь поставил двум фильмам оценку от 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
матрица: это необработанная матрица оценок или мнений среди пользователей и т. д. Вы измеряете что-то или свой бизнес-продукт.
row_columns: установите значение 1, если вы измеряете расстояние между столбцами, установите значение 0, если вы измеряете расстояние между строками;
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)
Наконец, мы кратко рассмотрим некоторые другие методы, которые можно использовать для вычисления сходства в рекомендательных системах, но которые также можно использовать для любого другого алгоритма на основе расстояния в машинном обучении:
2. Корреляция Пирсона или сходство корреляции: говорит нам о степени корреляции между двумя элементами. Чем выше корреляция, тем выше сходство.
3. Среднеквадратическая разница: вычисляет среднеквадратичную разницу между оценками пользователей. MSE больше ориентирован на наказание за большие ошибки.
Потом:
Примеры подобия пользователь-пользователь и элемент-элемент
Давайте кратко рассмотрим, как работает коллаборативная фильтрация с помощью нашей предыдущей статьи о рекомендательных системах: допустим, мне нравятся книги «Слепой убийца» и «Московский джентльмен», моему другу Матиасу также нравятся «Слепой убийца» и «Московский джентльмен». Джентльмен», но и как «Где раки поют». Похоже, у меня те же интересы, что и у Матиаса. Так что вы можете подумать, что мне тоже понравится «Там, где поют раки», даже если я еще не читал ее. Совместная фильтрация также основана на этой логике, за исключением того, что вы можете сравнивать не только пользователей, но и продукты.
Мы визуально сравниваем разницу между сходством между пользователями и сходством между элементами для рекомендательных систем:
Сходство пользователей
Сходство предметов
Объяснение сходства между пользователями
Товарно-товарное подобие
Сходство между x1 и x4 больше, чем сходство между x1 и x5. На основе этих значений схожести, если какой-либо пользователь ищет фильм x1, ему будет рекомендован x4, и наоборот.
Вот и все для рекомендательных систем. Однако имейте в виду, что меры сходства и меры расстояния являются очень фундаментальными понятиями в области машинного обучения, и их понимание имеет решающее значение для дальнейшего обучения.