Рекомендательная система (проект) — различия между версиями
Строка 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. |
Версия 00:21, 22 ноября 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.