Рекомендательная система (проект): различия между версиями
Нет описания правки |
Нет описания правки |
||
| Строка 11: | Строка 11: | ||
=== Что это за проект? === | === Что это за проект? === | ||
Создание [https://en.wikipedia.org/wiki/Recommender_system рекомендательной системы], которая собирает статьи | Создание [https://en.wikipedia.org/wiki/Recommender_system рекомендательной системы], которая собирает статьи c некоторого интернет-ресурса, обучается на основе оценок пользователя и предлагает ему для прочтения наиболее интересные. Это может быть рекомендательная система новостей, постов на хабре, твитов и т.п. (можно предложить свой вариант). В ходе взаимодействия пользователь (а им будет сам студент ;) ), ставит отметку предложенной статье (нравится или не нравится) . Эта информация агрегируется, и на основе ее обучается [https://en.wikipedia.org/wiki/Linear_classifier линейный классификатор] поверх модели [https://en.wikipedia.org/wiki/Bag-of-words_model мешка слов]. | ||
Проект состоит из двух обязательных частей, которые нужно выполнить для оценки 4 (зачет): | Проект состоит из двух обязательных частей, которые нужно выполнить для оценки 4 (зачет): | ||
# Реализация [https://en.wikipedia.org/wiki/Web_crawler crawler-а], собирающего статьи | # Реализация [https://en.wikipedia.org/wiki/Web_crawler crawler-а], собирающего статьи; | ||
# Реализация линейнего классификатора и консольной утилиты, | # Реализация линейнего классификатора и консольной утилиты, позволяющей читать и оценивать статьи. | ||
Также есть части на выбор: | Также есть части на выбор: | ||
# Реализация web-интерфейса на основе библиотеки Django (4 балла) | # Реализация web-интерфейса на основе библиотеки Django (4 балла); | ||
# Поиск похожих документов по коллекции, удаление дубликатов (2 балла) | # Поиск похожих документов по коллекции, удаление дубликатов (2 балла); | ||
# Выделение семантического ядра языка (1 балл) | # Выделение семантического ядра языка (1 балл); | ||
# Реализация распределенного crawler-а (master + workers + queue) (3 балла ) | # Реализация распределенного crawler-а (master + workers + queue) (3 балла ); | ||
# Реализация линейнего классификатора в виде C/C++ модуля для Python3 (3 балла) | # Реализация линейнего классификатора в виде C/C++ модуля для Python3 (3 балла); | ||
# Предложить алгоритм учета свежести статьи в процессе рекомендации (2 балла) | # Предложить алгоритм учета свежести статьи в процессе рекомендации (2 балла); | ||
# Применить подход однорукого бандита для выбора следующей | # Применить подход однорукого бандита для выбора следующей статьи для показа/обучения (3 балла); | ||
# Предложить и реализовать улучшение базового классификатора (до 6 баллов) | # Предложить и реализовать улучшение базового классификатора (до 6 баллов). | ||
=== Чему вы научитесь? === | === Чему вы научитесь? === | ||
Вы точно пройдете все круги ада, | Вы точно пройдете все круги ада, от прототипирования интерфейсов до тестирования. | ||
'''В зависимости от выбранных заданий вы можете:''' | '''В зависимости от выбранных заданий вы можете:''' | ||
# Получить опыт написания кода на Python, создать собственный модуль для языка | # Получить опыт написания кода на Python, создать собственный модуль для языка; | ||
# Научиться работать с | # Научиться работать с UNIX-подобной системой; | ||
# Изучить одну из популярных баз данных | # Изучить одну из популярных баз данных; | ||
# Узнать что такое машинное обучение. | # Узнать, что такое машинное обучение. | ||
=== Какие начальные требования? === | ===Какие начальные требования?=== | ||
# Наличие машины с | # Наличие машины с UNIX-подобной ОС; | ||
# Базовые знания Python или желание интенсивно изучать этот язык | # Базовые знания Python или желание интенсивно изучать этот язык. | ||
=== Какие будут использоваться технологии? === | ===Какие будут использоваться технологии?=== | ||
'''Вы точно будете использовать:''' | '''Вы точно будете использовать:''' | ||
# | # UNIX-подобную ОС + вашу любимую командную оболочку; | ||
# Python3 | # Python3; | ||
# Git | # Git. | ||
'''В зависимости от выбранных заданий вы можете изучить:''' | '''В зависимости от выбранных заданий вы можете изучить:''' | ||
# Библиотеку Django | # Библиотеку Django; | ||
# Одну из популярных баз данных | # Одну из популярных баз данных; | ||
# Библиотеку boost::python | # Библиотеку boost::python. | ||
=== Темы вводных занятий === | ===Темы вводных занятий=== | ||
# Обсуждение общих организационных вопросов | # Обсуждение общих организационных вопросов; | ||
# Введение в Git | # Введение в Git; | ||
# Введение в машинное обучение. Линейный классификатор. | # Введение в машинное обучение. Линейный классификатор. | ||
При необходимости можно провести несколько занятий по Python3. | При необходимости можно провести несколько занятий по Python3. | ||
=== Направления развития === | ===Направления развития=== | ||
# Cоздание красивого web-интерфейса | # Cоздание красивого web-интерфейса; | ||
# Улучшение качества классификации | # Улучшение качества классификации; | ||
# Масштабирование | # Масштабирование. | ||
=== Критерии оценки === | ===Критерии оценки=== | ||
Оценка складывается из общей суммы заданий, которые успешно выполнены. Однако для получения 10 необходимо хорошее выступление на защите проекта, иначе оценка будет не выше 9. | Оценка складывается из общей суммы заданий, которые успешно выполнены. Однако для получения 10 необходимо хорошее выступление на защите проекта, иначе оценка будет не выше 9. | ||
=== Ориентировочное расписание занятий === | ===Ориентировочное расписание занятий=== | ||
# ПН 18:00-20:00 | # ПН 18:00-20:00; | ||
# ВТ 8:00-10:00 либо 18:00-20:00 | # ВТ 8:00-10:00 либо 18:00-20:00; | ||
# CР Недоступен | # CР Недоступен; | ||
# ЧТ 8:00-10:00 либо 18:00-20:00 | # ЧТ 8:00-10:00 либо 18:00-20:00; | ||
# ПТ Недоступен | # ПТ Недоступен; | ||
# СБ 8:00 - 20:00 | # СБ 8:00 - 20:00. | ||
Версия от 21:21, 21 ноября 2015
| Ментор | Симагин Денис |
| Учебный семестр | Весна 2016 |
| Учебный курс | 1-й курс |
| Проект можно развивать на летней практике | |
| Максимальное количество студентов, выбравших проект: 8 | |
Что это за проект?
Создание рекомендательной системы, которая собирает статьи c некоторого интернет-ресурса, обучается на основе оценок пользователя и предлагает ему для прочтения наиболее интересные. Это может быть рекомендательная система новостей, постов на хабре, твитов и т.п. (можно предложить свой вариант). В ходе взаимодействия пользователь (а им будет сам студент ;) ), ставит отметку предложенной статье (нравится или не нравится) . Эта информация агрегируется, и на основе ее обучается линейный классификатор поверх модели мешка слов.
Проект состоит из двух обязательных частей, которые нужно выполнить для оценки 4 (зачет):
- Реализация crawler-а, собирающего статьи;
- Реализация линейнего классификатора и консольной утилиты, позволяющей читать и оценивать статьи.
Также есть части на выбор:
- Реализация web-интерфейса на основе библиотеки Django (4 балла);
- Поиск похожих документов по коллекции, удаление дубликатов (2 балла);
- Выделение семантического ядра языка (1 балл);
- Реализация распределенного crawler-а (master + workers + queue) (3 балла );
- Реализация линейнего классификатора в виде C/C++ модуля для Python3 (3 балла);
- Предложить алгоритм учета свежести статьи в процессе рекомендации (2 балла);
- Применить подход однорукого бандита для выбора следующей статьи для показа/обучения (3 балла);
- Предложить и реализовать улучшение базового классификатора (до 6 баллов).
Чему вы научитесь?
Вы точно пройдете все круги ада, от прототипирования интерфейсов до тестирования.
В зависимости от выбранных заданий вы можете:
- Получить опыт написания кода на Python, создать собственный модуль для языка;
- Научиться работать с UNIX-подобной системой;
- Изучить одну из популярных баз данных;
- Узнать, что такое машинное обучение.
Какие начальные требования?
- Наличие машины с UNIX-подобной ОС;
- Базовые знания Python или желание интенсивно изучать этот язык.
Какие будут использоваться технологии?
Вы точно будете использовать:
- UNIX-подобную ОС + вашу любимую командную оболочку;
- Python3;
- Git.
В зависимости от выбранных заданий вы можете изучить:
- Библиотеку Django;
- Одну из популярных баз данных;
- Библиотеку boost::python.
Темы вводных занятий
- Обсуждение общих организационных вопросов;
- Введение в Git;
- Введение в машинное обучение. Линейный классификатор.
При необходимости можно провести несколько занятий по Python3.
Направления развития
- 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.