В интервью Дмитрий Серебренников, младший научный сотрудник Института проблем правоприменения, подробно рассказывает о своем опыте обучения и преподавания на программе «Прикладной анализ данных», об анализе данных в академии и обучении программированию на R и Python.
Митя, можешь рассказать про свой бэкграунд и про то, чем ты занимаешься в Европейском?
Меня зовут Дмитрий Серебренников. Можно просто Митя. Я окончил соцфак ЕУ в 2020-м, после чего сразу же поступил на годичную программу по прикладному анализу данных, которую делают Европейский университет и Яндекс. Сейчас работаю в Институте проблем правоприменения при ЕУСПб и исследую, как правоприменители используют новые технологии и как последние изменяют повседневные практики. В моем случае основной фокус приходится на сети камер наблюдения в разных городах. Меня интересует, как большие инфраструктурные проекты отражают основные паттерны управленческой рациональности. Параллельно с этим есть ряд вещей, которыми я занимаюсь: например, это митапы по программированию на R, которые сейчас существуют вокруг сообщества Горячая линия R. Мы сейчас сделали короткий курс по пространственным данным и их анализу. В следующем году, возможно, будем делать мини-курс по NLP и так далее. Также с этого сентября я буду преподавать в магистратуре ИПП, и на прикладном анализе данных — курс по введению в R.
Расскажи про программу «Прикладной анализ данных»? Как бы ты мог описать опыт обучения, а потом и преподавания на ней?
Здесь стоит сделать важное уточнение - я выпускник бакалавриата по истории. Когда я пришел в Европейский, я последний раз сталкивался с математикой, когда я сдавал ЕГЭ (отвратительно сдал, чуть ли не завалил). С таким набором я пришел в ЕУ и планировал заниматься качественными исследованиями. По стечению обстоятельств мне стало интересно программирование и количественные методы. Стал активно это все изучать, ездить на разные школы. Очень рекомендую проект Летняя школа (она также раньше была известна как Летняя школа «Русского репортёра»). Со временем как-то втянулся, написал в итоге диссертацию в mixed methods (смешанных методах). У меня было качественное поле по небольшим городам одного из регионов России в которых я изучал как власти расставляют и используют камеры наблюдения. Я брал интервью с чиновниками, которые за это ответственны, сидел в центрах мониторинга, разговаривал с самими операторами: как они работают и на что они смотрят. Вторым аспектом был количественный анализ пространственного расположения камер наблюдения в Москве, который тогда у меня получился крайне плохо. Забегая вперед, спустя почти два года изменений его общей концепции мы с моим коллегой, Дмитрием Скугаревским опубликовали препринт про сравнение пространств расположения камер наблюдения в разных европейских столицах.
Во время учебы в магистратуре я постепенно начал помогать с организацией митапов по R, поступил на прикладной анализ данных (ПАНДАН). Отучившись там, я понял, что существует одна большая проблема, которую я видел когда только начинал учиться количественным методам и программированию: если ты не специалист по техническим наукам, а имеешь классическое гуманитарное образование или, что очень часто встречается — просто отвратительное образование, то у тебя есть слишком большой лаг между базовым уровнем, который необходим для того, чтобы хоть минимально начать въезжать в методы и тем минимальным уровнем, который предполагают для себя создатели стартовых курсов по программированию и анализу данных. Этот минимальный уровень — это то, что люди, занимающиеся статистикой и выходцы из технических или естественных математических наук, считают базой, которая есть у всех и с которой можно начинать. На самом деле, она, мягко говоря, не является таковой. Для того чтобы дойти до неё многим нужно еще очень много работать. ПАНДАН изначально задумывался с учётом необходимости заполнить этот лаг, то есть найти нужные ключи для того, чтобы люди за пределами технических наук быстро смогли понять, что такое программирование, анализ данных, количественные исследования. Во-вторых, показать, что на самом деле эти методы очень интересны вне зависимости от исследовательских приоритетов студента. На это направлены разные исследовательские проекты: можете посмотреть их на сайте. Есть, к примеру, проекты в русле Digital Humanities: то есть применение новых технологий, программирования для решения проблем, которые стоят перед социальными и гуманитарными науками.
В России есть такие программы, но, как правило, они созданы специалистами, которые изначально делают скидку на то, что к ним придут люди с социально гуманитарным образованием, и поэтому их не нужно сильно загружать. Как следствие, у выпускников таких программ меньше понимание базы и намного больше работы с программами, где за вас уже все сделано и нужно лишь нажать кнопочку. Это порождает ситуацию, когда вы считаете, что вы что-то знаете, но на самом деле из-за отсутствия базы, вы можете делать только один прием. Это не так плохо, но вам очень тяжело выйти за пределы. И вот ПАНДАН как раз таки устраняет этот лаг: вы приходите сюда и за очень короткий, но очень интенсивный промежуток времени быстро наращиваете компетенции, начиная с самой-самой базы, со школьной математики, недостающей для понимания статистики, основ алгоритмов и того, что такое программы вообще, как они работают, а завершаете вы на computer vision: компьютерной обработке текстовых данных и проч. В принципе когда вы доходите до какого-то определенного уровня, все остальное вы можете просто почерпнуть в интернете и спокойно расти как специалист, устраиваться на работу, связанную с анализом данных.
Можно сказать, что программа направлена и на академический анализ данных и на то, чтобы иметь возможность поработать в индустрии, в качестве аналитика?
Насколько я понимаю, она именно так и задумывалась, чтобы, с одной стороны, она не теряла связь с академией, а с другой, чтобы люди, которые были ее выпускниками, спокойно понимали, что могут найти себя в индустрии. Если они остаются в академии, то только если понимают, что им хочется развиваться в этой сфере.
Какие ресурсы для онлайн-обучения анализу данных ты мог бы порекомендовать?
Я пока еще не встретил ни одного курса по анализу данных, который бы назывался вводным и действительно являлся бы таковым для тех, кто ничего не понимает. На мой взгляд это касается даже тех курсов, которые признаются лучшими.
При самостоятельном обучении на мой взгляд нужно одновременно начинать сразу с нескольких сторон. В первую очередь я бы посоветовал заниматься на курсе “Основы статистики” Анатолия Карпова на платформе Stepik. Там же есть вторая и третья часть курса. В сообществе считается, что это лучший бесплатный курс на русском языке для введения в анализ данных. Я пока лучше не встречал. Есть, правда, некоторые проблемы: когда я их проходил, будучи совсем совсем начинающим, мне казались сложными большое количество моментов. В первую очередь сложно мыслить в математических категориях и на математическом языке, не будучи в это погруженным. Банально сложно читать уравнения: нужно сделать большие усилия, чтобы, например, понять что такое знак суммы и как его читать. На мой взгляд, в этом и состоит ключевая проблема этих стартовых курсов: сложно не потому, что с вами что-то не так, а потому что у вас просто не хватает словаря.
Для его пополнения я советую канал 3Blue1Brown. Выпускник Стэнфорда просто и логично объясняет разнообразные математические концепты в форме забавных мультиков. Канал, кстати, сейчас начали активно переводить на русский. Там среди прочего есть мини-курс по линейной алгебре. Линейная алгебра это вообще один из таких фундаментов анализа данных. Можно параллельно попробовать проходить статистику Карпова, и посматривать эти видео. Удастся въехать далеко не сразу, но в какой-то момент у вас начнет складываться картинка. В 3Blue1Brown вам нужно пройти вещи, связанные с линейной алгеброй, с математическим анализом и основами статистики. Кроме этого рекомендую разнообразные курсы Coursera по этим темам.
Если вы вдруг понимаете, что даже несмотря на все вышеперечисленное у вас есть сильные проседания по базе, я рекомендую посмотреть Khan Academy. У них на сайте есть распределение по уровням сложности математики. Можно просто порешать задачки и понять, на каком уровне математики вы остановились.
Если вы уделяете достаточное количество времени на обучение, в какой-то момент у вас начнет складываться картинка того, как в целом, выглядит область, а это, в общем-то, самое важное, что нужно получить на начальной стадии. После этого можно попробовать попробовать базовые курсы по R от Института биоинформатики и анализа данных на том же самом Stepik. На мой взгляд, они немного сложные для стартовых курсов, но ничего лучше у нас нет. В сумме у вас получаются три курса статистики и два курса анализа данных, которые нужно проходить в шахматном порядке.
Если вы самостоятельно пройдете все эти пять этапов, то можно вас поздравить, потому что вы уже тянете на минимальную планку аналитика данных. Можете с этого момента пытаться начать устраиваться на работу, потому что любой реально работающий человек, скажет, что нет ничего лучше, чем опыт работы с реальными данными и решение реальных задач.
Можно зарегистрироваться ещё на такой штуке как DataCamp. Это огромный набор частично бесплатных курсов по конкретным особенностям работы с тем или иным языком, в первую очередь R, SQL, Python. Допустим, вас интересует какое-то расширение или какая-то библиотека для работы: очень часто там есть просто конкретный отдельный курс по тому или иному расширению. Таких курсов там какое-то астрономическое количество. Очень много практических курсов, где вам говорят, вот есть такие данные и вот задание от заказчика. На таком немного искусственном примере вас доводят до финального вида вашей задачи — то, что вы должны отдать заказчику. В чем большая проблема DataCamp’а? На мой взгляд задачи там сильно направлены на зубрежку того, что означают разные команды и в каких местах их нужно вставлять. Казалось бы, наверное, это то, что нужно! Но вот на первых порах, когда нужно понять общий принцип работы языка, это наоборот мешает. Но когда вы поняли общие принципы работы — после этого идти в Datacamp очень нужно и полезно. Это что касается R.
Мы в нашем маленьком комьюнити, в чате горячей линии R собирали подборку курсов и материалов по этому языку. Там подборка курсов, лекций различных, книг и статей по самым разным темам, которые могут быть вам интересны для самых разных задач.
Если мы говорим про Python, то я могу посоветовать лишь какие-то платные варианты. Например, курс от Яндекс Практикума и их специальность “Аналитик данных”. Там очень сильная ориентация под бизнес задачи — для кого-то это будет преимуществом. Курсы внутри специальности хорошо связаны между собой, что, на мой взгляд, очевидно является большим плюсом. Из того, что лично мне не нравится— это отсутствие видео.
В этом смысле мне нравится другая альтернатива — Karpov Courses от того самого Анатолия Карпова, который сделал свой образовательный стартап. У них как раз все более персонализировано. Курсы ведут достаточно известные в сообществе люди.
Давай, может быть, проясним термины, поскольку много есть на этот счет противоречий и споров. Что такое data science в твоем понимании?
Поскольку область data science ещё не совсем устоялась, то можно лишь говорить о текущей конвенции понятий и определений. Их можно описывать по-разному. Хороший взгляд “изнутри” самой области даёт один из основателей Open Data Science community Алексей Натёкин. Я попробую объяснить несколько по-другому: чуть более “со стороны” и через практику, а также организационное устройство компаний или отделов, который занимаются data science.
Представим себе огромную корпорацию, в которой у вас существуют разные отделы и работники, занимающиеся разными вещами. Вот у нас есть заказ на какой-то проект, связанный с каким то сложным машинным анализом. Например, вам приходит заказ, что нужно сделать что-то с фотографиями в Инстаграме. Допустим, задача – отследить на фоне какого алкоголя фотографируются люди. Вот мне друг рассказывал, что они занимаются таким проектом: они определенным образом выкачивают Инстаграм и смотрят привязку фотографий по географии и где они были сняты. Компьютер ищет на фотографии бутылку алкоголя и автоматически определяет, что это за алкоголь. По итогу вы должны выдать заказчику информацию о том, в каких регионах, что пьют больше или, по крайней мере, что снимают больше, какие у этого отзывы и что человек пишет в посте: это что-то радостное, что-то грустное, допустим, и так далее.
Естественно, когда вы какая-то маленькая компания, у вас и таких заказов нету, и сама специфика работы будет другая: провести какой-то опрос или сделать аналитику посещения сайта. И вот эти задачи делают люди, которых конвенционально называют дата-аналитики: те, кто берут данные и исходя из определенного набора методов для анализа, делают на них определенную аналитику и отдают заказчикам.
Но теперь вернемся обратно к истории с фотографиями в Инстаграме. В ней есть три этапа: сначала нужно понимать, что количество фотографий достаточно большое. С таким объемом данных нужно уметь работать и правильно их хранить. Этим занимается отдельный человек — дата-инженер. Корректнее будет сказать, что эта одна из его обязанностей. Второй этап: вам нужно сделать какую-то компьютерную магию (пока назовём это так), которая позволит вам найти те самые бутылки и определить марку алкоголя, тональность текста, какие-то такие вещи. В такого рода компаниях дата-сайентист занимаются этой работой. Это прежде всего работа с моделями и программами, связанными с большими данными, нахождением паттернов в больших данных сложной структуры. Задача дата-сайентистов просто найти эти паттерны, не анализировать их. Однако сама эта задача уже достаточно сложна и трудоемка. Дальше всё, что они находят, они передают аналитикам которые на этом материале проводят анализ, привлекают какие-то другие источники, рисуют графики, пишут отчет, отдают его заказчику и так далее. То есть работа дата-сайентиста направлена на выявление чего-либо, и сама модель может являться конечным продуктом такой работы. Заказчик может сказать, что мне не нужна аналитика, мне нужна модель: легче всего это представить, когда работа делается для внутреннего заказа, когда компания для самой себя что то разрабатывают. И вот здесь нужно понимать, что чем больше компания, тем больше, в общем, нужны специалисты от третьего к первому. В совсем маленьких, грубо говоря, вчерашних стартапах, связанных с маркетинговыми исследованиями, чаще всего обычно просто работают какие-то аналитики, которые сами у себя все и делают: и данные выгружают, и модели строят, и пишут на них отчеты. Чем компания становится больше, тем больше у нее может возникнуть потребность в работе с большими данными и сложными моделями. Появляется потребность в дата-сайентистах. А поскольку у нас существуют большие данные и сложные модели, нам уже нужен третий работник - хранитель данных, то есть data engineer.
Из всего того, что я говорю, во-первых, следует, что тут много терминов. И второе — они в достаточно сложных взаимоотношениях друг с другом. Как область data science вроде существует уже долгое время, но на массовый рынок в России она вышла относительно недавно. Все о чем мы говорим, это некоторая конвенция, хоть и достаточно устойчивая.
Под компьютерной магией ты какой набор методов подразумеваешь? Есть ли четкая граница между статистическими методами и методами машинного обучения?
Тут прозрачная грань. Например есть такой популярный метод – логистическая регрессия. Социологов учат, что это статистический метод. На курсах по data science вы узнаете, что это (если сильно упростить) один из фундаментов архитектуры нейронных сетей. Логистическая регрессия изначально разрабатывалась не как элемент статистического анализа данных, а как элемент предсказания и многоступенчатого компьютерного анализа, если угодно. Есть интересный цикл статей на Хабре о том, как рождался персептрон (специфическая логистическая регрессия, если угодно) во время одной из первых волн интереса к искусственному интеллекту. Если мы дальше начнём разбирать все сложные элементы машинного обучения, то увидим, что в их основе лежат множество знакомых приёмов из областей статистики или матанализа.
Как ты видишь разницу между data science в академии и индустрии?
Я не знаю. Я работаю в академии больше как исследователь. Если мыслить себя в рамках индустрии, то, конечно, я ближе всего к позиции аналитика данных. Да, я делаю различные модели, использую какие-то методы, но это не делает меня дата-сайентистом с точки зрения индустрии. Но если вы работаете в аналитике, ничто не мешает уйти в академию и начать работу, связанную с социальными науками. Когда вы дата-сайентист или аналитик, результат вашей работы – хорошо работающая модель или просто аналитика, которая удовлетворяет требованиям заказчика. В академии у вас совсем другая планка качества. Это академическая целесообразность вашего текста: в академии ключевая ваша работа это писать тексты. И ваша модель никогда не может быть целью, а может быть, лишь средством. Цель вам ставит какая-то теория или исследовательская повестка.
Здесь можно вспомнить о таком исследовательском поле, как computational social science. У них недавно выходило пара хороших сборников, и есть журнал, который существует с 2018 года и во многом формирует эту дисциплину. Что это такое? Какая разница с обычными социальными науки? В CSS работают преимущественно исследователи из технических или бывших естественных наук, а также психологи. Если почитаете этот журнал, то это легко увидеть: вопросы, которые выдвигают авторы, ставятся вне конвенциональной социальной теории. Строго говоря, это вообще не является социологией или социальными науками. Они ставят вопросы либо из здравого смысла, либо исходя из той парадигмы, которая продиктована науками, из которых они вышли. Они ставят вопросы о том, как будет работать определенная модель с данными из общества и достигают при этом превосходных результатов. Зачастую по статьям или выступления на конференциях по CSS видно, что получение самой по себе модели — это уже очень важно в этом сообществе. Даже в отрыве от какой-либо теории. Как следствие из-за этого происходит такая экспансия эпистемологии из естественных и технических наук в науки социальные. По computational social science открывается все больше и больше программ, так что можно предположить, что эта область становится все более и более популярной. Человек, окончивший такую программу будет востребован как в академии, так и в бизнесе.
Возвращаемся к данным. У многих бывает страх, что если они начнут заниматься анализом данных, какими-то языками программирования, то они наткнуться на то, что они плохо знают математику и в любом случае без нее они далеко не уйдут. Твоя точка зрения на этот счет?
У меня есть хорошая новость и плохая. Хорошая состоит состоит в том, что когда мы говорим о программировании, то есть работе с компьютером как таковым, то об этом логичнее говорить как об изучении нового языка. Считайте, что это китайский или любой другой сложный язык. Хотя, на самом деле не настолько и сложный. Особенно если вы знаете, английский: некоторые языки, допустим SQL, изначально писались так, чтобы были максимально понятны стороннему человеку. То есть они буквально воспроизводят логику построения высказываний в английском языке.
Другая хорошая новость: в большинстве курсов, с которыми вы можете столкнуться в настоящее время, математика дана в таком виде, в котором она будет очень просто усваиваться. Кстати, на ПАНДАНе это очень важная тема: как дать математику в достаточном количестве, но так, чтобы это было просто и понятно человеку, который давно с ней не соприкасался и ничего не помнит. Третья хорошая новость: когда вы смотрите какие-то фильмы про программистов, где у вас человек в очках смотрит в черный экран с белыми буквами, и все это выглядит страшно, непонятно и эффектно. Конечно же, такой образ и раньше был несколько карикатурным, но все-таки хоть как-то имел отношение к действительности. Сейчас даже сложные алгоритмы и модели, которые вы можете использовать в анализе данных, очень понятны и просты в использовании. Возвращаясь к метафоре языка, можно сказать, что если вы поедете в незнакомую для вас страну в условных 90-х годах, вам бы действительно пришлось зубрить все слова, учить, как они работают друг с другом и так далее. Конечно, это круто – в итоге вы выучите язык. Но если ваша задача просто пожить в стране какое-то время, то зачем вам учить все тонкости орфографии и пунктуации? В настоящее же время, вы сможете работать с разговорниками, причем максимально детализированными. Когда на каждый запрос вы сможете найти нужную фразу, которую почти полностью можете прочитать и получите похожий эффект. С программированием похожая ситуация. К сожалению, это рождает и проблемы: если вы не знаете каких то основ и слишком поверхностно относитесь к этому, то далеко вы не уйдете. Да, вы сможете работать с анализом данных или даже в дата-сайенс, но дальше каких-то стажировок и стартовых позиций без самообразования вам будет тяжело. Это три положительных новости.
Новость отрицательная одна и достаточно существенная: анализ данных покоится на статистике, математическом анализе и линейной алгебре. Есть еще много чего, но обычно дают вот эти три области. Если вы их не знаете, то вы просто можете очень многого не понять. Нужно готовиться к тому, что все равно этому придется учиться. При этом не нужно относиться к этому, как к чему то ужасному и страшному. Когда вы понимаете, что за абстрактными формулами стоят совершенно конкретные вычисления, которые вы тут же на компьютере можете сделать и получить какой-то красивый график, который ответит на ваш внутренний вопрос, то и эти сами абстрактные формулы вдруг для вас станут очень живыми и интересными.
Что ты думаешь о проблеме двуязычия в анализе данных: я имею в виду, конечно, R и Python. Есть ли здесь проблема? Как на ПАНДАНе распределен баланс между языками? Как правильно распределять усилия тем, кто начинает?
Для начала я бы сформулировал саму проблему. У нас есть область анализа данных с определенным спектром возможных задач. Этот спектр задач с большим количеством оговорок, но все таки примерно одинаково решают два языка программирования, которые, с точки зрения использования схожи между собой. Это библиотека Pandas в Python и R. И вот здесь вопрос: а что учить, как и с чем работать? Почему вообще так сложилось, почему два языка? Вы видите, что вокруг все объявления о курсах про Python. Почему это так? На этот вопрос можно отвечать с разных позиций. Насколько я понимаю, опытный аналитик, у которого за плечами много разных исследований в разном формате, скажет, что абсолютно без разницы, на каком языке вы кодите. Важно, на каком языке кодит ваша команда, чтобы вам было проще друг с другом коммуницировать, но даже и это, в целом, может быть, не столь важно, если вы показываете нужный результат.
Иногда некоторые операции вообще проще сделать в каком-нибудь Excel. Вместо того, чтобы писать код для таблицы в вашем языке программирования, вы можете, если она небольшая, просто набить ее от руки в Excel. В индустрии можно работать на двух языках: сделал один этап в одном языке, следующий этап в другом и проч. Это рождает некоторые сложности, но в этом нет ничего критичного, насколько я могу судить.
В каких случаях какой язык лучше: R или Python? Опять же я же не дата-сайентист, я исследователь из академии и смотрю со своего дерева. Моя гипотетическая теория вытекает из того, что я вижу, какие дискуссии идут в сообществе одного и другого языка. Изначально у того, что мы называем анализом данных, можно проследить два социальных корня: в индустрии и в академии. Дальше у нас рождается популярность разных статистических языков для анализа данных. Долгое время нишу одного из ведущих языков в середине 2010-х занимал язык R. Он изначально был написан академиками для академиков и был создан для работы с объяснительными моделями. В какой-то момент в Python появилась такие библиотеки как Pandas и Numpy с различными настройками и расширениями, которые позволяют качественно делать анализ данных. Python открыл для себя эту нишу, но по сей день Python проигрывает в скорости вычислений и лаконичности кода. Казалось бы, почему тогда мы называем их равными, если Python более востребованный сейчас? Так получилось, что в середине 2010-х у нас активно начинает цвести машинное обучение в индустрии. Машинное обучение развивается, как и вообще все в программировании, благодаря сообществам. Я был бы рад, если мне кто нибудь расскажет, почему так сложилось, но сообщество Python оказалось более шустрым и питонисты занимали чуть более важные должности с точки зрения развития индустрии машинного обучения и анализа данных. В итоге Python последние года три, особенно в России за счет популярности курсов по машинному обучению, занял доминирующие позиции. Если вы откроете 90% курсов по анализу данных и машинному обучению на русском языке, вам предложат все это делать в Python. R сохраняется как доминирующий язык в академии — особенно, в исследованиях, связанных с классической статистикой. В первую очередь в медицинских эпидемиологических исследованиях и биоинформатике разного рода. Во вторую очередь — в среде экономистов и статистиков.
Получается такая картинка: у нас есть академия, которая больше заинтересована в объяснениях и классических статистических методах и индустрия, больше заинтересованная в предсказаниях и машинном обучении. В первой популярен R, во второй Python. В России к этому еще накладывается то, что, на мой взгляд, ряд ведущих российских IT компаний намеренно развивали рынок онлайн курсов в России через курсы по Python. R считается важным языком, но не для широкого круга. Если вы хотите пойти со стартовых позиций на какую-то работу, связанную с анализом данных, без Python вам куда-то будет сложно уйти. И тут встает вопрос: что учить в первую очередь? У меня на него нет хорошего ответа. Если вы выучите хорошо на хорошем уровне и разберётесь с одним языком программирования, то с остальными вам будет куда проще. Это как с обычными языками: выучите один язык романской группы и все остальные для вас будут уже, намного более простыми. Учите то, на что вы бы хотели ориентироваться: если вы человек который будет заниматься аналитикой в фармкомпаниях, медицине и хотите работать с классической статистикой, попробуйте R. Если вы просто проходите какие-то курсы с ориентацией на то, что после них устроиться на работу в компанию с более широким спектром задач, то, скорее учите Python. На ПАНДАНе мы пытаемся выстроить какой-то баланс этих языков. Прямо скажем, выстраивается он тяжело, но, в общем, на текущем моменте он сохраняется. Так что, все вещи, связанные с дата-сайенс, у нас преподаются в первую очередь на Python, а предметы связанные с классической статистикой, экспериментами в социальных науках, эксплораторативным анализом данных — на R. Эксплоративный анализ я лично предпочитаю делать в R.
Беседу записал Сергей Машуков.