Персональные рекомендации: Алгоритмы, формулы, и т.д... - Форум на КиноПоиске
Форум на КиноПоиске Форум для тех, кто знает, что это такое На главную страницу сайта  

Вернуться   Форум на КиноПоиске > Бонус > КиноПоиск.ru

КиноПоиск.ru Раздел посвящен работе сайта: ваши пожелания, критика, ошибки и т.д. и т.п.

Закрытая тема
 
Опции темы Опции просмотра
Старый 15.02.2010, 13:38   #1
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию Персональные рекомендации: Алгоритмы, формулы, и т.д...

Я уже писал, что система подсчета коэффициента близости работает некорректно.

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

Вот в чем проблема. Именно пропорциональность, а не близость определяет коэффициент Пирсона. И для подсчета близость он не подходит.

Самый простой способ подсчета близости ***8722; подсчитать близость по каждой оценке и вывести средний коэффициент.
Пример
Изображения
 

Последний раз редактировалось vvtt; 15.02.2010 в 14:14.
vvtt вне форума  
Старый 15.02.2010, 13:42   #2
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию

Недостаток такого способа заключается в том, что совпадение двух десяток и единиц должно иметь разную важность.
Решение ***8722; использование средневзвешенного коэффициента, в котором близость по десяткам будет учитываться 10 раз, девяткам ***8722; девять и т. д. Тогда если пользователи, близость которых рассчитывается, поставят фильму по 10 баллов, это будет влиять на близость так же, как по 5 баллов двум или по единице десяти фильмам.

Кроме того, по фильму 7 близость получилась 50%, хотя разрыв всего 1 балл. При использовании средневзвешенного коэффициента этот показатель будет незначительно влиять на коэффициент близости между пользователями. А еще лучше вообще не учитывать фильмы, большая оценка по которых 5 и ниже. А то поставит один пользователь всем фильмам 1, а второй 2, и близость - 50%.

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

К=(Бл1*О1+Бл2*О2+...)/Сумма О

Бл ***8722; близость по фильму
О ***8722; большая оценка по фильму

Пример
Миниатюры
Нажмите на изображение для увеличения
Название: Без_імені.jpg
Просмотров: 531
Размер:	54.4 Кб
ID:	137751  

Последний раз редактировалось vvtt; 15.02.2010 в 14:54.
vvtt вне форума  
Старый 15.02.2010, 13:44   #3
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию

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

Ну, вот и все. Прикрепляю Excel, может кого-то заинтересует

А, здесь нельзя Excel. Ну ладно, думаю и так все понятно

Последний раз редактировалось vvtt; 15.02.2010 в 17:11.
vvtt вне форума  
Старый 10.03.2010, 15:20   #4
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

vvtt, думаю "коэффициенты" можно реализовать через возведение в степень 1,11 каждой разности оценок.
Я не совсем понял про "Кч" и про (10-30%), и поэтому немного заклинило мозк.


Вообще, хорошо бы, конечно, услышать от администрации хоть какой-то намёк на их позицию:
  • менять текущий алгоритм не будем, может только залатаем огрехи
  • возможно поставим опционально новую формулу, в режиме тестирования
  • заменим формулу на вашу, если она будет максимально оптимизирована
  • развлекайтесь с математикой дальше, если вам не лень

Последний раз редактировалось Zulenium; 10.03.2010 в 15:33.
Zulenium вне форума  
Старый 10.03.2010, 20:07   #5
Dogmat-igwt
Свой
 
Аватар для Dogmat-igwt
 
Регистрация: 18.07.2009
Адрес: еще не живу
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Zulenium Посмотреть сообщение
vvttВообще, хорошо бы, конечно, услышать от администрации хоть какой-то намёк на их позицию:
  • менять текущий алгоритм не будем, может только залатаем огрехи
  • возможно поставим опционально новую формулу, в режиме тестирования
  • заменим формулу на вашу, если она будет максимально оптимизирована
  • развлекайтесь с математикой дальше, если вам не лень
вот-вот. Нет стимула работать, так как мне представляется, что админы даже тему нам выделили, чтобы мы их не доставали особо. Интересно знать позицию. Если своих спецов хватает, то я только "за", лишь бы система была налажена.

В общем поясню свое предложение и пока завязываю с тервером на кинопоиске.

У нас есть предложенная формула "близость по 1 фильму" = 100 - 11,11 * "разница оценок". Эта формула если и не удовлетворяет всех алчущих объективности взглядов vvtt, но по крайней мере математически безупречно выдержана. Включать ли в нее поправки социально-психологического характера дело хозяйское. Далее нужно каким-то образом учесть количество общих фильмов (далее ОФ).

Так вот: если найти близости по каждому общему фильму, затем нужно найти их среднее арифметическое (СР).

При подсчете близости имеется два настраиваемых критерия: минимальный порог общих фильмов (мОФ), минимальная близость интересов.

Формула: "близость" = ОФ/(ОФ+мОФ) * СР + мОФ/(ОФ+мОФ) * оБИ, где оБИ - ожидаемая близость интересов = 50% (как в ТОПе),

Таким образом при стремлении ОФ в бесконечность близость асимптотично приближается к СР, а при приближении ОФ к мОФ результирующая близость будет равна среднему между оБИ и СР (Допустим СР=80%, а оБИ = 50%, тогда при количестве общих фильмов (ОФ) = мин. порогу (мОФ) общая близость будет равна среднему между 50 и 80, т. е. 65%), что очень верно.

Для учета минимальной близости интересов ввести фильтр, который бы отсеивал тех, результирующая близость которых ниже заданного порога. Такой принцип, на мой взгляд, учитывает все нюансы кроме соц.-психологических, но это отдельная песня, и я бы ее озвучил позже, при удачном исходе ситуации в целом.
Dogmat-igwt вне форума  
Старый 10.03.2010, 21:59   #6
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Zulenium Посмотреть сообщение
vvtt, думаю "коэффициенты" можно реализовать через возведение в степень 1,11 каждой разности оценок.
А может 1,11 маловато будет. Ведь разница в 1 балл - это почти ничего. У каждого пользователя оценки могут прыгать вверх-вниз на 1 б. Предлагаю хотя бы 1,15, и смещенность будет меньше влиять на близость.

Цитата:
Сообщение от Zulenium Посмотреть сообщение
Я не совсем понял про "Кч" и про (10-30%), и поэтому немного заклинило мозк.
В этой формуле
100 - 11*S - 100/К
близость уменьшается, если количество общих фильмов <100. Но если всех оценок пользователя < 100, то это бессмысленно. Поэтому предлагал привязать число в формуле к количеству оценок каждого пользователя. Кч означает часть оценок, которой, как предполагается, достаточно для получения коэффициента близости с высокой вероятностью. Например, треть оцененных фильмов. После этого числа близость будет расти за счет количества общих фильмов.

В формуле
(100-11,11*S)*(1+(Ко/Кч)/100)
Кч утратила свое первоначальное назначение и служит инструментом для регулирования влияния количества общих фильмов на коэффициент близости.
Кч=Квсе_оценки_пользователя*%
Чем <%, тем больше количество общих фильмов увеличивает близость

Цитата:
Сообщение от Dogmat-igwt Посмотреть сообщение
Формула: "близость" = ОФ/(ОФ+мОФ) * СР + мОФ/(ОФ+мОФ) * оБИ, где оБИ - ожидаемая близость интересов = 50% (как в ТОПе)
Интересное предложение, но не все так просто.
При мОФ=300, оБИ=50%, ОФ=20 и
- противоположных оценках близость 46,88%
- одинаковых оценках близость 53,13%

При СР=0-49,9% близость почему-то уменьшается при уменьшении ОФ

А при СР=50% ОФ вообще не влияет на близость

Последний раз редактировалось vvtt; 10.03.2010 в 22:09.
vvtt вне форума  
Старый 11.03.2010, 15:14   #7
Dogmat-igwt
Свой
 
Аватар для Dogmat-igwt
 
Регистрация: 18.07.2009
Адрес: еще не живу
Сообщений: 92
По умолчанию

Цитата:
Сообщение от vvtt Посмотреть сообщение
Интересное предложение, но не все так просто.
При мОФ=300, оБИ=50%, ОФ=20 и
- противоположных оценках близость 46,88%
- одинаковых оценках близость 53,13%

При СР=0-49,9% близость почему-то уменьшается при уменьшении ОФ

А при СР=50% ОФ вообще не влияет на близость
мОФ - это минимальное количество общих фильмов, которое устанавливается пользователем по желанию от 20 и выше. То есть мОФ не может быть больше ОФ, точно так, как это происходит сейчас по старой формуле. Поэтому Ваш пример не верен.
Dogmat-igwt вне форума  
Старый 11.03.2010, 18:20   #8
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию

Цитата:
Сообщение от John Doe Посмотреть сообщение
Мы также как и вы заинтересованы в улучшении качества персональных рекомендаций.

Все предложения будут рассматриваться...
Спасибо за стимул продолжать исследования

Цитата:
Сообщение от Dogmat-igwt Посмотреть сообщение
мОФ - это минимальное количество общих фильмов, которое устанавливается пользователем по желанию от 20 и выше. То есть мОФ не может быть больше ОФ, точно так, как это происходит сейчас по старой формуле. Поэтому Ваш пример не верен.
Сомневаюсь, что администрация пойдет на то, чтобы пользователь сам выбирал мОФ. Намного проще привязать мОФ к количеству оценок пользователя.

А вот это
Цитата:
Сообщение от vvtt Посмотреть сообщение
При СР=0-49,9% близость почему-то уменьшается при уменьшении ОФ
А при СР=50% ОФ вообще не влияет на близость
остается актуальным при любом значении мОФ если оБИ>0
vvtt вне форума  
Старый 11.03.2010, 18:24   #9
Putnik777
Only human
 
Аватар для Putnik777
 
Регистрация: 05.07.2005
Адрес: Мритью Лока
Сообщений: 9,512
По умолчанию

Цитата:
Сообщение от vvtt Посмотреть сообщение
Сомневаюсь, что администрация пойдет на то, чтобы пользователь сам выбирал мОФ.
А сейчас разве не так?
Putnik777 вне форума  
Старый 11.03.2010, 18:45   #10
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Putnik777 Посмотреть сообщение
А сейчас разве не так?
Немного не так. Пользователь может фильтровать друзей по интересам по количеству общих фильмов, а на коэффициенты близости это никак не влияет
vvtt вне форума  
Старый 12.03.2010, 09:08   #11
Dogmat-igwt
Свой
 
Аватар для Dogmat-igwt
 
Регистрация: 18.07.2009
Адрес: еще не живу
Сообщений: 92
По умолчанию

Цитата:
Сообщение от vvtt Посмотреть сообщение
Немного не так. Пользователь может фильтровать друзей по интересам по количеству общих фильмов, а на коэффициенты близости это никак не влияет
молодец! Зришь в корень. Я об этом не подумал. Ну думаю все решается путем возможности менять мОФ 1 раз в день, хотя многих это будет бесить. А может быть нашу формулу сервак таки потянет на лету.

В конце концов, я был бы даже за то, чтобы мОФ назначался автоматически в виде, например, 20% от общего количества оцененных фильмов пользователя.

Последний раз редактировалось Dogmat-igwt; 12.03.2010 в 09:18.
Dogmat-igwt вне форума  
Старый 11.03.2010, 19:10   #12
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

Поясните пожалуйста, что имел в виду Архитектор deflo?
АBS не используется, значит допустим пара противоположных оценок: ((9-5)+(5-9))/2=0 ???
Дык это ж грубейшая ошибка, которая и приводит к 100% близости при зеркальных или противоположных оценках!
Отсюда и неадекватность в целом, в реальных условиях!

Далее, если второй механизм упрощен (и действует на лету), то почему ж процент близости, который он выдаёт совпадает с тем, что отображается в списке друзей по интересам? Т.е. допустим в списке вижу человека с 72.46%, кликаю на этот процент и выдаётся страничка близости с таким же процентом. В чём тогда разница? Упрощённый алгоритм выдаёт такой же процент?

Последний раз редактировалось Zulenium; 11.03.2010 в 19:24.
Zulenium вне форума  
Старый 12.03.2010, 09:14   #13
Dogmat-igwt
Свой
 
Аватар для Dogmat-igwt
 
Регистрация: 18.07.2009
Адрес: еще не живу
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Zulenium Посмотреть сообщение
Поясните пожалуйста, что имел в виду Архитектор deflo?
АBS не используется, значит допустим пара противоположных оценок: ((9-5)+(5-9))/2=0 ???
Дык это ж грубейшая ошибка, которая и приводит к 100% близости при зеркальных или противоположных оценках!
Отсюда и неадекватность в целом, в реальных условиях!

Далее, если второй механизм упрощен (и действует на лету), то почему ж процент близости, который он выдаёт совпадает с тем, что отображается в списке друзей по интересам? Т.е. допустим в списке вижу человека с 72.46%, кликаю на этот процент и выдаётся страничка близости с таким же процентом. В чём тогда разница? Упрощённый алгоритм выдаёт такой же процент?
насколько я понял, в механизме обошли привязку к модулю, и знаете, если я не страдаю синдромом плацебо, то друзья у меня стали реально поадекватнее. Раньше было довольно много с максимумом на 9 или 10 и с большим процентом 1, а теперь все как на подбор. Правда рекомендации во многом не изменились, мне по прежнему иногда советуют Голова-Ластика ненавистного мне Д. Линча, но это ерунда.
Dogmat-igwt вне форума  
Старый 12.03.2010, 13:25   #14
vvtt
Свой
 
Аватар для vvtt
 
Регистрация: 03.09.2009
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Dogmat-igwt Посмотреть сообщение
насколько я понял, в механизме обошли привязку к модулю, и знаете, если я не страдаю синдромом плацебо, то друзья у меня стали реально поадекватнее. Раньше было довольно много с максимумом на 9 или 10 и с большим процентом 1, а теперь все как на подбор. Правда рекомендации во многом не изменились, мне по прежнему иногда советуют Голова-Ластика ненавистного мне Д. Линча, но это ерунда.
У меня тоже появляются новые друзья по интересам, но с небольшим количеством общих фильмов. То есть, КП развивается, ставится больше оценок, некоторые пользователи с высокой близостью (извиняюсь, пропорциональностью ) достигают определенного количества общих фильмов и попадают в друзья по интересам.

Кажется, Ваша формула работает лучше, если оБИ=0, то есть эта часть
мОФ/(ОФ+мОФ) * оБИ
отпадает, и остается
ОФ/(ОФ+мОФ) * СР
Но если значение мОФ большое, то коэффициент очень занижается.
А при мОФ=1%*К_оцененных очень даже неплохо

И еще обращаюсь к тем, кто читает эту тему - присоединяйтесь к обсуждению, чем больше голов, тем лучше
vvtt вне форума  
Старый 12.03.2010, 14:18   #15
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Dogmat-igwt Посмотреть сообщение
если я не страдаю синдромом плацебо, то друзья у меня стали реально поадекватнее
Это плацебо. У меня ничего не изменилось ни в списке друзей, ни в страницах с подробным сравнением оценок.
Zulenium вне форума  
Старый 12.03.2010, 14:44   #16
Ustas.SSR
World Community Grid
 
Аватар для Ustas.SSR
 
Регистрация: 08.09.2007
Сообщений: 1,728
По умолчанию

John Doe

Исчез блок близости между учетками, при тех же оценках.

С учетки RLC добавил 10 совпадающих оценок (3-йки), число общих совпадающих составило 30. Блока по прежнему нет.
Ustas.SSR вне форума  
Старый 12.03.2010, 14:47   #17
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Ustas.SSR Посмотреть сообщение
Исчез блок близости между учетками.
Да, индикатор исчезает когда резко меняешь оценку. Когда возвращаешь оценку, тогда появляется.
Zulenium вне форума  
Старый 12.03.2010, 14:53   #18
Ustas.SSR
World Community Grid
 
Аватар для Ustas.SSR
 
Регистрация: 08.09.2007
Сообщений: 1,728
По умолчанию

Цитата:
Сообщение от Zulenium Посмотреть сообщение
Да, индикатор исчезает когда резко меняешь оценку. Когда возвращаешь оценку, тогда появляется.
"когда резко меняешь оценку" - имеешь ввиду, когда разность между оценками равна 9 ?
Ustas.SSR вне форума  
Старый 12.03.2010, 15:03   #19
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

А, вроде понял. Исчезает когда близость меньше 0%.
Zulenium вне форума  
Старый 12.03.2010, 15:10   #20
Ustas.SSR
World Community Grid
 
Аватар для Ustas.SSR
 
Регистрация: 08.09.2007
Сообщений: 1,728
По умолчанию

Цитата:
Сообщение от Zulenium Посмотреть сообщение
А, вроде понял. Исчезает когда близость меньше 0%.
Он исчезает как раз тогда, когда хотя бы по 3-ем(как минимум, мб зависит от количества общих оценок) фильмам выставлены противоположные оценки. Это при общих 20-и - 22-ух совпадающих.

Скорей всего так оно и есть, можно интерпретировать как 0% близость.
Ustas.SSR вне форума  
Старый 12.03.2010, 15:20   #21
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

John Doe, да, теперь "зеркально" выставленные оценки не увеличивают близость, как было раньше. Спасибо, будем дальше тестировать.

Ustas.SSR, сейчас перепроверил - индикатор исчезает именно из-за отрицательной близости (не важно как она была достигнута).
Zulenium вне форума  
Старый 12.03.2010, 23:40   #22
deflo
Архитектор матрицы
 
Аватар для deflo
 
Регистрация: 28.03.2007
Сообщений: 472
По умолчанию

Цитата:
Сообщение от Zulenium Посмотреть сообщение
John Doe, да, теперь "зеркально" выставленные оценки не увеличивают близость, как было раньше. Спасибо, будем дальше тестировать.

Ustas.SSR, сейчас перепроверил - индикатор исчезает именно из-за отрицательной близости (не важно как она была достигнута).
сейчас 0 выводит?
deflo вне форума  
Старый 13.03.2010, 09:53   #23
Zulenium
Новичок
 
Аватар для Zulenium
 
Регистрация: 01.03.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от deflo Посмотреть сообщение
сейчас 0 выводит?
Нет, исчезает.
Zulenium вне форума  
Старый 13.03.2010, 12:50   #24
Ustas.SSR
World Community Grid
 
Аватар для Ustas.SSR
 
Регистрация: 08.09.2007
Сообщений: 1,728
По умолчанию

Цитата:
Сообщение от deflo Посмотреть сообщение
сейчас 0 выводит?
Исчезает..
Ustas.SSR вне форума  
Старый 12.03.2010, 19:11   #25
John Doe
Дружище КиноПоиска
 
Аватар для John Doe
 
Регистрация: 18.03.2004
Адрес: Москва - Кассиопея
Сообщений: 3,686
По умолчанию

Цитата:
Сообщение от Dogmat-igwt Посмотреть сообщение
Хочу поинтересоваться, если теперь все будет работать правильно, и больше изменений не потребуется, хотелось бы знать, что было сделано: Формулу/принцип заменили или исправили недочеты в старой формуле (то есть доработали ф-лу Пирсона)?
Deflo написал то, что он сделал...

Насчет исчезающего блока - будем его выводить всегда с 0 близостью.
John Doe вне форума  
Закрытая тема


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 05:54.


© КиноПоиск.ru - Найди своё кино!