Практики по курсу "Машинное обучение" для программы "большие данные и распределенная цифровая платформа" ПМ-ПУ СПбГУ Чтобы начать: делаете форк этого репозитория себе и отправляете мне в личку свои имя-фамилию и ссылку на реп.
План является предварительным и будет меняться
- Особенности линейной регрессии
- Bias-variance trade-off
- Выбор признаков. Проклятие размерности.
- Интерпретация
- Текстовые данные. Эмбеддинги.
- Проблемы несбалансированных данных. Imblearn, метрики.
- Калибрация моделей
- Distribution shift
- Semi-supervised learning, continous learning
- LOESS
- Gaussian processes?
В заданиях надо написать код, протестировать, проделать вычисления итп, на защите поговорить со мной. В соревнованиях вы соревнуетесь друг с другои на Kaggle и, если мне станет интересно, со мной. Можно делать что угодно с учетом ограничений, которые будут указаны в тексте. Дедлайн соревнований не привязан явно к мягкому или жесткому дедлайну, пока соренования будут длиться от 2 до 4 недель.
Важно: в начале курса убедитесь, что у вас есть аккаунт на kaggle, в противном случае я буду искать альтернативы.
TBD
Мягкий дедлайн по каждому заданию - 14 день после его публикации, время защиты - ближайшая пара и далее. Если задание опубликовано в другой день, то время на выполнение - те же 14 дней, но защита будет после ближайшего занятия после. Защититься можно и на других парах. Время защиты на оценку не влияет. Примеры:
- Задание опубликовано в субботу до занятия или на нем, дедалайн - следующее занятие (последняя минута занятия). В конце следующего занятия происходит отсечка и начинается защита.
- Задание опубликовано в среду. Дедлайн на сдачу - среда через неделю (время пуша на гитхаб + 1 минута). Ждем до субботы, в субботу защита.
После мягкого дедлайна каждый день просрочки уменьшает оценку на 10 %. Итого жесткий дедлайн - 24 день. Защита также на ближайшей паре после него. Расчет будет проходить следующим образом:
- Считается балл за задачи (как будто штрафа нет)
- Результат умножается на 1 - 0.1 * на количество просроченных дней
- Просрочка начинается, как только заканчивается время на сдачу. Т.е. если срок - 23.59 среды, в 00.00 четверга множитель уже 0.9.
Сдачей задачи считается коммит и пуш в именной репозиторий на гитхаб. Время коммита будет считаться временем сдачи. Если с гитхабом проблемы, необходимо выслать файл с решением мне. В противном случае датой будет считаться дата защиты. Можно делать сколько угодно коммитов до финальной сдачи. Я буду учитывать только последний их них. Исключение - исправление мелких ошибок и помарок в тексте, рефакторинг, итп.
Для соревнований: дедлайн один (жесткий) - конец соревнования. После публикации результата необходимо прислать мне описание решения. Подойдет:
- Ноутбук с обучением модели + краткий отчет об идеях
- Набор ноутбуков с разными идеями
- Набор .py файлов + краткий отчет об идеях
Также я планирую устраивать небольшие обсуждения идей на паре в процессе соревнования (и после).
Исключение для всех заданий - зачетный период, тогда срок будет min(дедлайн, зачет).
За прорешенные семинарские ноутбуки будет добавляться (максимум) по 1 баллу. Защиты по ним не проводятся, дедлайн тоже отсутствует. Однако, я не гарантирую, что проверю все ваши ноутбуки, если они будут сделаны в последний момент (как минимум последний месяц семестра).
Ваша задача - сделать проект, подобный прошлогоднему. При этом требования немного меняются:
- Проект должен быть как минимум забавный. Можете выбрать любую дурачливую или несерьезную тему на ваш выбор (в пределах разумного) или же то, что вам нравится.
- Проект должен включать сбор данных - либо физических, либо онлайн, но сам сбор должен проводиться вами. То есть вы можете бегать по знакомым и мерять температуру их котов, классифицировать парадные, собирать корпус раннего творчества Шамана или игровую статистику в доте, но сами.
- Для каждого этапа работы с данными вы должны создать артефакт, добавляемый в "дизайн-документ" проекта в довольно свободной форме, описывающего выбор методов и тп. Пример структуры такого документа:
| Раздел | Содержание |
|---|---|
| Цель и метрики | Что решаем, как измеряем успех и почему |
| Данные | Источники, объём, основные поля и ограничения |
| Подход | Признаки + базовая модель + способ валидации |
| Риски | 2–3 главных риска или ограничения |
| Анализ ошибок | Анализ остатков, калибровка моделей |
- В проекте может участвовать до 3 человек.
- Можно использовать только классические методы, нейронки можно использовать только для построения эмбеддингов ПОСЛЕ СОГЛАСОВАНИЯ.В противном случае, если на защите окажется, что проект был с нейронками, он получит минимальный балл
Неуказанные требования такие же, как в прошлом году. В дальнейшем они могут дополняться на основе ваших вопросов. Защита в виде презентаций будет в конце семестра или на зачете.
Учет списывания будет вестись по коммитам. Кто первый закоммитил - тот и молодец.
Неэффективный, плохо читаемый код или непонятные графики могут снизить оценку. Советую пользоваться линтерами (isort, black, pylint, mypy). Интересные находки - библиотеки для визуализации, работы с данными, отслеживанием экспериментов, продвинутые модели - все это может повысить оценку, даже немного сверх максимума.
На защите я буду задавать вопросы по работе - на понимание формул, кода - и другие уточняющие вопросы. Также я планирую прогонять тесты, так что лучше отправлять задачи до занятия, чтобы не тратить время. До дедлайна решения можно будет исправлять, я буду присылать в личку информацию о непройденных тестах или иных ошибках. Если у вас были проблемы при выполнении задачи - при защите можно улучшить свою оценку, продемонстрировав понимание :) Или ухудшить, если окажется, что работа списана. Если вы использовали какие-то источники, туториалы, видео итп при выполнении заданий, то мне нужно будет прислать отдельный файл с их списком.
Оценка будет основана на баллах, заработанных в течение семестра. Баллы будут приведены в границы 0-1, где 1 соответствует максимальному числу базовых баллов. Предварительная формула (с проектом): $ 25 * домашки + 25 * проект + 10 * проверочные + 30 * соревнования + 10 семинары $
Для получения зачета определены границы (в базовых баллах):
| e | d | c | b | a |
|---|---|---|---|---|
| 60% | 70% | 80% | 90% | 100% |
Баллы с основных и дополнительных баллов суммируются.
Получившие более 75% дополнительных баллов и не менее с по сумме базовых также освобождаются от задачи на экзамене.