Возрадуйтесь же, мои ненаглядные пипчанские яшперицы! Ибо вот он, очередной пост - пухленький, текстовый, насыщенный самой желанной, самой нежной и мягонькой теоретической базой! *отборная матерщина в зале* - Ой да ладно! Я надеялся, что вам хоть чуток нравится...
Почему рейтинг пользователя следовало бы разделить, уже было. Теперь о том, какую полезную информацию из него можно извлекать, то бишь насколько рейтинг может быть показательным. Ну типа, знаете, на кой хрен вот это число под названием профиля и как его использовать.
И знаете что? И об этом многие догадываются: если разделить рейтинг на такой, который будет только за посты и другой - за комментарии, то из вообще никаким хреном не показательного параметра, можно получить только два не сильно более показательных параметра. Что несколько лучше, несомненно, но не то, чтобы очень. !Внезапно!
Да, граждане пипчане, одним пинком систему рейтинга не починить.
Вот вам пример: за свои посты юзер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-й - невозможность узнать рейтинг поста, до того, как ему установлена оценка.
Оба эти механизма работают в прекрасной синергии. К первому вообще вопросов нет, а вот ко второму есть.
Юзер не может узнать рейтинг поста, пока не оценил его. Эта информация остаётся недоступной до тех пор, пока не поставлен плюс или минус. Но что если юзер не готов быть настолько однозначным и скорее относится к материалу поста нейтрально? Вариант поставить "нейтрально", то есть ни плюс ни минус, у него только один: не ставить никакой оценки вообще. И в этом случае информация о рейтинге поста останется для него недоступной. Это немножко не правильно. Решается просто, через возможность поставить нейтральную оценку, после чего информация о рейтинге поста открывается. И информацию скрывать нет смысла, потому что пользователь проголосовал и переголосовать уже не может, и вариант с нейтральным отношением сохранён.
А почему вообще от юзера скрывается информация о рейтинге поста, до того, как он оценит пост? А делается это для того, чтобы увеличить уровень объективности оцениваемого контента. Потому что для объективной оценки поста информация о его рейтинге: а) не нужна б) потенциально вредна (кто-то да поставит свой плюс или минус с учётом того, сколько плюсов или минусов уже поставили другие)
"Разработчики пипмая, которые просто списали эту фичу с пикабу, отворачивают глаза".джипег
Это шутка, ребята. Понятное дело, что запилили не просто так. И уж тем более нет ничего плохого в том, чтобы брать откуда-то удачные наработки, и не брать неудачные.
Но давайте пойдём дальше. Зададимся вопросами:
а) Нужна ли для объективной оценки контента информация о том, кто его автор?
б) Может ли быть вредна для объективной оценки контента информация о его авторе?
И тут, оказывается, то же самое: а) не нужна б) да, может быть вредна
Вывод напрашивается сам собой: значит, такую информацию нужно скрывать до того, как пользователь оценит контент. Оценит положительно, отрицательно или нейтрально.
Причём заметьте: речь шла не про посты или комментарии по отдельности, а про контент, то есть про то и то.
Как это будет противодействовать снайпингу? Ну, если юзер не знает, кто какой коммент написал, то прокликать минусами по комментам одного пользователя становится несколько сложнее. Да и плюсовать друзяшек тоже. Не понятно ведь где кто, поскольку до того, как проставишь оценку, никнеймы скрыты. А если уж поставил оценку, то не поменять уже.
Итак, сушим выводы, переходим к предложению в сжатом виде:
Для усложнения снайпинга и накрутки рейтинга можно предпринять следующие решения:
- Ввести блокировку возможности оценивать посты спустя определённое время после их публикации.
- Ввести скрытие рейтинга и авторства постов и комментариев для пользователей, до того момента, пока они не поставят какую-либо оценку. (скрытие рейтинга для постов уже имеется)
- Ввести возможность узнать информацию о рейтинге и авторе контента, взамен на невозможность поставить оценку. (по сути кнопка нейтральной оценки как дополняющая альтернатива игнорированию оценки)
- Устранить возможность изменить выставленную оценку. (уже есть)
- Устранить возможность отсмотреть все комментарии и посты одного пользователя через его профиль (иначе скрытие авторства будет работать не так хорошо)
Послесловие: граждане пипчане, не забываем, что это всего лишь предложка, а не требование немедленных изменений.
Ну и как обычно, всё это надо плотненько обсудить.
Приветствую, граждане пипчане! Не хотите ли немножечко теоретической базы? Что значит "иди нахуй"!? Теоретическая база нужна; без неё как без света во мраке - непонятно, куда двигаться - останется только стоять на месте, боясь стукнуться мизинчиком об уголок кровати. Теорию важно и нужно разрабатывать. Именно по этой причине вы можете созерцать сей заумный пост, между прочим относящийся к категории авторского контента, а не предложений, попрошу заметить.
Для начала разберёмся с понятиями, иначе говоря, обозначим и разжуём о чём речь идёт.
Под активностью пользователя в последующем материале данного поста подразумевается характеристика, выражающая влияние пользователя на просматриваемый им контент ресурса пипмай посредством системы оценок.
Если вы нихуя не поняли, то это нормально. Теперь по-человечески:
Когда пользователь сидит на пипмае, он что-то на нём смотрит, а когда он это что-то посмотрит, он ставит этому плюсик, минусик или ничего не ставит. Вполне понятно, что можно ставить плюсик или минусик вообще всему, а можно не ставить плюсиков и минусиков ничему. Вот то, насколько часто и какие оценки ставит просматриваемому контенту пользователь, и есть показатель его активности.
У активности пользователя есть две базовые характеристики: количественная и качественная.
Стоит оговориться сразу, что в целях упрощения восприятия материала, рассматривать впредь будем только активность пользователя относительно постов. На самом деле с активностью относительно комментов по сути то же самое.
Начнём с количественной характеристики.
Она выражается в том, насколько часто пользователь вообще оценивает просмотренный им контент.
Например, юзер1 посмотрел 10 постов и каждому из них поставил либо плюс, либо минус. Количественная характеристика его активности при этом будет равна единице (ну или 100%, если вам больше нравится в процентах). То есть он оценил весь контент, который посмотрел. А вот юзер2 тоже посмотрел 10 постов и ни одному не поставил ни плюса, ни минуса. В этом случае количественная характеристика его активности будет равна 0.
Понятное дело, что это две крайности. Количественная характеристика активности большинства пользователей будет лежать где-то между нулём и единицей, ну или 0% и 100%
Выразим это в виде математической формулы:
Aqp = Pg/Wp
где:
Aqp - ActivenessQuantityToPosts, количественная активность пользователя в оценивании постов.
Pg - PostsGraded, количество постов, которым пользователь поставил оценку (любую, плюс или минус).
Wp - WiewedPosts, количество постов, которые пользователь просмотрел.
Например, пользователь юзер1 посмотрел 100 постов и поставил плюс или минус 20-и из из них. Тогда:
Wp = 100 столько постов посмотрел
Pg = 20 столько постов оценил
Aqp = Pg/Wp = 20/100 = 0.2 настолько часто оценивает просмотренные посты
Не забываем, что Aqp рассчитывается только тогда, когда Wp>0, то есть пользователь посмотрел хотя бы один пост.
Легко понять, что значение Aqp лежит в пределах от 0 до 1.
С количественной характеристикой активности на этом разобрались. Переходим к качественной.
Пользователь может ставить как плюсы так и минусы, причём в любом соотношении, то есть можно, например, ставить только плюсы, но не ставить при этом минусов, или, наоборот, ставить только минусы, и никогда не ставить плюсов. Опять же это две крайности, и опять же большинство пользователей будет где-то между.
Расчёт качественной характеристики активности пользователя уже несколько более сложен: нужны промежуточные вычисляемые значения, такие как негативность и позитивность.
Posp = Pgp/Pg
где:
Posp - PositivenessToPosts, позитивность в оценке постов пользователем.
Pgp - PostsGradedPositively, количество постов, оценённых пользователем позитивно (которым поставил плюс).
Pg - PostsGraded, количество постов, которым пользователь поставил оценку (любую, плюс или минус).
Как мы понимаем, значение Posp всегда будет лежать в пределах от 0 до 1. С негативностью ситуация симметричная, но рассчитывать на очевидность не будем, так что вот:
Negp = Pgn/Pg
где:
Negp - NegativenessToPosts, негативность в оценке постов пользователем.
Pgn - PostsGradedNegatively, количество постов, оценённых пользователем негативно (которым поставил минус).
Pg - PostsGraded, количество постов, которым пользователь поставил оценку (любую, плюс или минус).
Значение Negp, как и Posp также лежит в промежутке от 0 до 1.
И теперь, когда у нас есть Posp и Negp, можно уже вычислять и количественную характеристику активности:
Acp = Posp-Negp
где:
Acp - ActivenessCharacteristicToPosts, качественная характеристика пользователя в оценивании постов.
Posp - PositivenessToPosts, позитивность в оценке постов пользователем.
Negp - NegativenessToPosts, негативность в оценке постов пользователем.
Развернём всё в одну полную формулу:
Acp = Pgp/Pg - Pgn/Pg = (Pgp-Pgn)/Pg
Значение Acp будет лежать в пределах от -1 до 1. Где -1 значит, что пользователь ставит только минусы, а 1 - что только плюсы.
Например: юзер1 оценил 100 постов, 80 он плюсанул, а 20 минусанул. Тогда:
Pg = 100 столько постов оценил
Pgp = 80 столько постов плюсанул
Pgn = 20 столько постов минусанул
Acp = (Pgp-Pgn)/Pg = (80-20)/100 = 60/100 = 0.6 настолько позитивно оценивает посты в среднем
Выдохни, юзер, если ты дочитал до этого момента и всё понял, ты охуенный.
Теперь пример общего характера с вычислением Aqp и Acp для одного пользователя.
Юзер1 просмотрел 100 постов, при этом поставил постам 10 плюсов и 40 минусов. Тогда:
Wp = 100 столько постов посмотрел
Pgp = 10 столько постов плюсанул
Pgn = 40 столько постов минусанул
Pg = Pgp+Pgn = 10+40 = 50 столько постов оценил
Aqp = Pg/Wp = 50/100 = 0.5 настолько часто оценивает посты
Acp = (Pgp-Pgn)/Pg = (10-40)/50 = -30/50 = -0.6 настолько позитивно оценивает посты в среднем
Итак, что можно сказать по поводу активности нашего юзера1, основываясь на том, что его Aqp = 0.5, а Acp = -0.6?
Aqp = 0.5 говорит нам о том, что оценивает наш юзер только половину от просмотренных постов.
Acp = -0.6 говорит, что если он ставит какому-то посту оценку, то гораздо чаще это минус, нежели плюс.
То есть юзер1 у нас получается эдакий выраженный минусила средней степени бодрости.
Важно так же ответить, что показатели Aqp и Acp обладают также репрезентативностью, которая выражается через Wp.
Например некий юзер2 посмотрел 1 пост и поставил ему плюс. Тогда его Aqp=1, Acp=1, то есть он вроде бы как волшебный розовый пони, плюсующий всё, что видит. Но, блин, он посмотрел всего 1 пост! Его Aqp и Acp ещё не репрезентативны, то есть не могут отражать более-менее реальную активность пользователя.
Для чего нужна информация об Aqp и Acp пользователя? Ну, модераторам точно может быть полезно. Да и со временем некоторые системы ресурса, вроде того же автоматического банинга, могут работать с учётом такой информации.
Можно даже представить какую-нибудь радикальную дичь, когда инфа об Aqp и Acp в той или иной форме может доводиться до самого пользователя или, что ещё жёстче, до других пользователей.
В общем, небольшой кусочек теории вроде, а писанины на неслабый такой пост вышло. Но это по той причине, что разжёвано тут всё до уровня средней школы, конечно.
На этом пока всё, до новых встреч.
Отдохнул, пора второй пост пилить.
Я никого не призывая, а не, наоборот, я всех призывая поступать как я.
Админы Пикабу сносят любое упоминание Пипы за считанные минуты. Мне вот повезло, кто-то пожертвовал собой, чтобы я увидел. Что я делаю. Скидываю скриншот с адресом сайта. Но делаю это адресно. Нахожу возмущающегося товарища, ищу его старый пост, чтобы никто ненароком не увидел и не позвал админов. Пишу @НикПользователя, на Пикабу так работает личка и скидываю картинку с названием ресурса. Почему картинку, полагаю внести сочетание буква "pipmy" в стоп-лист легко, а картинку в посте 2-х летней давности пойди найди. Как по мне, каждый человек имеет право доступа к информации некриминального характера, в том числе к новым развлекательным сайтам. Если администрация Пикабы захотела себе в пользователях видеть кучу Тик-токеров и телеграмщиков - милости просим, кто мы такие чтобы их учить. А тут пусть соберутся любители уникального контента, любители обсуждений и ненавидители телеги.
Подчеркиваю, не стоит звать прямо всех. Пусть будут целевые товарищи. Пока сайт раскручивается, создадим свою "экосистему" с внутренними правилами и традициями. Надеюсь @admin поможет юридически закрепить правильные традиции и избавиться от неправильных.