Аннотации курсов
Введение в математику для анализа данных (адаптационный курс)
На курсе “Адаптационный курс по математике” мы повторим основные разделы высшей математики. В ходе курса слушатели вспомнят основные определения и приемы решения задач линейной алгебры, математического анализа, теории множеств и теории вероятностей. Студентам будут предложены несколько блоков заданий по перечисленным выше дисциплинам. Умение решать эти задачи необходимо для успешного освоения курса “Математика для анализа данных”.
Содержание курса:
Основы линейной алгебры:
- Операции с векторами и матрицами
- Нахождение собственных значений матрицы
- Нахождение определителя матрицы
- Решение СЛАУ
Основы математического анализа:
- Дифференцирование одномерных и многомерных функций
- Разложение по формуле Тейлора
- Дифференциальные операторы ФНП: дивергенция, градиент, ротор
- Интегрирование функций одной переменной
Основы теории множеств, основные математические определения
Основы теории вероятностей:
- Комбинаторика
- Вероятность события
- Понятие условной вероятности, формула полной вероятности
- Понятие случайной величины
- Дискретные распределения
- Дискретное математическое ожидание
Математика для анализа данных
Курс проходит в формате blended, то есть, студенты будут проходить онлайн-курс “Математика для анализа данных”, и в дополнение к нему будут слушать семинары в режиме реального времени в Zoom. Онлайн-курс ориентирован на практическое применение методов и инструментов высшей математики и содержит примеры и задания в Python, а также проектные задания по анализу данных. На семинарах в Zoom будут разобраны темы, не освещенные в онлайн-курсе, по ним также будут теоретические, практические и проектные задания.
Курс проводится в первом модуле на первом году обучения.
В курсе “Математика для анализа данных” можно выделить четыре блока: дискретная математика, линейная алгебра, математический анализ для работы с данными, теория вероятностей и ее приложения
В блоке дискретной математики предполагается покрыть следующие темы: перечислительная комбинаторика, производящие функции, комбинаторика в Python, дискретная вероятность, графы, ориентированные графы, компоненты сильной связности, поиск в глубину и ширину, ациклические графы, деревья, остовные деревья, клики и независимые множества, эйлеровы и гамильтоновы циклы, потоки и разрезы, двудольные графы, паросочетания, случайные блуждания в графах, рекомендательные системы на основе подсчета truncated hitting distance.
В блоке линейной алгебры предполагается покрыть следующие темы: линейная алгебра в Python, матрицы и определители, методы их подсчета, системы линейных уравнений, собственные векторы и спектральное разложение, квадратичные формы, QR, LU, сингулярное разложение, псевдообратные матрицы, точность и стабильность, разреженные матрицы, матричное дифференцирование, тензорные разложения, нормы, матричные нормы.
В блоке математического анализа планируется покрыть следующие темы: математический анализ в Python, пределы, непрерывность, выпуклость, ряды, сходимость, производные, численные методы вычисления производных, ряды Тейлора, гладкая оптимизация, интегрирование, численные методы вычисления интегралов, ряды Фурье, преобразование Фурье, векторные поля: градиент, ротор и дивергенция, поток векторного поля через поверхность, теорема Остроградского-Гаусса, теорема Стокса.
В блоке теории вероятностей планируется покрыть следующие темы: вероятность в Python, классическая вероятность, условная вероятность и независимость, теорема Байеса и основы байесовского подхода, непрерывные распределения, свертка распределений, математическое ожидание, дисперсия, ковариация, моменты высших порядков, условное математическое ожидание и условное распределение, предельные теоремы: Пуассона, Муавра-Лапласа, закон больших чисел, центральная предельная теорема, неравенства концентрации меры.
Для успешного прохождения курса требуется знание основ высшей математики, а именно тем, покрываемых адаптационным курсом “введение в математику для анализа данных”; также для прохождения курса необходимо владеть базовыми навыками программирования на языке Python.
После прохождения курса студенты овладеют инструментами и методами основных разделов высшей математики (математический анализ, линейная алгебра, дискретная математика и теория вероятностей) на уровне, достаточном для нужд современного анализа данных.
Основы программирования на Python
Язык программирования Python является одним из самых простых в освоении и популярных языков программирования. Целью курса является изучение основных конструкций языка Python, которые пригодятся при решении широкого круга задач – от анализа данных до разработки новых программных продуктов. В результате освоения курса слушатели научатся обрабатывать и хранить числа, тексты и их наборы, освоят стандартную библиотеку языка Python и смогут автоматизировать задачи по сбору и обработке данных. Курс дает необходимую базу для освоения более специализированных областей применения языка Python, таких как машинное обучение, статистическая обработка данных, визуализация данных и многих других. Также слушатели познакомятся с основами различных парадигм программирования: процедурным, функциональным и объектно-ориентированным программированием. В курсе предлагается большое количество задач по программированию, расположенных по нарастанию сложности, что позволяет закреплять на практике изучаемый материал. К каждому занятию прилагается полный конспект, это делает изучение курса удобнее.
Курс проводился в оффлайн варианте для студентов бакалавриата факультета компьютерных наук НИУ ВШЭ. Курс проводится в первом модуле на первом году обучения. В конце курса студенты готовят индивидуальные проекты.
Основные разделы курса:
- Целые числа, ввод-вывод, простые операции со строками
- Условный оператор и цикл while
- Вещественные числа
- Функции и рекурсия
- Кортежи, цикл for, списки
- Сортировка
- Множества и словари
- Функциональное программирование
- Классы
- Проект
Для успешного освоения курса достаточно знания математики на уровне средней школы, опыта программирования не требуется.
Основы программирования на С++
Данная дисциплина опирается на дисциплины из школьного курса и направлена на овладение навыками программирования на языке С++. В результате изучения этой дисциплины студенты будут иметь практические навыки конструирования конкретных алгоритмов на языке высокого уровня для решения разнообразных математических задач.
Основные разделы курса:
- Средства построения программ на С++.
- Основные способы организации процедурного программирования на С++.
- Введение в объектно-ориентированное программирование на С++
- Обобщенное программирование.
- Обработка ошибок и своевременное освобождение ресурсов.
В результате освоения дисциплины студент должен:
знать основные конструкции и идиомы С++, необходимые для изучения других дисциплин, предусмотренных базовым и рабочим учебными планами, а также для применения в профессиональной деятельности; уметь создавать программы, решающие задачи по заданному алгоритму на языке С++, а также пользоваться компиляторами языка C++ для их выполнения; иметь навыки формализации и решения практических задач по программированию.
Introduction to software engineering (основы промышленной разработки, курс читается на русском языке)
Курс читается во втором модуле на первом году обучения.
Для успешного освоения курса никаких предварительных знаний не требуется.
Курс предназначен для освоения работы с командной строкой, использования мощного текстового редактора, использования необычных функций систем контроля версий и многого другого. Мы рассмотрим дизайн и внутренности этих инструментов, чтобы студенты в будущем свободно владели и понимали остальных разработчиков, а также думали в рамках этих инструментов наиболее гибко. Студенты проводят сотни часов, используя эти инструменты в процессе обучения (и тысячи часов в течение своей карьеры), поэтому имеет смысл сделать процесс обучения максимально плавным и простым. Овладение этими инструментами не только позволяет вам тратить меньше времени на выяснение того, как подчинить ваши инструменты своей воле, но также позволяет решать проблемы, которые раньше казались невероятно сложными.
Алгоритмы и структуры данных
Алгоритмы и структуры данных являются основой для любой программной системы: распределенной системы, мобильного приложения, базы данных, web приложения. В данном курсе студент освоит основные структуры данных и алгоритмы, которые послужат фундаментом для всех дальнейших знаний в области компьютерных наук и программной инженерии.
Курс проходит в третьем модуле на первом году обучения.
Для успешного освоения курса необходимо знание базовых понятий высшей математики; также необходимо умение программировать на языке С++ - пререквизитом служит курс “основы программирования на С++”.
Программа курса:
Модель вычислений, введение в асимптотический анализ
Очередь, Стек, список и динамический массив
Сортировки
Бинарные деревья поиска
Хэш-таблицы
Графы и алгоритмы на них
Алгоритмы на строках
По окончании курса студенты будут владеть основными подходами к решению практических задач с помощью классических алгоритмов и структур данных. Также студенты будут уметь работать со стандартными контейнерами и анализировать алгоритмы,оценивать эффективность их работы.
Полученные знания пригодятся как в работе, так и при прохождении собеседований на позиции в IT-компаниях.
Машинное обучение (современные методы)
Курс пригодится всем, кто хочет погрузиться в область машинного обучения, разобраться в теории и прорешать много практических задач.
По результатам слушатели освоят способы предобработки и визуализации данных, изучат основные методы машинного обучения (линейные и метрические модели, решающие деревья и их композиции), научатся оценивать качество моделей.
Курс проводится во втором и третьем модуле на первом году обучения.
Для успешного прохождения курса требуются знания основ высшей математики, а также навыки программирования на Python. Пререквизиты: курс “математика для анализа данных” и курс “основы программирования на Python”.
Основные темы курса:
Обучение с учителем — линейные модели, решающие деревья, композиции моделей на основе бэггинга и бустинга.
Обучение без учителя — кластеризация и визуализация многомерных данных.
Подготовка данных — отбор признаков, обработка категориальных и текстовых признаков
Глубинное обучение
В последние годы методы глубинного обучения (нейросети) позволили достигнуть впечатляющих успехов в решении прикладных задач из таких областей как компьютерное зрение, обработка естественного языка, обработка аудио. В рамках данного онлайн курса мы рассмотрим основные нейросетевые модели, а также способы их применения и обучения. Студенты получат навыки использования этих технологий в стандартных задачах, а также разработки и модификации методов для новых задач.
Курс проводится в четвертом модуле на первом году обучения и в первом модуле на втором году обучения.
Пререквизитами являются курсы “математика для анализа данных”, “основы программирования на Python”, “машинное обучение”.
Тематический план:
Введение в глубинное обучение
Механика нейросетей и алгоритм обратного распространения ошибок Основные виды нейросетей
Обучение и регуляризация нейросетей
Глубинное обучение для задач компьютерного зрения
Глубинное обучение для задач обработки текстов
Глубинное обучение для построения вероятностных моделей
Непрямые способы использования нейросетей
Встраивание алгоритмов в слои нейросетей
Недифференцируемые модели и глубинное обучение с подкреплением
В результате освоения курса студент должен:
- знать основные принципы построения моделей на основе нейросетей;
- знать наиболее часто используемые стандартные архитектуры и области их применимости;
- знать стандартные алгоритмы обучения и регуляризации нейросетей; виды задач, которые уместно решать при помощи методов глубинного обучения;
- уметь распознавать задачи, которые потенциально можно решить при помощи методов глубинного обучения;
- уметь подбирать наиболее подходящий набор алгоритмов;
- уметь обучать нейросетевые модели на новых наборах данных;
- владеть навыками работы с библиотекой pytorch и ее документацией;
- владеть навыками реализации систем для обучения и использования нейросетей;
- владеть навыками тестирования и отладки существующих систем.
НИС “Машинное обучение”
В рамках этого курса студенты будут работать над курсовой работой первого курса - создавать и настраивать алгоритм машинного обучения, а именно, решать задачу регрессии, классификации, прогнозирования временных рядов, кластеризации или другую стандартную задачу от начала до конца, проходя полный цикл решения задачи анализа данных.
Курс проходит в четвертом модуле на первом году обучения.
Пререквизитами являются курсы “математика для анализа данных”, “основы программирования на Python”, “машинное обучение”.
По окончании курса каждый студент проделает весь цикл анализа данных с некоторым набором данных - эта работа будет являться курсовой работой за первый курс. В результате проделанной работы у студентов появятся практические навыки решения задач анализа данных и применения алгоритмов машинного обучения.
Прикладная статистика в машинном обучении
Курс состоит из трех частей (трех курсов): разведочный анализ данных (2 модуль), прикладная статистика 1 (3 модуль) и прикладная статистика 2 (4 модуль)
Ни одно важное решение в крупных компаниях не принимается без А/B теста. Довольно часто в дизайне эксперимента и интерпретации результатов допускаются ошибки. В рамках онлайн-курса «Анализ данных и прикладная статистика» мы расскажем о том, как аккуратно переводить повседневные задачи на язык статистики и выбирать методы для проверки своих идей.
Студенты научатся математически формализовать свои повседневные задачи и освоят набор необходимых статистических методов для их решения.
Курс проходит в первом модуле на втором году обучения.
Пререквизитами являются курсы “математика для анализа данных” и “основы программирования на Python”
В результате освоения курса студенты будут уметь применять изученные в рамках дисциплины методы к решению прикладных задач анализа данных.
Тематический план:
- Работа с табличными данными в pandas.
- От случайных величин к описательной статистике. Её применение для анализа признаков и поиска аномалий. Работа с пропусками в данных.
- Разработка сложных признаков: groupby, join. Примеры feature engineering.
- Визуализация данных: matplotlib, seaborn, wordcloud.
- Визуализация данных: что такое хорошие и плохие графики, как рассказать историю с помощью визуализации
- Репрезентативность. Точечные оценки. Свойства оценок: несмещенность, состоятельность и асимптотическая нормальность в картинках и примерах. Кейсы про не очень удачные выборки и исследования.
- Откуда берутся точечные оценки? Метод моментов и метод максимального правдоподобия.
- Доверительные интервалы на основе ЦПТ. Разные союзники для строительства доверительных интервалов: распределения хи-квадрат, Стьюдента и Фишера, теорема Фишера.
- От доверительных интервалов к проверке гипотез. Постановка задачи. p-value, ошибки I и II рода. Параметрические критерии. Строительство асимптотического критерия для долей и для пары долей на основе ЦПТ. Гипотезы о среднем, разбросе, доле. Критерий отношения правдоподобий.
- Непараметрические критерии. Критерии согласия. Бутстрап. Проверка нормальности. Саммари о том, что проверка гипотез это лишь разные способы измерять расстояния и делать выводы.
- А/B-тесты. Планирование эксперимента, обсчет результатов. Бизнес-метрики.
- Корреляции: Пирсона, ранговая, Мэтьюса, частная, множественная. Проверка гипотез о независимости.
- Модели временных рядов. Временные ряды как тип данных. Корреляции временных рядов, DTW.
- Введение в байесовскую статистику.
Компьютерное зрение
Развитие методов машинного обучения, вычислительного оборудования, технологий цифровой фото- и видео-съемки, и интернета привели в последние годы к стремительному улучшению качества работы систем компьютерного зрения. Сегодня компьютерное зрение активно применяется в таких областях, как медицина, картография, поиск, видеонаблюдение и беспилотные автомобили. В рамках онлайн курса «Компьютерное зрение» будут подробно разобраны решения основных задач компьютерного зрения: классификация изображений, распознавание и детекция объектов, сегментация изображений и др. Студенты получат навыки использования этих технологий в стандартных задачах, а также разработки и модификации методов для новых задач.
Курс проводится в первом модуле на втором году обучения.
Пререквизитами являются курсы “математика для анализа данных”, “основы программирования на Python”, “машинное обучение”, “глубинное обучение”.
Тематический план:
- Введение в компьютерное зрение. Цифровое изображение и тональная коррекция.
- Основы обработки изображений
- Совмещение изображений и локальные особенности.
- Классификация и поиск по изображениям
- Сверточные нейросети для классификации и поиска похожих изображений
- Детекторы объектов
- Сегментация изображений
- Преобразование и генерация изображений
- Основы обработки видео
- Трёхмерная реконструкция по изображениям
В результате освоения дисциплины студенты будут:
- знать основные современные математические модели и алгоритмы анализа изображений,
- уметь формулировать, решать и оценивать результат решения задач компьютерного зрения,
- уметь оценивать качество решения основных задач компьютерного зрения и обработки изображений,
- владеть навыками реализации алгоритмов решения задач компьютерного зрения на языке Python с использованием библиотек машинного обучения и обработки изображений,
- владеть аппаратом нейросетевых моделей для решения задач анализа и обработки изображений.
Байесовские методы в машинном обучении
Изучение дисциплины «Байесовские методы машинного обучения» нацелено на освоение т.н. байесовского подхода к теории вероятностей как одного из последовательных способов математических рассуждений в условиях неопределенности. В байесовском подходе вероятность интерпретируется как мера незнания, а не как объективная случайность. Простые правила оперирования с вероятностью, такие как формула полной вероятности и формула Байеса, позволяют проводить рассуждения в условиях неопределенности. В этом смысле байесовский подход к теории вероятностей можно рассматривать как обобщение классической булевой логики.
Целью курса также является освоение студентами основных способов применения байесовского подхода при решении задач машинного обучения. Байесовский подход позволяет эффективно учитывать различные предпочтения пользователя при построении решающих правил прогноза. Кроме того, он позволяет решать задачи выбора структурных параметров модели. В частности, здесь удается решать без комбинаторного перебора задачи селекции признаков, выбора числа кластеров в данных, размерности редуцированного пространства при уменьшении размерности, значений коэффициентов регуляризации и проч.
В результате освоения курса студенты будут способны строить комплексные вероятностные модели, учитывающие структуру прикладной задачи машинного обучения, выводить необходимые формулы для решения задач обучения и вывода в рамках построенных вероятностных моделей, а также эффективно реализовывать данные модели на компьютере.
Курс проходит в первом модуле на втором году обучения. Курс является курсом по выбору.
Пререквизиты: курс “математика для анализа данных”.
Тематический план:
- Байесовский подход к теории вероятностей. Полный байесовский вывод.
- Байесовский выбор модели.
- Модель релевантных векторов для задачи регрессии. Модель релевантных векторов для задачи классификации
- ЕМ-алгоритм
- Вариационный подход
- Методы Монте Карло по схеме марковских цепей (МСМС). Стохастические методы МСМС
- Гауссовские процессы для регрессии и классификации
- Тематическая модель Latent Dirichlet Allocation (LDA)
- Стохастический вариационный вывод. Вариационный автокодировщик
По окончании курса студенты будут:
- Знать основные методы обучения и вывода в вероятностных моделях (точные и приближенные).
- Уметь выбирать наиболее подходящий метод обучения для данных моделей
- Уметь выводить необходимые формулы для решения задач обучения и вывода в рамках построенных вероятностных моделей
- Уметь эффективно реализовывать данные модели на компьютере
- Уметь строить вероятностные модели, учитывающие структуру прикладной задачи машинного обучения
- Знать основные байесовские модели, используемые для решения различных задач машинного обучения (смеси распределений, модель релевантных векторов, LDA и т.д.)
- Знать основные методы обучения и вывода в вероятностных моделях (точные и приближенные)
- Знать основные методы генерации выборки из ненормированного вероятностного распределения
Моделирование временных рядов
Курс читается представителями компании SAS.
Данный курс предполагает познакомить студентов с особенностями обработки данных, содержащих в себе временные зависимости. Будут рассмотрены разносторонние подходы к моделированию временных рядов, включающие в себя статистические модели, байесовские методы и иные альтернативные концепции. Временные ряды являются широко распространённой структурой данных в задачах, решаемых в самых разных отраслях: начиная от анализа физических процессов и заканчивая прогнозированием спроса на какие-либо товары в розничных сетях. Данный курс поможет сформировать унифицированную базу знаний о временных рядах, которая будет применима в любом из направлений.
Курс проходит в первом модуле на втором году обучения. Курс является курсом по выбору.
Пререквизиты: курс “математика для анализа данных”.
Тематический план:
- Общее про ряды: сезонность, цикличность, тренд, стационарность.
- Характеристики рядов: автокорреляция, частная автокорреляция, DTW
- Преобразование Фурье для визуализации
- Модель ETS
- Модель ARIMA Тесты на единичные корни: KPSS, DW
- Теорема Вольда, Модель ARMA
- Модели ARIMA и SARIMA
- Байесовский подход на примере prophet
- Модели GARCH, EGARCH
- Анализ временных рядов в финансах, в ритейле и в медицине
По окончании курса студенты будут:
- Уметь распознавать необходимость применения моделей с ненаблюдаемыми компонентами.
- Уметь использовать фильтр Калмана для оценки моделей.
Проектный семинар “Нейронные сети”
В рамках данного курса каждый студент выбирает себе задачу по теме курса и решает её. Проекты могут быть индивидуальные или групповые. Подготовка к проекту осуществляется лично студентами и на проектном семинаре.
Курс проходит в первом модуле на втором году обучения.
По окончании курса у каждого студента (или группы студентов) будет написан проект с использованием нейронных сетей. Этот проект можно будет добавить к себе в портфолио.
Пререквизиты - курсы “машинное обучение”, “глубинное обучение” и “компьютерное зрение”.
Автоматическая обработка текста
Цель курса — ознакомление студентов с задачами и современными технологиями Natural Language Processing. Планируется ознакомление со статистическими и нейросетевыми подходами в NLP, приобретение навыков их использования в реальных практических задачах, в частности, с помощью библиотеки tensorflow. Особое внимание будет уделено приложениям к задаче машинного перевода
Проектный семинар “Автоматическая обработка текста”
В рамках данного курса каждый студент выбирает себе задачу по теме курса и решает её. Проекты могут быть индивидуальные или групповые. Подготовка к проекту осуществляется лично студентами и на проектном семинаре.
Курс проходит во втором модуле на втором году обучения.
Для успешного прохождения курса требуется знание материалов курсов “математика для анализа данных”, “анализ данных и прикладная статистика”, “машинное обучение”, “глубинное обучение”.
Тематический план:
Введение
Подходы к автоматическому анализу синтаксиса и семантики текста
Лингвистические ресурсы
Прикладные задачи автоматической обработки текстов
В результате освоения дисциплины студенты будут:
Знать основные особенности неструктурированных текстов на естественном языке и принципы их грамматического, морфологического, синтаксического и статистического анализа
Понимать ограничения компьютерных моделей автоматической обработки текстов
Уметь применять готовые программные модули анализа текстов и открытые лингвистические ресурсы для решения частных задач автоматической обработки текстов
Иметь представление о видах лингвистических ресурсов, используемых в различных системах обработки текстов
Знать типичные прикладные системы в области автоматической обработки текстов и их архитектурные особенности
Методы оптимизации в машинном обучении
Методы оптимизации лежат в основе решения многих задач компьютерных наук. Например, в машинном обучении задачу оптимизации необходимо решать каждый раз при настройке какой-то модели алгоритмов по данным. Причём от эффективности решения соответствующей задачи оптимизации зависит практическая применимость самого метода машинного обучения. Данный курс посвящен изучению классических и современных методов решения задач непрерывной оптимизации (в том числе невыпуклой), а также особенностям применения этих методов в задачах оптимизации, возникающих в машинном обучении. Основной акцент в изложении делается на практические аспекты реализации и использования методов. Целью курса является выработка у слушателей навыков по подбору подходящего метода для своей задачи, наиболее полно учитывающего её особенности.
Курс проводится во втором модуле на втором году обучения. Курс является курсом по выбору.
Тематический план:
- Основные понятия и примеры задач.
- Методы одномерной оптимизации
- Методы многомерной оптимизации
- Методы оптимизации с использованием глобальных верхних оценок, зависящих от параметра
- Методы внутренней точки.
- Разреженные методы машинного обучения
- Методы отсекающих плоскостей
- Стохастическая оптимизация
В результате освоения курса студенты будут:
- Знать основные методы непрерывной оптимизации, в том числе невыпуклой.
- Уметь толковать задачи машинного обучения как задачи оптимизации и применять релевантные задаче методы.
- Владеть методами теоретического исследования оптимизационного процесса.
- Владеть навыками обработки и интерпретации результатов эксперимента.
- Уметь находить градиенты и гессианы функций от многих переменных.
- Уметь примененять методы оптимизации с использованием глобальных верхних оценок.
- Уметь определять возможности применения того или иного метода оптимизации.
- Уметь ориентироваться в потоке научной информации для использования новых методах оптимизации в отсекающих плоскостей.
Statistical learning theory (статистическая теория обучения)
In this course we study the theoretical framework that inspired the development of two important families of machine learning algorithms: support vector machines and boosting. In a typical classification task we are given (1) a dataset for training and (2) a set of classifiers [for example, neural networks of some size, or polynomial threshold functions of some degree]. The learning algorithm should use the training dataset to select one of the classifiers from the set so that the selected function performs well according to some learning criteria. On one side, we want to have a large set of classifiers to model all structure in the training data. On the other hand a large set of predictors might lead to overfitting. In this course we learn how to quantify such errors and how to apply them on many machine learning algorithms. The bounds in turn, inspire new algorithms and we pay special attention to boosting algorithms. such asAdaBoost and DeepBoosting. These algorithms are currently very succesful in many application areas.
Programme:
- PAC-learning and VC-dimension
- Sauer's lemma, neural networks and agnostic PAC-learning
- Measure concentration, agnostic PAC-learning and Computational learning theory
- Agnostic learning and the adaBoost algorithm
- Boosting: risk bounds using Rademacher complexities
- Margin theory and a deep boosting algorithm
Курс проходит во втором модуле на втором году обучения.
Обработка и анализ больших массивов данных (full stack data engineering)
В этом курсе мы научимся применять алгоритмы машинного обучения к большим объемам данных. Курс разбит на три части: в первой изучаются методы работы с данными, во второй сконцентрируемся на изменениях в алгоритмах машинного обучения, в третьей части изучим применение навыков и алгоритмов из первых двух блоков в реальных сервисах.
Для успешного прохождения курса слушатели должны иметь базовые представления о линейной алгебре (курс “математика для анализа данных”), классических моделях машинного обучения и нейронных сетях (курсы “машинное обучение” и “глубинное обучение”), знакомы с классическими базами данных.
Полученные знания будут проверяться тестами и практическими заданиями. Для прохождения курса потребуется доступ в интернет, все материалы будут доступны онлайн.
После прохождения курса студенты будут уметь эффективно использовать большие объемы данных, обучать модели машинного обучения и создавать сервисы, использующие большие объемы данных и полученные модели для решения практических задач.
Тематический план:
- Базовые подходы к хранению и извлечению информации
- Bash для инженера
- Начало работы с большим объемом данных
- Знакомство со Spark
- Продвинутое использование Spark
- Подготовка данных к обучению
- Обучение классических моделей на больших данных
- Построение рекомендательных систем
- Анализ больших объемов текстовой информации
- Обучение глубоких нейронных сетей
- Развертывание ML моделей
- Анализ системы и аналитика
- End-To-End pipeline, system evolution
- Оптимизация моделей, исполнение на клиенте
- Поиск приближенного ответа
Обучение с подкреплением
Цель курса — ознакомление студентов с основными подходами и алгоритмами обучения с подкреплением. Планируется дать понимание того, какие существуют подходы к решению задач обучения с подкреплением, научить выбирать подход и алгоритм, наиболее подходящий для рассматриваемой студентом задачи, научить обучать модели с использованием современных нейросетевых библиотек.
Курс читается в третьем модуле на втором году обучения.
Пререквизиты: курсы “Математика для анализа данных” и “Машинное обучение”.
Тематический план:
- RL как blackbox optimization
- Value-based методы
- Model-free методы
- Приближённое обучение с подкреплением
- Exploration в обучении с подкреплением
- Policy gradient методы, часть 1
- Рекуррентные нейронные сети
- Partially observable MDPs
После прохождения курса студенты будут:
- знать что такое среда, состояние и агент в обучении с подкреплением
- уметь сформулировать задачу обучения с подкреплением и выбрать эффективный способ её решения
- уметь распознавать ситуации, в которых уместно применение методов обучения с подкреплением
- уметь обучить по возможности оптимального агента для решения задачи, оценить его эффективность
- знать основные парадигмы обучения с подкреплением и границы их применимости
- владеть методами теоретического исследования используемых алгоритмов
- уметь применять различные трюки для ускорения и оптимизации обучения
- уметь достигать баланса между exploration и exploitation
- уметь выбирать архитектуру рекуррентной нейронной сети и обучать её
Проектный семинар “Сбор и обработка больших данных”
В рамках данного курса каждый студент выбирает себе задачу по теме курса и решает её. Проекты могут быть индивидуальные или групповые. Подготовка к проекту осуществляется лично студентами и на проектном семинаре.
Курс проходит в третьем модуле на втором году обучения.
Пререквизиты: курсы “машинное обучение” и “full stack data engineering”.
В результате прохождения курса у каждого студента (или группы студентов) будет законченный проект по сбору и обработке больших данных. Успешные проекты можно добавить в свое портфолио.
Алгоритмы и структуры данных 2
Алгоритмы и структуры данных 2 – продолжение обязательного курса “алгоритмы и структуры данных”. В курсе обсуждаются популярные, но более сложные алгоритмы, не вошедшие в обязательный курс.
Курс является курсом по выбору.
Пререквизиты: курс “алгоритмы и структуры данных”.
Тематический план:
- Основы теории вычислительной сложности
- Методы решения труднорешаемых задач
- Задачи и алгоритмы анализа данных (сегментация, кластеризация, потоковые алгоритмы).
В результате освоения курса студенты будут:
- Уметь проводить анализ корректности и временной сложности алгоритмов; распознавать класс сложности задач
- Уметь адаптировать известные и проектировать новые алгоритмы для решения вычислительно сложных задач на практике
- Уметь разбить задачу на подзадачи, эффективно реализовать программные компоненты для отдельных подзадач и связать их воедино
Сбор и обработка данных с помощью краудсорсинга
В настоящее время практически любая содержательная задача по анализу данных или машинному обучению требует сбора размеченных данных, которые, как правило, нужны в большом количестве и требуют привлечения ручного труда. Работа с "краудом" является одним из востребованных и ключевых навыков, которыми необходимо уметь пользоваться специалистам по анализу данных, если они хотят расти и решать все более крупные и амбициозные задачи.
Курс проходит в четвертом модуле на втором году обучения. Курс является курсом по выбору.
Студенты, прошедшие данный образовательный курс, будут обладать глубоким пониманием и систематизированной картиной технологий краудсорсинга, что должно повысить эффективность работы продуктовых процессов.
Программа курса:
- Общая концепция краудсорсинга
- Декомпозиция исходной задачи
- Интерфейс задания
- Контроль качества
- Классификация
- Агрегация
- Попарное сравнение SbS
- Динамическое перекрытие и прайсинг
- Расшифровки аудио
- Генерация контента
- Тестирование краудом. Типичные ошибки и лучшие практики.
How to win a data science competition (соревновательный анализ данных)
If you want to break into competitive data science, then this course is for you! Participating in predictive modelling competitions can help you gain practical experience, improve and harness your data modelling skills in various domains such as credit, insurance, marketing, natural language processing, sales’ forecasting and computer vision to name a few. At the same time you get to do it in a competitive context against thousands of participants where each one tries to build the most predictive algorithm. Pushing each other to the limit can result in better performance and smaller prediction errors. Being able to achieve high ranks consistently can help you accelerate your career in data science.
In this course, you will learn to analyse and solve competitively such predictive modelling tasks. When you finish this class, you will: - Understand how to solve predictive modelling competitions efficiently and learn which of the skills obtained can be applicable to real-world tasks. - Learn how to preprocess the data and generate new features from various sources such as text and images. - Be taught advanced feature engineering techniques like generating mean-encodings, using aggregated statistical measures or finding nearest neighbors as a means to improve your predictions. - Be able to form reliable cross validation methodologies that help you benchmark your solutions and avoid overfitting or underfitting when tested with unobserved (test) data. - Gain experience of analysing and interpreting the data. You will become aware of inconsistencies, high noise levels, errors and other data-related issues such as leakages and you will learn how to overcome them. - Acquire knowledge of different algorithms and learn how to efficiently tune their hyperparameters and achieve top performance. - Master the art of combining different machine learning models and learn how to ensemble. - Get exposed to past (winning) solutions and codes and learn how to read them.
Disclaimer : This is not a machine learning course in the general sense. This course will teach you how to get high-rank solutions against thousands of competitors with focus on practical usage of machine learning methods rather than the theoretical underpinnings behind them.
Prerequisites: - Python: work with DataFrames in pandas, plot figures in matplotlib, import and train models from scikit-learn, XGBoost, LightGBM. - Machine Learning: basic understanding of linear models, K-NN, random forest, gradient boosting and neural networks.
Programme:
- Introduction & Recap
- Feature Preprocessing and Generation with Respect to Models
- Final Project Description
- Exploratory Data Analysis
- Validation
- Data Leakages
- Metrics Optimization
- Advanced Feature Engineering
- Hyperparameter Optimization
- Ensembling
- Competitions go through
- Final Project
Курс проходит в четвертом модуле на втором году обучения. Курс является курсом по выбору.
Распределенные системы
Дисциплина направлена на изучение основных алгоритмов, лежащих в основе распределённых систем, а также на получение практического опыта работы с технологиями для создания распределённых и высоконагруженных приложений.
План дисциплины:
- Введение. Распределенные системы. Примеры, преимущества, особенности, требования.
- Варианты взаимодействия между процессами. Обмен сообщениями. Синхронные и асинхронные операции. Гарантии доставки, сохранение порядка. Модель запрос-ответ, RPC, идемпотентность.
- Дизайн прикладного протокола, сериализация данных. Эволюция протокола HTTP, стиль REST. WebSockets. Bidirectional streaming в gRPC.
- Взаимодействия в группе. Многоадресная рассылка (multicast). Гарантии и варианты реализации. Оверлейные сети. Распространение информации. Epidemic protocols, gossip, anti-entropy, rumor spreading.
- Непрямое взаимодействие. Message queue, pubsub, DSM, tuple space.
- Отказы. Обнаружение отказов. Свойства детектора отказов. Примеры реализации детектора. Сервис group membership.
- Именование и поиск. Типы и варианты реализации. Поиск в локальной сети. DNS. Поиск в P2P-системах. DHT.
- Высоконагруженные сервисы. Масштабирование. Репликация сервисов, балансировка нагрузки. Шардинг, consistent hashing и другие подходы.
- Распределенные вычисления. Параллельная обработка запросов на кластере, закон Амдала, stragglers. Пакетная обработка данных, модель MapReduce.
- Репликация данных. Варианты реализации (один лидер, несколько лидеров, кворумные чтения и запись). Согласованность, линеаризуемость, другие модели и гарантии.
- Порядок событий. Физические и логические часы. Обнаружение конфликтов. Version vectors. CRDT.
- Обзор некоторых классических распределенных алгоритмов. Mutual exclusion, consistent snapshots, leader election.
- Координация и консенсус. Примеры задач, сводимых к консенсусу. Total Order Broadcast. 2PC. Задача консенсуса. FLP Impossibility. Обзор алгоритмов консенсуса, Paxos, Raft. Практические реализации, ZooKeeper.
Проектный курс “Подготовка финального проекта”
Финальный проект представляет собой большую индивидуальную работу в формате решения практической или исследовательской задачи. Студент выбирает один из предлагаемых проектов. Подготовка к проекту осуществляется лично студентом и на проектном курсе: в течение курса студент проходит контрольные точки, на которых проверяется выполнение определённого блока.
По итогу курса студент создает проектную выпускную квалификационную работу и пишет её текст. Итоговая работа может служить хорошим кейсом для резюме студента.
Курс проходит в четвертом модуле на втором году обучения.
Курс является курсом по выбору. Для успешного прохождения курса требуется прохождение всех обязательных курсов по машинному обучению, содержащихся в программе магистратуры.
Архитектура компьютера и операционные системы (АКОС)
Цель освоения дисциплины: помочь развитию незаменимого в профессиональной деятельности «инженерного чутья», которое рождается из понимания принципов работы компьютеров и деталей взаимодействия прикладного и системного программного обеспечения (ПО) с аппаратурой ЭВМ. Кроме теоретических оснований, дисциплина предусматривает изучение конкретных реализаций аппаратного обеспечения, операционных систем и т.п.
Темы:
- Цифровые электронно-вычислительные машины. Основные концепции и история развития.
- Аппаратура современного компьютера. Архитектура x86: история развития, аппаратная реализация и язык ассемблера.
- Операционная система Linux: развертывание и работа с помощью интерфейса командной строки
- Инструментальные средства разработки и отладки программ в ОС Linux. Инструментарий GNU.
- Представление целых, вещественных и строковых данных в компьютере
- Операционные системы: основы разработки и история развития.
- Семейство операционных систем Linux: базовые сервисы и использование POSIX API.
- Семейство операционных систем Linux: архитектура и программирование на уровне ядра ОС.
Курс является курсом по выбору.
Тестирование программного обеспечения
Цели курса:
- Знакомство с основами разработки программного обеспечения и процесса тестирования в частности
- Изучение всех наиболее используемых видов и технологий мануального и автоматического тестирования
- Знакомство с программными инструментами для обеспечения эффективного тестирования
- Получение практических навыков разработки тестов и выполнения тестирования программ различного назначения и природы
Основные темы:
- Понятие качества программного обеспечения. Цели тестирования
- Модели разработки ПО и место тестирования в них
- Уровни и циклы тестирования. Задачи тестирования
- Техники тестирования
- Артефакты тестирования
- Системы учета и хранения тестов
- Определение и классификация дефектов
- Системы отслеживания дефектов
- Виды и технологии тестирования производительности
- Понятие автоматического тестирования
- Определение и составление тестовой стратегии
- Итеративная модель ведения процесса тестирования
Курс является курсом по выбору.