В качестве примера предположим, что у меня очень простой набор данных. Мне дается 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! Еще менее похожи, чем Мартин и Грант, но при осмотре я ожидал бы, что эти два будут очень похожими.
Может ли кто-нибудь помочь объяснить, где мое мышление ошибочно, и, возможно, предложить другое измерение сходства?