Привет, Хабр!
В этой статье рассмотрим план становления начинающим дата-сайнтистом.
Data Science, как и любая бурно развивающаяся область постепенно растёт, и сейчас люди могут подразумевать под DS много всего разного. Поэтому для начала определимся, кого мы будем называть "дата-сайнтистом". Ему и посвящается данный roadmap.
Итак, наш сферический дата-сайнтист в вакууме знает:
специфику бизнеса и доменной области
английский на базовом уровне (читать доки)
азы матана, статистики, линала, теорвера
умеет:
программировать на Python, R, SQL
работать с базами данных
коммуницировать с коллегами и презентовать результаты своей работы
Типичный набор шагов DS-специалиста для решения задачи:
Прояснить требования к бизнес-задаче и перевести её в математическую плоскость.
Подготовить данные для решения задачи: разобраться, откуда их взять, и как обработать, чтобы они стали доступны для работы.
Проанализировать и структурировать данные.
Построить модель машинного обучения, которая будет решать задачу.
Проверить правильность работы модели: внедрить на наборе пользователей или провести A/B-тестирование.
А вот реальные кейсы из жизни дата-сайнтиста:
Кейс 1
Заказчик — кредитный отдел банка. Нужно разобраться, влияет ли семейное положение и количество детей клиента на факт погашения кредита в срок. Входные данные от банка — статистика о платёжеспособности клиентов. Результаты исследования будут учтены при построении модели кредитного скоринга — специальной системы, которая оценивает способность потенциального заёмщика вернуть кредит банку.
Кейс 2
В вашем распоряжении данные сервиса Яндекс.Недвижимость — архив объявлений о продаже квартир в Санкт-Петербурге и соседних населённых пунктах за несколько лет. Нужно научиться определять рыночную стоимость объектов недвижимости. Ваша задача — установить параметры. Это позволит построить автоматизированную систему: она отследит аномалии и мошенническую деятельность.
Кейс 3
Вы аналитик компании «Мегалайн» — федерального оператора сотовой связи. Клиентам предлагают два тарифных плана: «Смарт» и «Ультра». Чтобы скорректировать рекламный бюджет, коммерческий департамент хочет понять, какой тариф приносит больше денег. Вам предстоит сделать предварительный анализ тарифов на небольшой выборке клиентов. В вашем распоряжении данные 500 пользователей «Мегалайна»: кто они, откуда, каким тарифом пользуются, сколько звонков и сообщений каждый отправил за 2018 год. Нужно проанализировать поведение клиентов и сделать вывод — какой тариф лучше.
В защиту "оторванной от жизни" теории. Кто-то может добавить, что некоторые задачи DS довольно шаблонные. Мол, не стоит месяцами упарываться над теорвером, линейной алгеброй и прочими теоретическими, оторванными от жизни, штуками. Но. Смею возразить, что в критических ситуациях именно чуть более глубокое знание матана или чего бы то ни было поможет вырулить. Читали, как Джефф с Санджаем подняли из руин мёртвый краулер Google, когда просмотрели его двоичный код?
Короче, пузырь IT растёт, прогеры штампуются на курсах на каждом углу, поэтому именно понимание деталей, знание области (не только матан, глубокое понимание машинного обучения, скажем) выделит вас на фоне безликой массы. Кстати, те же Джефф и Санджай — это единственные сотрудники Google 11 разряда.
Ниже я привёл несколько блоков, освоение которых, как я считаю, помогает плавно и безболезненно влиться в Data Science. Освоение включает в себя изучение теории и нарабатывание практики. Это не будет лёгкой прогулкой, придётся попотеть, но именно практика поможет научиться решать реальные задачи бизнеса. Поехали!
Кстати, получить ещё больше полезной инфы, уроков и кода по Data Science вы можете в моём тг — добро пожаловать. А вот годная подборка каналов по Machine Learning и не только для всех, кто изучает и интресуется наукой о данных, нейронными сетями и машинным обучением.
1. Теория вероятностей и описательная статистика
Базовые концепции, которые нужно понимать:
категориальные и числовые данные
среднее значение, мода и медиана
стандартное отклонение и дисперсия
ковариация, корреляция, асимметрия
комбинаторика, события и их вероятности
классическая вероятность, условная вероятность
формулы Байеса, Пуассона и Бернулли
локальная и интегральная теоремы Лапласа
дискретные случайные величины
дискретные распределения (геометрическое, биномиальное, Пуассона)
непрерывные случайные величины
непрерывные распределения (равномерное, показательное, нормальное)
Начать изучение можно с «Основы статистики» от Анатолия Карпова:
Тут объяснение критерия Стьюдента, роли центральной предельной теоремы, A/B-тестирования. В других частях курса «Основы статистики» подробно объясняется линейная регрессия, мультиколлинеарность, гетероскедастичность и много других важных понятий.
Другие полезные ресурсы:
«Теория вероятностей и математическая статистика» — Гмурман В.Е.
«Статистика для всех» — Сара Бослаф
«Вероятность» (в двух томах) — Ширяев А.Н
«Наглядная математическая статистика» — Лагутин М.Б.
«Теория вероятностей и математическая статистика» — Кремер Н.Ш.
«Практическая статистика для специалистов Data Science» — Питер Брюс, Эндрю Брюс, Питер Гедек
Статистика — курс от БФУ им. И. Канта
Основы статистики: часть 1, часть 2, часть 3 — курсы от института биоинформатики
Теория вероятностей, Математическая статистика — курсы от Computer Science Center
немного матана с линалом не помешает: Essence of Linear Algebra, Essence of Calculus
2. Языки программирования: R, Python
Ну с питоном всё понятно — он используется много где как простой инструмент прототипирования. Вот и в Data Science питон используется, например, для быстрого создания дашбордов (Streamlit в помощь), для очистки датасета, построения всевозможных гистограмм, тепловых карт и т.д. Конечно, если получился большой функциональный комбайн на Python и нужно то же самое, но быстрое — всё это перекраивается с помощью всяких Apache Spark, Hadoop Mapreduce и иже с ними.
Базовые вещи Python, которыми нужно уметь оперировать:
типы данных: числа, строки, списки, множества, кортежи
циклы while и for, условия, их комбинации
функции, область видимости, lambda, рекурсия, декораторы
генераторы
вычислительная сложность, операции над структурами данных
стандартная библиотека
работа с ошибками и исключениями, try-except, raise, assert
работа с файлами: чтение, запись, сериализация
концепции ООП: полиморфизм, наследование, инкапсуляция
Начать изучение Python можно вот с этого курса — «Программирование на Python»
А это можно после освоения азов:
С Python всё понятно. А вот стоит ли изучать R, если то же самое можно сделать на Python? Начнём с того, что R давно бы канул в небытие, если бы реально не предлагал серьёзных преимуществ. Во-первых, R специально разрабатывался для спецов по статистике и анализу данных, поэтому имеет качественную визуализацию данных. Ещё у R масса крутых библиотек (Dplyr, Ggplot2, Esquisse...) и нативная поддержка векторных вычислений. Ну и к тому же R популярен в академической среде, поэтому на нём довольно быстро реализуются самые свежие алгоритмы обработки данных.
Начать изучения R можно вот с этого курса на Stepik — «Анализ данных в R»
Также очень круто использование R описано тут, на курсе «Статистика, R и анализ данных» — Поздняков Иван, Петухова Татьяна. Здесь описано буквально всё, что может пригодится в работе аналитика: операции над векторами, препроцессинг данных, работа с матрицами, описательная статистика, визуализация и ещё много всего.
3. Разные библиотеки, инструменты и техники Python для Data Science
Python имеет гигантское количество библиотек для работы с данными. И в DS уровень использования Python зависит не от понимания синтаксиса языка, а от знания библиотек и их возможностей. Вот некоторые самые основные либы.
Pandas. При помощи неё можно как минимум:
обновить, добавить, удалить столбцы из фрейма данных
провести индексирование, манипулирование, переименование, сортировку, объединение фрейма данных
обработать датасет: дополнить недостающие данные, удалить выбросы и т.д.
построить гистрограммы и много других графиков
NumPy. Очень мощный и быстрый инструмент для работы с массивами и вычислениями. Что можно делать?
операции с массивами: добавление, умножение, срез, выравнивание, изменение формы и ещё много других операций и вычислений
SciPy. Для чего может использоваться SciPy?
математические, научные, инженерные вычисления
процедуры численной интеграции и оптимизации
поиск минимумов и максимумов функций
вычисление интегралов функции
масса инструментов для работы со специальными функциями
работа с генетическими алгоритмами
решение дифференциальных уравнений
Matplotlib. Редкий питонист не знает эту либу. Кто-то скажет, что она устарела, но я считаю, что освоить её стоит. Эта либа позволяет строить массу самых разных графиков:
спектрограммы
гистограммы
тепловые карты
боксплоты
и ещё много самых разных графиков.
Вместе с Matplotlib упомянем тут Seaborn, Bokeh и Plotly, они тоже активно используются для создания графиков, а в некоторых областях полностью вытеснили Matplotlib.
Scikit Learn. Эта библиотека включает в себя массу реализаций алгоритмов ML: SVM, random forests, k-means кластеризацию и много других. Что можно делать с помощью Scikit Learn?
классификация: обнаружение спама, распознавание изображений
кластеризация: цена акций
предобработка: подготовка входных данных в виде текста
и можно делать ещё много всего, связанного с алгоритмами ML
TensorFlow. Известная гугловая библиотека для работы с нейросетями. Поэтому применения ожидаемы:
распознавание голоса/звука
анализ настроения (например, эмоционального окраса текста)
распознавание лиц
прогнозирование временных рядов
Можно продолжать список возможных применений ещё долго. TensorFlow конкурирует с PyTorch, между ними довольно большие отличия (например, в их графах), и PyTorch сейчас лидирует (в смысле во многих проектах используется именно PyTorch).
Пощупать все эти библиотеки можно в рамках разных курсов по Python из тех, что я рекомендовал выше.
4. SQL и базы данных
Что нужно освоить по SQL?
базовые концепции: таблицы, столбцы, строки и типы данных
создание простых SELECT-запросов
фильтрация с помощью WHERE и LIKE
агрегирующие функции: COUNT, SUM, AVG, MAX/MIN
группировка с помощью GROUP BY, HAVING
объединение таблиц через JOIN
CREATE TABLE для создания новых таблиц
ALTER TABLE, DROP TABLE для изменения и удаления
INSERT, UPDATE для добавления, изменения строк в таблице
DELETE для удаления строк
концепции базы данных (первичные и внешние ключи)
создание новой БД при помощи CREATE DATABASE
и это ещё не всё
Начать освоение SQL можно вот с этого неплохого курса от Галины Озеровой из ДФУ — «Интерактивный тренажер по SQL»
А также можно использовать эти полезные ресурсы для изучения SQL:
SQL hub - канал для изучения SQL
Полезная литература:
«PostgreSQL. Основы языка SQL» — Евгений Моргунов
«SQL для чайников» — Алан Бьюли
«Рефакторинг SQL приложений» — Стефан Фаро
«SQL - язык запросов к базам данных» — А. А. Степанов
«Оптимизация запросов PostgreSQL» — Домбровская Г.Р, Новиков Б.А, Бейликова А.
«SQL и реляционная теория. Как грамотно писать код на SQL» — К. Дж. Дейт
«SQL. Полное руководство» — Александр Кузнецов
«Реляционные базы данных в примерах» — Святослав Куликов
«SQL. Сборник рецептов» — Роберт де Грааф, Энтони Молинаро
«SQL (Quick Start)» — Крис Фиайли
5. Машинное обучение
Во-первых, нужно прояснить путаницу: Machine Learning — это вполне самостоятельная дисциплина и она существует вне DS. Но в Data Science можно использовать отдельные алгоритмы и концепции ML для лучшего исследования данных. Таким же образом можно использовать в DS и Ai, и глубокое обучение. Вот схемка, которая должна всё прояснить:
Окей, с этим разобрались, перейдём к самому машинному обучению. Вот некоторые базовые концепции ML и конкретные алгоритмы:
Собственно, желательно хотя бы примерно ориентироваться в этих методах ML — тогда будет понятно, как и когда какой метод можно применить в анализе данных.
Вот 3 кейса — они помогут понять, как применятся машинное обучение в DS:
Вы работаете в добывающей компании «ГлавРосГосНефть». Нужно решить, где бурить новую скважину. Вам предоставлены пробы нефти в трёх регионах: в каждом 10 000 месторождений, где измерили качество нефти и объём её запасов. Постройте модель машинного обучения, которая поможет определить регион, где добыча принесёт наибольшую прибыль.
Возможный стек: Python, Pandas, Numpy, Matplotlib, Machine Learning, SciPy, Scikit-learn, LinearRegression, Bootstrap
Подготовьте прототип модели машинного обучения для «Цифры». Компания разрабатывает решения для эффективной работы промышленных предприятий. Модель должна предсказать коэффициент восстановления золота из золотосодержащей руды. Используйте данные с параметрами добычи и очистки. Модель поможет оптимизировать производство, чтобы не запускать предприятие с убыточными характеристиками.
Возможный стек: Python, Pandas, Numpy, Matplotlib, Machine Learning, Seaborn, SciPy, Scikit-learn, RandomForestRegressor, DecisionTreeRegressor
Сервис по продаже автомобилей разрабатывает приложение для привлечения новых клиентов. В нём можно быстро узнать рыночную стоимость своего автомобиля. В вашем распоряжении исторические данные: технические характеристики, комплектации и цены автомобилей. Вам нужно построить модель для определения стоимости.
Возможный стек: Python, Pandas, Numpy, Machine Learning, Scikit-learn, LGBMRegressor, CatBoostRegressor
А вот, скажем, применение графовых нейронных сетей в управлении цепями поставок может предполагать такой стек: Python + Pandas + Pytorch + Pytorch geometric + Git + Colab
Начать изучения ML в рамках Data Science можно с этого курса — «Введение в Data Science и машинное обучение»
А это ресуры, которые помогут продолжить изучение ML:
«Математические основы машинного обучения и прогнозирования» — Владимир Вьюгин
«Верховный алгоритм» — Педро Домингос
«Машинное обучение» — Хенрик Бринк, Джозеф Ричардс, Марк Феверолф
«Крупномасштабное машинное обучение вместе с Python» — Бастиан Шарден, Лука Массарон, Альберто Боскетти
«Python и машинное обучение» — Себастьян Рашка
-
«Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных» — Петер Флах
Data Science Книги в открытом доступе можно найти здесь.
Напоследок оставлю вот такую классную кликабельную дорожную карту Data Science, Ai. Тут всё — курсы, книги, практика. Если норм с английским, то с этого можно начать
Вместо заключения
Что ж, на этом пришло время закругляться. Цель данной статьи «дать понимание, где копать начинающему дата-сайнтисту» можно считать выполненной. После освоения этих 5 блоков: теорвер + статистика, R & Python, DS-библиотеки Python, SQL, машинное обучение уже появится понимание, что такое DS и какие задачи встают перед дата-сайнтистом. Дальше уже можно переходить к составлению резюме, поиску стажировок и другим интересным вещам. Подробно о поиске работы написано в этой хабростатье — «Вкатываемся в Machine Learning с нуля за ноль рублей».
P.S. Сфера Data Science растёт, "дата-сайнтист" становится собирательным понятием массы довольно разных видов деятельности. Посему было бы интересно в комментах послушать тех, кто давно в DS — расскажите про стек технологий, очертите круг задач. Какое представление о DS у вас было на старте, как оно поменялось? Какое знание на старте помогло бы вам успешнее решать текущие задачи? Поделитесь — это было бы очень полезно для многих.
Кстати, для начинающих дата-сайнтистов в моём тг-канале есть море годноты — добро пожаловать. А это отличная подборка каналов по Machine Learning и не только.
Комментарии (12)
nastyAB12
08.01.2024 19:40Вопрос: я много раз пыталась разобраться в данной теме,прочитала учебники по линалу, их суть,посмотрела видео материалы, где люди решают задачи ,например на линейная регрессию,но когда дело доходит до kaggle,насколько комфортно и от чего вы отталкиваетесь в первую очередь,чтоб понять ,подходит ли датасет или нет.Извините за такой вопрос,но каждый раз когда пытаюсь,я вхожу в ступор.
CrazyElf
08.01.2024 19:40+1"подходит ли датасет или нет" - для чего подходит, о чём вы спрашиваете? ) А так вообще
Kaggle
- это совсем отдельное искусство. Посмотрите там готовые ноутбуки, по крайней мере изучению данных и построению каких-то моделей там можно научиться на примерах. И для этого даже знание теории не особо нужно, можно чисто утилитарно подходить - вот делаем то-то и то-то и получаем то-то. А потом уже можно подкреплять практику теорией. Если не идёт практика, то учить теорию без толку, нужно разбираться именно с практикой. Делать её сначала по готовым примерам, а потом самостоятельно.
economist75
08.01.2024 19:40+1Попробую объяснить. Начинать надо не с Kaggle, а с данных из уже "прочувствованной" вами предметной области, где интуитивно многое понятно и без линала. Бухам и экономистам легко начать с журнала проводок 1С или личных финансов, фитнес-тренерам и домохозяйкам - с таблиц рационов и калорийности продуктов итд.
Данные нужно очистить и обогатить (50%), понять-проанализировать (30%) и лишь потом пытаться создать ML-модели для предсказаний (20%). В скобках указана доля времени на выполнение. Для всего этого нужен базовый Python и всего две либы pandas + sklearn, запущенные обязательно в jupyterlab (colab итп. тормозит и своеобразен). Огромный плюс этих двух либ - наличие ответа на любой ваш вопрос на первой страничке выдачи yandex.ru и google.com.
Большинство же курсов построено иначе: 50% времени дают на теорию и 50% на ML, злоупотребляя академичными подходами: трехэтажными формулами вместо данных, абстракциями вместо частностей, умными словами вместо понятных примеров из жизни, ненужными историческим дискурсами и маркетингом/модностями.
В результате сразу после курса человек что-то умеет, но не может понять почему оно делается именно так и для чего он это умеет. И такие знания быстро "тают". Хорошо если есть понимание что нужно вернуться к "азам", что надо потратить время на поиск интересной задачи (на Kaggle они заумные, заковыристые, чужие, на английском). Kaggle - это "спорт высоких достижений", простых задач там почти нет, а если и есть, то они примитивны и неприменимы в жизни (привет, Титаник).
Попробуйте начать с интересной задачи в знакомой вам предметной области. Для работающих - это м.б. какой-то противный сложный отчет о чем угодно, который можно автоматизировать, сделать "умным" и добавить немного "предсказамуса" в него, на базе его же "истории". Во-первых, есть двойной смысл, во-вторых, даже если не получится - знания и навыки добавятся и станут понятны дальнейшие направления.
statsenko
08.01.2024 19:40Интересные у вас примеры задач, встречал такие в одной образовательной школе...
sokaa2011
08.01.2024 19:40+3Рекомендую глянуть ноутбук в 100 Numpy exercises (RUS version), в нём более 100 задач Каждое упражнение с условием, описанием использованных методов на русском и ссылками на оф. доку. Конечно, NumPy для новичков может оказаться сложным в полном объёме, но он упоминает тут как мощный инструмент, и я полностью с этим согласен. Некоторые задачи адаптированы к реальным ситуациям в Data Science.
GospodinKolhoznik
Roadmap такой большой, что едва ли в целую ВУЗовскую программу впихнется. Ну если человек большую часть этого уже изучил в институте и хорошо знает и ему надо лишь некоторую часть доучить, то это одно. Но такие люди и так прекрасно знают что им надо подтянуть и как это сделать. А вот если с нуля... Да с нуля легче на какого ни-будь стоматолога выучиться!
lex08275
Для входа, то есть для начальной позиции, не думаю, что требуется глубокое погружение во все дисциплины.
https://edu.sirius.online/ai-navigator/
Покроет почти все из роадмапа, за исключением фреймворков tf/pytorch и др.
xsevenbeta
Ну, тут хорошо подойдёт метафора большого тёмного леса. Начать использовать нейросети можно вообще без знания математики и программирования - я не про chatgpt, а про обучение на распознавание предметов с помощью OpenvCV, например. Но это будет маленькая светлая полянка - ты совершенно не будешь знать, как это всё работает под капотом. Определённо есть какой-то минимум, с которого можно начать работать на какой-то позиции - хотя части леса будет оставаться тёмными. А чтобы весь лет засиял, это десятки лет работы в сфере с постоянным обучением.
Suharkov
На какого-нибудь - легче. Но пойдут ли к такому клиенты? Вот пример стоматолога, который учится и внедряет в своей клинике новые технологии практически всю свою жизнь.
Под спойлером красивая картинка с дипломами
Наверное и в DS так же, да?
LeetCode_Monkey
Так и должно быть! С чьей подачи (продавцов курсов?) все вдруг решили что на программиста или DS можно с полпинка за 3 месяца выучиться? Я уж не говорю что способности и талант должен наличествовать.
Многие ругают ВУЗы мол ничего там не дают, 5 лет в трубу. Позвольте, эти 5 лет не для того чтобы в вас как не коня в корм запихивали вагон информации. Эти 5 лет чтобы её переварить. 5 лет на практику, эксперименты, погружение в детали как всё устроено и работает. Это минимум. Только после этого что-то более-менее выходить начнёт. А настоящие профи вообще с детства занимаются. Невозможно за 3 месяца выносить и родить ни с какими стимуляторами.