Графики про клуб

 Публичный пост
15 июня 2021  509

По результатам выгрузки нарисовал быстренько некоторые графики. Это не глубокая аналитика, но уже слишком много, чтобы постить в комментариях. Как индус с kaggle быстренько публикую EDA. Предложения, что ещё посчитать и/или нарисовать принимаются.
Дисклеймер: как мне уже в комментариях к посту с данными напомнили Correlation does not imply causation, а все картинки здесь только корреляции и показывают. Все выводы - лишь предположения, если не шуточки.

Просто статистики

Количество постов на автора
Количество постов на автора

Топ 20 авторов по числу постов
Топ 20 авторов по числу постов

По апвотам
По апвотам

По комментам к их постам
По комментам к их постам

По просмотрам
По просмотрам

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

Гистограмма длин постов по их типам
Гистограмма длин постов по их типам

Число просмотров к длине поста
Число просмотров к длине поста

Видно, что интро никто не читает. Чем пост длиннее, тем просмотров больше.

Частота новых постов по времени
Частота новых постов по времени

Кумулятивная сумма всех интро
Кумулятивная сумма всех интро

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

Дальше интереснее. Работа с заголовками.

Как работать с текстом?
Как работать с текстом?

Методология:

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

Предсказываем upvote для постов типа link
Предсказываем upvote для постов типа link

Как это читать: синенький значит низкое значение признака, красненький -- высокое. Если слева от нуля, то уменьшает таргет (в данном случае число апвоутов), если справа, то повышает. Таким образом здесь чем длиннее пост, тем больше лайков. У ссылок на "статью" будет меньше лайков, чем у ссылок, у которых в заголовке "как ...". Ну не совсем так, но типа того.

upvote для вопросов
upvote для вопросов

upvote для постов
upvote для постов

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

upvote для баттлов
upvote для баттлов

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

Число комментариев для вопросов
Число комментариев для вопросов

Тут мне кажется интересно вышло. Просить советов не так эффективно, как спросить о личных пристрастиях и вкусах.

Связанные посты
27 комментариев 👇

Мама, я в топ-20!

  Развернуть 1 комментарий
Вастрик, Блогер, питонист, мизантроп 16 июня в 07:34

Хорошо, но пока слишком простенько :)

Попробуй может наложить какие-то метрики на таймлайн, чтобы понять как они менялись со временем? Как, например, резкий прирост новичков под Новый Год сказался на качестве постов? А если всё это нормировать по количеству человек?

Что такое вообще это ваше «качество» и какой показатель его лучше всего выражает? Лайки — понятно, но может есть и менее очевидные метрики — например «время жизни» поста (когда тему в последний раз комментили с даты создания), либо отношения комментариев к лайкам.

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

Вот тут уже начинается интересное.

  Развернуть 1 комментарий

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

Ещё хорошо бы чтобы кто-то другой тоже порисовал графики. Тут же много датасаентистов.

  Развернуть 1 комментарий

@iggisv9t, я без претензий, просто набрасываю идеи куда было бы ещё интересно копнуть

  Развернуть 1 комментарий

@vas3k, попробовал посмотреть про прайм-тайм. Получается скучная ерунда. Хотя можно полагать, что ближе к полуночи в среднем активности больше.

Вот например по вопросам

А вот по постам

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

Но это время published_at, то есть активность то может начаться и в другое время. Если достать время всех комментов, тогда что-то дельное можно намерить. По last_activity_at тоже не суперинтересно.

  Развернуть 1 комментарий
Anatoly Shipitsin, Специалист по НЕХ 16 июня в 05:34

Вот это поворот. А я думал мало пишу в клуб.

  Развернуть 1 комментарий
Святослав Игуана, 🎰 np.random.beta(a, b) автор 16 июня в 07:15

В пересчёте на один пост получается другая картина топ авторов

Есть ещё вырвиглазная попытка отобразить по топ5 из каждого рейтинга на одном графике. Больше 3-х человек так за раз сравнивать уже тяжко.

  Развернуть 1 комментарий

@iggisv9t, последнюю картинку можно выставить в галерее современного искусства и продать задорого 😀

  Развернуть 1 комментарий

@MarinaK, скорее она попадёт в https://t.me/awfulcharts

  Развернуть 1 комментарий
Maximus, Электрический инженер 16 июня в 22:20

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

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий
Марина Коняева, Думаю, что дальше 16 июня в 07:14

Класс! Мне нравится твой слог описания выводов 😀

А можешь посчитать как во времени менялось количество новых залайканных постов относительно новых с низкой популярностью? Или как-то иначе посмотреть: контент по данным реально ухудшается или мерещится?

  Развернуть 1 комментарий

@MarinaK, я попробую. Хочется оценивать с учётом прироста участников и тут уже будут вопросы к методологии. Делить на число просмотров, или на число участников, или не делить а просто всё нарисовать вместе. Как масштабировать кривые в разных масштабах. В общем, по-разному сделаю, а там разберёмся.

  Развернуть 1 комментарий

@iggisv9t, ❤️

  Развернуть 1 комментарий

@MarinaK,

Пока так нарисовал. Выглядит как плавный рост. На число участников не делил, интро не выкидывал. Выкинул в начале всё до мая 2020 потому что там был большой пик, который портил все масштабы.

  Развернуть 1 комментарий

А вообще-то

По постам плавный спад
По постам плавный спад

А вот интро растут
А вот интро растут

Я думал, должно быть наоборот.

  Развернуть 1 комментарий

По остальным либо ровно, либо очень шумно. Вот с дайджестами уныленькая тенденция.

  Развернуть 1 комментарий

Хотя по постам наверное понятно. Если их становится слишком много, то общее число просмотров так же быстро расти не может. Поэтому среднее будет падать, потому что просто внимание размазывается. Надо придумать, как разделить посты на "популярные" и "не замеченные" и сравнивать их отдельно.

Если не заморачиваться, то можно просто смотреть не средние, а суммы.

  Развернуть 1 комментарий

@iggisv9t, а ты смотришь среднее или медиану?

  Развернуть 1 комментарий

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

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

  Развернуть 1 комментарий

@MikhailKorobko, средние. Но теперь построил медиану. Найдите 10 отличий.

Как будто чуть ровнее динамика. По интро медианный апвот лежит в нуле. В остальном все графики просто вниз съехали.

  Развернуть 1 комментарий

@iggisv9t, можно попробовать для каждой статьи взять время жизни (скажем, две недели), и суммировать просмотры/лайки. А потом усреднить по всем статьям за этот период и построить это среднее vs время.

  Развернуть 1 комментарий

@MikhailKorobko, да, только для этого надо данные вытащить иначе. Я не смотрел ещё чего там есть в API, но подозреваю, что движок клуба не строился под аналитику.

  Развернуть 1 комментарий

@iggisv9t, Понял! Спасибо за графички все равно, любопытно посмотреть (хотя и правда не очень понятно, что можно из этого вытащить).

  Развернуть 1 комментарий

@iggisv9t,

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

Мы думали про 2 недели: обычно пост настаивается неделю и получает основную реакцию, на ее основании попадает в еженедельный дайджест и случается вторая волна. Дальнейшее уже не так важно, кажется.

  Развернуть 1 комментарий

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

@MikhailKorobko,
Может быть придёт кто-то более умный и сделает интереснее. Я ещё тоже буду делать заходы иногда.

  Развернуть 1 комментарий

@iggisv9t, в любом случае большое спасибо! 😘

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб