Вы хотите изучать Data Science в колледже. Ваш университет предлагает новую степень в области науки о данных, которую вы можете использовать, чтобы получить лучшую работу в Америке. Вы просматриваете описания курсов, наполненные одними из самых модных слов в мире: Машинное обучение, Искусственный интеллект, Большие данные, Нейронные сети и т. Д. Вы в восторге!

И вы должны быть взволнованы. Многие университеты создают совершенно новые классы и программы по дисциплинам Data Science / Machine Learning, чтобы удовлетворить высокий спрос в отрасли. Хотя эти программы хорошо справляются со своей задачей дать студентам хорошее представление об основах науки о данных, я действительно считаю, что есть определенные темы и идеи, которые упускают из виду, которые лучше подготовят студентов к тому, чтобы изменить мир к лучшему после колледжа.

Боковое примечание: все эти идеи являются личным мнением, которое я сформировал на основе моего опыта в колледже. Я не делаю обобщения, что программы Data Science в любом случае плохи. Я просто хотел поделиться некоторыми вещами, которые я изучил самостоятельно, которые помогли мне преуспеть в отрасли.

1. Очистка данных

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

Эта проблема

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

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

Решение

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

Это потребует некоторой работы вне класса. Делать собственные проекты - это хорошо, но собирайте для этого собственные данные. Хотя Kaggle - отличный ресурс для оттачивания ваших навыков Data Science, он не будет хорошим ресурсом для практики очистки и подготовки данных. Предлагаю идею:

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

  • Напишите скрипты для очистки данных из Интернета (посмотрите BeautifulSoup)
  • Поиск данных, которые не обязательно используются для машинного обучения (см. Поиск по набору данных Google)
  • Используйте данные, которые у вас уже есть, но попробуйте решить другую проблему
  • Отправьте электронное письмо компании, у которой есть интересные данные, с просьбой использовать их для исследования (это может быть сложно, если вы не предложите им что-то взамен, некоторые компании могут предложить академические лицензии)

2. Объяснимость

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

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

Я не говорю об объяснимости модели, что означает точное описание того, как модель пришла к решению. Кэсси Козырков написала действительно исчерпывающую статью о том, почему объяснимый ИИ не работает. Цитата из ее статьи:

«Сложность - причина всего этого»

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

Вы спросите, что я имею в виду под «объяснимостью»? Что ж, вот в чем проблема.

Проблема

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

Ни разу вас не попросят объяснить свою работу не специалисту по данным, а тем более человеку, не имеющему технического образования. В промышленности такое общение может происходить изо дня в день, если вы работаете в более крупной компании. Создание сложных моделей с последующим объяснением их использования руководителям проектов и руководителям имеет важное значение для развертывания ваших моделей. Часто люди впервые делают это «объяснение» после окончания колледжа. Способность объяснять модели позволит вам преуспеть в своей работе, лучше понять свою собственную работу и иметь возможность охватить более широкую аудиторию. Кроме того, люди обычно боятся перемен. Если корпоративная функция исторически выполнялась односторонним образом, люди не решались бы переключиться на «современный подход машинного обучения» без хорошего объяснения.

Решение

Я предлагаю несколько идей, как получить такой опыт во время учебы в колледже:

  • Обсудите свою работу с людьми или профессорами, не относящимися к вашей специальности.
  • Пишите статьи о своей работе на нетехническом уровне (этим я и занимался, посмотрите мою первую статью здесь!)
  • Я лично считаю, что в публикации Towards Data Science есть много статей, которые отлично справляются с простым объяснением технических тем высокого уровня. Оформите подписку и следите за своими любимыми писателями!
  • Всегда полезно заниматься своими проектами в дисциплинах, которые вам интересны. Я люблю бейсбол, поэтому я много работал с прогностическими моделями, касающимися бейсбола. Мне всегда легко объяснить эти модели, потому что я хорошо знаком с дисциплиной. Будет сложно объяснить, почему цветок ириса - это сетоса, если вы не ботаник! (вау, моя вторая шутка с радужкой, это проблема)

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

3. Масштабируемость

Работать над проектами с наборами данных, которые поместятся на вашем ноутбуке, приятно. Но в «реальном мире» вы часто будете работать с такими большими данными, что вашего ноутбука просто не хватит! Нам нужно уметь масштабировать!

(Масштабируемость) - это способность компьютерного приложения или продукта (аппаратного или программного обеспечения) продолжать нормально функционировать, когда оно (или его контекст) изменяется в размере или объеме для удовлетворения потребностей пользователя. Как правило, масштабирование выполняется до большего размера или объема. -TechTarget

Проблема

Другими словами, важно знать, как писать код и использовать доступные ресурсы для создания приложений, которые можно развернуть на уровне предприятия. Этот тип обучения редко преподается на уровне бакалавриата.

Существуют классы, которые будут охватывать определенные технологии в этой области, такие как большие данные и облачные вычисления. Однако, по моему опыту, эти классы охватывают архитектуру этих концепций, а не применяют их конкретно к Data Science. Я не хочу преуменьшать ценность этих занятий, но специалисту по анализу данных не обязательно знать, что скрывается за Amazon Web Services, чтобы использовать Amazon Web Services. Мои решения выделят ряд важных технологий, которые широко используются в промышленности, но редко рассматриваются в школе.

Решение

Облачные службы: научиться пользоваться облачными службами - бесценный навык (особенно в наши дни). Облачные сервисы - это современный уровень создания масштабируемых программ. К счастью, у трех крупнейших мировых поставщиков облачных услуг - Amazon Web Services, Google Cloud и Microsoft Azure - есть бесплатные сервисы, которые можно опробовать. Увы, предлагаю свои первые решения:

  • Создайте учетную запись в AWS, Google Cloud или Azure и начните узнавать об их сервисах.
  • Возьмите одну из своих моделей глубокого обучения и попробуйте создать ее в облаке. Посмотрите, насколько он быстрее работает? Узрите масштабируемость. Вот учебное пособие, которое поможет вам начать работу.

Большие данные. Следующее решение связано с большими данными. Многие облачные провайдеры предоставляют услуги по хранению больших данных. Их стоит изучить. Кроме того, другие компании, такие как Splunk, специализируются на хранении больших данных. Мои вторые решения:

  • Ознакомьтесь с Splunk для больших данных. Splunk используется многими крупными корпорациями для своих решений для больших данных - многие из их услуг также бесплатны.

Контейнеризация: Далее стоит поговорить о контейнерах Docker. Короче говоря, использование контейнеров Docker - это способ упаковать проект. Они берут все зависимости, необходимые для запуска проекта, и помещают их в контейнер. Это упрощает запуск вашего проекта где угодно (даже в облаке!). Важно знать, как использовать контейнеры Docker, потому что это широко используемый метод для развертывания приложений на уровне предприятия. Мое третье решение таково:

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

Почетные упоминания

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

Git

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

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

Вот несколько идей для начала:

  • GitHub - самый популярный клиент для использования git. GitHub предоставляет приятный пользовательский интерфейс для вашего онлайн-хранилища. В Интернете есть неограниченное количество руководств по использованию GitHub. Вот мне нравится.
  • BitBucket похож на GitHub.
  • Другой инструмент для совместной работы, о котором упоминается гораздо реже, но столь же полезный, - это Google Colab. Google Colab похож на Google Docs для программирования. Для этого он использует интерфейс типа Jupyter Notebook.

Хотите знать, почему я больше не объяснил Jupyter Notebooks? Просто подожди….

Блокноты Jupyter

Ага, как вы уже догадались… Блокноты Jupyter заменяют текстовый редактор. Они позволяют запускать определенные блоки кода за раз, а также писать в Markdown. Вот скриншот записной книжки:

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

Вот пошаговый процесс, чтобы начать использовать Jupyter:

  1. Откройте окно терминала.
  2. Выполните команду: pip3 install jupyter.
  3. Подождите, пока jupyter установит свои зависимости.
  4. Выполните команду jupyter notebook, чтобы запустить первую записную книжку.
  5. Скопируйте и вставьте один из URL-адресов в веб-браузере, нажмите Enter.
  6. Нажмите «Создать» в правом верхнем углу, чтобы создать новую записную книжку.

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

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

Как всегда, мы будем благодарны за обратную связь. Спасибо за прочтение!

J