Короче говоря, случайно наткнулся на информацию в профиле о количестве поставленных плюсов и минусов (т.к. я сижу почти всегда со смартфона, а там эта информация не бросается в глаза). Удивился тому, сколько я минусов поставил и решил я составить некий рейтинг "доброты" пользователей по количеству поставленных плюсов и минусов. Решение этой задачи разбивается на 2 проблемы.
Проблема №1. Как собрать всю информацию по пользователям.
Но перед тем, как считать информацию по пользователям, надо узнать все логины пользователей. Т.к. админы не сделали нормального API к сайту, пришлось допиливать годовалый API (https://github.com/ruNickStone/pikabu-api). Самое быстрое - это считывать авторов комментариев к постам. Я спарсил примерно 1.5 млн. последних постов (их около 4.5 млн.) и в результате у меня были логины 230 тысяч пользователей. Это заняло около 2х недель. Далее, еще 2 недели ушло на считывание профиля каждого из пользователей.
Поэтому, данные по профилям слегка не актуальны.
Проблема №2. Как составить этот рейтинг.
Вообще говоря, не существует золотого стандарта для ранжирования чего-то, что имеет оценки "+" и "-". Например, какой фильм лучше, тот, который имеет 1000 "+" и 200 "-" или который имеет 100 "+" и 5 "-"??
Самая простая метрика - это доля положительных оценок, т.е. количество "+"/суммарное количество оценок. Но, тут есть один тонкий момент, есть 2 человека:
Ч1. поставил 1000 "+" и 1000 "-", Ч2. поставил 100 "+" и 100 "-". По этой формуле рейтинги одинаковые - 0.5, но, понятно, что слишком разное количество оценок, поэтому и рейтинг, казалось бы, должен быть разный.
Я решил использовать вероятностный подход. В качестве рейтинга я использовал нижнюю границу по уровню 0.95 для вероятности того, что человек ставит "+". Дальше идет объяснение того, что это (если не интересно, то можете пропустить).
Приведу пример: стрелок стреляет по мишени 20 раз, и попадает 15 раз. Как вычислить вероятность попадания стрелка? Многие скажут, что вероятность = 15/20=0.75 и будут почти правы. Дело в том, что частота попадания не равна вероятности, т.е. ему могло повезти и он попал 15 раз, а могло и не повезти и он попал всего 15 раз.
Вот, если бы он стрелял миллион раз, то уже можно говорить о том, что частота = вероятности. Поэтому, формально, надо говорить о том, что вероятность попадания лежит в неком диапазоне. В данном случае, можно сказать, что искомая вероятность находится между 0,5 и 0.91 с вероятностью 0.95.
Вы должны понимать, что даже при вероятности попадания 0.1, он может попасть 15 раз из 20, но вероятность этого, скажем так, маловата (0.000000000009). А вот, например, при вероятности попадания 0.5, стрелок попадет 15 раз с вероятностью 0.0147. Так вот, в данном примере, можно считать, что вероятность попадания стрелка не ниже 0.5. Хочу важную штуку сказать, что эти ворота очень сильно зависят от количества испытаний, например, при 200 выстрелах и 150 попаданиях, вероятность лежит уже в интервале от 0.68 до 0.8.
Теперь перейдём к рейтингу. Все, что связано с выставлением оценок можно интерпретировать как некий случайный эксперимент, в котором надо определить вероятность того, что пользователь поставит "+". И, если применить логику предыдущего примера, то в качестве рейтинга - нижняя граница этой вероятности.
В примере с Ч1. и Ч2. - частоты одинаковые = 0.5, но нижние границы разные, у Ч1. = 0.47, у Ч2. = 0.42.
Чем ближе к 0 этот рейтинг, тем более "злой" пользователь (доля "+" маленькая), если близок к 1, то пользователь добрый.
А теперь результаты. Я честно говоря был в шоке. Начну с позитивных моментов, есть около 1700 людей, у которых рейтинг >0.999. Самый выдающийся из них: @rygbuh поставил 637471 оценку и все "+" (на данный момент, все-таки 1 минус бахнул)
На 2м месте @BAntoxa - 584306 оценок и все "+". На 3м месте @ZavodMayak - 446308 оценок и всего 1 "-".
А теперь о нехороших людях. Звание пикабушный "молодец" получает: @evilcame, который поставил 716022 "-" и НИ ОДНОГО плюса. ЕЩЕ РАЗ: 700 ТЫСЯЧ МИНУСОВ!!!! За 1400 дней - по 500 минусов в день. Дальше идут: @Zaorish, @rokotokobot - по 400 тысяч минусов.
У меня всё. Честно говоря, я не думал, что будут такие результаты. Это, конечно, был некий шок. Если будет интересно, я кое-что вытащу из данных.
Вся табличка со всеми пользователями находится вот тут: https://yadi.sk/d/RYZ7Aq2xxTXUJ