0

В качестве примера предположим, что у меня очень простой набор данных. Мне дается csv с тремя столбцами, user_id, book_id, rating. Рейтинг может быть любым числом 0-5, где 0 означает, что пользователь имеет NOT оценил книгу.Правильное толкование Косинус Угловое расстояние Сходство и эвклидовое расстояние сходства

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

Martin: < 3,3,5,1,2,3,2,2,5>

Jacob: < 3,3,5,0,0,0,0,0,0>

Грант: < 1,1,1,2,2,2,2,2,2>

расчеты подобия:

+--------------+---------+---------+----------+ | | M & J | M & G | J & G | +--------------+---------+---------+----------+ | Euclidean | 6.85 | 5.91 | 6.92 | +--------------+---------+---------+----------+ | Cosine | .69 | .83 | .32 | +--------------+---------+---------+----------+

Теперь, мое ожидание подобия является то, что Мартин и Я cob был бы самым похожим. Я ожидал бы этого, потому что у них ТОЧНО одинаковые рейтинги для книг, которые оба они оценили. Но мы заканчиваем тем, что Мартин и Грант являются наиболее похожими.

Я понимаю математически, как мы добираемся до этого вывода, но я не понимаю, как я могу полагаться на Косинус Угловое расстояние или Евклидово расстояние как средство вычисления подобия, если это происходит. Для какой интерпретации Мартин и Грант более похожи, чем Мартин и Иаков?

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

Я тогда в конечном итоге с этим

+--------------+---------+---------+----------+ | | M & J | M & G | J & G | +--------------+---------+---------+----------+ | Euclidean | 0 | 5.91 | 6.92 | +--------------+---------+---------+----------+ | Cosine | .69 | .83 | .32 | +--------------+---------+---------+----------+

Конечно, сейчас у меня есть евклидово расстояние, равное 0, что соответствует то, что я бы ожидать от системы рекомендательных. Я вижу, что многие учебники и лекции используют косинус Угловое расстояние, чтобы игнорировать неоцененные книги, а не использовать Евклидов и игнорировать их, поэтому я считаю, что это не должно работать в целом.

EDIT:

Просто немного поэкспериментировать, я приспособил особенность вектор Якоба гораздо больше похожи:

Jacob: < 3,3,5,1,2,3,2,0, 0>

Когда я вычисляю Косинус Угловое расстояние с Мартином, я до сих пор получаю только 0,82! Еще менее похожи, чем Мартин и Грант, но при осмотре я ожидал бы, что эти два будут очень похожими.

Может ли кто-нибудь помочь объяснить, где мое мышление ошибочно, и, возможно, предложить другое измерение сходства?

ответ

1

Как вы уже отметили, евклидовое и косинусное углы основаны на расстоянии. Расстояние между 3 и 5, например, намного меньше, чем между 3 и 0, имея несколько нулей в рейтингах Иакова, вы не получите много общего между Джейкобом и Мартином. Основная проблема с вашим примером состоит в том, что вы предположили, что 0 означает отсутствие рейтинга, где, по сути, его интерпретируются двумя формулами как рейтинг 0 (который является самым низким рейтингом). Если вы пропустили нулевые оценки и сравните пользователей только с рейтинги, которые у них есть, чем у Марин и Джейкоба, будут иметь сходство 1!

0

Ваше мнение, верно, но ваш код может рассчитывать неправильное сходство косинусов.

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