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

Что обычно происходит на курсе в моем университете при обучении студентов алгоритму кластеризации K-средних, так это то, что им объясняют теорию алгоритма, а затем предоставляют готовую реализацию MATLAB, в которой их просят изменить параметр K и наблюдайте, что происходит. При таком подходе учащиеся могут получить полное представление об алгоритме и, возможно, даже более глубокие теоретические идеи, не увязая в деталях реализации.

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

Когда я веду собственный курс Вычислительные инструменты для больших данных, повестка дня на первую неделю - UNIX, Git и Amazon EC2. В течение этой недели я прошу студентов изучить ряд UNIX-команд для работы с файлами, как использовать Git для контроля версий и как настроить и запустить что-то на виртуальной машине в Amazon. Я прошу их решить актуальные проблемы с реальными файлами в своих терминалах (и если они используют Windows, им нужно начать с изучения SSH, чтобы получить терминал в кластере), создать и использовать свои собственные репозитории на Github и запустить бесплатный инстанс на Amazon EC2 (включая настройку ключей RSA и другие вещи) и заставьте на нем работать.

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

В последующие недели их просят установить и работать с PostgreSQL, MongoDB, Vagrant и различными библиотеками Python. Их также просят использовать файлы данных с предыдущих соревнований на Kaggle.com, которые хранятся в формате JSON, чтобы убедиться, что они не только видели CSV-файлы, когда получают диплом инженеров.

К сожалению, некоторые предметы в моем курсе по-прежнему слишком сложны для всех студентов - это включает в себя настройку кластера Apache Spark и запуск Caffe для обучения сверточных нейронных сетей. Для этого в настоящее время мы предоставляем им Vagrant-файл, в котором установлены библиотеки. Я бы хотел уйти от этого, но помощники учителя не должны тратить 99% своего времени на отладку странных системных ошибок на студенческих ноутбуках. Надеюсь, в будущем мы найдем лучшее решение.