Теперь вы знаете, как искать похожих людей и рекомендовать предметы данному человеку. Но что если нужно узнать, какие предметы похожи друг на друга? В данном случае вы можете определить степень сходства, выявив людей, которым понравился данный товар, и посмотрев, что еще им понравилось. По существу, это тот же метод, которым мы уже пользовались для определения похожести людей, – нужно лишь вместо людей всюду подставить товары. Излогаясь математическим языком - транспонировать)
Подбор схожих предметов
Произвидя поиск таким образом логика будет следующей: сравниваем 2 фильма и находим всех людей, которые смотрели оба фильма и смотрим оценки выставленные второму, если они хорошие, а лучше все 10ки)
Практика Евклида
select v1.film_id, v2.film_id, 1/(1+(|/sum((v1.vote-v2.vote)^2))),--евклидово не взвешенное расстояние count(1)--кол-во общих фильмов(вес для ф-ии) from votes v1 join votes v2 on v1.user_id=v2.user_id where v1.film_id <> v2.film_id and v2.film_id=326 group by v1.film_id, v2.film_id --having count(1)>10 order by 1/(1+(|/sum((v1.vote-v2.vote)^2))) desc, count(1) desc
Для сравнения возьмем фильм "Побег из Шоушенка". Метод Евклида посчитал, что на него больше всего похож фильм "Реал Мадрид". Спросите чем? Отвечу:
select v1.film_id, v2.film_id, v1.vote vote1, v2.vote vote2, v1.user_id, v2.user_id from votes v1 join votes v2 on v1.user_id=v2.user_id where v1.film_id <> v2.film_id and v2.film_id=326 and v1.film_id=155080
5 разных людей смотрели оба фильма и поставили не много не мало все 10ки!!! Но конечно, данный алгоритм никак не учитывает жанры, режиссеров или актеров. Однако никто не мешает ввести вам такие дополнительные фильтрующие весовые функции.
Практика Пирсона
select v1.film_id, case when ((sum(v1.vote^2)+1)-(sum(v1.vote)^2)/count(1)::float)*((sum(v2.vote^2)+1)-(sum(v2.vote)^2)/count(1)::float) <> 0 then (sum(v1.vote*v2.vote)-(sum(v1.vote)*sum(v2.vote))/count(1)::float)/(|/((sum(v1.vote^2)+1)-(sum(v1.vote)^2)/count(1)::float)*((sum(v2.vote^2)+1)-(sum(v2.vote)^2)/count(1)::float)) else 0 end, count(1)--кол-во общих критиков(вес для ф-ии) from votes v1 join votes v2 on v1.user_id=v2.user_id where v1.film_id <> v2.film_id and v2.film_id=326 --фильм для сравнения group by v1.film_id, v2.film_id --having count(1)>10 order by case when ((sum(v1.vote^2)+1)-(sum(v1.vote)^2)/count(1)::float)*((sum(v2.vote^2)+1)-(sum(v2.vote)^2)/count(1)::float) <> 0 then (sum(v1.vote*v2.vote)-(sum(v1.vote)*sum(v2.vote))/count(1)::float)/(|/((sum(v1.vote^2)+1)-(sum(v1.vote)^2)/count(1)::float)*((sum(v2.vote^2)+1)-(sum(v2.vote)^2)/count(1)::float)) else 0 end desc, count(1) desc
Запустив пирсона, получим совсем другой фильм - "Крезанутые". И это всего при 2х общих критиках. В общем советую Вам обратить внимание на закомментированную строку с having, считаю что нужно ее применить для более точного совпадения)
Я ЗАРАЗ ФІНАНСОВО ЗАБЕЗПЕЧЕННЯ Кредиту, який я отримав від LFDS. Я хотів би донести це до відома громадськості про те, як я вступив у контакт з LFDS після того, як я втратив роботу та отримав відмову в кредиті мого банку та інших фінансових заклад за рахунок моєї кредитної оцінки. Я не міг платити збори за своїх дітей. Мене було поза рахунками, що збираються викинути з дому через неможливість платити свою оренду. Саме в цей період моїх дітей забрали у мене прийомну допомогу. Тоді я вирішив шукати кошти в Інтернеті, де я втратив 3670 доларів, які я позичив у друзів, яких я вирвав у двох інтернет-кредитних компаніях. Поки я не прочитав про: Служба фінансування Le_Meridian (lfdsloans@outlook.com / lfdsloans@lemeridianfds.com) десь в Інтернеті, все ще не переконала, через що я пережила, поки мій родич, який є духовенством, також не сказав мені про поточну кредитну схему LFDS за дуже низькою процентною ставкою 1,9 %% та прекрасними умовами погашення без штрафних санкцій за невиконання платежу. У мене немає іншого вибору, ніж зв’язатися з ними, що я зробив через текст + 1-989-394-3740, і містер Бенджамін відповів мені назад. Цей день був найкращим і найкращим днем мого життя, який ніколи не можна забути, коли я отримувати кредитне сповіщення у розмірі 400 000,00 доларів США, на яке я звернувся. Я ефективно використала позику, щоб погасити свої борги та створити бізнес, і сьогодні я та мої діти так раді й виконуємо. Ви також можете зв’язатися з ними електронною поштою: (lfdsloans@outlook.com / lfdsloans@lemeridianfds.com) Телефон довідки WhatsApptext: + 1-989-394-3740 Чому я це роблю? Я роблю це, щоб врятувати стільки тих, хто потребує позики, щоб не стати жертвою афери в Інтернеті. Дякую і Бог вас усіх благословив, я Олександр Артем із парку Горизонт до н.е., Україна.
ОтветитьУдалить