Перейти к содержанию

Персональные рекомендации: Алгоритмы, формулы, и т.д...

Рекомендуемые сообщения

Я уже писал, что система подсчета коэффициента близости работает некорректно. Насколько понимаю, сейчас близость считается по коэффициенту Пирсона. [url]http://www.kinopoisk.ru/board/showthread.php?p=1264648[/url] Этот коэффициент характеризует существование линейной зависимости между двумя величинами. А линейная зависимость определяет степень, с которой значения двух переменных "пропорциональны" друг другу. [url]http://www.statplus.net.ua/ru/help/source/a_corr.htm[/url] Вот в чем проблема. Именно пропорциональность, а не близость определяет коэффициент Пирсона. И для подсчета близость он не подходит. Самый простой способ подсчета близости − подсчитать близость по каждой оценке и вывести средний коэффициент. Пример Изменено пользователем vvtt
Ссылка на комментарий
Поделиться на другие сайты

Недостаток такого способа заключается в том, что совпадение двух десяток и единиц должно иметь разную важность. Решение − использование средневзвешенного коэффициента, в котором близость по десяткам будет учитываться 10 раз, девяткам − девять и т. д. Тогда если пользователи, близость которых рассчитывается, поставят фильму по 10 баллов, это будет влиять на близость так же, как по 5 баллов двум или по единице десяти фильмам. Кроме того, по фильму 7 близость получилась 50%, хотя разрыв всего 1 балл. При использовании средневзвешенного коэффициента этот показатель будет незначительно влиять на коэффициент близости между пользователями. А еще лучше вообще не учитывать фильмы, большая оценка по которых 5 и ниже. А то поставит один пользователь всем фильмам 1, а второй 2, и близость - 50%. Для использования коэффициента нужно по каждому фильму определить большую из двух оценку, и умножить близость по фильму на эту оценку. Потом результаты по всем фильмам разделить на сумму больших из пар оценок. К=(Бл1*О1+Бл2*О2+...)/Сумма О Бл − близость по фильму О − большая оценка по фильму Пример Изменено пользователем vvtt
Ссылка на комментарий
Поделиться на другие сайты

Как видно из примера, скорректированный коэффициент близости совпадает с меньшими из пар оценками. И суть метода сводится до деления суммы меньших на сумму больших оценок! Никогда б не подумал, что такой простой способ уже учитывает весовой коэффициент. Ну, вот и все. Прикрепляю Excel, может кого-то заинтересует А, здесь нельзя Excel. Ну ладно, думаю и так все понятно Изменено пользователем vvtt
Ссылка на комментарий
Поделиться на другие сайты

Рискну предположить, что команда разработчиков кинопоиска "слегка" знакома с мат. статистикой. Главная же проблема заключается в том, что понимать под словом "близость" двух пользователей сайта. Ну например, в Вашем понимании близость оценок 7 и 8 = 0,88 4 и 3 = 0,75 1 и 2 = 0,50 А с моей точки зрения если люди оценивают нечто примерно одиннаково, то и близость их примерно равна вне зависимости от оценки. Проще говоря, в первом случае оба посчитали что нечто неплохо, а в последнем что хуже некуда, откуда разные коэффициенты? И уж тем более мне не понятно почему Вы решили что [quote name='vvtt']совпадение двух десяток и единиц должно иметь разную важность[/QUOTE] и принялись решать проблему классическим способом. Как видите, всегда найдется человек, которого не будет устраивать работа системы :) Хотя, я не спорю, то что есть не совершенно, но где его взять, совершенство?
Ссылка на комментарий
Поделиться на другие сайты

[quote name='-=Fess=-'] А с моей точки зрения если люди оценивают нечто примерно одиннаково, то и близость их примерно равна вне зависимости от оценки. Проще говоря, в первом случае оба посчитали что нечто неплохо, а в последнем что хуже некуда, откуда разные коэффициенты?[/QUOTE] Полагаю, смысл в том, что система носит рекомендательный характер, т.е. должна прогнозировать какой фильм скорее всего понравится пользователю. И далеко не факт, что людям с высокой близостью по худшим фильмам понравятся одни и те же фильмы.
Ссылка на комментарий
Поделиться на другие сайты

[quote name='-=Fess=-']Рискну предположить, что команда разработчиков кинопоиска "слегка" знакома с мат. статистикой[/QUOTE] Не спорю, просто я случайно обнаружил неполадки в системе подсчета близости [url]http://www.kinopoisk.ru/board/showthread.php?t=8603&page=348[/url] и как не в меру любопытный человек решил найти причину [quote name='-=Fess=-']Ну например, в Вашем понимании близость оценок 7 и 8 = 0,88 4 и 3 = 0,75 1 и 2 = 0,50 [/QUOTE] Это не в моем понимании, дальше я написал, что это недостаток и лучше не учитывать фильмы, большая оценка по которых 5 и ниже. На это есть несколько причин: 1) высокие оценки определяют интересы пользователя, а низкие - антиинтересы. Пользователи могут иметь разные интересы, но одинаково оценивать плохие фильмы. Поэтому совпадение двух десяток и единиц должно иметь разную важность 2) низкие оценки ставятся менее обдумано. Например, для меня разница между 1 и 4 очень незначительная, нелегко определить хуже из плохого. А между 7 и 10 намного больше 3) третья причина - то, что Вы написали: "первом случае оба посчитали что нечто неплохо, а в последнем что хуже некуда, откуда разные коэффициенты" Я не говорю, что нужно именно так менять систему, это просто вариант. Недоработанный сырой вариант Изменено пользователем vvtt
Ссылка на комментарий
Поделиться на другие сайты

[quote name='vvtt']1) высокие оценки определяют интересы пользователя, а низкие - антиинтересы. Пользователи могут иметь разные интересы, но одинаково оценивать плохие фильмы. Поэтому совпадение двух десяток и единиц должно иметь разную важность 2) низкие оценки ставятся менее обдумано. Например, для меня разница между 1 и 4 очень незначительная, нелегко определить хуже из плохого. А между 7 и 10 намного больше 3) третья причина - то, что Вы написали: "первом случае оба посчитали что нечто неплохо, а в последнем что хуже некуда, откуда разные коэффициенты"[/QUOTE] Я склонен согласиться с этими утверждениями, потому что у меня оценки перевалили за 2000, и на протяжении их выставления я замечаю как [B]деградируют[/B] рекомендации. Интуитивно (а так же с помощью прикладного ПО) я ощущаю, что [B]высокие оценки играют бо'льшую роль в рекомендации фильма[/B], так же обеими руками за 2-е утверждение, [B]спектр моих положительных эмоций гораздо шире, чем отрицательных, я часто сомневаюсь между 7 и 8, но почти никогда не заморачивался над 2 или 3[/B]. Однако, я не согласен, что низкие оценки не надо учитывать вообще, я решил проблему тем, что удалил большую половину низких оценок. Задумайтесь, ведь большинство низких оценок - это недосмотренные или промотанные фильмы, часто вы даже сюжета не вспомните из них, только пару сцен, это не повод ставить оценку. [B]Если вы хотите качественных рекомендаций, не гонитесь за количеством оценок[/B] (сам когда-то был грешен, понаоценивал мексиканских сериалов, о которых слышал, когда пешком под стол ходил).
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Dogmat-igwt']Однако, я не согласен, что низкие оценки не надо учитывать вообще, я решил проблему тем, что удалил большую половину низких оценок. [/QUOTE] Я тоже некоторые удаляю. Недавно провел эксперимент- поставил все низкие оценки, подождал день, чтобы список друзей по интересам обновился. Список очень поменялся, а на второе место выскочил пользователь с близостью 71%, удаляю то, что наставил, близость - 51% и он вылетает из списка. Так вот, я считаю, что низкие оценки могут нести или пользу или вред для рекомендаций. Полезные оценки фильмам, которым часть друзей по интересам поставили 6 и выше баллов. В этом случае близость с теми, кто высоко оценивает то, что вы оценили низко, упадет. А если друзья по интересам поставили фильму от 1 до 5, то такая низкая оценка будет вредить рекомендациям. Она повысит близость с теми, кто оценил этот фильм, а те, кто такое даже не смотрит, понизятся в списке друзей по интересам. Что и подтвердил эксперимент. Конечно, если фильм оценили все 300 друзей по интересам, то оценка будет полезной в любом случае. Но такого не бывает. Проблема в том, при какой части высоких оценок друзей по интересам удалять низкую оценку. Ведь если вы поставили 4, то близость упадет с теми, кто оценил и на 7, и на 1. Но хотелось бы просто не заморочивать себе голову и ставить все оценки всем фильмам. Для этого хорошо бы при оценке близости не учитывать те фильмы, по которым высшая из оценок двух пользователей 5 и меньше. Ну, можно снизить планку до 4 и меньше
Ссылка на комментарий
Поделиться на другие сайты

Предлагаю имхо адекватную и простую формулу вычисления "близости интересов": 100-11.11*S где S - это средняя арифметическая разность оценок всех общих фильмов. Примеры: 100-11.11*2.4=73.34% 100-11.11*0=100.00% 100-11.11*9=0.01% Изменено пользователем Zulenium
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Zulenium']Предлагаю имхо адекватную и простую формулу вычисления "близости интересов": 100-11.11*S где S - это средняя арифметическая разность оценок всех общих фильмов. Примеры: 100-11.11*2.4=73.34% 100-11.11*0=100.00% 100-11.11*9=0.01%[/QUOTE] Всеми руками "за". Эта формула намного лучше за мое предложение по подсчету близости [quote name='Leks_x']А почему я не могу посмотреть [b]нормальных[/b] друзей по интересам, а не эту шантропу?[/QUOTE] Если б нормально считалась близость, может и не было бы шантропы
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Zulenium']Предлагаю имхо адекватную и простую формулу вычисления "близости интересов": 100-11.11*S где S - это средняя арифметическая разность оценок всех общих фильмов. Примеры: 100-11.11*2.4=73.34% 100-11.11*0=100.00% 100-11.11*9=0.01%[/QUOTE] Ваша формула не учитывает количество общих фильмов, хотя возможно это не обязательно, если просто вводить начальные условия, но ИМХО, по Пирсону лучше, так как с ростом количества общих фильмов возрастает объективность рекомендаций конкретного пользователя, и я предпочту 75% по 500, чем 80% по 100. Изменено пользователем Dogmat-igwt
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Dogmat-igwt']Ваша формула не учитывает количество общих фильмов, хотя возможно это не обязательно, если просто вводить начальные условия, но ИМХО, по Пирсону лучше, так как с ростом количества общих фильмов возрастает объективность рекомендаций конкретного пользователя, и я предпочту 75% по 500, чем 80% по 100.[/QUOTE] Так ведь по этому Пирсону при увеличении разрыва близость может даже возрастать! Недавно заметил еще одну забавную вещь. Поставил один пользователь фильму 8, близость 52%. Я удалил свою 4-ку, смотрю близость - изменились только сотые. Нормально, да? Что есть разрыв в 4 балла, что нет, то же самое. Так что в объективности рекомендаций по Пирсону я сомневаюсь больше всего. Указанный Вами недостаток (с которым не соглашаюсь), отпадает, если посмотреть на список друзей по интересам. Чем меньше близость, тем больше предпочтение отдается пользователям с большим количеством общих фильмов. Кроме того, существует фильтр друзей по интересам, где каждый пользователь поставит такой порог общих фильмов, какой захочет. По-моему эта формула практически идеальна. Хотя, конечно, не верю, что что-то измениться :sad:
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Dogmat-igwt']Ваша формула не учитывает количество общих фильмов, хотя возможно это не обязательно, если просто вводить начальные условия, но ИМХО, по Пирсону лучше, так как с ростом количества общих фильмов возрастает объективность рекомендаций конкретного пользователя, и я предпочту 75% по 500, чем 80% по 100.[/QUOTE] Можно, конечно, дополнить формулу так, чтобы на результат влияло кол-во общих фильмов, но неизвестно насколько возрастёт объективность в каждом конкретном случае. Сейчас кол-во общих фильмов пишется в скобках рядом с процентом. Это удобно, но почему-то этого нет на странице фильма (где выводится четвёрка друзей по интересам) и в других местах. Пресловутая формула Пирсона не перестаёт меня удивлять: с братом 72 общих фильма, средняя разность оценок 0.88, а близость выдаётся 54%:!: Очевидно же, что должна быть выше 90%. Это ж получатся, что куча реально близких по интересам людей вообще никак не пересекаются в КП и не видят обоюдных рекомендаций и оценок. :sad: upd: Есть вариант - сделать для пользователей опцию выбора формулы. Можно так их и назвать "Сложная" и "Простая". Изменено пользователем Zulenium
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Zulenium']Пресловутая формула Пирсона не перестаёт меня удивлять: с братом 72 общих фильма, средняя разность оценок 0.88, а близость выдаётся 54%:!: Очевидно же, что должна быть выше 90%.[/QUOTE] По формуле Пирсона близость варьирует от -100% до 100% на сколько мне известно (не ручаюсь, могу путать с другой формулой, которую всегда считал формулой Пирсона), поэтому, если это так, то 54% эквиваленты 72% от 0 до 100.
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Dogmat-igwt']По формуле Пирсона близость варьирует от -100% до 100% на сколько мне известно (не ручаюсь, могу путать с другой формулой, которую всегда считал формулой Пирсона), поэтому, если это так, то 54% эквиваленты 72% от 0 до 100.[/QUOTE] Когда-то я спрашивал, по какой формуле рассчитывается прогнозная оценка фильма и формируются персональные рекомендации [URL="http://www.kinopoisk.ru/board/showthread.php?p=1264648#post1264648"]здесь[/URL] Ответом был „Коэфф. Пирсона” Но так как его результатом не может быть оценка, то предположил, что по этому коэффициенту может рассчитываться только близость. Действительно, результат по коэффициенту может изменяться от -1 до 1. А как эту близость определяют, пес его знает [quote name='Dogmat-igwt']поэтому, если это так, то 54% эквиваленты 72% от 0 до 100.[/QUOTE] Небольшое замечание - на сайте не существует близости со знаком "-". Соответственно, 54% и есть 54%, а не 72% Зы: надеюсь, Zulenium не обижается, что я постоянно так нагло вмешиваюсь в обсуждение его предложения :) Изменено пользователем vvtt
Ссылка на комментарий
Поделиться на другие сайты

[quote name='vvtt'] Небольшое замечание - на сайте не существует близости со знаком "-". Соответственно, 54% и есть 54%, а не 72% [/QUOTE] Так не проще ли осознать и смириться с тем, что, например, 50% близость оценок - это очень даже хороший показатель по системе КиноПоиска. Вот и все. Проще простого. Вот, к примеру, есть у меня друзья на КиноПоиске, у которых 5-6 баллов - это вполне такое среднее и смотрибельное кино, тогда как у меня - это однозначно плохой фильм. Мне всего лишь нужно осознать, что их 5 баллов - мои 7-8, после чего я смогу спокойно относиться к их оценкам. Е=mc2, и все такое :)
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Zulenium']upd: Есть вариант - сделать для пользователей опцию выбора формулы. Можно так их и назвать "Сложная" и "Простая".[/QUOTE] И обсчитывать минимум в два раза больше. Лишняя нагрузка.
Ссылка на комментарий
Поделиться на другие сайты

Немного поигрался с оценками(сам архитектор ранее благославлял на такие игры), смотрел как изменяется близость. [quote name='deflo']кстати вы можете менять оценку и тут же проверять как изменилась близость, т.к. там данные считаются на лету.[/QUOTE] Для чистоты эксперимента завел еще одну учетку(ник [url=http://www.kinopoisk.ru/level/79/user/1017274/]RLC[/url]), близость в итоге сравнивал с другой учетной записью(для удобства - своей основной, [url=http://www.kinopoisk.ru/level/79/user/29511/]ustas[/url]). Под "моей" оценкой подразумевал оценку профиля RLC. В первых 4-е перестановках число общих оценок - 30 штук. Различие в 1 оценке на 1 балл, я оценил выше - 97.98%, ниже - 97.55% Различие в 10 оценках на 1 балл, я выше (моя 7, его 6) - 98.20%, ниже (моя 5, его 6) - 86.60% Различие в 1 оценке на 9 баллов, я выше (моя 10, его 1) - 0.86%, ниже (моя 1, его 10) - 0.86% Различие в 2 оценках на 9 баллов, в одном случае моя 10 - его 1, втором: моя 1 - его 10. Итог - [B]37.37%[/B]. Как-то чисто логически не сходится с тестом выше. Далее [U]сократил[/U] количество совпадающих оценок до 10.., как оказалось, зря, близость не захотела рассчитыватся, поэтому стал увеличивать количество совпадающими оценками, и вот что вышло в результате: 22 оценки, 5 совпадают, 5 штук с разницей 9 баллов (мои 1, его 10), 12 штук с разницей 9 баллов (мои 10, его 1), и близость.. [B]99.38%[/B]. [IMG]http://i2.fastpic.ru/big/2010/0304/26/2685ae8bd69051e187e0cfa4e93fbe26.png[/IMG] Методом тыка удалось выяснить - близость начинает рассчитыватся/выводится после 20 оценок. В результате совершенно противоположных оценок, удалось достичь 100% близости. Оказывается, можно и так. [IMG]http://i2.fastpic.ru/big/2010/0304/61/482e7414551172fe590031a2d6a6d461.png[/IMG] Изменено пользователем Ustas.SSR
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Ustas.SSR']Методом тыка удалось выяснить - близость начинает рассчитыватся/выводится после 20 оценок. В результате совершенно противоположных оценок, удалось достичь 100% близости. Оказывается, можно и так.[/QUOTE] Отличная работа!!! :wow:
Ссылка на комментарий
Поделиться на другие сайты

[quote name='vvtt']надеюсь, Zulenium не обижается[/QUOTE]Наоборот, я рад. :) [quote name='ugar']Так не проще ли осознать и смириться с тем, что, например, 50% близость оценок - это очень даже хороший показатель по системе КиноПоиска.[/QUOTE]Понятно, просто речь мы ведём к тому, чтобы в той же четвёрке "друзей по интересам" (на странице фильма) выводились по-настоящему близкие товарищи. Т.е. вопрос не в относительности процента близости, а в его логичности и оправдываемости. [quote name='Ustas.SSR']И обсчитывать минимум в два раза больше.[/QUOTE]Ну уж не настолько больше, тем более с учётом небольшого процента тестеров. Спасибо, кстати, за эксперимент! Теперь может и смысла нет ставить опционально две формулы. :cool: Изменено пользователем Zulenium
Ссылка на комментарий
Поделиться на другие сайты

На другом, очень симпатичном мне сайте имеется способ подсчета с помощью статистической корреляции. Вот так это примерно выглядит: [URL="http://www.fantlab.ru/korelfield29206and23720"]корреляция[/URL] Легко заметить, что формула, суть, аналогична предложенной ранее, только считается от -1 до 1. Остается выяснить, какие там коэффициенты. PS: Ustas-у отдельное спасибо, удивительно, что мне самому это в голову не пришло, сейчас больше внимания уделял расчетной формуле топа. Возможно не в Пирсоне дело, а просто ошибка в алгоритме кинопоиска? Изменено пользователем Dogmat-igwt
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Dogmat-igwt']На другом, очень симпатичном мне сайте имеется способ подсчета с помощью статистической корреляции. Вот так это примерно выглядит: [URL="http://www.fantlab.ru/korelfield29206and23720"]корреляция[/URL] Легко заметить, что формула, суть, аналогична предложенной ранее, только считается от -1 до 1. Остается выяснить, какие там коэффициенты.[/QUOTE] Но зачем так все усложнять? Чем эта корреляция лучше за формулу с 11,11? И еще меня [URL="http://www.statplus.net.ua/ru/help/source/a_corr.htm"]это[/URL] смущает [quote name='Dogmat-igwt']Возможно не в Пирсоне дело, а просто ошибка в алгоритме кинопоиска?[/QUOTE] В том, что меня смущает, написано "Корреляция Пирсона (далее называемая просто корреляцией) предполагает, что две рассматриваемые переменные измерены, по крайней мере, в интервальной шкале. Она определяет степень, с которой значения двух переменных "[B]пропорциональны[/B]" друг другу" В примере Ustas.SSR пропорциональность 100%, а близость должна быть 0% О, здесь еще интересные вещи написаны. "По определению, [B]выбросы[/B] являются нетипичными, резко выделяющимися наблюдениями... Поэтому единичный выброс ... способен существенно изменить наклон прямой и, следовательно, значение корреляции... Некоторые исследователи применяют численные методы удаления выбросов. Например, исключаются значения, которые выходят за границы ±2 стандартных отклонений (и даже ±1.5 стандартных отклонений) вокруг выборочного среднего." Вот это дела! Большой разрыв по оценке может быть интерпретирован как "выброс". Поэтому он не учитывается. Теперь понятно, почему при увеличении разрыва "близость" (или точнее пропорциональность) может возрастать. Изменено пользователем vvtt
Ссылка на комментарий
Поделиться на другие сайты

Можно добавить например такое влияние [B]К[/B]оличества общих фильмов: 100 - 11*S - 100/[B]К[/B] Отрицательный результат приравниваем к нулю. Изменено пользователем Zulenium
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Zulenium']Можно добавить например такое влияние [B]К[/B]оличества общих фильмов: 100 - 11*S - 100/[B]К[/B] Отрицательный результат приравниваем к нулю.[/QUOTE] все проще. Искать по Вашей формуле близость, а затем с помощью формулы расчета [B]топа[/B] учитывать количество общих фильмов. Там и нижний порог, и без всяких минусов, а за мат ожидание по всем близостям брать среднее между выбираемым порогом близости и 100% (хотя тут есть варианты). Выражаюсь не совсем ясно, но могу потом поподробнее с раскладкой, если кому интересно... А Юстас молодец, админы, наверное, тоже в шоке от таких раскладов, потому что молчат. ;) Изменено пользователем Dogmat-igwt
Ссылка на комментарий
Поделиться на другие сайты

[quote name='Dogmat-igwt']админы, наверное, тоже в шоке от таких раскладов, потому что молчат. ;)[/QUOTE] Да я думаю, внедряя такую систему, они знали.. Молчать - обычная, и весьма разумная тактика.
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...