Поиск по тегу «рейтинг» — ПИПМАЙ: Лучшее со всей сети
Акцентный цвет
Фон
Игровой блок на главной
Праздничное оформление
Для всех устройств

Поиск по тегу «рейтинг»

от
до

О контенте

Горячо приветствую вас, мои изумрудные! Небось хотите немного теоретической базы? Нет? Так её и не будет!
Ведь этот пост о куда более заумной хуете глобальных вещах.

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

Для начала нужно вот какую вещь определить: кто есть юзер для пипмай? А дело в том, что юзер для пипмай - он буквально в двух разных ипостасях выступает. Потому что с одной стороны он потребитель контента, а с другой, его создатель. И причём разный юзер в разной степени, даже крайности имеются: есть такие, которые только посты заливают, а есть и такие, которые ридонли вообще.

Я даже картиночку запилил, для пущей визуализации:

Чего хочет юзер как создатель контента? Хочет, чтобы его контент был востребован. Это вообще просто.

Чего хочет юзер как потребитель контента? Хочет, чтобы контент был ему интересен. 

Логично предположить, что чем лучше ресурс удовлетворяет оба этих желания, тем более востребован он будет.

То есть задача сделать так, чтобы юзер в ленте видел как можно больше того, что хочет видеть, и как можно меньше того, что он не хочет видеть. Это же в свою очередь обеспечивает и доставку контента к тому, кем он востребован. 

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

Итак, каким образом юзер сам иль не сам может идти к достижению своей цели, то есть к тому, чтобы видеть только интересный ему контент? Иными словами, как должна осуществляться фильтрация контента?

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

-----------------------------------------------------
Итак, стратегия первая: коллективная. Фильтрация контента обеспечивается коллективно.

Юзер смотрит контент и оценивает его плюсами или минусами, влияющими на рейтинг создателя этого контента. Если создатель контента в итоге получает больше минусов, чем плюсов от других юзеров, он отправляется в баню. Таким образом наиболее плохой контент, оцениваемый коллективно, устраняется из ленты, даже вместе с его создателем, если он не успел поменять то, что выкладывает, на что-то более одобряемое коллективно. Не успел подстроиться под местный контингент - нахуй пошёл.

Вот это та хуйня, что сейчас есть, если кто не понял. Реализовать такую стратегию позволяет этот самый механизм с плюсами, минусами и рейтингом.

-----------------------------------------------------
Стратегия вторая: индивидуальная. Фильтрация контента обеспечивается индивидуально.

Юзер смотрит контент и подписывается на тот, что ему нравится, а тот, который ему не нравится, закидывает в игнор. Таким образом формируя себе ленту, посты в которой наиболее интересны лично ему.

Ну вот эта хуйня с чёрным списком и подписками и есть один из механизмов, обеспечивающий возможность применения этой стратегии.

-----------------------------------------------------

Чтобы потом не попутаться насчёт стратегий фильтрации контента:

Стратегия: коллективная
Механизм: оценки-рейтинг

Стратегия: индивидуальная
Механизм: игнор-подписка

Вообще, при том же количестве стратегий фильтрации контента, механизмов обеспечивающих их осуществление может быть куда больше, если что. Всякие фичи вроде кармы/репутации (механизм коллективной стратегии) или "умной" ленты (механизм индивидуальной стратегии), например. Но в рамках пипмая имеем один с половиной механизм пока что.

-----------------------------------------------------

Вроде разобрались с этим, но на всякий случай промежуточно резюмирую: в рамках UGC (User Generated Content) ресурсов, в частности пипмая, есть базовая необходимость фильтровать отображаемый юзерам контент. Делать это можно в рамках минимум двух стратегий: коллективной и индивидуальной. Коллективная стратегия - когда решение о жизнеспособности контента принимается в той или иной мере всеми пользователями ресурса и распространяется так же на всех пользователей. Индивидуальная стратегия - когда решение об отображении контента каждый юзер принимает лично и только для себя. Есть несколько видов механизмаов, обеспечивающих работу как одной, так и другой стратегии.

-----------------------------------------------------

Теперь о проблеме: попытка осуществлять сразу две стратегии фильтрации контента в рамках одного ресурса неизбежно приведёт к полной хуйне с этой самой фильтрацией контента.

Это всего лишь предположение пока что. Но в пользу этого предположения кое-что да говорит. Например то, что механизм оценки-рейтинга и механизм игнора-подписки вообще друг с другом нихуя не ладят. Получаем несколько вопросов:

- Зачем механизм оценок, если можно просто кидать в игнор неинтересный контент, а на интересный подписываться?

- Зачем подписываться и кидать что-то в игнор, если есть механизм оценок, подразумевающий постановку негативных оценок неинтересному контенту и позитивных - интересному?

А в руках у юзера есть оба механизма, если что! И никто не обязывает пользоваться только одним из них.

Чисто гипотетически, если юзеры будут применять только механизм подписки-игнора, то механизм оценки-рейтинга вообще не нужен - популярность автора определяется количеством его подписчиков и тех, у кого он в игноре. А если юзеры будут применять только механизм оценки-рейтинга, то подписка-игнор не нужна, поскольку подписчикам будет всё равно отображаться тот контент, на который они подписаны, даже если он заминусован, а игнорящим не будет отображаться даже если заплюсован до небес.

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

А если это так, то есть очень немалая вероятность того, что предположение о том, что попытка осуществления коллективной и индивидуальной стратегий фильтрации контента одновременно, ни к чему хорошему не приведёт.

Не в попытке ли вывезти весь этот конфликт стратегий отменили минусы на пикабу? Не по этой ли причине лайки и дизлайки на ютубе стали чисто декоративной хуйнёй? 

И если так, то что делать?

Очевидно, нужно придерживаться какой-то одной стратегии, и реализовывать только механизмы её осуществления.

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

-----------------------------------------------------
На большом количестве юзеров коллективная стратегия начинает сильно сдавать. Лента становится сильно заполненной контентом низкого качества, чтобы как-то этого избежать, её приходится разделять на всякое "свежее", "горячее", "лучшее" и так далее. А решающим коллективом становится только относительно небольшая часть от всех юзеров, так называемые "рыцари свежего". Дальше-больше: оказывается, что народу в широком смысле нахуй не нужно никакое творчество и уникальность - нужны только годные мемасики. И коллективная стратегия фильтрации контента к этому ведёт как ручей к реке. И вот уже когда-то продуцирующий уникальный авторский контент ресурс представляет из себя рядовую срань преисполненную баянами и шуточками, а также баянистыми шуточками.

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

-----------------------------------------------------

То есть, осознанно или нет, в процессе своего развития UGC ресурс вынужден на определённом этапе переходить от коллективной стратегии оценки контента к индивидуальной. И по сути так на практике и происходит, если присмотреться внимательно к другим ресурсам. Тенденция одна: система оценок, так хорошо себя показавшая, идёт по пизде.

Тут мне сейчас скажут: "это что, бля, система рейтинга на пипмай в каком бы-то ни было виде со всеми плюсами и минусами будет застрелена её же разработчиками?" - Да. Хотят они того или нет, если ресурс продолжит развиваться, то это придётся сделать очевидным или неочевидным способом.

Однако, думаю, если подходить к делу перехода от одной стратегии к другой с должным пониманием и умом, можно добиться куда более эффективного развития, не спотыкаясь о те камни, на которых ломают ноги другие ресурсы, и не пытаясь продлить жизнь отслужившим своё механизмам, понапрасну растрачивая силы. Качественный переход, осуществлённый быстро и осознанно, не смотря на краткосрочные негативные последствия, в итоге будет лучше долгосрочной стагнации. Иными словами: грамотно подготовив почву убить механизм оценки-рейтинга на пипмай безжалостно и одним махом в будущем будет куда лучше, чем пытаться спасать его всеми силами, и позволяя ему тем самым продолжать отравлять ресурс. Но это в будущем, когда/если народу станет больше хотя бы 10к. А пока этот механизм весьма полезен и его нужно совершенствовать, о чём уже было в одном из предыдущих постов.

В общем, надеюсь, мысль свою я донёс в надлежащем виде.

На этом, пока, пока, ненаглядные мои.


Раскрыть

О рейтинге постов

Здрасте здрасте, мои ненаглядные! Угадайте, что у меня есть для вас? Да это же ваша любимая теоретическая база! *Пипчанские яшперицы агрессивно шипят* Но-но! Полегче! Это скучно. Но это и важно.

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

Итак, для начала надо определиться, какие параметры можно получить с опубликованного поста в процессе его существования. Я уже постарался, так что вот списочек:

Pg - PositiveGrades, количество плюсов

Ng - NegativeGrades, количество минусов

Us - UsersSeen, количество пользователей, видевших пост в ленте

- ViewsComments, количество захождений в комментарии поста

Uvс - UsersViewedComments, количество пользователей, заходивших в комментарии поста

С - Comments, количество комментариев

Uc - UsersCommented, количество пользователей, оставивших комментарии 

Напоминаю, что это список того, что можно получить, а не того, что получается. На данный момент скорее всего есть только и С; даже количество плюсов и минусов сохраняется вряд ли, а только суммарное значение рейтинга.

Отдельно стоит заметить, что даже и C - ужасно непоказательные параметры. считается от количества заходов в комментарии, даже если это делает буквально один и тот же пользователь. Можете сами убедиться в этом, прожав "обновить страницу" несколько раз, когда вы зашли в комментарии к посту - количество просмотров будет повышаться на 1 с каждым обновлением страницы. Этот параметр отображается под пиктограммой в виде мишени возле поста.

С - по сути тоже не очень полезен, поскольку это количество комментариев как таковых, а не количество пользователей, участвующих в обсуждении поста. 10 комментариев от 10-и пользователей - это одно, а 10 комментариев от 2-х пользователей, закусившихся на каком-то вопросе и посылающих друг дружку куда подальше - это другое.

Теперь представим, что все означенные параметры из списка собираются. Какую информацию можно было бы получить на их основе?

Для начала самое очевидное:

R = Pg - Ng

где:

R - Rating, значение рейтинга поста

Pg - PositiveGrades, количество плюсов

Ng - NegativeGrades, количество минусов

И да, R - это буквально тот самый рейтинг поста, который есть сейчас. Его значение показательно: отражает, насколько сильно вверх или вниз тянет этот пост рейтинг пользователя, его опубликовавшего.

 

Далее можно рассчитать то, насколько пост не оставляет равнодушными пользователей:

W = (Pg + Ng) / Us

где:

W - Warmth, неравнодушие пользователей

Pg - PositiveGrades, количество плюсов

Ng - NegativeGrades, количество минусов

Us - UsersSeen, количество пользователей, видевших пост в ленте

W буквально отражает, какая часть от общего числа пользователей, видевших пост, поставила ему оценку. Диапазон значений от 0 до 1, где 0 - никто не поставил оценку, 1 - все, кто видел пост, оценили его.

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

 

Ещё один любопытный показатель: насколько пост вызывает желание зайти что-то обсудить или посмотреть, что там думают на его счёт. Разумеется, он может быть объективным только если количество комментариев C не будет отображаться, как это делается сейчас.

A = Uvc / Us

где:

A - Attraction, насколько пост завлекает в свои комментарии

Uvс - UsersViewedComments, количество пользователей, заходивших в комментарии поста

Us - UsersSeen, количество пользователей, видевших пост в ленте

0 >= A >= 1; Репрезентативность: Us. A отражает какая часть пользователей из тех, кто видел пост, заинтересовалась его обсуждением, зайдя в комментарии.

 

И самое, пожалуй, интересное - обсуждаемость поста:

По сути этот параметр находится в прямой зависимости от количества людей, оставивших комментарии, и количества самих комментариев. Можно просто получить произведение для C и Uc.

Например если в комментариях отписалось 8 человек, а всего комментариев 48, то обсуждаемость = 8 * 48 = 384, а если пришёл 9-й и написал ещё комментарий, то уже 9 * 49 = 441. В таких числах сложно ориентироваться - они достаточно быстро растут и очень сложны для анализа.

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

D = ln(C) * ln(Uc)

где:

D - Discussion, уровень обсуждаемости

С - Comments, количество комментариев

Uc - UsersCommented, количество пользователей, оставивших комментарии

Что отдельно приятно в этой формуле: если 1 человек оставил под постом сколько угодно комментариев, то обсуждаемость будет равна 0, потому что ln(1) = 0. То есть логика такова, что если нет хотя бы двух человек, оставивших комментарии, то ничего не обсуждается.

Конечно, можно было бы разработать и более серьёзный способ расчёта обсуждаемости, учитывающий ветвистость комментариев и прочие вещи. Но в целом даже предоставленная формула уже даёт вполне показательное значение.

На примерах:

Под постом 25 комментариев от 3-х юзеров. D = ln(25) * ln(3) ~  3,54

Тут присоединяется ещё один, написав один комментарий. D = ln(25 + 1) * ln(3 + 1) ~ 4.52 (рост обсуждаемости почти в единицу)

И ещё один: D = ln(26 + 1) * ln(4 + 1) ~ 5.30 (рост уже заметно меньше, чем на 1)

Но вот если никто новый не приходит, то вот на 5-х +10 комментариев и: D = ln(27 + 10) * ln(5) ~ 5.81 (рост не такой значительный: +0.51 за прибавку в 10 комментариев)

Пишут ещё +10 комментариев и: D = ln(37 + 10) * ln(5) ~ 6.19 (+0.38)

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

 

Ну и как обычно в финале ответ на вопрос: "нахрена, а главное зачем?"

Да на самом деле за тем же, зачем и всегда: для работы всяких автоматизированных систем ресурса. Много чего можно придумать. Статистику опять-таки для анализа собирать, по пользователям или по тегам, например. Как привлекают посты с тегом "политика" или насколько обсуждаемы с тегом "NSFW"...

В общем, теоретическая база на то и база, что не ней уже можно какую-то теорию базировать, что от чего зависит, выявлять. Ведь чтобы когда-то выяснить, что F = m * a неплохо сначала понимать что за m, a и F такие.

А на этом пока всё, граждане пипчане. До новых встреч!


Раскрыть

О показательности рейтинга пользователя

Возрадуйтесь же, мои ненаглядные пипчанские яшперицы! Ибо вот он, очередной пост - пухленький, текстовый, насыщенный самой желанной, самой нежной и мягонькой теоретической базой! *отборная матерщина в зале* - Ой да ладно! Я надеялся, что вам хоть чуток нравится...

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

И знаете что? И об этом многие догадываются: если разделить рейтинг на такой, который будет только за посты и другой - за комментарии, то из вообще никаким хреном не показательного параметра, можно получить только два не сильно более показательных параметра. Что несколько лучше, несомненно, но не то, чтобы очень. !Внезапно!

Да, граждане пипчане, одним пинком систему рейтинга не починить.

Вот вам пример: за свои посты юзер1 имеет -300 рейтинга, и юзер2 тоже имеет -300 рейтинга. Разница только в том, что юзер1 получил 50 плюсов и 350 минусов, а юзер2 получил 10,000 плюсов и 10,300 минусов. Посты юзера1, получается, минусило 7 из 8-и человек, поставивших оценку, а вот у юзера2 соотношение очень близко к 50/50, а колебание рейтинга в +/-300 пунктов по сути вообще погрешность.

И если юзер1 скорее всего что-то такое прям неодобряемое публикует, то юзер2 просто затрагивает в своих постах очень неоднозначные темы (что по факту куда полезнее для развития ресурса, чем однозначные, но об этом в последующих выпусках).

А рейтинг у обоих одинаковый, точнее, одинаково подходящий для системы автобанинга, попрошу заметить.

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

У такого подхода есть существенные изъяны:

1) Значение рейтинга не ограничено в верхнем пределе - если пользователь получает в среднем чуть больше плюсов, чем минусов, то его рейтинг будет постоянно расти, забираясь в абсолютно бессмысленные дебри вроде тысяч, десятков тысяч, и даже миллионов.

2) Нет контроля за системой автоматического бана - по сути, любой пользователь, получающий в среднем больше минусов, чем плюсов, рано или поздно откатится в значении отрицательного рейтинга до уровня срабатывания бана на автомате. Каким-то образом регулировать допустимые на ресурсе значения одобряемости или неодобряемости пользователя, просто нет возможности. Потому что рейтинг непоказателен.

Я уже предвижу кокоментарии из разряда: "на пикабу работало!". Граждане пипчане, пикабу стал популярен в первую очередь по той простой причине, что у него вообще не было конкурентов в той нише, которую он занял - там можно было реализовывать всякое непродуманное говно - и оно допускалось, потому что ничего альтернативного не было вообще. Сейчас другая обстановочка.

Давайте же попробуем вывести формулу мало-мальски показательного рейтинга. Самое простое, что можно сделать, это определить среднее арифметическое:

R = (P-N)/Gt

Где:

R - Rating, рейтинг

P - Positives, количество позитивных оценок

N - Negatives, количество негативных оценок

Gt - GradesTotal, общее количество оценок

Вроде бы отличный вариант получается. Значение R всегда будет лежать в пределах от -1 до 1. Умножить на 100% или лучше на 1000 промилле и вот он - прекрасный рейтинг, ограниченный сверху и снизу.

Например: юзер1 за посты имеет 1000 плюсов и 750 минусов. Тогда его рейтинг по постам:

P = 1000 - столько плюсов получил

N = 750 - столько минусов получил

Gt = 1750 - столько всего оценок

R = (P-N)/Gt = (1000-750)/1750 = 250/1750 = 0.143

Домножаем на 1000 и получаем красивое значение в 143 пункта рейтинга.

Но и у такого подхода к учёту рейтинга есть свои проблемы в виде слабой репрезентативности на малых количествах оценок, и накапливаемой "устойчивости".

Проблема с репрезентативностью есть чисто технический вопрос, решаемый большим числом способов.

А вот накапливаемая "устойчивость" - куда хуже и деструктивнее, и является изъяном самой такой системы рейтинга. Впрочем, она существует и у той системы, что реализована сейчас.

О чём вообще речь идёт, на примере:

Юзер1 имеет 10 плюсов и 5 минусов, юзер2 имеет 1000 плюсов и 500 минусов. Их рейтинг по системе со средним арифметическим будет одинаковым: 333.

Но вот и юзеру1 ставят минус, и юзеру2 ставят минус. Тогда рейтинг юзера1 становится (10-6)/16*1000 ~ 250 (-83), а у юзера2 получается: (1000-501)/1501*1000 ~ 332 (-1). Разница по воздействию весьма разительная: юзер1 за 1 поставленный ему минус потерял целых 83 пункта рейтинга, а юзер2 всего 1 пункт.

Проблема в том, что чем больше у юзера за время его пребывания на ресурсе накоплено оценок, тем меньшее влияние на его рейтинг могут оказать новые. Накапливается своеобразная "устойчивость". То есть рейтинг давних пользователей ресурса, накопивших десятки тысяч оценок, будет стоять как лом в говне, не испытывая никаких шевелений даже на единицу от своего значения на протяжении очень долгого времени. Люди могут утратить мотивацию делать вообще хоть что-то.

Как это исправляется? Довольно просто: берутся не все оценки пользователя, а какое-то количество последних, например 1000, то есть сколько бы юзер ни набрал оценок, считается только на основе последних 1000. В этом случае, все юзеры, имеющие больше 1000-и оценок, оказываются в равных условиях относительно колебания своего рейтинга.

Разумеется, чтобы не хранить гору больших значений, можно воспользоваться динамическим вычислением. На примере кода C#:

float _rating;

int _total;

int CalcRating(int grade)
{
     _total ++;

     if(_total > 1000)
          _total = 1000;

     float neoRating = (grade - _rating)/_total + _rating;

     _rating = neoRating;

     return (int)Math.Round(neoRating*1000);
}

И да, я знаю, что это отвратительно неоптимизированный хардкод. Но тут и без того хрен кто что-то понимает, а если я накручу сюда ещё делегат с переключением, чтобы не мудохать постоянную проверку, да горсточку статических переменных, то читаемость этого добра упадёт до уровня "лишь самый посвящённый отдуплит, как это работает".

И да, такой способ вычисления становится немного неточным, после достижения потолка для значения _total, но эта неточность является несущественной, да к тому же общей для всех вычислений рейтинга.

В общем, там во главе угла только формула, которая позволяет получить среднее арифметическое от _total количества оценок. Из хранимых данных только рейтинг пользователя в сыром виде и количество оценок.

Как работает: вот у нас есть рейтинг пользователя 250 (_rating == 0.250), а оценок у него уже 25 (_total == 25). Ему ставят плюс (grade == 1). Тогда:

_total ++; // 25+1=26

neoRating = (1 - 0.250)/26 + 0.250

// neoRating == 0,27884615384615384615384615384615

В качестве результата, если я ничего не напутал (а я это могу), выдаст новый рейтинг, равный 279

Всё веселье в том, что как только количество оценок пользователя становится больше 1000, то оценки начинают влиять на его рейтинг всегда с одинаковой силой, не убывающей со временем.

И чем же хорош рейтинг, рассчитанный таким способом?

1) Не уходит в заоблачные значения, поскольку ограничен диапазоном от -1000 до +1000 (ну или сколько угодно, диапазон можно сделать буквально любым)

2) Не увеличивает собственную "устойчивость" со временем. Да, рейтинг бывалых юзеров будет меняться слабее, чем у новорегов, но не слабее определённого уровня, когда количество полученных оценок превысит 1000 (как и с диапазоном, тут можно сделать другое число). По сути начав пороть неодобряемую херь, юзер с 5-летним стажем сольёт свой рейтинг так же ловко и быстро как юзер-первогодка, потому что миллионы оценок, набранных за долгий строк пребывания на ресурсе, не делают рейтинг старожила сверхустойчивым.

3) Намного более показателен, как параметр, отражающий общую популярность контента, публикуемого пользователем (особенно если предварительно разделён на рейтинг от постов и рейтинг от комментариев). Рейтинг по постам в 750, высчитанный по данной системе, буквально значит, что юзер получает в среднем 4 плюса на 1 минус за свои посты, то есть весьма одобряем сообществом.

4) Позволяет более гибко настраивать систему автоматического бана пользователей. Например, можно настроить бан за рейтинг < -500, то есть когда в среднем на один плюс юзер получает 3 минуса на протяжении определённого времени.

Довольно очевидная проблема заключается в том, что рейтинг, рассчитываемый таким способом, первое время очень нерепрезентативен. Например, если юзер имеет всего 3 оценки: 1 плюс и 2 минуса, то его рейтинг будет -333, что вроде выглядит как жуткая жуть, однако на деле всего лишь результат огромной погрешности расчёта из-за недостаточно большого объёма данных. Это же в свою очередь производит и смежный эффект, в виде серьёзных скачков значения рейтинга на ранних этапах деятельности пользователя. Тот еже рейтинг в -333 за счёт 1-го плюса и 2-х минусов, станет 0 при получении 1-го плюса, то есть наберёт сразу 333 пункта.

Эта проблема может быть решена, в частности, методом "забивки нулями". То есть когда рейтинг новорега изначально ставится в 0, а значение количества полученных оценок устанавливается каким-то существенным значением, например, 100. Как будто он получил сотню нулевых оценок.

Первые оценки новорега в таком случае повлияют на его рейтинг не сильно. На примере: _rating == 0, _total == 100, grade == 1 (плюсик поставили), тогда:

_total ++; // 100+1=101

neoRating = (1 - 0)/101 + 0

// neoRating == 0,00990099009900990099009900990099

И рейтинг новорега поле первого плюса сменится с 0 на 10. В случае, если бы изначально _total == 0, рейтинг с 0, сменился бы на 1000 (максимально возможный) сразу после первого плюса. Легко проверить, заменив в формуле значение 101 на 1.

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


Раскрыть

О снайпинге и накрутке рейтинга

Приветик, пипчане! Я снова с вами, хоть никто особо не скучал.

Продолжаем углубляться в исследование системы рейтинга на пипмай, обнаруживать её уязвимости и думать над тем, что можно было бы сделать для их устранения.

В этот раз коснёмся такой проблемы, как возможность "снайпинга" неугодного определённому пользователю или группе пользователей аккаунта.

В чём суть проблемы, на примере:

Вот у нас есть некий юзер1. У него +100 рейтинга и 200 комментариев. Это буквально значит, что кто угодно может в одно лицо, лично, а лучше при помощи несложного скрипта, проставить ему 200 минусов под каждый из его двухсот комментариев, и снизить рейтинг до -100.

Да кто же станет такое творить? Очень немногие, разумеется. Но сама возможность-то существует. 

Давайте подумаем, может ли уже сейчас пара-тройка активных друзяшек запросто оказывать давление на любого несогласного с ними, банально накидывая ему по минусу на всякий коммент, который он оставляет, и попутно объясняя, что тут ему не рады? Как бы "заткнись или мы продолжаем сливать твой рейтинг". Не толпой на одного, а братская помощь, как говорится.

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

Это, так сказать, всё присказка. Из очевидных, происходящих, вещей.

Итак, если какое-то явление существует или может существовать в рамках определённой системы, то неплохо было бы выяснить, какие свойства системы позволяют ему это делать.

Одно как минимум кроется в том, что активность у пользователей может быть разная. Из этого простого факта можно сделать некоторые выводы. Первый в том, что пользователи с разной активностью в разной степени влияют на рейтинги контента, имеющегося на ресурсе. Кто-то больше, а кто-то меньше.

И поскольку что-то оценивать всё ж-таки энергозатратней, чем не оценивать, то всегда имеет место ситуация, когда абсолютное большинство пользователей обладает очень низкой активностью в количественном отношении, и близкой к нулю в качественном. (О чём речь идёт, смотри пост по ссылке под словом "активность" в предыдущем абзаце) Это в свою очередь значит, что пользователей с высокой активностью меньшинство. Помним, что активность напрямую выражает влияние пользователя на контент. То есть имеем, что исходя из свойств самой системы рейтинга, меньшинство активных пользователей влияет на контент ресурса сопоставимо, а может и даже больше, чем влияет на него пассивное большинство.

Сказать наверняка, каково положение дел на пипмай, вряд ли получится, потому что нужна куча графиков, сводящих воедино информацию об активности пользователей. На данный момент она, скорее всего, даже не рассчитывается. Да и если будет когда-то рассчитываться, то пипчанам её никто показывать не станет всё равно. "Для служебного пользования" - есть такой гриф на опредлённые документы.

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

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

Остановимся на том, что такое свойство системы рейтинга, как допуск разной степени влияния на контент от разных пользователей, лучше не трогать. Каждый может влепить желаемое количество плюсов или минусов туда, куда сам захочет. И каждый такой минус или плюс учитывается в полной мере.

Ещё одно свойство системы рейтинга, обеспечивающее возможность снайпинга, заключается в том, что чем больше пользователь создаёт контента, тем большее влияние на свой рейтинг он открывает.

Так, например, если у пользователя из созданного им контента всего 1 коммент, то любой другой пользователь не может поставить ему больше одной оценки. То есть один пользователь может изменить его рейтинг не более, чем на единицу вверх или вниз. А вот если накопилось из контента уже 100 комментов, например, то влияние на рейтинг открывается уже в пределах от +100 до -100.

Чем больше контента создаёт пользователь, тем уязвимее он к снайпингу.

Как это лечить? Для начала не стоит забывать, что оценки ставить можно как постам пользователя, так и его комментариям. И если для постов решение по снижению уязвимости к снайпингу существует довольно простое, то с комментариями всё куда сложнее.

Как снижать уязвимость к снайпингу по постам? То есть защитить пользователя от того, что кто-то возьмёт и поставит по минусу на каждый созданный им пост. Ну или из дружеских побуждений наставит плюсов. У каждой медали есть две стороны. И у данной медали они обе не очень.

Наиболее простое и действенное решение является одним из хороших решений, принятых в своё время на небезызвестном "пикабу" - блокировать возможность оценки постов спустя определённое время после их публикации. Ну то есть нельзя зайти и оценить юзеру посты годовой давности, считается, что, мол, поезд уже ушёл.

Со снайпингом через комментарии такое решение работает плохо, просто потому, что комментариев пользователь может оставить очень много и за очень короткий срок, в отличие от постов, требующих для своего создания чуть более серьёзных усилий зачастую, да и нередко имеющимся "кулдауном" публикации.

Тем не менее, блокировка возможности оценки постов спустя какое-то время после публикации, выглядит вполне рабочим вариантом. Разумеется вариантом не полного искоренения, а усложнения снайпинга и накрутки рейтинга.

Скажем сразу: полностью устранить возможность снайпинга, равно как и накрутки рейтинга, не устранив при этом саму систему рейтинга вообще, вряд ли возможно. (В дальнейшем для простоты будет упоминатсья только снайпинг, но держите в голове, что накрутка рейтинга - это неотделимое от него явление)

Перед тем как перейти к самой "мякотке", нельзя не упомянуть о том, что позволяет снайпингу не просто существовать, но и провоцирует данное явление повсеместно. И проблема кроется в создании общности интересов для активного меньшинства. Иными словами: то, как устроен рейтинг, делает так, что направленность действий активного меньшинства пользователей плюс-минус совпадает.

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

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

Отток новорегов, их пассивность, "пресность" контента, отсутствие каких-то горячих обсуждений в комментариях - во многом это результат, к которому приводят дружные действия меньшинства активных пользователей, объединённых общими интересами, возникшими благодаря текущему устройству системы рейтинга и заявленным перспективам её развития. Проблема, как обычно, не в поведении людей, а в том, что их поведение - это реакция на условия, в которых они оказываются.

Я веду к тому, что никакой бунт здесь не поможет. Даже если большинство пипчан вдруг разозлится и начнёт перманентно минусить в ничто весь контент отдельных пользователей, принадлежащих к упоминаемому активному меньшинству, то всё просто приведёт к тому, что одно активное меньшинство сменится другим, творящим абсолютно то же самое, разве только менее открыто, чтобы судьбу предшественников не повторить.

Менять надо систему.

Для этого надо для начала понять саму сущность снайпинга.

А сущность этого явления в заведомой необъективности выставляемой оценки контенту определённого пользователя. Ну это когда минусы или плюсы под контентом юзера ставятся не за то, какой это контент, а за то, кто автор этого контента.

Можно ли это как-нибудь исправить? Да, вполне. Причём относительно просто.

Свойство системы, позволяющее необъективно ставить оценки контенту очень простое: информация об авторе контента известна заранее, до выставления оценки.

И вот его-то можно даже устранить, а не модифицировать, потому что это даже не свойство системы рейтинга как таковой.

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

1-й - невозможность сменить оценку контенту после того, как она поставлена. То есть нельзя поставить одну оценку, потом передумать и отменить её или сменить на противоположную.

2-й - невозможность узнать рейтинг поста, до того, как ему установлена оценка.

Оба эти механизма работают в прекрасной синергии. К первому вообще вопросов нет, а вот ко второму есть.

Юзер не может узнать рейтинг поста, пока не оценил его. Эта информация остаётся недоступной до тех пор, пока не поставлен плюс или минус. Но что если юзер не готов быть настолько однозначным и скорее относится к материалу поста нейтрально? Вариант поставить "нейтрально", то есть ни плюс ни минус, у него только один: не ставить никакой оценки вообще. И в этом случае информация о рейтинге поста останется для него недоступной. Это немножко не правильно. Решается просто, через возможность поставить нейтральную оценку, после чего информация о рейтинге поста открывается. И информацию скрывать нет смысла, потому что пользователь проголосовал и переголосовать уже не может, и вариант с нейтральным отношением сохранён.

А почему вообще от юзера скрывается информация о рейтинге поста, до того, как он оценит пост? А делается это для того, чтобы увеличить уровень объективности оцениваемого контента. Потому что для объективной оценки поста информация о его рейтинге: а) не нужна б) потенциально вредна (кто-то да поставит свой плюс или минус с учётом того, сколько плюсов или минусов уже поставили другие)

"Разработчики пипмая, которые просто списали эту фичу с пикабу, отворачивают глаза".джипег

Это шутка, ребята. Понятное дело, что запилили не просто так. И уж тем более нет ничего плохого в том, чтобы брать откуда-то удачные наработки, и не брать неудачные.

Но давайте пойдём дальше. Зададимся вопросами:

а) Нужна ли для объективной оценки контента информация о том, кто его автор?

б) Может ли быть вредна для объективной оценки контента информация о его авторе?

И тут, оказывается, то же самое: а) не нужна б) да, может быть вредна

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

Причём заметьте: речь шла не про посты или комментарии по отдельности, а про контент, то есть про то и то.

Как это будет противодействовать снайпингу? Ну, если юзер не знает, кто какой коммент написал, то прокликать минусами по комментам одного пользователя становится несколько сложнее. Да и плюсовать друзяшек тоже. Не понятно ведь где кто, поскольку до того, как проставишь оценку, никнеймы скрыты. А если уж поставил оценку, то не поменять уже.

Итак, сушим выводы, переходим к предложению в сжатом виде:

Для усложнения снайпинга и накрутки рейтинга можно предпринять следующие решения:

- Ввести блокировку возможности оценивать посты спустя определённое время после их публикации.

- Ввести скрытие рейтинга и авторства постов и комментариев для пользователей, до того момента, пока они не поставят какую-либо оценку. (скрытие рейтинга для постов уже имеется)

- Ввести возможность узнать информацию о рейтинге и авторе контента, взамен на невозможность поставить оценку. (по сути кнопка нейтральной оценки как дополняющая альтернатива игнорированию оценки)

- Устранить возможность изменить выставленную оценку. (уже есть)

- Устранить возможность отсмотреть все комментарии и посты одного пользователя через его профиль (иначе скрытие авторства будет работать не так хорошо)

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

Ну и как обычно, всё это надо плотненько обсудить. 


Раскрыть

О рейтинге юзера на пипмай

Тут немножко мыслей о том, что из себя представляет рейтинг на ресурсе.

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

Что это значит? А значит это то, что итоговое значение рейтинга является просто некоторым абстрактным числом, характеризующим деятельность юзера только самым общим образом.

Например: юзер А и юзер В имеют одинаковый рейтинг: +100. Но А не запилил ни единого поста и сидит строго в комментах, в основном шутя, а В напилил горы популярных постов про ядерный синтез. То есть один юзер - В - автор, наполняющий ленту, а второй - А - посетитель, активно обсуждающий всякие посты.

Есть ли между ними разница? Определённо да. Их рейтинг - следствие разной деятельности.

Даже если так, то в чём проблема?

Она в том, что писать одобряемые комментарии и делать популярные посты - не одно и то же. Это требует разных усилий, и по количеству этих усилий, и по качеству. Рейтинг юзера вообще не показывает, годноту он постит, или просто сидит прикольно общается. И то и другое, повторю, очень важно для развития ресурса, но это не одно и то же.

Человек - существо рациональное, а значит всегда будет искать наиболее простой путь достижения цели. Зачем делать посты, рисковать быть незамеченным или даже утопленным в минусах, если можно не напрягаясь сидеть угорать в комментах и иметь тот же результат по рейтингу?

Как эту проблему попытались решить на всем известном "пикабу": да просто сделали вес плюсов и минусов от комментариев х0.5 от плюсов и минусов за посты. Поймать баланс таким "тычком в небо", ясен хрен, не вышло.

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

Граждане пипчане, эта тема требует плотного обсуждения.


Раскрыть

Отрицательный рейтинг

Тут у нас появился претендент на успех . Не знаю первый ли?

Вопрос собственно есть ли какието ограничения? Или пока только циферки?

 

 


Раскрыть

А вот я вернулся!!

Превед, мои дорогие радионюхатели!
Меня не было десять дней. 
И что я вижу по прибытии? А? Чего вижу?
Правильно, рейтинг -96 я вижу!)))) А всего лишь стоило послать на йух некоторых))))) 
Ну лан, не суть. 

А, да, я надолго пропал, так как, работая экспедитором, доставлял груз .
Позвонили, сказали груз доставить. Сказали - "надо!". 
А чё за груз? - начал было я выяснять подробности, но мне большие дяди в красивых костюмах ласково порекомендовали завалить еблет и не задавать ненужных вопросов. Ну а чё нам, кабанам? Дают - еби беги, бьют - бери! В общем, собрался я в очередную командировку. По прибытию выяснилось, что это партия желудей. 
- Этож на какую такую свиноферму? - заинтересовался я, - таким количеством желудей можно целое государство отпиздить прокормить! 
- А ты поддувало прикрой и не пиздИ лишнего - опять дяди в костюмах нарисовались, хрен сотрёшь, - если жёлуди доставишь, мы тебе продпаёк дополнительный оформим! 
Ну а чё... Там и колбаса краковская, и огурчики малосольные, и хлеб с тмином... А, да, и бутылочка!
Длинно ли коротко, но поехал я жёлуди доставлять. 

Долго ехали, трудно. По дороге пару свиней подобрали. Командир экипажа предлагал их рассортировать на сало, но я был категорически против. Знамо дело - жёлуди везём, а свиней порешать думаем!
- Товарищ командир - ору я, - не режьте свиней! Они нам груз доставить помогут! - Да пошёл ты нахуй! они Сашку убили! - орёт в ответ командир.
Ну успокоил, как мог. Переживает человек, понимать надо.
Ну и свиней успокоил. Только любовью и лаской, как говорил профессор Преображенский, можно... Ну и пизды им дал конечно - любовью и лаской они никак не хотели успокаиваться... Но хорошо всё, что хорошо!

А груз на всех свиней рассчитан был.   Ну чё, сжалился командир, всплакнул даже, и разрешил оставить в живых свиней. Но с условием, что эти свиньи нам всё расскажут.
- Вы - грю - товарищ дорогой командир, окончательно ебанулись в следствии яростных атак?? - и смотрю на него так с прищуром. - ну где это видано, чтоб свиньи москалям всё рассказывали??? Они же по-нашему не в зуб  ногой!!!

А свиньи такие - хуяк! - и заговорили на чистом русском! Заорали даже... Я аж вздрогнул... Ебут ещё как ебут!!! говорим, ещё как говорим!!! - кричат. 
- Ждём мы ваши жёлуди! - орут - готовы к ним и вообще! грят мол - вы москали - орут - в край! Но мы вам расскажем военную тайну! С нею ваши жёлуди до адресата самодоставятся и расписываться в получении не попросят!!!
- Ебать колотить, а так можно было? - подумал я, а вслух сказал "- Охуеть!" - и немедленно выпил! Но и не быстро. Прямо скажем, - со средней скоростью выпил!

Нет, не подумайте чего, я вообще не пью! Просто когда со мной свиньи разговаривать начинают... Тут любой забухает!
Вот Вы лично видели говорящую свинью? От, тото-же!

Ну лан. долго ли коротко, а главный командир уцепился за такую знатную возможность и вопрошает у свиней: - А вы, грит, - свиньи, - расскажите нам главную военную тайну???

- Дык говно вопрос - отвечают свиньи - тока спрашивайте! - не зря я их на сало не дал пустить!
Ну знамо - они потом долго беседовали. А мне-то как быть - у меня груз! Как, что, где эта свиноферма? - ничего не понятно... Но тут опять эти в штатском нарисовались и грят мне: дорогой Яша, не нужно так волноваться! Отдайте груз нам, а мы уж на свиноферму сами как-инть доставим!

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

Вот на такой незамысловатой ноте и закончилось моё путешествие. А Вы говорите - рейтинг...













Раскрыть

Ограничить время по лайкам/дизлайкам

Защита от ботов. Ограничить ставить дизлайк одному и тому же пользователю например раз в минуту. Вот пример: некое непонятное что-то зарегистрированное час назад прошёлся за минуту по всем моим постам и поставил диз. 17 постов оно бы и прочитать не успело) или у меня появился фанат или боты пошли в бой) 

На рейтинг мне вообще по.... но представьте как у таких ущербных пуканы гореть будут. )))


Раскрыть

Первое достижение на сайте!

Сейчас глянул, а у меня рейтинг 101. Как-то незаметно набралась первая сотня за всего пять дней. Спасибо всем причастным к моему первому юбилею!


Раскрыть
18:30

небольшой анализ.

Вот тут хорошо видно кто минусит) за труселя - согласен) знал на что шел. но вот чем не нравится тема тематики? или это привычка ебашить минус похую за что? ))) как на пикабу мне на рейтинг было по хрен так и тут ))) но Иисус все видит))) 


Раскрыть