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

Аннотация оригинального элемента (модели) преподавания

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

Авторами предложен подход к инструментальной поддержке сквозного практикума между курсами математического цикла и курсами анализа данных с использованием клиент-серверной рабочей среды на основе Linux, клиент-серверной среды разработки и анализа данных RStudio Server, сервера интерактивных веб-приложений Shiny Server, среды создания интерактивных тьюториалов swirl. Предлагаемый подход предполагает не только технологическую интеграцию курсов, но и интеграцию выработки навыков анализа данных и их кросс-проверки на различных дисциплинах цикла за счёт единого подхода к процессу анализа данных в курсах, а также содержательной интеграции на уровне отдельных заданий и тем и усиления использования элементов computational thinking при освещении некоторых тем статистики.

Подход апробирован на ОП “Социология” в НИУ ВШЭ СПб в 2013-2014 и 2014-2015 годах, в 2015-2016 у.г. планируется его использование в междисциплинарном майноре “Обработка и анализ данных (Data Science)”.

Обзор решения. Методическая новизна и актуальность

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

  1. Содержательный и методический разрыв между преподаванием базовых математических курсов (Математика, ТВ и МС), относящихся к компетенции математических кафедр (Департамента прикладной математики и бизнес-информатики), курсов анализа данных, читаемых специалистами “родных” департаментов.

Этот разрыв с содержательной точки зрения не слишком сокращается и с появлением преподавателей статистики и анализа данных с современной подготовкой в этой области – стандарт Social Sciences training в большинстве случаев предполагает, что вводный курс анализа данных (Statistics I) читается без отдельного пререквизита в виде теории вероятностей и включает весьма сокращённое её изложение, не опираясь на практике на формальные математические пререквизиты.

Методически он заключается в том, что, с одной стороны, курсы ТВ и МС и математики – часто всё ещё pen and paper-only courses, мало говорящие и о практических вычислительных аспектах, и о реализации методов в прикладных пакетов, а, с другой стороны, в курсах анализа данных изложение часто идет “от пакета”, и, в дополнение, без опоры на математическую и вычислительную интуицию (ср. метод наименьших квадратов vs. приближённое решение систем линейных уравнений).

  1. Частая ориентация курсов анализа данных “на пакет”, про которую уже немало написано, с неизбежным сокращением и “скорочтением” разделов, посвящённых описанию рабочего процесса, включающего анализ данных как один из многих элементов; разрывы между аналитической частью работы, решением задачи в пакете прикладных программ и подготовкой отчёта. Все это ведет к восприятию работы с пакетом как отдельной от общего рабочего или исследовательского процесса процедуры.

  2. В случае введения языка программирования и анализа данных в учебный план – катастрофически малое контактное время студента с языком, не дающее возможности большинству студентов наработать нужные для минимально уверенного решения задач тысячи строк высокоуровневого (R/Python) кода, и приводящего к фрагментарному подходу и “магическому мышлению”.

Хотя разрешение всех трёх проблем-вызовов выходит за рамки нашей заявки, предлагаемое решение позволяет существенно снизить их остроту. Мы предлагаем совместно используемую для курсов ТВ и МС, анализа данных и программирования рабочую среду на базе стека технологий, основанного на платформе Linux, клиент-серверных версий среды разработки и анализа данных для языка R RStudio Server, сервера интерактивных приложений и визуализаций Shiny Server, системы создания интерактивных упражнений swirl и языка разметки RMarkdown.

Обзор технологий и методических особенностей предлагаемого решения

Организация сред анализа данных является современным трендом, вместе с коммерческими решениями (SAS, IBM SPSS) наблюдается бурный рост свободно распространяемых решений с открытым кодом (Jupyter, IPython Notebook), а также веб-сервисов (Azure ML, Sense.io). Всё чаще они организуются с веб-интерфейсом, дополняемым консольным доступом и системой управления версиями кода.

На сегодняшний день в области статистического программирования и анализа данных одним из самых распространённых программных средств является язык и среда исполнения R. Выбор технологического стека (например, по сравнению с основанном на Python), с одной стороны, обусловлен тем, что R интегрирован в учебный процесс на уровне магистратуры и исследовательской работы, освещается и в рамках курса бакалавриата, обладает обширнейшим набором пакетов и бурно развивается, с другой стороны обусловлен уровнем развития инструментальных средств.

RStudio IDE, в отличии от простых редакторов, позволяет работать как с отдельными файлами скриптов, так и с большими проектами, а так же имеет возможность интеграции с системами контроля версий, что позволяет организовать не только “игрушечные”, но и достаточно серьёзные учебные и исследовательские проекты, близкие по своей технологической сложности к реальным задачам анализа данных в индустрии.

Важной является поддержка синтаксиса RMarkdown, языка разметки текста, который позволяет автоматизировано генерировать отчёты в форматах PDF, Word-документов или HTML-страниц, с включением в отчёт структурированного текста, формул, результатов вычислений в виде таблиц, графиков. Помимо документов, подсистема генерации документов RStudio позволяет создавать презентации в виде динамических HTML-страниц. Для более продвинутых пользователей предусмотрена также поддержка LaTeX и Beamer.

Хотя RStudio существует в “настольной” версии, реализованное решение на базе клиент-серверной версии несёт следующие преимущества с точки зрения учебного процесса:

  • нет необходимости установки и дальнейшей поддержки локальной версии R на компьютерах студентов и преподавателей,
  • централизованное управление учётными записями пользователей (реализована генерация учетных записей и обновление пользователей из списков студентов),
  • централизованный обмен файлами позволяет раздавать материалы для занятий (конспекты лекций, скрипты-примеры и базы данных) и собирать отчёты о выполненных заданий (реализована система сбора отчётов),
  • доступ к рабочей среде с любого компьютера (при наличии соединения с Интернет) и возможность публикации в открытом доступе презентаций и документов,
  • возможность преподавателю войти в рабочее окружение студента при необходимости (например, для удалённой помощи в исправлении ошибок в скриптах).

Помимо интерактивных отчётов, составляющих важную часть концепции воспроизводимых исследований, востребованным и полезным с точки зрения computational thinking навыком является и создание интерактивных приложений на базе аналитических моделей. Интегрированное в среду ПО Shiny Server позволяет создание интерактивных веб-приложений на языке R с использованием разметки RMarkdown. Таким образом становится возможным и новый методический элемент – интерактивные демонстрации, и быстрое прототипирование решений, позволяющее продемонстрировать поведение моделей в различных условиях.

Следующим базовым компонентом рабочей среды является swirl – ПО для создания интерактивных курсов на базе R. Возможность автоматизировать процесс знакомства с командами и методами в форме интерактивного тьюториала особенно важна и в условии большого количества студентов, и с учётом известных сложностей изучения R бакалаврами социогуманитарных направлений. Swirl содержит начальную библиотеку готовых курсов, повторяющих последовательность онлайн-специализации Data Science, разработанной Coursera и John Hopkins University, что даёт возможность и прямого её использования для дополнительной практики или самостоятельного изучения, и возможность создания собственных интерактивных тьюториалов и курсов на основе этого материала. В планируемом использовании рабочей среды при реализации майнора “Обработка и анализ данных (Data Science)” swirl занимает особое место. Для компьютерных практикумов на поток в 200 человек особенно важна и возможность самостоятельной работы над дополнительными интерактивными упражнениями, и дополнительное средство синхронизации практикумов в параллельных группах, которым является интерактивный тьюториал.

Использование серверной версии также позволяем нам задействовать ряд сложных и современных технологий без установки, настройки и дальнейшей поддержки их на локальных компьютерах в компьютерных аудиториях или персональных компьютерах студентов. В качестве примером таких технологий можно назвать СУБД MySQL и MongoDB, сервер приложений DeployR, систему data workflow Drake, скрипты и программы на других языках программирования. Это позволяет решать три методически важных задачи:

  • минимизацию входного барьера для знакомства студентов с новыми технологиями;
  • поощрение самостоятельного углубленного знакомства студентов с технологиями в учебном и проектно-исследовательской деятельности;
  • проблему расширяемости технологического стека в рамах новых курсов или проектно-исследовательской деятельности.

Использование в учебных курсах

Представляемое решение развернуто и интегрировано на факультативных курсах “Основы программирования для социологов – 1, 2” в 2013-2014 году. Тогда же разработаны интеграционные скрипты развёртывания и управления студенческими учётными записями, сбором выполненных заданий и маршрутизацией учебных материалов. Разработаны учебные материалы для курсов.

В 2014-2015 начато использование в качестве среды сквозного практикума с дисциплиной “Прикладное программное обеспечение” на ОП “Социология”, интегрированы учебно-исследовательские проекты НИС “Аналитическая социология и анализ данных”. Разработаны интерактивные упражнения в swirl.

В 2015-2016 учебном году предполагается интеграция модуля дисциплины “Теория вероятностей и математическая статистика” и “Анализ данных”.

Предлагаемый подход предполагает не только технологическую интеграцию курсов. Усиливается кросс-проверка навыков, полученных на различных дисциплинах (создания различных типов статистических графиков, оформление отчётов, эффективная работа с данными), разработанные задания и материалы помогают студентам увидеть содержимое родственных дисциплин с разных сторон, как можно увидеть на примерах заданий из курсов, приведённых в приложении.

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

Семинар Random Permutations, Means and Hypothesis Testing ставит целью дополнить традиционное рассмотрение темы “Тестирование статистических гипотез” вычислительным подходом. Функция этого семинара в рамках факультатива “Программирование для социологов” – закрепление работы с управляющими конструкциями процедурного программирования, структурной организации кода и введение в простейшие симуляции. Однако, с точки зрения курсов “ТВ и МС” и “Прикладное ПО”, для которых этот семинар является гостевым, знакомство с Random Permutations Testing, самостоятельная интерпретация и обсуждение результатов симуляций подкрепляют традиционное изложение раздела “Тестирование статистических гипотез”, который часто представляется сложным студентам социогуманитарных специальностей. В этом смысле вычислительная интуиция (computational thinking) поддерживает традиционное изложение. Семинар предполагает использование преподавателем и студентом широкого спектра возможностей рабочей среды – симуляций, визуализации, интерактивных моделей.

Как видно, содержимое заданий предполагает взаимную поддержку курсов и использование общих приемов, понятий и навыков.

В миниатюре весь цикл воспроизводимого исследования студент проходит в каждом задании – отсутствует разрыв между текстом, отражающим постановку задачи и аналитическую часть задания, программным кодом и артефактами его выполнения (преобразованными данными, графиками и т.д.). И студент, и преподаватель могут использовать математические формулы и схемы при необходимости. Отчёт может быть экспортирован в HTML, MS Word Text Document, PDF.

Попытка показать большой цикл воспроизводимого исследования, включающий участки кода на разных языках программирования, работу с СУБД, автоматическое формирование отчётов по подготовленному шаблону предпринята в задании “Организация процесса анализа данных” курса “Программирование для социологов”. Здесь студент имеет известную свободу в определении содержимого отчётов и может использовать весь спектр изученных методов на всех курсах для демонстрации своего потенциала. Шаблон workflow, минимальные примеры кода и обсуждение результатов на лабораторной работе дают студентам основу, на которой легко разворачиваются рабочие потоки их учебных или исследовательских работ. Наличие кода на Python, который не рассматривается сейчас сколько-нибудь детально в программе, и shell-скрипты, рассматриваемые только в факультативах по программированию и довольно поверхностно, с одной стороны даёт важное представление о том, что workflow – понятие, не привязанное к одному инструментальному средству, а с другой стороны, даёт желающим толчок к модификации скриптов и может служить началом более плотного знакомства с Python или shell.

Содержательная новизна/актуальность

Использование решения позволяет дополнить курсы анализа данных элементами вычислительного подхода, как для поддержки содержательных концепций курсов (тестирования гипотез, центральной предельной теоремы, метода наименьших квадратов и т.д.), так и в качестве самостоятельных тем (бутстреп, метод случайных перестановок, кроссвалидация и т.д.).

Вводятся элементы работы с технологиями обработки данных, ранее рассматривавшиеся преимущественно теоретически – подходы к агрегации данных и СУБД (реляционные и NoSQL), подходы к построению интерактивных приложений, элементы реактивного программирования.

Вводится концепция workflow как процесса, включающего различные технологии работы с данными, тем самым закладывается понимание на технологическом уровне концепции воспроизводимости исследований.

Как проект может быть распространен на другие отделения и факультеты?

В 2015-2016 учебном году использование решения становится междисциплинарным и доступным всем ОП НИУ ВШЭ СПб в рамках междисциплинарного майнора “Обработка и анализ данных (Data Science)”.

Оно может быть использовано для интеграции системы курсов, связанных со статистикой, обработкой и анализом данных в любых направлениях, преимущественно в курсах, интегрирующих математическую, вычислительную и интерпретативную составляющие и делающих акцент на визуальном представлении информации и интерактивных приложениях на основе результатов анализа.

Приложение. Примеры заданий

Парная регрессия. Метод наименьших квадратов (Курс “Прикладное ПО”)

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

Регрессия – метод, позволяющий обнаружить, как одна или несколько независимых переменных (факторов) влияют на одну зависимую. Мы можем оценить, насколько увеличивается либо уменьшается зависимая переменная при росте независимой/независимых.

Вам даны две переменные: количество друзей ВКонтакте (1, 1, 2, 3, 5, 8, 13, 21, 34, 55) и количество друзей оффлайн (1, 3, 5, 7, 11, 13, 17, 19, 23, 27)

1. Создайте две переменных (два вектора) с любыми удобными вам именами. Они должны быть интервальными. Объедините их в таблицу данных (класс data.frame)

2. Постройте диаграмму рассеивания (scatterplot), где количество друзей ВКонтакте – зависимая переменная (\(y\)) с помощью пакета ggplot2.

3. Добавьте линию тренда (используя geom_smooth(method="lm")). Итоговая картинка должна напоминать эту:

4. Задача: найти уравнение полученной прямой по стандартному образцу \(y = ax+b\)

Чтобы узнать уравнение прямой, создадим регрессионную модель через функцию lm (linear model). Она выдаст нам необходимые коэффициенты:

ols <- lm(y ~ x, data=data1)

Здесь y – зависимая переменная; x – независимая; data1 – название вашей таблицы данных.

Получим описание нашей регрессионной модели, вычисленной методом наименьших квадратов (OLS – Ordinary Least Squares):

summary(ols)  
# обращаем внимание ТОЛЬКО на табличку Сoefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -8.9113     4.5029  -1.979 0.083178 .  
x          1.8422     0.2981   6.180 0.000265 ***

Чтобы составить уравнение прямой, нам необходимо узнать два параметра: точку пересечения (Intercept, в стандартном уравнении прямой – параметр \(b\)) и коэффициент наклона (Slope, \(a\)). Оба показателя находятся в столбце Estimate (крайний левый). \(b\) на строчке (Intercept), коэффициент \(a\) – на строке с наименованием переменной x.

Запишите уравнение прямой!

5. Теперь необходимо вычислить размер ошибки – то, на сколько полученная нами прямая отклоняется от наблюдаемых, т.е. реальных значений наших данных. Таким образом мы поймем, в какой мере регрессионной прямой удается описывать тренды, заключенные в наших данных и насколько можно верить ее предсказаниям Для этого высчитайте \(E\) (error) для каждого случая: \(E(x)=(y_\text{наблюдаемое} - y_\text{ожидаемое})^2\).

Вычислите сумму квадратов ошибок (сумму E). На ваш взгляд, ориентируясь на график и данные, какая функция бы наиболее подошла для описания взаимного распределения этих двух переменных?

Задание “Интерактивные эффекты в регрессионных моделях” (Курс анализа данных)

I. Проинтерпретируйте интерактивные эффекты

a. \[\text{Self-Concept} = 1.843 + 0.145\cdot \text{MATH} + 0.477 \cdot \text{Best_School} - 0.051 \cdot \text{MATH} \cdot \text{Best_School}\]

Здесь:

  • Self-Concept – уверенность учащегося в своих силах (от «не уверен» до «очень уверен», интервальная)
  • MATH – оценка по математике (от 1 до 10)
  • Best_School – ученик учится в одной из лучших школ города (10% лучших школ)

b. \[\text{Abortion} = 5.502 + 1.420 \cdot \text{Ex_comm} – 0.613 \cdot \text{Chatt} + 0.463 \cdot \text{Ex_comm} \cdot \text{Chatt}\]

Здесь:

  • Abortion – отношение индивида к абортам (от «очень отрицательно» до «положительно»)
  • Ex_comm – входила ли страна раньше в состав СССР (0 – нет, 1 – да)
  • Chatt – насколько часто индивид ходит в церковь (от «очень редко» до «очень часто»)

c. \[\text{Popularity} = 0.232 + 0.027 \cdot\text{BOY} + 0.057 \cdot \text{GPA} – 0.019 \cdot\text{BOY} \cdot \text{GPA}\]

Здесь:

  • Popularity – популярность учащегося по количеству друзей (от 0 до 10)
  • Boy – пол (0 – ж, 1 – м)
  • GPA – средний балл (от 1 до 5, интервальная)

II. Постройте интерактивный эффект

Используйте набор данных swiss {datasets}.

  1. Сформулируйте гипотезу исследования
  2. Постройте множественную регрессию, объясняющую рождаемость (Fertility). Опишите полученную модель (значимость и направление эффектов)
  3. Добавьте в свою модель интерактивный эффект (в данном случае между двумя интервальными переменными)
  4. Опишите полученный эффект: направление, значимость
  5. Опишите полученную модель, в том числе интерактивный эффект. Внимание! Если у вас не получилось значимого эффекта, то все равно опишите содержательно тот эффект, который вы искали, и затем сообщите о его незначимости.
  6. (*) Попробуйте придумать, как можно визуализировать интерактивный эффект для двух интервальных переменных

Семинар Random Permutations, Means and Hypothesis Testing (Курсы “Программирование для социологов”, “ТВ и МС”)

library(ggplot2)

Acknowledgements first:

  • Example and a part of the code from Ahmed Moustafa. Please, play with the simulation there after you’re done with the task.
  • Data (via the source above) from Śaunak Sen

Data

“”“Systolic blood pressure was measured in progeny from a backcross between two mouse strains. 50 (randomly chosen) mice were genotyped at the D4Mit214 marker. We want to detect association between the D4Mit214 marker genotype and blood pressure. The values show the systolic blood pressure (in mm of Hg) by the marker genotype, BA (heterozygous) or BB (homozygous).”“”

# Heterozygous (BA)
a = c(86, 88, 89, 89, 92, 93, 94, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 101, 106, 107, 110, 113, 116, 118)
   
# Homozygous (BB)
b = c(89, 90, 92, 93, 93, 96, 99, 99, 99, 102, 103, 104, 105, 106, 106, 107, 108, 108, 110, 110, 112, 114, 116, 116)

df <- data.frame(bpressure=c(a, b), type=as.factor(c(rep("BA", length(a)), 
                                                     rep("BB", length(b))
                                                     )))
ggplot(df) + geom_boxplot(aes(type, bpressure, fill=type))

Observed difference

summary(a)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   86.00   94.00   96.50   98.46  100.50  118.00
summary(b)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   89.00   98.25  104.50  103.20  108.50  116.00
diff.observed = mean(b) - mean(a)

Observed difference between two groups: 4.7467949

So, do mice with two genotypes really have different blood pressure (in population), or observed difference (between samples) is due to chance?

Hypothesis testing

How do we test hypothesis? Reminder

Throughout the testing procedure, the null hypothesis is considered to be true.

  • (Ei incumbit probatio qui dicit, non qui negat (the burden of proof is on he who declares, not on he who denies)) (Wikipedia)
  • “This is often expressed in the phrase innocent until proven guilty, coined by the English lawyer Sir William Garrow. Garrow insisted that accusers be robustly tested in court. An objective observer in the position of the juror must reasonably conclude that the defendant almost certainly committed the crime.” (Wikipedia)
  1. Formulate your statements in statistical terms (i.e. \(H_0\) and \(H_A\))
  • For our example: \(H_0: \mu_{BA} = \mu_{BB}\); \(H_A: \mu_{BA} \neq \mu_{BB}\)
  1. Choose a significance level (\(\alpha\))
  • \(\alpha\) is the probability to falsely reject a true \(H_0\), consider its costs
  1. Determine the appropriate test statistic and calculate it. Easy, right?
  2. Check if the test gives us enough evidence to reject the null hypothesis (for chosen \(\alpha\))
  3. Formulate your resulting statement in “normal” language.

Our usual way

t.test(a, b)
## 
##  Welch Two Sample t-test
## 
## data:  a and b
## t = -2.027, df = 47.926, p-value = 0.04824
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -9.45540466 -0.03818508
## sample estimates:
## mean of x mean of y 
##  98.46154 103.20833

… and we look smart, but have no freaking idea how it works, and what the hell is p-value.

  • What is t-statistics?
  • How it works and why we use it?
  • What assumptions we need to check?
  • When it doesn’t work and how will I know?

Random Permutation Test

Let’s try and use less math we don’t understand and more computing. We will use only sums and means and fractions, I promise :)

Observed difference between two groups: 4.7467949

Throughout the testing procedure, the null hypothesis is considered to be true.

Well, it is easy. If Null hypothesis is true, \(a\) and \(b\) are from the same population, so we can combine our samples.

combined <- c(a, b)

Now we need to check how this difference will behave if \(H_0\) is true in a long run.

So we will make random permutations (with respect to \(a\) and \(b\) lengths), each time count the difference and write it down.

number_of_permutations <- 5000

count_diff <- function(number_of_permutations = 1000) {
  diff.random <- rep(NA_real_, number_of_permutations)
  for (i in 1 : number_of_permutations) {

  # Sample from the combined dataset without replacement
  shuffled = sample(combined, length(combined))
    
    a.random = shuffled[1 : length(a)]
    b.random = shuffled[(length(a) + 1) : length(combined)]

    # Null (permuated) difference
    diff.random[i] = mean(b.random) - mean(a.random)
  }
  diff.random 
}

Sampling distribution of the difference between means (provided \(H_0\) is true)

Our observed difference

Critical 5% region

q <- quantile(diff.random, c(0.025, 0.975))

P-values and stuff

P-value is the probability of getting the result you got, or an even more extreme result, if the null hypothesis is true.

Here counting p-value approx. is extremely simple: probability is just a fraction. For each random permutation we check if resulting difference in means is equal or larger than our observed difference and see what share of such cases do we have in the total number of permutations.

pvalue <- function(diff.random, diff.observed, number_of_permutations){
    pvalue = sum(abs(diff.random) >= abs(diff.observed)) / number_of_permutations
    (pvalue) 
}


pvalue(diff.random, diff.observed, number_of_permutations)
## [1] 0.0474

Reading (Watching|Playing) List

Tasks:

  • How sample works? What is runif and rnorm? How do they work? Draw them for different \(n\) (i.e. 1e1, 1e2, 1e3, 1e5) and explain.
  • Why making many permutations is neccessary? Test our function for different \(n\), draw histogram for diff.random, count p-values and make conclusions.
  • () Central Limit Theorem in Statistics, actually, proves the result about asymptotic normality of the sampling distribution of means which we observed via simulation. What about sampling distributuion of medians*? Can we use traditional methods here? What about simulations? How our approach will behave in this case for different \(n\)?

Сквозное задание “Организация процесса анализа данных” (Курс “Программирование для социологов”)

Это задание предназначено для систематизации навыков организации процесса анализа данных с использованием системы Data Workflow Drake.

Литература к заданию: главы 4 и 6 из книги ”Data Science at the Command Line”, интернет-источники.

В этом задании вам необходимо организовать процесс анализа и создания отчёта по данным игровых чатов. Исходные данные извлекаются из БД в соответствии с распределением по вариантам. Результат созданного workflow – набор отчётов вформате HTML, сгенерированных из написанных вами шаблнов RMarkdown, и содержащий:

  1. Общий отчёт(‘report.html‘), включающий, как минимум, таблицу с общим количеством сообщений для каждого пользователя и график, показывающий помесячное количество сообщений длякаждого из top-5 пользователей в вашем варианте. Приветствуется дополнительная информация, позволяющая составить общее представление об интенсивности коммуникации пользователей. Необходимо помнить, что отчёт будет создаваться динамически, поэтому привязка к конкретным данным недопустима

  2. Индивидуальный отчёт (‘USERID.html‘) для каждого пользователя, содержащий, как минимум, облако слов для этого пользователя, первые и последние (хронологически) пять сообщений. Не забывайте про стоп-слова. Приветствуется дополнительная информация.

Исходные данные расположены в СУБД и достаточно велики, чтобы вызвать проблемы при непосредственнойобработке в R (или сделать её очень медленной). Поэтому необходимо создание workflow, объединяющего разные технологии на разных этапах обработки, в частности, вам нужно:

  • Создать запрос к БД, возвращающий данные для вашего варианта. Для его генерации с учётом конкретных идентификаторов вашего варианта подготовлен скрипт на Python, который нужно добавить в Drakefile с необходимой модификацией.
  • Выполнить его с использованием консольного клиента БД в скрипте оболочки
  • Составить цепочку команд, извлекающую Top-20 самых частых слов в сообщениях вашего варианта(игнорируя все остальные поля, извлеченные из БД), записать Top-20 для исходного и лемматизированного с помощью ‘mystem‘ текста в файл ‘top20.txt‘ (не перезапишите файл при добавлении лемматизированных результатов!)
  • Составить шаблоны RMarkdown для обоих отчётов, с использованием дополнительных источников разобраться с добавлением в ‘Drakefile‘ функции формирования отчётов по шаблону.

На практическом занятии мы будем проверять работу workflow на альтернативном наборе данных. Необходимо, чтобы создание отчётов на альтернативном наборе не требовало правки workflow.

Контрольные вопросы:

  • Каковы ограничения отчётов, формируемых автоматически?
  • Как автоматизированная часть workflow встраивается в цепочку работы аналитика данных?