meta['blockers']['id'] = 'emF_t_rIHcE'
meta['blockers']['title'] = blockers['emF_t_rIHcE']['snippet']['title']
meta['blockers']['desc'] = blockers['emF_t_rIHcE']['snippet']['description']
meta['blockers']['lendesc'] = len(meta['blockers']['desc'])
meta['blockers']['lentitle'] = len(meta['blockers']['title'])
## capital letters in title
meta['blockers']['uppercase'] = sum(1 for c in meta['blockers']['title'] if c.isupper())
## number of http
meta['blockers']['http'] = meta['blockers']['desc'].count('http')
## ad status
meta['blockers']['ad'] = 0
Статистику о ролику мы дополнительно запрашивали через API YouTube:
## statistics
c = videos_list_by_id(client,
part='statistics',
id='emF_t_rIHcE')
meta['blockers']['comment'] = c['items'][0]['statistics']['commentCount']
meta['blockers']['dislike'] = c['items'][0]['statistics']['dislikeCount']
meta['blockers']['like'] = c['items'][0]['statistics']['likeCount']
meta['blockers']['view'] = c['items'][0]['statistics']['viewCount']
Далее мы работали с факторами, связанными с автором сообщения. Все статистики канала (количество просмотров, видео и подписчиков) мы получили при загрузке данных через API. Номер кластера по нескольким типам кластеризации был выделен с помощью R и пакета igraph (описано выше). Также мы с помощью R просчитали средний путь узла до других узлов и параметр PageRank. Код для R:
library(igraph)
# COUNT SHORTEST PATHS
distMatrix <- shortest.paths(g, v=V(g), to=V(g))
average_paths <- rowMeans(distMatrix*is.finite(distMatrix),na.rm=TRUE)
#PAGE RANK
pagerank <- page.rank(g)
Page Rank - это алгоритм, который используется в Google Search. По нему просчитывается важность каждого узла в зависимости от того, как много на него ссылаются (сколько связей он имеет). Таким образом, данный показатель выступает аналогом показателя LeaderRank, который использовали в своем исследовании Чжу, Инь, Ма и Ху (2016).
Для узлов, которые принимают сообщения, мы помимо показателей, описанных выше, мы считали еще два: путь до автора и совпадение кластеров. Пути до автора мы считали в R:
library(igraph)
blockers_paths <- distMatrix[, 'УСПЕШНАЯ ГРУППА']
klinsky_paths <- distMatrix[, 'Клинское']
lizzka_paths <- distMatrix[, 'лиззка']
ro_paths <- distMatrix[, 'Maryana Ro']
versus_paths <- distMatrix[, 'versusbattleru']
hypecamp_paths <- distMatrix[, 'HYPE CAMP']
Совпадение кластеров мы указывали при финальной распаковке массивов. Показатель равен 0, если группы не совпадают, и 1, если они одинаковы.
В итоге мы составили словарь с итоговым набором данных для модели. Ключ в нем - это название канала с добавлением кодового названия сообщения через нижнее подчеркивание. Таким образом, запись в словаре - это положение канала в условиях отдельного сообщения. И в итоге таких записей получилось более 140 тысяч. Значение в словаре выступает словарь с переменными, описание которых приводим ниже:
? факторы сообщения:
? ad: число; бинарная переменная, “0” - нерекламное сообщение, “1” - рекламное;
? http: число; количество ссылок в описании ролика;
? uppercase: число; количество заглавных букв в заголовке ролика
? lentitle: число; количество символов в заголовке ролика;
? lendesc: число; количество символов в описании ролика;
? view: число; количество просмотров ролика на май 2018 года;
? like: число; количество лайков на май 2018 года;
? dislike: число; количество дизлайков на май 2018 года;
? comment: число; количество комментариев на май 2018 года;
? факторы автора сообщения:
? authorViews: число; количество просмотров у канала автора на май 2018 года;
? authorSubs: число; количество подписчиков на канале автора на май 2018 года;
? authorVideo: число; количество роликов на канале автора на май 2018 года;
? shortest: число; средний кратчайший путь от автора до других узлов сети;
? authorPG: число; показатель PageRank автора сообщения;
? характеристики узла:
? wcMatch: число; бинарная переменная, 1, если кластер автора и кластер узла по алгоритму wc совпадают;
? leMatch: число; бинарная переменная, 1, если кластер автора и кластер узла по алгоритму le совпадают;
? ebMatch: число; бинарная переменная, 1, если кластер автора и кластер узла по алгоритму eb совпадают;
? channelSubs: число; количество подписчиков на канале на май 2018;
? channelViews: число; количество просмотров на канале на май 2018 года;
? channelVideo: число; количество роликов на канале на май 2018 года;
? shortest: число; средний кратчайший путь от данного узла до других узлов сети;
? pagerank: число; показатель PageRank;
? authorPath: число; длина пути до автора сообщения.
Зависимые переменные закодированы так:
? status: число; степень активации узла от 0 до 1;
? statusCat: число; класс активации узла от 0 до 11.
Для анализа данных мы будем использовать алгоритмы регрессии и классификации. В первом случае подразумевается, что мы предсказываем статус, а во втором - определяем его из набора имеющихся. Мы выбрали следующие алгоритмы:
? линейная регрессия;
? дерево решений;
? случайный лес;
? SVM (support vector machine).
Проверять алгоритмы мы будем как на всех данных, так и на выборке из только активированных сообщений. В случае с SVM мы будем экспериментировать с разными ядрами, чтобы добиться наилучшего результата. Эффективность алгоритма оценивается по показателям R-квадрат, среднего остатка и визуально по графику сопоставления реальных значений и полученных алгоритмом.
Таким образом, мы получаем двухступенчатую схему анализа сети блогеров на YouTube. На первом этапе мы используем сетевой анализ (в том числе, кластеризацию) и другие статистики для выявления возможных факторов. На втором этапе мы используем алгоритмы регрессии и классификации для оценки выбранных «фичей». Также имеется и предварительный этап анализа, который заключается в сборе данных о предыдущих взаимодействиях внутри сообщества. В результате мы делаем вывод о том, на какие факторы и каким способом компаниям нужно обратить внимание.
Глава 3. Оценка факторов на основе моделей и рекомендации по работе с ними
информация коммуникация сеть реклама
3.1 Структурный анализ графов распространения информации
В данном исследовании мы используем сетевой анализ для двух целей:
- сбор атрибутов для дальнейшего моделирования;
- рассмотрение и описание процессов между блогерами.
Для этого мы построили направленный граф, где узлами выступают каналы в русскоязычном сегменте YouTube, а связи между ними показывают, что один из блогеров когда-то лайкал видео другого блогера. Чтобы ограничить размеры графа, в сеть мы включали только те каналы из понравившихся, которые уже в нее входили. Это не влияет на анализ, т.к. при выделении хабов мы учитываем входящую мощность узлов.
Рис. 6. Отфильтрованная сеть каналов YouTube
Для визуализации сети мы использовали программу Gephi. Изначальный граф включал в себя 17510 узлов с 71512 связями. Диаметр графа равен 17, а средний путь от одного узла до другого примерно 5. Мы имеем дело со связанной сетью, где самая крупная компонента включает в себя 6789 узлов. При этом плотность графа равна 0.002 - между большинство узлов связей нет. То есть здесь представлена сеть по типу маленького мира. То есть в сети нет ярко выраженных центров и почти все узлы имеют связи между собой в нескольких шагах.
Для улучшения визуализации мы отфильтровали узлы по входящей мощности: от 20 входящих связей. Таким образом у нас получилось 804 канала с 1585 связями между ними. Для укладки мы использовали алгоритм Fruchterman Reingold (для наилучшего отображения). Таким образом, узлы с большим числом связей между собой стянулись в центр. Размер узлов и лейблов выставлен в зависимости от количества входящей мощности. В результате мы получили следующий граф (рис. 6).
В выбранной укладке мы видим разделение структуры графа: сплоченный центр и периферия. В центре находятся каналы, которые признаны сообществом. И чем крупнее их заголовок и размер названия, тем авторитетнее блогер на платформе и заметнее его деятельность. И мы здесь говорим не о зрителях, а именно о других членах сообщества. Скопления же ребер у узла, чей размер мал, говорит о том, что канал активно лайкает видео коллег и признается сообществом, но еще не обрел достаточного числа подписчиков. Как, например, канал “ДА НИЛ”
При этом в центре можно найти и новые каналы, которые только набирают популярность и не взаимодействуют активно с другими каналами, но уже признаются крупными игроками. Таким, например, можно назвать канал Satyr.
Для кластеризации мы использовали несколько алгоритмов: на основе случайных блужданий, коэффициента битвинности, ведущего собственного вектора матрицы сообщества. В каждом случае у нас получилось разное количество сообществ. Больше всего на основе случайных блужданий, меньше - на основе собственного вектора. При этом большая часть узлов - от 60 до 80 процентов - при каждом алгоритме собираются в 3-4 кластера. Для дальнейшего визуального анализа мы будем использовать результаты алгоритма по вектору, т.к. меньшее количество кластеров легче интерпретировать. При построении модели в следующей части мы используем показатели всех алгоритмов.
Для каждого сообщения мы выделили отдельные графы из каналов, которые выкладывали ролики по данной теме. По структуре сети получились похожими. В каждом присутствовал связанный подграф, который включает от 20 до 50% всех каналов. Все остальные каналы в выборке не имеют между собой связей.
Рис. 7. Сеть каналов, говоривших о ролике Лиззки (справа) и рекламе Кока-Колы (слева)
Объем связанного компонента разнится для у каждого сообщения. Самый плотный можно видеть на ролике Лиззки. Слабее плотность у рекламных роликов. Самый небольшой связанный компонент у графа с новогодними роликами Кока-Колы (рис. 7). На графе видны каналы с основными роликами блогеров (Клава Кока, Мари Сенн, Костя Павлов). Возникший на почве ролика последнего конфликт в графе никак не отражен.
Рис. 8. Сеть каналов, упоминавшихся первую рекламу Veet (слева) и клип “Мега звезда” (справа)
При этом это нельзя соотнести напрямую с каналом публикации, т.к. у нас есть пример рекламы на канале Марьяны Ро и ее собственного клипа (рис. 8). И в случае нерекламного проекта на ролик больше реагировали блогеры, которые тесно связаны между собой.
То есть, мы можем сказать, что в каждом случае реакции можно разделить на две большие группы: коммьюнити и остальные пользователи. В коммьюнити входят популярные и значимые в сообществе блогеры, а остальные - это небольшие каналы на YouTube. Эти каналы могут быть как lifestyle, так и специализироваться на обзорах и реакциях. Это видно и по кластеризации каналов. Используя разделение по основному вектору, мы получили 11 сообществ. Среди них выделилось 3 крупных: 38.74%, 35.19%, 16.96% от общего числа узлов. И в третье сообщество входит большинство узлов, входящих в связанный компонент. И большинство узлов на периферии графа входят в первое коммьюнити. Можем предположить, что это группа каналов с обзорами, реакциями и перезаливами (повторно опубликованный ролик одного блогера на другом канале).
Также в связанный компонент графов входят узлы не только из одного кластера, но в целом встречаются одинаковые узлы. Например, каналы Кузьмы, Юлика, Ларина, Хованского, Дани Кашина, Соболева, Джарахова, Приятного Ильдара, канал “Тренды Ютуба” , “ЮТУБЕР”, “VSRAP”. Смотря на графы всех сообщений (Приложения А-И) мы можем выявить лидеров мнений.
При этом лидер мнений не всегда оказывается среди первых последователей. Так, например, в случае первой рекламы Veet среди первых последователей оказались 2 популярных канала: Лиззки и Дани Кашина. А в случае с HypeCamp, первые ролики были от каналов участников проекта. И только спустя неделю тренд подхватили популярные блогеры. То есть в движении информации не наблюдается волны-распространения по типу эпидемии от центра к краю графа. Это можно объяснить структурой сети. Инфоповод скорее будет обсуждаться внутри комьюнити, чем распространяться от лидера мнений к другим каналам.
В целом, динамика распространения сообщения не имеет ни возрастающей, ни угасающей волны. Есть несколько каналов-первопроходцев. А далее в течение нескольких недель-месяцев публикуются по несколько роликов в день. Для примера возьмем график реакций на клип “Блокеры” (рис. 10) - на нем нельзя выявить тренда.
Рис. 10. Упоминание клипа “Блокеры” по датам со дня публикации
В целом, мы можем видеть разницу между тем, кто реагирует на сообщения в сети в зависимости от того, рекламные они или нет. В первом случае реагируют стримеры, обзорщики и те, кто снимают пародии. Во втором случае подключаются лидеры мнений сообщества. По сути это похоже на профессиональную реакцию. Рекламу профессиональные блогеры могут воспринимать как издержку профессии и не предавать ей особого значения. Тогда как новые проекты, которые могут задать формат, стандарт качества или привлечь новых инвесторов, они оценивают. Или же, т.к. часто к инфоповоду на YouTube причастен скандал, они стремятся высказать свое мнение.
Но тем не менее мы не можем точно сказать, что рекламный статус сообщения влияет на распространение сообщения. Это вместе с другими факторами мы проверим в следующей части.
3.2 Сравнение моделей регрессии и классификации в оценке факторов
В этой части мы проверим данные на нескольких моделях: линейная регрессия, случайный лес, SVM и дерево решений. Сравнивая эффективность моделей на по показателям R-квадрат и средней ошибке мы выявим лучшие и на их основе сделаем вывод о значимости факторов в распространении сообщения на YouTube. Все модели мы обучали на случайной выборке в 60% от общего числа наблюдений и проверяли на оставшихся 40%.