НАУКА О ДАННЫХ

Стратегии изучения науки о данных

Практические советы по проникновению в науку о данных

Вы хотите заняться наукой о данных? Но просто не знаю как? Если да, то читайте дальше, поскольку эта статья для вас.

В конце прошлого года, в декабре 2019 года, я выпустил на YouTube видео с тем же названием под названием Стратегии обучения науке о данных в 2020 году для моего недавно начатого канала YouTube под названием Профессор данных , где я поделился своими стратегиями изучения науки о данных в качестве академического профессора, который изучил науку о данных самостоятельно и с 2004 года активно работает в этой области последние 16 лет.

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

Какой опыт вам нужен, чтобы начать заниматься наукой о данных?

Если у вас есть степень в области информатики, чтобы стать специалистом по данным? Или, если у вас нетехнический опыт, не могли бы вы сделать аналогичный переход в науку о данных?

Во-первых, я не компьютерный ученый, и, как вы помните из моей самой первой статьи на Medium (Как биолог стал специалистом по данным: как я перешел от нетехнической подготовки к науке о данных ), я получил степень бакалавра в области биологии. И из-за моего увлечения компьютерами и данными я самостоятельно изучал необходимые концепции и навыки, необходимые для работы в области науки о данных.

Наука о данных - это междисциплинарная область, которая охватывает несколько дисциплин, таких как информатика, информатика, статистика, естественные науки, математика, визуализация данных и, что наиболее важно, решение проблем. Если вы посмотрите описания должностей специалистов по обработке данных в LinkedIn, вы заметите, что существуют различные первые ученые степени, которые могут иметь ученые по данным. Как видите, фон довольно разнообразный. Фактически, многие из них не выпускники информатики. Однако, если у вас есть степень в области информатики, у вас может быть преимущество. И если вы этого не сделаете, это тоже нормально (я включен как специалист по биологии).

Имея страсть изучать науку о данных и применять ее в любой области, в которой вы работаете, я считаю, что это ключ к тому, чтобы стать специалистом по данным. Из-за обилия данных в биологии это послужило стимулом для моего перехода к анализу данных. В частности, применяя машинное обучение для анализа больших биологических данных с целью (1) найти и открыть новые лекарства, (2) понять механизм действия лекарств, а также (3) создать диагностические инструменты, которые смогут помогать клиницистам и медицинским работникам диагностировать у пациентов конкретное интересующее заболевание.

Когда начать?

Это сложный вопрос. С чего начать, если вы хотите заняться наукой о данных? Ответ может быть весьма разнообразным. Если вы спросите сотню специалистов по данным, вы можете получить сотни разных ответов!

Если вы спросите меня, я начал со знания области биологии. У меня были проблемы с данными по биологии, на которые мне нужны ответы. На моем пути к тому, чтобы в конечном итоге стать специалистом по обработке данных, я постепенно осваивал необходимые наборы навыков один за другим. Это не было сделано за 3 месяца или 1 год, но началось с 2004 года. Я занимался наукой о данных в течение 16 лет до того, как был введен термин, опубликовал более 100 научных статей, преподавал науку о данных (в то время интеллектуальный анализ данных) с 2006 года. Могу ли я сказать, что освоил науку о данных. Точно нет! Я все еще продолжаю ежедневно изучать новые концепции науки о данных. Сфера науки о данных настолько обширна, что на освоение (и, возможно, даже не всей области, а только ее подмножество) может потребоваться целая жизнь.

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

Сколько времени нужно, чтобы стать специалистом по анализу данных?

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

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

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

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

Для специалиста по биологии время, необходимое для изучения R или Python, может быть больше. Однако я считаю, что если у вас есть образ мышления и желание учиться, я думаю, что это все, что вам нужно. Я где-то читал, что если вы потратите, скажем, 10 000 часов, вы сможете овладеть навыками или знаниями.

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

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

Нужно ли мне учиться программировать?

Итак, следующий вопрос, который может у вас возникнуть, - нужно ли вам научиться программировать, чтобы стать специалистом по данным? Это действительно зависит от обстоятельств, так что да и нет. Прежде чем я научусь программировать, я бы использовал это программное обеспечение под названием WEKA. Это программное обеспечение с графическим интерфейсом пользователя (GUI) для выполнения интеллектуального анализа данных, которое я использовал для анализа данных, которые я скомпилировал в ходе своей докторской диссертации.

Со временем я начал замечать, что анализ данных через интерфейс «укажи и щелкни» не был эффективным процессом. Основная причина заключается в том, что для этого требуется много ручной работы, когда мне придется физически использовать мышь для щелчка и выполнения различных задач в программном обеспечении: (1) для импорта данных, (2) для указания входного параметра, (3 ), чтобы начать обучение модели, (4) собрать данные, (5) поместить их в Excel, (6) объединить, и, следовательно, все это было довольно утомительно.

Был один случай, который я отчетливо вспомнил во время учебы в докторантуре. Это когда я контролировал 40-50 компьютеров в компьютерном классе университета. Поэтому на каждом из компьютеров я выполнял некоторые расчеты (построение модели с помощью программного обеспечения WEKA), после чего вручную собирал данные с каждого из 40–50 компьютеров, а затем объединял результаты для последующего анализа и построения графиков в Microsoft. Excel.

Во время учебы в аспирантуре я так и не научился программировать, в то время как я полагался только на возможности интеллектуального анализа данных программного обеспечения WEKA для построения всех моих моделей машинного обучения с использованием таких алгоритмов, как линейная регрессия, J48 (реализация Java C4 .5 алгоритм), нейронная сеть обратного распространения и машина опорных векторов. Ближе к концу моей учебы в аспирантуре я наткнулся на еще одну замечательную программу многомерного анализа на основе графического интерфейса, известную как The Unscrambler, которая позволила мне запустить 2 дополнительных алгоритма машинного обучения, а именно анализ главных компонентов и частичную регрессию методом наименьших квадратов.

Таким образом, к концу моего 4-летнего обучения в аспирантуре я смог закончить университет с 13 публикациями (исследовательскими статьями) благодаря использованию двух программ с графическим интерфейсом пользователя: WEKA и The Unscrambler. Упоминал ли я, что во время учебы в докторантуре я пытался изучить C ++ и Java, но безуспешно. В значительной степени застрял на примере Hello World и не добился дальнейшего прогресса.

Итак, когда я научился программировать? Вам может быть интересно. Прежде чем дать ответ, позвольте мне дать вам некоторый контекст. Поэтому после получения докторской степени я был нанят в качестве преподавателя в том же университете (перенесемся в сегодняшний день, я только что отпраздновал свои 14 лет в академических кругах + 4 года обучения в докторантуре = 18 лет исследований).

Хорошо, теперь самое время научиться программировать. Примерно через год моей преподавательской деятельности я встретил научного сотрудника (в дальнейшем я буду называть его RA), который присоединился к моей исследовательской лаборатории, чтобы помочь перевести некоторые из существующих рабочих процессов, которые я делал, в программный рабочий процесс, а именно на Python. . Итак, RA показал мне эту книгу, которую он использовал для изучения Python, под названием Python Power! Это была моя вторая (и успешная) попытка научиться программировать. Так почему эта вторая попытка сработала? Позвольте мне объяснить это в следующем разделе.

Итак, с учетом всего сказанного, возможно ли заниматься наукой о данных без программирования? Можно использовать программное обеспечение на основе графического интерфейса, такое как WEKA, Rapid Miner, Orange или другое подобное программное обеспечение (которое в настоящее время называется как ИИ без кода) для построения модели машинного обучения.

Но весь непрерывный рабочий процесс всего проекта интеллектуального анализа данных не был полностью возможен за счет использования только одного программного обеспечения, такого как WEKA. В итоге я использовал текстовый редактор под названием Ultra Edit, который позволял мне применять записанные макросы для полуавтоматизации некоторой необходимой предварительной обработки данных.

Создание графиков в основном создавалось с использованием Microsoft Excel и Powerpoint (для добавления подписей к панелям рисунков и для разработки макета многослойной фигуры. Другое программное обеспечение, которое я также использовал для создание более сложных графиков, таких как контурный график, стало возможным с помощью программного обеспечения Sigma Plot. Задача заключалась в том, чтобы вручную преобразовать выходные данные одного программного обеспечения в качестве входных данных второго программного обеспечения. Этот процесс повторяется итеративно, в результате чего вывод второго программного обеспечения используется как ввод третьего программного обеспечения и т. д.

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

Итак, размышляя ретроспективно, если бы я мог снова начать свою докторскую диссертацию, я бы определенно приложил больше усилий, чтобы научиться программировать (дело в том, что я пытался научиться программировать, но безуспешно; вторая попытка пару лет спустя был успешным из-за изменения мышления, которым я поделюсь с вами в следующем разделе Программист-самоучка?).

Видите ли, если вы умеете программировать, пусть даже совсем немного, это поможет значительно ускорить ваш рабочий процесс. Представьте себе автоматизацию всего сквозного проекта в коде R или Python вместо того, чтобы делать все вручную. Так в чем разница? Ответ - время и надежность. В частности, автоматизированный подход менее подвержен человеческим ошибкам, но при этом значительно быстрее вычисляется и завершается.

Какой язык учить? R или Python?

Итак, теперь очень важный вопрос - на каком языке вы должны научиться программировать. Если вы искали в Google или смотрели видео на YouTube, вы можете встретить два языка, которые очень популярны в науке о данных. Итак, первый - R, а второй - Python. Популярный вопрос, который часто задают и обсуждают, - изучать ли R или Python.

Есть ли веская причина для R или Python?

Так что ответ действительно зависит от того, есть ли веская причина выбрать R или Python. Например, вы можете использовать пакет Bio3D R или пакет shiny, так что в этом случае затем выберите R. Или, возможно, вы действительно хотите использовать библиотеку Biopython в Python, а затем, во что бы то ни стало, переходите на Python.

У вас есть напарник или наставник?

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

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

Кодер-самоучка?

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

Ответ довольно прост. Я обнаружил Stack Overflow. Это волшебный и мощный ресурс, который позволил мне научиться программировать самостоятельно, изучая примеры того, как другие решали проблему кодирования. Иногда на некоторые вопросы было несколько ответов, которые в конечном итоге приводили к одним и тем же результатам. В частности, некоторые ответы получили больше голосов, в то время как другие могут получить меньше голосов, что на самом деле является субъективным вопросом о том, помогло ли это другим в их учебном путешествии. Сравнивая и изучая эти несколько ответов, это помогло мне понять, что для выполнения работы (решения проблемы с данными) мне не нужно запоминать синтаксис (который я слепо пытался сделать, когда пытался изучить C ++ или Java несколькими годами ранее, но безуспешно).

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

Знайте свои библиотеки Python и пакеты R

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

Фреймы данных

Например, если вы обрабатываете фреймы данных в Python, вы должны использовать панды, поэтому вам придется изучить панды, чтобы вы могли объединять различные фреймы данных вместе. В R вы можете использовать dplyr, а также встроенную функцию фрейма данных в R.

Визуализации данных

Если вы хотите создавать графики на Python, вы должны использовать matplotlib, seaborn, altair , plotly и plotnine, а в R вы можете использовать базовый график R. функция, ggplot2 и plotly.

Машинное обучение

Чтобы выполнять машинное обучение и строить модели прогнозирования на Python, вам нужно будет использовать scikit-learn или вы можете использовать TensorFlow , keras , PyTorch и fast.ai для моделей глубокого обучения.

В R вы должны использовать caret и rattle, а также TensorFlow и keras .

Развертывание

После того, как вы построили свою модель и хотите ее развернуть. По сути, вы можете выбрать один из двух подходов: (1) развернуть как интерфейс прикладного программирования (API) или (2) развернуть как веб-приложение.

В Python вы можете развернуть свои модели scikit-learn с помощью flask (см. Этот учебник Развертывание модели машинного обучения как REST API от Nguyen Ngo). Cloud ML Engine от Google - также еще один вариант (см. Этот учебник Развертывание моделей scikit-learn в масштабе от Юфэн Гао) ). В R вы можете использовать пакет сантехник для создания веб-API (см. Этот учебник Как сделать вашу модель машинного обучения доступной в виде API с пакет сантехника от Shirin Elsinghorst и учебник R can API and So Can You! от Heather Nolis .

Чтобы развернуть модели машинного обучения в виде веб-приложения, рекомендуется сначала сохранить модель в файл с помощью функции pickle в Python и с помощью функции saveRDS в R. Фактическое веб-приложение затем можно подготовить с помощью flask и Streamlit в Python, а для этого в R можно использовать пакет shiny.

Я также создал серию обучающих видео о том, как создавать веб-приложения для анализа данных на Python с помощью библиотеки Streamlit.



Если вы хотите создавать веб-приложения для анализа данных на R, просмотрите следующую серию обучающих видеороликов с использованием пакета shiny.

Сделайте свое путешествие по науке о данных

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

Мое путешествие в науку о данных было очень феноменальным. Я многому научился. Я встретил много талантливых людей. У меня есть возможность делать и получать деньги за то, что мне действительно нравится. Так что мне никогда не надоедает эта работа, и всегда есть новые данные, которые нужно собрать, проанализировать, и у нас есть постоянное сотрудничество, действительно постоянный приток новых данных и новые возможности для изучения биологии, так что это очень и очень полезная работа. . Если бы я мог повернуть время вспять и снова решить, что я хочу делать, я буду придерживаться того же пути и стану специалистом по данным. Я бы поверил, что наука о данных хорошо вписывается в мой собственный Икигай (ознакомьтесь с замечательной статьей Икигай: секрет осмысленной жизни автора Кетаки Вайдья).

Если вам нужны дополнительные советы и дорожная карта для начала работы в области науки о данных, не забудьте ознакомиться с моей предыдущей статьей Medium в журнале Towards Data Science, посвященной 10 вещам, которые я хотел бы знать об обучении науке о данных: окончательная дорожная карта для начала вашего путешествия по науке о данных ».



Заключительное сообщение о возвращении домой

И самое главное, вы должны писать код. Вам нужно заняться проектом по науке о данных. Если вы можете вынести из этой статьи 2 основных вывода, возьмите 2: (1) научитесь кодировать и (2) примените свои навыки кодирования для работы над собственными проектами в области науки о данных.

«Лучший способ изучать науку о данных - это заниматься наукой о данных».
- Чанин Нантасенамат, профессор данных

Подпишитесь на мой список рассылки, чтобы получать мои лучшие обновления (а иногда и бесплатные) в Data Science!

Обо мне

Я работаю полный рабочий день адъюнкт-профессором биоинформатики и руководителем отдела интеллектуального анализа данных и биомедицинской информатики в исследовательском университете в Таиланде. В нерабочее время я ютубер (он же профессор данных), снимаю онлайн-видео о науке о данных. Во всех обучающих видео, которые я делаю, я также размещаю записные книжки Jupyter на GitHub (страница Data Professor GitHub).



Свяжитесь со мной в социальной сети

✅ YouTube: http://youtube.com/dataprofessor/
✅ Веб-сайт: http://dataprofessor.org/ (в разработке)
✅ LinkedIn: https: // www. linkedin.com/company/dataprofessor/
✅ Twitter: https://twitter.com/thedataprof
✅ FaceBook: http://facebook.com/dataprofessor/
✅ GitHub: https://github.com/dataprofessor/
✅ Instagram: https://www.instagram.com/data.professor/