Мапа розвитку в Data Science, або Як стати дослідником даних
Привіт! Мене звуть Євген, я дослідник даних. Ця стаття — моя спроба окреслити програму самоосвіти, достатню для того, щоб розпочати кар’єру в Data Science. Усе, що я нижче напишу, — суб’єктивно. Що не суб’єктивно, то це факт, що для мене це спрацювало і я таки працюю дослідником даних. Ці поради можна порівнювати з хлібними крихтами, що залишали по собі Гензель і Ґретель у відомій казці. Ця дорожня мапа може привести вас до мети тим шляхом, яким уже проходили раніше. Крім того, така освіта не є вичерпною для дослідника, а лише достатньою, щоб знайти першу роботу. Отже, з чого починати?
Огляд потрібних знань і навичок
Ви напевно вже бачили подібну діаграму Венна, складену з галузей, на перетині яких формується професія Data Scientist.
Відповідно до наведеної діаграми та враховуючи вимоги до новачків, під час підготовки варто зосередитися на таких моментах:
- вивчення потрібних аналітикові інструментів і мови програмування;
- вивчення статистики й математики;
- ознайомлення з методами машинного навчання;
- усвідомити, як усе перелічене застосовують для дослідження даних.
До того ж у межах Data Science є спеціалізації. Наведена нижче ілюстрація демонструє, що вам не обов’язково досконало розбиратися в усьому. Ви можете вибрати спеціалізацію залежно від ваших здібностей і вподобань.
Докладніше про спеціалізацію в DS дивіться в доповіді Олексія Натьокіна.
І хоча це дорожня мапа, ця дорога не є лінійною. Хронологічного порядку тут немає, учити можна в будь-якій послідовності, ітеративно. Та й сам поділ умовний, бо часто курси та книжки одночасно охоплюють і теорію, й інструменти, і безпосередньо ML та DS. Тож розглянемо детальніше, що саме й де вчити.
Інструменти
Що стосується інструментів, у моєму випадку це Python, NumPy, pandas, SciPy, Matplotlib, Jupyter Notebook, scikit-learn, Keras тощо.
Python я почав вивчати за книжкою «Learning Python» Марка Лутца, документацією й Stack Overflow. Варто зазначити, що для мене Python був не першою мовою програмування. Маючи досвід програмування такими мовами, як Java, Scala, Groovy, JavaScript і TypeScript, я вже мав певне уявлення про парадигми та принципи розробки ПЗ. Тож моє знайомство з Python може відрізнятися від вашого. Добра новина в тому, що для початківця-дослідника даних не обов’язково досконало розбиратися в програмуванні. Для початку досить засвоїти основи мови й опанувати популярні інструменти для аналітики. Слід навчитися перетворювати алгоритми й математичні формули на код. І варто вміти працювати зі структурами даних: послідовності, таблиці, тензори, словники, дерева й графи загалом. Проте, коли буде час і натхнення, раджу розібратися, що таке OOP, SOLID, FP тощо. Приділіть увагу тестуванню, логуванню, lint-перевірці і практикам чистого коду. Так робота з кодом стане приємнішою і, можливо, життя стане ліпшим.
Для дослідження даних вам знадобиться зручне середовище. Поширеним середовищем для дослідників є Jupyter Notebook. Він має інтуїтивно зрозумілий інтерфейс, і його засвоєння не потребує якихось складних курсів. Для швидких експериментів не обов’язково ставити Notebook локально, досить мати інтернет і скористатись онлайновим сервісом. Наприклад, Google Colaboratory. Там уже є більшість базових для DS та ML модулів, потрібні можна доставити. Є інтеграція з Google-диском, де можна тримати дані, а також інтеграція з GitHub. Загалом, зручна штука.
Наступний інструмент у списку — бібліотека NumPy. Вона надає інтерфейс для застосування математичних функцій для операцій над тензорами. Її використовують, наприклад, щоб представити зображення як тензор, де кожне значення відповідає пікселю вашого зображення. Вибірку тензорів використовують як input для моделі. Знайомство з NumPy можна розпочати з цієї чи цієї статті. Якщо вам бракує математичних функцій у NumPy, зверніть увагу на SciPy.
Бібліотека pandas надає зручний інтерфейс для роботи з індексованими табличними даними (DataFrame) і послідовностями (Series). Зручніша за NumPy для роботи з часовими рядами, має вбудовані функції для візуалізації даних, роботи з файлами, такими як csv, тощо. З pandas можна ознайомитись у цій статті в межах курсу від Open Data Science та в курсі від Мічиганського університету. Далі ми ще не раз повернемося до цих курсів.
Тепер, коли ви вже знаєте деякі інструменти для роботи з даними, можете їх дослідити й підготувати до використання, можна розглянути бібліотеки для машинного навчання — scikit-learn та бібліотеку для глибинного навчання — Keras. Проте в тих курсах і книжках, на які я натрапляв, ці бібліотеки розглядають невід’ємно, як складову частину курсу з машинного навчання взагалі. Тому докладніше, де вивчати машинне навчання й ці бібліотеки, я опишу нижче.
Крім того, під час дослідження даних, оцінювання моделі й представлення результату часто виникає потреба у візуалізації. Серед поширених інструментів візуалізації —Matplotlib, Seaborn, Plotly тощо. Ознайомитися з цими інструментами можна в цій статті. Проте візуалізація даних — це не лише володіння інструментами. Створенню візуалізації має передувати глибоке дослідження даних і розуміння, що саме ви хочете продемонструвати. Візуалізацію можна розглядати і як окремий фах, і як неодмінний складник роботи аналітика даних.
Математика і статистика
По-перше, для чого вам статистика й математика? Чи можна просто створювати розумні машини за допомогою магії готових бібліотечних рішень і уникнути марудних обчислень?
Ніт. Як ви переконаєтеся впродовж власного навчання, у машинному навчанні вам не обійтися без дослідження даних (зокрема, статистичних властивостей вибірки), трансформації даних, валідації і тестування натренованої моделі. У цій статті ви можете знайти показовий приклад, як вдале застосування математичної статистики допомогло втриматися в лідерах змагання на Kaggle.
До речі, цей приклад показовий ще й тим, що автор рішення Данило Савенков — зразок успішної міграції в Data Science. До того як зробити кар’єру в DS, він був студентом консерваторії, грав на фаготі і працював в оркестрі. Просто згадуйте про це, коли хтось зверхньо жартує про гуманітаріїв :) Але повернімося до нашої дорожньої мапи.
Отже, якщо треба підтягнути знання зі статистики, є курс з основ описової й вивідної статистики. Тут ви дізнаєтеся, що таке вибірка, медіана, дисперсія, розподіл, кореляція, p-значення, t-критерій Ст’юдента тощо. Цей курс передбачає поверхове знання мови програмування R. Для знайомства з R я скористався онлайновим курсом. Навіть його половини досить, щоб читати приклади коду з курсу статистики вище. Свої рішення я реалізовував за допомогою Python. Це, до речі, теж корисна навичка. Далеко не всі дослідники даних послуговуються Python, і ви можете натрапити на приклади реалізацій іншими мовами. Зручно, якщо ви можете їх прочитати й переписати на свій лад.
Що стосується математичної підготовки. Так, є багато поширених інструментів і методів для дослідження даних, які вже давно реалізували в популярних бібліотеках й описали простими поняттями. Водночас Data Science дуже стрімко розвивається, щодня люди пропонують нові рішення. Безліч таких state-of-the-art рішень ви можете знайти в пейперах, наприклад, на arXiv.org. Часто такі пейпери містять математичні формули без прикладів коду. Тому варто навчитися читати математичні формули й розуміти ідеї, які стоять за ними. Отже, що робити, коли ви бачите в пейпері отаке?
Основні розділи математики, на які варто звернути увагу:
- математичний аналіз;
- лінійна алгебра;
- теорія ймовірностей;
- дискретна математика.
Докладніше програму підготовки можна подивитися тут. Це підготовчий курс для вступу на магістерську програму в УКУ. Власне, там можна й пройти цей курс, але лише раз на рік. Тому розгляньмо й інші онлайнові курси, доступні в будь-який момент.
Що стосується математичного аналізу, є відеолекції від Олексія Савватєєва й Олександра Тоніса.
Якщо треба підтягнути знання з теорії ймовірностей, є курс від МФТІ на coursera. Крім того, там є курси МФТІ з комбінаторики, графів, теорії ігор тощо.
Як є бажання попрактикуватися з розв’язанням задач, можу порекомендувати авторський сайт Олександра Ємеліна. У сиву давнину, коли я був студентом інженерного факультету, саме цей сайт дуже допоміг мені в підготовці. Усі підручники з математики, які тоді потрапляли мені до рук, були сповнені химерними поясненнями й незрозумілими словами. У найліпшому разі словами. А я був простим інженером без PhD з математики, мені треба було пояснити простіше :) Якщо ви — як я, цей сайт може вам сподобатися.
Але це саме математичні курси й лекції. Вони не зосереджені на завданнях DS і ML. Просте зрозуміле пояснення матричного множення й диференціювання та приклади їх застосування в нейронній мережі я бачив у книжці «Make Your Own Neural Network» Таріка Рашида. Математичні описи поширених методів ML можна знайти в згаданому вище курсі від Open Data Science. Ще час від часу Data Science UA влаштовують цікаві лекції і воркшопи. Наприклад, дводенні курси Make math great again від Марії Королюк і Марії Дворяшиної або Data Science, Analytics and AI від Олександра Романка. Загалом, у DSUA повно цікавих івентів.
Якщо любите читати, можу порадити дві книжки: «How Not to Be Wrong» Джордана Елленберга і «Everybody Lies» Сета Стівенс-Давідовіца. Це не підручники, а бестселери New York Times, у яких описано, як математика, статистика й дослідження BigData допомагають ліпше зрозуміти світ. Є в українському перекладі.
Machine Learning
Саме ML обумовив потужний розвиток сфери дослідження даних у наш час. І, можливо, не через шалену пристрасть до нормального розподілу й коробкових діаграм, а саме через інтерес до ML, AI та Skynet ви зацікавилися Data Science. Тож більше не зволікатиму й перейду до найцікавішого.
Почну з загального огляду. Якщо на старті ви плутаєтеся в усьому зоопарку моделей, перегляньте статтю, яка без технічних деталей і формул допоможе вам розібратися.
На платформі Prometheus є курс від Олеся Петріва (фахівець із Deep Learning і Computer Vision). Загалом курс з основ ML, багато теорії, але на останньому тижні розглядають і приклади CNN та LSTM нейронних мереж, з цього можна почати своє знайомство з Deep Learning і бібліотекою Keras.
Проте на цьому етапі я не радив би одразу занурюватися в DL, розберімося докладніше в класичному машинному навчанні.
Тут вам не обійтися без бібліотеки sklearn, яку я згадував у розділі «Інструменти». Scikit-learn часто використовують у підручниках і курсах з основ ML, бо вона надає високорівневий API. З цим інструментом ви можете, не заглиблюючись у математику й деталі реалізації, зосередитися на побудові pipeline з підготовкою та трансформацією даних, підбором гіперпараметрів моделі, валідацією та оцінкою точності результатів.
Отже, sklearn і основи ML можна вивчити на курсі від Мічиганського університету. Також є розкішна книжка «Introduction to Machine Learning with Python» Андреаса Мюллера й Сари Ґвідо.
Ґрунтовніше пояснення деяких методів ML є в згаданому вище циклі статей або на курсі mlcourse.ai. Загалом, певне розуміння того, як саме влаштовано методи машинного навчання та базові знання з математики і статистики, дасть вам змогу краще налаштувати гіперпараметри моделі, підібрати цільову функцію та метрики для оцінювання результату.
Після знайомства з класичним ML час більше дізнатися про Deep Learning. Можу порадити розкішну книжку «Deep Learning with Python» Франсуа Шолле. Варто зауважити, що ця книжка закладе базові знання. Водночас нові архітектури моделей і їх модифікації з’являються мало не щодня. Це доволі експериментальна сфера, стежте за новинами в Deep Learning і feel free долучатися до експериментів.
Що крім ML
Досі ми говорили про підходи, які на сьогодні є популярними, сучасними і які широко застосовують у DS незалежно від галузі, проєкту, компанії. Це саме те, з чого можна починати свою самоосвіту й сподіватися на працевлаштування. Водночас є й інші підходи, поширені чи доцільні для вирішення деяких задач.
Наприклад, якщо ви працюватимете з часовими рядами в трейдингу чи роздрібній торгівлі, вам варто ознайомитися з класичними методами аналізу часових рядів типу ARIMA. Інколи вони можуть бути досить ефективним рішенням бізнес-задачі. Або гарним baseline для перевірки ефективності вашої LSTM-моделі чи ансамблю дерев.
Крім давно відомих і поширених методів, є й екзотичніші рішення типу Reinforcement Learning, Fuzzy Logic, Genetic Algorithm тощо. Вони рідше траплялися мені на практиці, проте цікаві й інколи можуть стати в пригоді. Наприклад, генетичний алгоритм може допомогти з підбором параметрів вашої моделі, коли ваша цільова функція не диференціюється й ви не можете оптимізувати параметри популярним градієнтним спуском. GA допоможе знайти оптимальні гіперпараметри моделі, коли використання Grid Search є занадто затратним.
Проте чи доцільно вам витрачати час і заглиблюватися в ці теми, залежить від того, як ви бачите свою подальшу кар’єру. На цьому ж етапі я не хочу загострювати увагу на речах, специфічних для Computer Vision, NLP чи аналізу часових рядів. Пропоную сфокусуватися на навичках, якими слід володіти кожному початківцеві для пошуку роботи.
Власне, сама робота — чудовий спосіб навчання нового. Навіть якщо вас поки не беруть на роботу вашої мрії в Boston Dynamics чи Google, спробуйте влаштуватися в якийсь стартап, де ви почнете набувати досвіду.
Ще один спосіб попрактикуватися — змагання на Kaggle. Там є змагання для тих, хто тільки вчиться, як-от House Prices і Titanic. Є й можливість випробувати себе, змагаючись із досвідченими дослідниками, вирішити важкі завдання.
Візуалізація та візуальний аналіз
Візуалізація даних супроводжує роботу аналітика від початкового аналізу даних до оцінки моделі й виведення результатів на дашборд.
Вдала візуалізація, яка дійсно допомагає виявити й продемонструвати іншим щось корисне, потребує не лише гарного смаку, а й чимало знань і досвіду. Для початку можна ознайомитися з курсом візуалізації даних від Анатолія Бондаренка на платформі Prometheus. Анатолій Бондаренко — засновник і керівник проєкту Texty, які нещодавно здобули престижну міжнародну винагороду з журналістики даних. У цьому курсі немає програмування й складних технічних штук, це базові знання про принципи візуалізації.
Наступний рекомендований курс — це частина спеціалізації від Мічиганського університету. Він доповнить теорію, але не обмежується лише нею. Тут ви навчитеся користуватися згаданими вище інструментами візуалізації: Matplotlib, Seaborn, Plotly.
Крім того, на цьому курсі я зацікавився книжкою «Функціональне мистецтво» Альберто Каїро. У ній ви знайдете принципи й найліпші практики для створення виразних візуалізацій. Придбати цю книжку в українському перекладі можна у «Видавництва УКУ», якщо вона недоступна на сайті — напишіть їм на імейл, у моєму випадку це спрацювало. Ця книжка не обов’язкова для початківців, проте рекомендую її для збагачення професійних знань.
Чому це важливо? Імовірно, ви не тільки досліджуватимете дані, а й представлятимете результати своєї аналітики замовникові й користувачам. Попіклуйтеся, щоб дані й аналітика були зрозумілими та корисними. Візуалізація — доволі потужний помічник у комунікації з людьми.
Офлайн
Окрім книжок та онлайн-курсів, може бути корисно знайти ментора або офлайновий курс. Гарний ментор-практик чи викладач допоможуть систематизувати знання й проведуть вас крок за кроком через весь pipeline роботи з даними. До того ж, спираючись на власний практичний досвід, зроблять це в контексті тих реалій, які є саме в українських компаніях, командах, проєктах. Це певною мірою вже інтегрує вас у DS-спільноту.
З офлайнових курсів з Data Science мені відомі Hillel (м. Київ, викладач Олександр Коробов) і спільний курс від компаній ISD та SOLVVE (м. Дніпро, викладач Олексій Нідзельський). На мою думку, якість і програма курсу дуже залежать від того, хто викладає. Тим паче в DS і ML, де ще немає тотальної стандартизації і кожен викладає з огляду на власний досвід і здібності вчити інших людей. Мені в цьому сенсі пощастило.
Ще варто час від часу ходити на різні івенти. Там ви дізнаєтеся, над чим тепер працюють інші дослідники даних в Україні, які є компанії, на чому вони спеціалізуються. Можливо, це допоможе вам визначитися, що саме ви хочете робити. Так ви можете познайомитися з іншими колегами й прилучитися до спільноти.
Одними з організаторів заходів, лекцій, воркшопів для DS-community є Data Science UA. Крім того, багато IT-компаній в Україні проводять власні мітапи. Тож підписуйтеся на їхню розсилку, соціальні сторінки, телеграм-канали, переглядайте календар подій на DOU й будьте в курсі новин.
Нерозкриті теми
На початку статті на діаграмі Венна ви могли помітити Domain Expertise. Мені немає чого порадити вам стосовно цього. Спеціалізація в межах DS і здобуття експертних знань з певної предметної області — це питання часу, кар’єрного розвитку, вибору й самореалізації. Можливо, у вас уже є попередній досвід у фінансах, медицині, страхуванні тощо, і це добре. Водночас джуніори не обов’язково мають бути носіями експертних знань у якійсь сфері.
Крім того, в цій статті не розкрито теми MLOps. Це порівняно нова практика, і на сьогодні почати кар’єру дослідником даних в Україні можна без цих навичок. Також зверніть увагу на MLOps у межах подальшого розвитку.
Ще я не розглядав роботи з базами даних. Так, вам варто знати, які є типи баз даних чи як написати елементарний SQL-запит. Проте, на мою думку, не обов’язково надто заглиблюватися в це, досить знань, які дають змогу самостійно реалізувати просту взаємодію з БД для MVP або знайти спільну мову з інженером на проєкті. Найімовірніше, будь-який Back-end developer чи BigData engineer реалізує взаємодію зі сховищем даних ліпше за вас. Зате чого він не зробить, то це не зможе проаналізувати дані так, як ви. Тож сфокусуйтеся на тому, що ви можете робити ліпше за інших.
До речі, кілька слів про взаємодію в команді й організацію процесів на проєкті. Переконаний, вам буде корисно ознайомитися з поширеними методологіями розробки IT-проєктів з використанням ML і загалом. Варто ознайомитися з такими поширеними методологіями, як CRISP-DM, Scrum, Kanban тощо. Сподіваюся, вам пощастить працювати на проєкті, де налагоджено ефективні процеси роботи.
Прикінцеве слово
Судячи з означення у вікіпедії та діаграми Венна на початку цієї статті, Data Science — це міждисциплінарна галузь. Перед світом загалом і бізнесом зокрема стоїть багато складних багатофакторних завдань. Подекуди такі проблеми неможливо вирішити підходами в межах однієї галузі, тому в сучасному світі ми бачимо тенденцію до міждисциплінарності. Це саме той випадок, коли ваша domain expertise може стати вам у пригоді під час міграції в Data Science.
До того ж сучасний ринок праці стрімко змінюється, що спонукає людей постійно розвиватись і змінювати своє ремесло. Ураховуючи, що Data Scientist — одна з найсексуальніших професій сучасності, не дивно, що вас зацікавила саме ця професія.
Окрім цього, система вищої освіти не завжди встигає за змінами ринку праці, потребує значних зусиль і не завжди є доступною. Тому професійна самоосвіта часто полягає в проходженні різних онлайнових курсів, читанні блогів, пейперів тощо.
Водночас самоосвіта не завжди сприяє систематизації знань, формуванню цілісної картини. Це може призвести до кризи фаховості й зростання сертифікованих «експертів», які, пройшовши якийсь курс з основ ML і навчившись використовувати бібліотечну RandomForest-модель, позиціюють себе як Rockstar Data Scientist. Загалом сучасну кризу фаховості описав, наприклад, професор Том Ніколс у книжці «The Death of Expertise». У контексті ж українського IT можна знайти повно критичних історій про «войти в IT».
І хоча в цій статті я не раз стверджував, що є певний базовий обсяг знань, засвоївши який уже можна робити перші кар’єрні кроки, я бажаю вам не зупинятися на досягнутому й постійно вдосконалюватися. Якщо ж ви таки маєте час і натхнення здобути вищу освіту в Data Science, ось порівняння витрати на здобуття освіти з Data Science у Європі.
Власне, у мене все. Бережіться й насолоджуйтеся життям :)
Корисні джерела
Пейпери:
Інтернет-ресурси:
- цікаві статті;
- ще цікаві статті;
- авторський сайт Олександра Ємеліна про вищу математику.
Книжки:
- «Make Your Own Neural Network» by Tariq Rashid;
- «Introduction to Machine Learning with Python» by Sarah Guido, Andreas C. Müller;
- «Deep Learning with Python» by François Chollet;
- «The Functional Art» by Alberto Cairo;
- «How Not to Be Wrong» by Jordan Ellenberg;
- «Everybody Lies» by Seth Stephens-Davidowitz.
Курси онлайн:
- Applied Data Science with Python by University of Michigan;
- Open Machine Learning Course by Open Data Science;
- «Машинне навчання» від Олеся Петріва;
- «Візуалізація даних» від Анатолія Бондаренко ;
- «Аналіз даних та статистичне виведення на мові R» від Анастасії Корнілової;
- «Теория вероятностей для начинающих» від MФТІ;
- «Математический анализ» — відеолекції від Олексія Савватєєва та Олександра Тоніса.
Офлайн:
- Курс Machine Learning and Deep Learning — курс від Hillel;
- Data Science UA — івенти.
Подібні статті:
- A long-term Data Science roadmap which WON’T help you become an expert in only several months;
- Self-Study Guide to Machine Learning;
- The Missing Roadmap to Self-Study Machine Learning.