Старожилы, наверное, и не вспомнят, но в конце 2017-го года в обсуждениях в интернете была распространена мысль о том, что в трендах YouTube часто встречаются «накрученные» видео. Поэтому накануне нового 2018-го года я написал утилиту для сбора информации о видео, которые попали в тренды. Для каждого видео запрашивается название, список тегов, дата создания, а так же ведется история изменений лаков/дизлайков/просмотров. Разработку вел на TypeScript для NodeJS, сам код выложен на GitHub. Как итог, сейчас есть возможность строить красивые графики:

 Так же есть возможность строить графики изменения трендов по ключевым словам. Всего за 2018-й год была собрана информация по 29271 видео. Сбор статистики ведется и сейчас. Если график изменения количества лайков/дизлайков на каком-то из участков представляет собой прямую линию, то сохраняются только первое и последнее значение на этом участке. Это сделано для уменьшения объема БД. Сейчас в таблице со статистикой всего 6908449 записей, на диске таблица занимает 458 мб.  Для себя задачу сформулировал следующим образом: нужно отмечать видео, у которых на графике изменения лайков/дизлайков есть «лесенка». Ступеньки у этой самой лесенки определяются на основе трех соседних замеров статистики. Учитывается угол между двумя прямыми: одна прямая проводится между первым и вторым замером, вторая — между вторым и третьим, а так же длины отрезков. Так же отмечаются графики, у которых есть много мелких неровностей.  Пример подозрительного графика:

 Все параметры алгоритма определялись мной вручную и проверялись на уже собранных на тот момент видео и в течение года в этот алгоритм вносились изменения. Поэтому серьезно относиться к таким результатам для каждого отдельного видео, наверное, не стоит. В свое оправдание могу сказать, что при изменении параметров запускался пересчет для всех уже собранных видео, поэтому ко всем видео применялся один и тот же алгоритм.  В целом, нельзя по одному (или нескольким) графикам изменения лайков/дизлайков сказать, была ли накрутка. Любые подозрительные перепады можно объяснить работой CQRS или вспышками на Солнце. Да, один график плавный, другой ступенчатый, но, возможно у всех видео время от времени случайным образом встречается подобное поведение? Именно поэтому для составления общей картины собиралась информация со всех видео которые попали в тренды. За 2018-й год алгоритм показал следующие результаты:
Подозрение на накрутку лайков: 180 видео (0.32% от общего числа видео)
Подозрение на накрутку дизлайков: 1303 видео (4.45% от общего числа видео) Видео с подозрительными графиками лайков немного, однако так было не всегда: в первый месяц 2018-го года зарегистрировано 96 таких видео (более 50% от всех подозрительных по лайкам за год). Однако уже в феврале таких видео стало гораздо меньше, всего 8. Здесь, наверное стоит опять обратиться к старожилам, которые могут вспомнить (или не вспомнить) событие, которое произошло 10 января 2018-го года, когда YouTube заблокировал множество каналов. Со своей стороны могу сказать, что среди заблокированных были и и те, по которым моя утилита успела собрать информацию. График по одному из удаленных видео:

 Если предположить, что накрутки действительно были, то складывается впечатление, что в YouTube провели большую работу и сейчас встретить в трендах подозрительное по лайкам видео можно далеко не каждый день (а те что встречаются, чаще выглядят как случайность или ошибка). С другой стороны такой перепад в накрутках можно объяснить тем, что, в отличии от дизлайков, не имеет смысла накручивать лайки у видео, которые уже попали в тренды.  И еще немного статистики. В среднем, попавшие в тренды видео набирают 21479 лайков и 2863 дизлака. 
Подозрение на накрутку лайков: 15502 / 4250
Подозрение на накрутку дизлайков: 16868 / 22087
Таким образом, если смотреть по результату, то от накрутки лайков пользы нет никакой, в то время как повысить процент дизлайков вполне возможно. Подозрительные по дизлайкам графики встречаются неравномерно. Например на канале Евгения Ройзмана из 21 попавших в тренды видео более половины отмечаются алгоритмом как накрученные по дизлайкам. По поводу графика из заголовка этой статьи. Если предположить, что есть набор аккаунтов в размере 5-10 тысяч, которым сначала дали команду ставить дизлайки, а затем не дожидаясь окончания работы на том же наборе дали команду ставить лайки, то, наверное, можно получить похожий график. Самый странный график, который мне встречался:


Буду благодарен, если кто предложит объяснение, какого лешего тут происходит. К слову, можно заметить, что по этому графику статистика собиралась почти неделю, а не два дня.
 Как уже сказал, по каждому видео сохраняется название и набор тегов. Далее название и каждый из тегов разбивается на отдельные слова, они прогоняются через стеммер и сохраняются как облако ключевых слов для видео. Имея на руках информацию о том, когда видео попало в тренды и когда из трендов вышло, а так же наборы слов для видео, можно по каждому из ключевых слов составить график изменения популярности. В настоящий момент график изменения тредов ключевых слов строится по суткам. В качестве меры используется общее время (в часах), которое все видео с данным ключевым словом находились в трендах.  Пример: в трендах было только два видео, соответствующие ключевому слову. Одно видео продержалось 5 часов в трендах, другое — 10 часов. Тогда популярность ключевого слова устанавливается равной 10 + 5 = 15. По тому алгоритму, который писал выше, самым резонансным и наиболее заметным событием 2018-го года стало не выборы и даже не футбол, а трагедия в Кемерово:

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

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

 Саму базу по состоянию на 23.01.2019 можно скачать по ссылке. Так же в свое время написал два плагина для chrome и filrefox. Сейчас единственная польза: прямо на списке трендов YouTube можно увидеть количество лайков/дизлайков для каждого видео.