Компьютер для дата сайнс
Я работаю в сфере автоматической обработки естественного языка, одного из приложений data science, и часто наблюдаю, как люди не совсем корректно употребляют эти термины, поэтому мне захотелось внести немного ясности. Эта статья для тех, кто плохо представляет себе, что такое data science и хочет разобраться в понятиях.
Начнем с того, что на самом деле никто точно не знает, что такое data science, и строгого определения не существует – это очень широкий и междисциплинарный концепт. Поэтому здесь я поделюсь своим видением, которое совсем не обязательно совпадает с мнением других.
Термин data science на русский переводят как «наука о данных», а в профессиональной среде часто просто транслитерируют – «дата сайенс». Формально это набор некоторых взаимосвязанных дисциплин и методов из области информатики и математики. Звучит слишком абстрактно, правда? Давайте разбираться.
Технические навыки
— Советую начинать именно с них, чтобы вы сразу ориентировались на практику, а не уходили в математическую теорию. Самый популярный язык программирования в DS — Python. По опросу Kaggle, который площадка проводила внутри своего сообщества специалистов по обработке данных и машинному обучению в 2018 году, 83% респондентов используют Python ежедневно. Поэтому в первую очередь изучите его, но немного внимания нужно будет уделить кое-каким другим языкам. Например, R.
Основы Python
В сети масса бесплатных вводных курсов, но лично я считаю, что лучшие — это курсы Codecademy: в них много практических заданий, все они выполняются в браузере.
Предлагаю пройти вот этот вводный курс по Python. Здесь изложены основы синтаксиса, функции, поток управления, циклы, модули и классы.
Python и анализ данных
Далее нужно очень хорошо разобраться с тем, как Python используют в анализе данных.
- Для начала пройдите хотя бы бесплатную часть материалов по анализу данных на dataquest.io. Этот ресурс предлагает полноценные учебные программы по подготовке дата-аналитиков, дата-сайентистов и дата-инженеров.
- Очень много контента, особенно по анализу данных, находится в бесплатном доступе, но если вы захотите выучиться побыстрее и не пожалеете денег, то очень рекомендую оформить подписку на несколько месяцев. Этот курс заложит прочный фундамент для дальнейшего изучения DS. Я прошла программу для дата-сайентистов за полгода. Цены у Dataquest в диапазоне от $24,5 до $49 в месяц в зависимости от того, на какой срок покупать подписку (годовая — дешевле).
Dataquest — Learn Data Science
Missed our Black Friday sale? It’s back for a few more days for #CyberWeek. Now through Friday, save big when you make an investment in yourself.View plans: buff.ly/35T4IG8
Опубликовано Dataquest Вторник, 3 декабря 2019 г.
Python и машинное обучение
- По возможности не скупитесь на полный курс по DS на Dataquest: он даст вам крепкую базу по использованию Python в машинном обучении. В противном случае есть множество бесплатных источников. Начинайте со scikit-learn — это, пожалуй, самая популярная ML-библиотека для Python.
- Ещё мне повезло попасть на двухдневный воркшоп Андреаса Мюллера, одного из ключевых разработчиков scikit-learn. Материал того курса (и не только) он целиком выложил на GitHub. Здесь есть наглядная графика, конспекты и заметки, над которыми можно поработать самостоятельно, что я вам настоятельно рекомендую.
- Стоит ознакомиться с некоторыми туториалами из документации scikit-learn, после чего уже можно попробовать делать настоящие ML-приложения и разбираться с тем, как устроены ML-модели (но об этом позже).
SQL — обязательный навык для дата-сайентиста, так как одним из ключевых процессов моделирования данных является, прежде всего, их извлечение. В большинстве случаев вам будет нужно уметь запускать SQL-запросы к базам данных.
Вот пара бесплатных ресурсов для тех, кто решил не брать полный курс на Dataquest.
-
есть на Codecademy. Он очень удобный, кодить нужно не выходя из браузера.
- Тем, кто интересуется облачными базами данных и отправкой запросов в них, рекомендую заглянуть на Google Cloud BigQuery. Здесь есть пробная версия (можно потренироваться бесплатно), доступ к обширному массиву публичных датасетов и толковая документация.
Не ограничивайтесь Python: дата-сайентисту очень полезно владеть языком R, поэтому советую пройти вводный курс ещё и по нему.
Бесплатный вариант есть на Codecademy. Стоит отметить, что эта площадка тоже предлагает комплексную программу по подготовке дата-сайентистов, но только по подписке на тариф Pro. Стоит она от $15,99 до $ 31,99 в месяц — смотря на сколько месяцев вперёд платить. Лично мне курс Dataquest показался гораздо более содержательным, хотя здесь может получиться немного дешевле, если вы предпочитаете заниматься по одной платформе.
Разработка программного обеспечения
Дата-сайентисту будет нелишним освоить навыки и лучшие практики разработки софта: это улучшит читабельность вашего кода, и его будет проще дополнять — как вам самим, так и другим. Кроме того, чтобы выкатывать модели в продакшн, нужно научиться генерировать качественный, хорошо проверенный код и работать с такими инструментами, как системы контроля версий.
В помощь вам — два ресурса:
-
охватывает руководство PEP 8, которое описывает общепринятый стиль оформления кода на Python, документацию, и ещё в нём очень сильная часть про объектно-ориентированное программирование. — о том, как вносить вклад в разработку scikit-learn. Здесь здорово разобраны лучшие подходы и принципы, которые на самом деле универсальны и применимы не только к этой библиотеке. Затрагивается GitHub, юнит-тестирование и отладка кода, причём всё рассмотрено в контексте DS.
Глубокое обучение
Самое лучшее и развёрнутое введение в глубокое обучение дают авторы fast.ai — этот ресурс тоже бесплатный, и на нём совершенно нет рекламы.
Курс включает введение в машинное обучение, практические аспекты глубокого обучения, вычислительную линейную алгебру, а также введение в обработку естественного языка с акцентом на программирование. Все курсы на этом сайте объединяет прикладной подход, поэтому очень советую не проходить мимо.
Photo by Chris Liverani on Unsplash
Терминология
Чтобы понять выбранное направление, требуется уточнить в первую очередь некоторые термины. Они крайне важны для будущего специалиста «по анализу больших данных». Вследствие работы будут встречаться повсеместно:
- Искусственный интеллект – способ, при помощи которого машины учат «думать» и принимать те или иные решения. Применяется при персонализации, а также в двойниках и имитации человеческого мышления. Некий метод автоматизации принятия решений.
- Машинное обучение – процесс создания инструментов для того, чтобы из данных извлекать знания. Сюда относят: распознавание образов, рекомендательные системы, предиктивные алгоритмы, перевод графики в текст, синтез текстовых data.
- Глубокое обучение – создание нейронных сетей многослойного типа в сферах, где требуется более быстрый и продвинутый анализ. В этом случае традиционное машинное обучение не справляется с поставленными задачами. Применяется в «масках» утилит, синтезе звука, голоса или картинок.
- BigData – большой объем информации разного вида. Совокупность подходов к невероятным по масштабам размеров неструктурированных материалов, которые поступают от источников постоянно и непредсказуемо.
- Data Science – придание смысла и понимания электронным материалам, их обработка, способ найти полезное в общей неструктурированной массе. В процессе часто задействуются облачные вычисления, а также инструментарий для создания виртуальных сред разработки.
Стоит обратить внимание на то, что при рассмотрении выбранного направления могут пригодиться языки программирования, а также познания в сфере информационных технологий и IT. Специфика направления – системы и инструменты, которые могут выдерживать огромную (повышенную) нагрузку.
Что знают и умеют дата-сайентисты
Вот начальный список навыков, знаний и умений, которые нужны любому дата-сайентисту для старта в работе.
Математическая логика, линейная алгебра и высшая математика. Без этого не получится построить модель, найти закономерности или предсказать что-то новое.
Есть те, кто говорит, что это всё не нужно, и главное — писать код и красиво делать отчёты, но они лукавят. Чтобы обучить нейронку, нужна математика и формулы; чтобы найти закономерности в данных — нужна математика и статистика; чтобы сделать отчёт на основе большой выборки данных — ну, вы поняли. Математика рулит.
Знание машинного обучения. Работа дата-сайентиста — анализ данных огромного размера, и вручную это сделать нереально. Чтобы было проще, они поручают это компьютерам. Поручить такую задачу — значит настроить готовую нейросеть или обучить свою. Поручить программисту обычно это нельзя — слишком много нужно будет объяснить и проконтролировать.
Программирование на Python и R. Мы уже писали, что Python — идеальный язык для машинного обучения и нейросетей. На нём можно быстро написать любую модель для первоначальной оценки гипотезы, поиска общих данных или простой аналитики.
R — язык программирования для статического анализа. Если вам нужно прикинуть, как лайки на странице зависят от количества просмотров или до какого места читатель гарантированно долистывает статью (чтобы поставить туда баннер), — R вам поможет. Но если вы не знаете математику — не поможет.
R и статистика в действии. Картинка с Хабра.
Умение получать и визуализировать данные. Не всем дата-сайентистам везёт настолько, что они сразу получают готовые наборы данных для обработки. Чаще всего они сами должны выяснить, где, откуда, как и сколько брать данных. Здесь обычные программисты им уже могут помочь — спарсить сайт, выкачать большую базу данных или настроить сбор статистики на сервере.
Второй важный навык в этой профессии — умение наглядно показать результаты работы. Какой толк в графиках, если никто, кроме автора, не понимает, что там нарисовано? Задача дата-сайентиста — представить данные наглядным образом, чтобы зрителю было легче сделать нужный вывод.
Связи в твиттере некоего Скотта Белла. Явно видны несколько разных групп фолловеров, которые мало пересекаются между собой. Это и есть наглядное представление данных.
Маст-хэв скиллы для дата-сайентиста
Сегодня мы рассмотрим семь критически важных навыков которыми должен обладать каждый дата-сайентист. Вот полный список:
Креативность и критическое мышление
В повседневной работе задачи для дата-сайетитста очень часто слабо определены, особенно на старте проекта. Для того, чтобы приносить пользу специалист также должен обладать достаточно обширными знаниями в конкретной предметной области.
Например, как ты будешь разрабатывать модель для анализа кредитного риска, если ничего об этом не знаешь? И даже если ты будешь делать всё правильно и следовать лучшим практикам в дата-сайенс, вряд ли ты сможешь добиться желаемого результата. Как следствие, твоя модель будет работать не оптимально, и ты не будешь знать, что с этим делать.
Вот в таком случае тебе и пригодится креативность и критическое мышление. Дата сайентист должен уметь обрабатывать огромное количество информации в короткий промежуток времени. Имея команду креативных людей, появляется возможность создавать решения о которых никто раньше и не мог и подумать.
Критическое мышление же поможет тебе копать глубже и всегда задавать правильные вопросы, чтобы выявлять возможные предрассудки и заблуждения.
Математика и статистика
То, как много математики тебе будет попадаться в ежедневной работе зависит от конкретной позиции. Чаще всего в дата-сайенс ты будешь сталкиваться в этими четырьмя разделами математики:
Наиболее важные математические навыки в дата сайенс
Это определенно не те темы, которые можно выучить за неделю, особенно учитывая, что весь этот список входит в университетскую программу технических специальностей.
Но это совсем не означает, что теперь тебе придется провести весь следующий год занимаясь глубоким изучением этих предметов, а вот основы знать необходимо. Для джуниор уровня будет достаточно понимания, как применять эти темы на практике в дата сайенс и интуиции. А вот если ты претендуешь на высокоуровневую позицию исследователя данных, то эти предметы должны быть твоей второй натурой.
У тебя в любом случае будет как минимум несколько лет для роста от джуна до синьора, поэтому тебе должно хватить времени, чтобы изучить эти темы более глубоко. И одна из самых приятных особенностей – ты можешь обучиться всему этому самостоятельно и бесплатно, но на английском. Вот ссылки на хорошие открытые онлайн курсы:
Программирование
Ни математика, ни статистика, ни критическое мышление не помогут тебе, если ты не знаешь, как выражать свои мысли с помощью языка программирования. Давай посмотрим, какие языки чаще всего применяются в анализе данных:
Наиболее часто используемые языки программирования в дата сайенс. Данные взяты из результатов опроса The 2019 Kaggle ML and Data Science Survey
Если в двух словах, то Python и R – лидеры индустрии. При этом SQL используется чаще, чем R, но это связано с другой причиной, которую мы обсудим чуть позже в этой статье.
Если ты только начинаешь изучать программирование, то у меня для тебя отличные новости – и Python, и R достаточно легки в изучении. В то же время, если ты до этого изучал какой-либо императивный язык (например, C# или Java), то переучиться с них тоже не составит большого труда.
В конце концов, Python разрабатывался для обучения основам программирования детей, так что это не должно составить большой сложности для такого хорошо образованного человека как ты, не так ли?
Анализ данных и визуализация
Для того чтобы эффективным дата-сайентистом, необходимо иметь отличные навыки в анализе данных и визуализации. Основная цель твоей работы – рассказать историю, и никто не захочет читать её, если она неполная и плохо представленная.
К счастью, существует огромное количество готовых для использования пакетов для анализа и визуализации данных как для Python, так и для R. Наиболее популярный пакет для анализа для Python – pandas, а для R – dplyr.
Когда дело доходит до визуализации, то большинство сходится во мнении, что R здесь выигрывает — визуализация выглядит лучше, особенно если используются настройки по умолчанию. Наиболее популярная для этого библиотека – ggplot2. Здесь можно найти несколько обучающих уроков по работе с ней.
Таким образом, хорошее знание анализа и визуализации данных – жизненно необходимо. И для этого недостаточно просто уметь писать код, необходимо уметь задавать правильные вопросы. Как раз здесь и пригодятся критическое мышление и креативность.
Машинное обучение
Ну а теперь самое время для наиболее хайповой темы. Машинное обучение получило невероятно широкое распространение в последние годы. При этом сама концепция появилась достаточно давно, примерно в 1950 году, но популярность приобрела недавно, из-за увеличения вычислительной мощности компьютеров, которые стали доступны повсеместно.
Как результат, большинство компаний включили машинное обучение в свои ключевые сервисы. Оно применяется от элементарной классификации цветов до автономных систем управления автомобилями.
Применение машинного обучения безгранично, поэтому невозможно создать универсальный способ обучения, который подходил бы и для бизнеса, и для разработчиков. Но вот начать учебу с базовых основ точно никому не повредит. Здесь можно найти несколько статей, которые рассказывают о машинном обучении на языке программирования R.
К сожалению, изучить машинное обучение по нескольким статьям или даже книгам невозможно. Это огромная и быстро развивающаяся область знаний, которая требует много сил, времени и энергии на изучение.
Базы данных
Скорее всего ты не будешь работать с CSV или Excel файлами постоянно. Вместо этого данные будут храниться в базах данных. Существует множество различных вендоров баз данных, например Microsoft, IBM или Oracle, но все они имеют кое-что общее – это SQL.
Этот язык используется для хранения, получения и манипуляции данными в базах данных. Синтаксис SQL может немного отличаться в зависимости от конкретного вендора, но эти различия достаточно небольшие, этому переучится с одного на другой у тебя не должно занять много времени, если вдруг ты решишь это сделать.
Ты можешь применять SQL как для простого получения данных, так и для сложных вычислений. Например, если ты предпочитаешь использовать для реализации логики языки программирования, то можешь с помощью SQL просто выгрузить данные в память, а все вычисления выполнять с помощью Python или R. Или же ты можешь реализовывать большинство операций непосредственно с помощью SQL, если тебе это больше нравится.
Второй подход более применим, если тебе важна скорость работы, но кроме того, в целом это считается плохим решением загружать лишние данные, которые тебе не нужны.
Изучение основ баз данных не должно отнять у тебя слишком много времени. С точки зрения Python и R, существуют несколько готовых для использования библиотек, которые позволяют подключаться к любой базе данных, будь то собственный сервер или облако. Обычно, эти библиотеки хорошо задокументированы, поэтому и подключение не должно вызывать сложностей.
Таким образом, изучив основы SQL ты научишься делать тяжелые вычисления в базе данных, и получать в свой Python или R код только нужные подготовленные данные.
Образование
Меньше 30% дата-сайентистов имеют диплом бакалавра и ниже, при этом около 20% имеют докторскую степень, основываясь на исследовании 2018 года. Короче говоря, наиболее распространенным и ожидаемым уровнем является диплом магистра.
На этой схеме увидеть общее соотношение уровня образования и должностей:
Распределение специалистов по профессиям и уровням образования
Это вовсе не означает, что ты совсем не сможешь получить работу дата-сайентиста без высшего образования, но это возможно только при двух условиях:
- HR не выкинет твое резюме сразу при первичном ознакомлении с ним, просто потому что у тебя недостаточный уровень образования и это не соответствует требованиям (поэтому имеет смысл обращаться в небольшие компании, хотя бы потому что у них иногда просто нет должного HR отдела)
- Если ты покажешь уровень знаний, которые окажется лучше всех остальных, кто также претендует на эту вакансию
Да, образование – это полезная вещь для дата-сайентиста, однако, какое образование? Давай посмотрим на эту схему:
Распределение специалистов по профессиям и направлениям обучения
Как можешь видеть, большинство дата-сайенститов имеют опыт и образование в области компьютерных наук, бизнеса или математики и статистики. Ожидается, что количество аналитиков данных с официальным образованием в области дата-сайенс будет расти по мере того, как все больше университетов будет предлагать эту специальность.
Как им стать
Учеба обязательна для этой профессии. Причем учиться надо много, долго и основательно. Для начала надо освоить азы математики, статистики и информатики, а дальше изучить языки программирования, лучше начать с Python.
На блоге iklife.ru собраны лучшие курсы по Python для начинающих и опытных программистов, которые будут полезны при освоении должности Data Scientist.
Также рекомендую вам прочитать следующие книги:
Куда пойти учиться
Лучшее обучение – это онлайн-обучение. Платформы Skillbox, Нетология, GeekBrains, SkillFactory, ProductStar и Stepik предлагают свои обучающие программы:
Уточню, что на этом учеба не должна заканчиваться. Data Scientist – это такая профессия, которая предполагает непрерывное обучение. Даже если вы уже работаете, периодически повышать свой уровень надо обязательно. К тому же выбор достаточно широк – это и онлайн-курсы, и тренинги, и конференции.
Где найти работу
Сложно сказать, где именно искать работу по этой профессии. Не из-за того, что мало мест, а, наоборот, потому что нет такой сферы бизнеса, где нельзя было бы применить талант этого специалиста. Ему доступна как работа в офисе, так и удаленно на дому.
Он востребован в таких областях деятельности как:
- IT-сфера,
- медицина,
- банковские структуры,
- СМИ,
- торговля,
- политика,
- транспортные компании,
- страховые фирмы,
- сельское хозяйство,
- наука,
- метеослужбы.
Как я уже говорила, Data Scientist нужен во многих сферах, где необходимы прогнозы, анализ рисков и поведения клиентов. Поэтому список можно дополнить.
Перед откликом на вакансию надо подготовить резюме. В нем сосредоточиться в первую очередь нужно на математических и IT-навыках, опыте работе, успешных проектах и достижениях. Описание должно получиться кратким, лаконичным и простым. Специалисту надо прикрепить портфолио к резюме.
Учтите, что вакансии на эту должность не всегда называются именно “Data Scientist”. Работодатели могут написать, что требуется IT-аналитик, специалист по анализу систем, аналитик Big Data.