{"id":14270,"url":"\/distributions\/14270\/click?bit=1&hash=a51bb85a950ab21cdf691932d23b81e76bd428323f3fda8d1e62b0843a9e5699","title":"\u041b\u044b\u0436\u0438, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a \u2014 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u0440\u0435","buttonText":"\u041d\u0430 \u043a\u0430\u043a\u043e\u0439?","imageUuid":"f84aced9-2f9d-5a50-9157-8e37d6ce1060"}

IT для неайтишников: Какими бывают IT-шники? Часть 8

Периодически мне задают вопрос: "Кто есть кто в мире ИТ?". Вопрос этот интересный и объёмный. Чтобы не рассказывать всё по много раз, я напишу несколько статей и буду на них ссылаться. Восьмая статья сверхплановая и будет посвящена Data Team, то есть аналитикам данных, «дата саентистам», специалистам по машинному обучению и прочим специалистам. Неожиданно тема оказалась дискуссионной, для рынка Data Science всё ещё в новинку и рынок ещё не до конца понял, что с этим можно делать. Тем не менее области уже многие десятки лет, попробуем разобраться в ней, исходя из первооснов.

Меня зовут Константин Митин. 15 лет занимаюсь коммерческой IT-разработкой, прошёл путь от простого программиста до сооснователя и руководителя группы IT-компаний (АйТи Мегастар/АйТи МегаБокс/АйТи Мегагруп). Успел побыть тим-лидом, руководителем филиала разработки крупной федеральной IT-компании. Являюсь одним из идеологов концепции IT~BP (партнёрство между IT и бизнесом).

Я не пишу продающие тексты и не являюсь копирайтером, в конце статьи не будет коммерческого предложения и призыва к действию. Мне более интересно делиться знаниями и опытом. Некоторым людям мои статьи кажутся слишком длинными, если вам более привычен формат небольших сообщений, то обратите внимание на telegram-канал Записки ITBP.

Наверное основные проблемы в понимании кто есть кто в Data Team связаны даже не с молодостью самой области Data Science, а с агрессивностью маркетинга да с интенсивностью использования англицизмов. Когда передаёшь смысл на простом русским языке, все начинает вставать на свои места.

На самом деле Data Science - это наука о данных. Данная дисциплина изучает жизненный цикл цифровых данных, обнаружение закономерностей в данных, извлечение знаний из данных в обобщённой форме. А ещё это один из разделов такой науки, как Computer Science, по русски говоря - информатики.

Интересная вещь, на рынке представлены «дата саентисты», но не представлены «компьютер саентисты», почему так? Ну, просто глупо делать вид, что программистов (информатиков) сложно найти. Однако, здесь есть один нюанс, который делает всю ситуацию весьма интересной и неоднозначной, но о нем несколько попозже.

Кроме того, в Data Team входит много «традиционных» разновидностей специалистов. Например, если в Data Team войдёт DevOps-специалист, то он от этого DevOps-специалистом быть не перестанет. От того, что мы для лидера команды разработки укажем его область специализации, получив тем самым Data Platform Team Lead, роль лидера команды разработки тоже мало изменится. Аналогично обстоят дела с Data Solution Architect, Data Architect, Data Integration Manager, Data Officer (CDO - Chief data officer) и другими разновидностями.

Поэтому имеет смысл рассмотреть такие специализации, как Data Engineer, Data Analyst, Data Scientist, ML Engineer, ML Researcher. Специализацию «аналитика» нужно рассмотреть, чтобы путаницы было меньше.

Но в начале нужно поговорить о науках и нюансах.

Информатика (Computer Science)

Давайте пройдёмся от общего к частному и затем выделим основную проблему области. Для примера я буду использовать пример своего образования, благо оно располагает к такому анализу. Почему приходится начинать с Computer Science? Потому что в ряде маркетинговых материалов заявляется, что Data Science это вовсе не про IT, а про что-то другое.

Я окончил факультет Прикладной математики и Информатики, на английском языке это будет звучать, как Applied mathematics and Computer science. То есть я и есть тот самый «информатик».

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

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

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

Но этого мало. Мало, потому что существует такая дисциплина, как математическая лингвистика, которая нацелена на обработку в том числе и естественных языков. Благодаря её существованию у нас есть распознавание речи человека и автоматический перевод с одного языка на другой.

Когда меня просят оценить стоимость, например, распознавания текста с помощью нейросетей, искусственного интеллекта и прочего, первым же вопросом, который я задам, будет звучать: «Зачем?». Для меня важно узнать, люди просто не знают, что есть цепи Маркова, которыми давно принято решать такие задачи, либо у них существует маркетинговая (не техническая) необходимость? В первом случае нужно подобрать оптимальный инструмент решения технической задачи, а во втором нужно показать маркетинговую картинку.

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

Если совсем просто, то моё образование в Computer science (информатике) позволяет отличить область, где нужно прибегать к помощи Data Science (науке о данных), а где нужны несколько иные средства.

Либо другой наглядный пример. У вас учебное заведение, в котором есть какой-то набор аудиторий, группы обучающихся и некоторое расписание занятий. Сводить это руками - очень большой труд. Поэтому возникает необходимость автоматизации. Казалось бы, всего дел-то, позвать программиста, пусть скрипт какой-нибудь напишет.

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

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

С наукой о данных похожая ситуация. Прежде всего нужно быть прикладным математиком (Applied mathematics), потом нужно быть компетентным в области информатики (Computer Science) и только после этого уже специализироваться в области науки о данных (Data Science). Иначе многие вещи, которые работают и приносят пользу у других, работать просто не будут.

Наука о данных (Data Science)

Это раздел информатики, который изучает проблемы анализа, обработки и представления данных в цифровой форме. Почему такой акцент на «цифровой форме»? Ну, надо как-нибудь попробовать проанализировать аналоговый сигнал, который непрерывный, в отличие от цифрового и дискретного. Методы анализа сильно отличаются.

Обычно речь идет об обработке больших объемов данных и статистических методах обработки. Понятие «больших объемов» несколько размытое. Прежде всего, это значит, что стандартных средств для сбора, хранения и обработки данных вам не хватит. В Excel они вряд ли влезут. Придется что-то обрабатывать в параллельном режиме в высокопроизводительных облаках. А так же большое внимание уделять способу хранения и обработки данных.

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

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

То есть мы будем использовать адаптированные под большие данные методы обработки данных. В целом, в этих методах нет ничего сложного, если есть математическое образование. А вот если его нет, то некоторые вещи начинают восприниматься, как «магия».

Если совсем все упростить, то целью науки о данных является выявление неких закономерностей в данных либо создание модели предсказаний. Чем больше данных, тем более шанс получить качественный результат.

Например, у нас есть данные по потреблению электроэнергии со всех электросчётчиков в городе с шагом в 1 минуту. Например, у нас 200 тысяч счётчиков, то есть за час мы собираем 12 миллионов показаний. Например, каждое показание имеет размер 64 байт (показание, время, служебная информация). Немного округлив получим 732 мегабайта в час. Либо чуть больше 17 гигабайт данных в день, чуть более 6 терабайт показателей электросчётчиков в год.

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

Важный вывод, кроме математической статистики и информатики нужно ещё понимать прикладную область, в которой работаешь. Важно учитывать эмпирические данные и не открывать секрет Полишинеля.

В целом, выявление внутренних закономерностей на больших объемах данных - это Data mining. Вещь полезная для бизнеса, например, с его помощью банки могут выявлять мошенников с кредитными картами, а налоговая может вычислять кандидатов на внеочередную проверку.

Но бизнес чаще всего интересуют предиктивные модели, то есть способ заранее предсказывать поведение рынка. Здесь возникает другая проблема. Данных не только много, но и сама наблюдаемая система меняется. То есть в системе медленно, но заметно, меняются внутренние закономерности. Значит, наша модель должна меняться вместе с рынком, то есть наблюдать за рынком и переобучаться.

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

А потом просто периодически дообучаем систему на свежих данных. Либо просто настраиваем автоматический процесс дообучения модели. То есть меняется рынок, меняется наша модель. Если на рынке все изменения происходят плавно, то инструмент более, чем рабочий. Если могут резко возникать новые закономерности, то инструмент в какой-то момент перестанет работать.

С точки зрения математики и информатики всё не так уж сложно. Есть задачи посложнее. С точки зрения бизнеса, мы только только начали осваивать этот инструмент.

И еще. Когда я был в магистратуре, в одной из летних школ по параллельным вычислениям от компании Intel мы разбирали нейросети по распознаванию человеческих лиц. Тогда это воспринималось, как некоторое упражнение без прикладного смысла. Почему без прикладного смысла? Потому что любая нейросеть имеет процент ошибок, потому что есть детерминированные (не статистические) алгоритмы распознавания человеческих лиц по антропологическим параметрам с точностью близкой к 100%. Правда, часть таких алгоритмов являются коммерческой тайной, часть тайной государственной.

Не все задачи нужно решать статистическими методами, иногда есть методы проще, быстрее и эффективнее.

Кто же такой Data Scientist?

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

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

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

Надо понимать, что наука о данных (Data Science) - это очень наукоемкая вещь. Для этого недостаточно просто уметь настраивать по шаблону какой-то из инструментов, для этого необходимо понимать что и зачем ты делаешь. Без этого полезный результат бывает очень сложно получить.

Есть и другой эффект. Человек - это самообучающаяся система. В какой-то момент появляется насмотренность, потом начинает работать интуиция (работает подсознание человека). Именно поэтому аналитик из сферы финансов, который является экспертом в своей области, вооружившись Excel и простейшим математическим аппаратом, может достигать более значимых результатов, чем хороший Data Scientist. Нельзя забывать, что та же нейросеть это экстремально сильно урезанная и упрощённая модель мозга человека.

То есть если вы возьмёте хорошего эксперта в прикладной области и обучите его базовым методам Data Science, то вы получите неплохой результат, именно за счет высокой экспертизы в прикладной области.

Если вы возьмёте просто человека со стороны и просто обучите его основам Data Science, на значимый результат лучше не рассчитывать.

Второй момент, хороший Data Science всегда будет стремиться погрузиться в предмет изучения. Если это финансы, то он будет знать финансы, если это медицина, то он будет знать медицину. Эмпирические данные очень важны, они ускоряют получение результата.

Если взять за основные характеристики владение математическим аппаратом, знание прикладной области и умение оперировать информационными потоками, то Data Scientist всё это умеет делать хорошо. Именно этим он и ценен.

Такой человек будет одинаково легко говорить и с бизнесом, и с технической командой, и с учёными.

Дата-инженер (Data Engineer)

Данный вид специалистов занимается ETL-процессом (Extract, Transform, Load — извлечение, преобразование, загрузка). То есть процессом сбора/извлечения данных из внешних источников, их очисткой и трансформацией в пригодный для обработки вид и сохранением данных в хранилище.

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

Основная проблема таких специалистов это большой объем данных. Как минимум, их нужно где-то хранить. Когда мы говорим «много данных», то скорее всего нам уже не подходят реляционные (SQL) базы данных. они плохо реагируют на десятки миллионов записей в таблицах.

Если вы помните пример с электросчётчиками, то там более 105 миллиардов записей. Даже если применить шардирование таблиц (склеивать одну большую таблицу из множества небольших таблиц), то все равно это большой объем для реляционной базы данных.

Отсюда таким людям приходится знакомиться с noSQL базами данных, с распределенными базами данных, либо просто с экзотическими базами данных. Им приходится продумывать архитектуру хранения данных. Ведь их мало сохранить, их нужно же еще обрабатывать/анализировать.

Для того, чтобы данные где-то сохранить, их нужно откуда-то собрать и как-то доставить. То есть нужно заниматься и системой сбора и предварительной обработки данных. Например, мы хотим сворачивать данные, не работать с показаниями раз в минуту, а работать с показателями раз в сутки. То есть лишние данные мы просто откинем, и у нас будет всего 73 миллиона показаний за год.

Аналитик данных (Data Analyst)

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

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

Аналитики данных совместно с бизнесом будет выдвигать какие-то гипотезы, а затем будет проверять их на имеющемся наборе данных. Либо ставить технической команде задачу по получению определённого вида данных.

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

Инженер по машинному обучению (Machine Learning Engineer)

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

В целом, обучить даже готовую модель - это интересное занятие. Как минимум, это можно делать неправильно, неудачно либо удачно. Многое зависит от обучающей выборки. У модели и качества её обучения есть метрики, в них нужно уметь попадать. Есть тестовые наборы данных, ими нужно уметь пользоваться для проверки.

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

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

В Новосибирске какое-то время работал филиал интересной западной компанией, которая занималась высокочастотной биржевой торговлей. У них был целый штат специалистов, которые создавали и обучали нейронные сети для торговли на бирже.

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

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

Исследователь машинного обучения (Machine Learning Researcher)

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

Это редкая специализация. Такие люди скорее занимаются научной работой, нежели чем-то еще. То есть это просто учёный. Хотя не все так просто.

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

Если у вашей компании возникла потребность в таком человеке, то значит у вас в штате уже есть хорошие Data Scientist, которые на тему этой статьи могут дать более развёрнутый ответ.

Подводя итоги

Это заключительная часть статьи «Какими бывают IT-шники?». Здесь мы разобрались, что такое Computer Science и Data Science. Затем рассмотрели 5 специализаций, которые можно встретить в Data Team.

Всего в рамках статьи было рассмотрено 27 различных специализаций. С одной стороны выглядит большим объёмом, тем более что понадобилось разбить статью на 8 частей. Попутно пришлось объяснять смежные вопросы, где-то чем проект отличается от продукта, что такое процесс обеспечения качества, что такое IT-архитектура и какие разновидности у нее бывают. Здесь пришлось объяснять почему Data Science это часть Computer Science. Иногда люди недооценивают эту область и считают, что им хватит Excel либо просто Jupyter Notebook. Нет, не хватит, это наукоемкая область, быстро этому не научишься.

С другой стороны, нельзя сказать, что список специальностей получился полный. Можно просто с ходу спросить, а кто такой SRE-инженер, после чего начинать писать отдельную статью. Кроме того, есть еще разделение внутри специальностей. Разработчик на Python очень сильно отличается от разработчика на JS. А Full Stack разработчик, который пишет и на Python, и на JS очень сильно отличается от первых двух.

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

Список других частей этой статьи и ссылки на другие статьи из серии «IT для нейтишников» приведены ниже.

Если вы дочитали до конца и написанное было для вас полезным, то спасибо вам.

Полезные материалы по теме:

0
1 комментарий
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда