Рекомендательная система (проект) — различия между версиями
(→Чему вы научитесь?) |
|||
Строка 31: | Строка 31: | ||
'''В зависимости от выбранных заданий вы можете:''' | '''В зависимости от выбранных заданий вы можете:''' | ||
− | + | * Получить опыт написания кода на Python, создать собственный модуль для языка; | |
− | + | * Научиться работать с UNIX-подобной системой; | |
− | + | * Изучить одну из популярных баз данных; | |
− | + | * Узнать, что такое машинное обучение. | |
===Какие начальные требования?=== | ===Какие начальные требования?=== |
Версия 14:17, 24 ноября 2015
Ментор | Симагин Денис |
Учебный семестр | Весна 2016 |
Учебный курс | 1-й курс |
Проект можно развивать на летней практике | |
Максимальное количество студентов, выбравших проект: 8 | |
Что это за проект?
Создание рекомендательной системы, которая собирает статьи c некоторого интернет-ресурса, обучается на основе оценок пользователя и предлагает ему для прочтения наиболее интересные. Это может быть рекомендательная система новостей, постов на Хабре, твитов и т.п. (можно предложить свой вариант). В ходе взаимодействия пользователь (а им будет сам студент ;) ) ставит отметку предложенной статье (нравится или не нравится) . Эта информация агрегируется, и на основе ее обучается линейный классификатор поверх модели мешка слов.
Проект состоит из двух обязательных частей, которые нужно выполнить для оценки 4 (зачет):
- Реализация crawler-а, собирающего статьи;
- Реализация линейнего классификатора и консольной утилиты, позволяющей читать и оценивать статьи.
Также есть части на выбор:
- Реализация web-интерфейса на основе библиотеки Django (4 балла);
- Поиск похожих документов по коллекции, удаление дубликатов (2 балла);
- Выделение семантического ядра языка (1 балл);
- Реализация распределенного crawler-а (master + workers + queue) (3 балла );
- Реализация линейнего классификатора в виде C/C++ модуля для Python 3 (3 балла);
- Предложить алгоритм учета свежести статьи в процессе рекомендации (2 балла);
- Применить подход однорукого бандита для выбора следующей статьи для показа/обучения (3 балла);
- Предложить и реализовать улучшение базового классификатора (до 6 баллов).
Чему вы научитесь?
Вы точно пройдете все круги ада, от прототипирования интерфейсов до тестирования.
В зависимости от выбранных заданий вы можете:
- Получить опыт написания кода на Python, создать собственный модуль для языка;
- Научиться работать с UNIX-подобной системой;
- Изучить одну из популярных баз данных;
- Узнать, что такое машинное обучение.
Какие начальные требования?
- Наличие машины с UNIX-подобной ОС;
- Базовые знания Python или желание интенсивно изучать этот язык.
Какие будут использоваться технологии?
Вы точно будете использовать:
- UNIX-подобную ОС + вашу любимую командную оболочку;
- Python 3;
- Git.
В зависимости от выбранных заданий вы можете изучить:
- Библиотеку Django;
- Одну из популярных баз данных;
- Библиотеку boost::python.
Темы вводных занятий
- Обсуждение общих организационных вопросов;
- Введение в Git;
- Введение в машинное обучение. Линейный классификатор.
При необходимости можно провести несколько занятий по Python 3.
Направления развития
- Cоздание красивого web-интерфейса;
- Улучшение качества классификации;
- Масштабирование.
Критерии оценки
Оценка складывается из общей суммы заданий, которые успешно выполнены. Однако для получения 10 необходимо хорошее выступление на защите проекта, иначе оценка будет не выше 9.
Ориентировочное расписание занятий
- ПН 18:00-20:00;
- ВТ 8:00-10:00 либо 18:00-20:00;
- CР Недоступен;
- ЧТ 8:00-10:00 либо 18:00-20:00;
- ПТ Недоступен;
- СБ 8:00 - 20:00.