Рекомендательная система (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Ориентировочное расписание занятий)
(Чему вы научитесь?)
Строка 31: Строка 31:
  
 
'''В зависимости от выбранных заданий вы можете:'''
 
'''В зависимости от выбранных заданий вы можете:'''
* Получить опыт написания кода на Python, создать собственный модуль для языка;
+
* получить опыт написания кода на Python, создать собственный модуль для языка;
* Научиться работать с UNIX-подобной системой;
+
* научиться работать с UNIX-подобной системой;
* Изучить одну из популярных баз данных;
+
* изучить одну из популярных баз данных;
* Узнать, что такое машинное обучение.
+
* узнать, что такое машинное обучение.
  
 
===Какие начальные требования?===
 
===Какие начальные требования?===

Версия 22:20, 24 ноября 2015

Ментор Симагин Денис
Учебный семестр Весна 2016
Учебный курс 1-й курс
Проект можно развивать на летней практике
Максимальное количество студентов, выбравших проект: 8



Что это за проект?

Создание рекомендательной системы, которая собирает статьи c некоторого интернет-ресурса, обучается на основе оценок пользователя и предлагает ему для прочтения наиболее интересные. Это может быть рекомендательная система новостей, постов на Хабре, твитов и т.п. (можно предложить свой вариант). В ходе взаимодействия пользователь (а им будет сам студент ;) ) ставит отметку предложенной статье (нравится или не нравится) . Эта информация агрегируется, и на основе ее обучается линейный классификатор поверх модели мешка слов.

Проект состоит из двух обязательных частей, которые нужно выполнить для оценки 4 (зачет):

  1. Реализация crawler-а, собирающего статьи;
  2. Реализация линейнего классификатора и консольной утилиты, позволяющей читать и оценивать статьи.

Также есть части на выбор:

  1. Реализация web-интерфейса на основе библиотеки Django (4 балла);
  2. Поиск похожих документов по коллекции, удаление дубликатов (2 балла);
  3. Выделение семантического ядра языка (1 балл);
  4. Реализация распределенного crawler-а (master + workers + queue) (3 балла );
  5. Реализация линейнего классификатора в виде C/C++ модуля для Python 3 (3 балла);
  6. Предложить алгоритм учета свежести статьи в процессе рекомендации (2 балла);
  7. Применить подход однорукого бандита для выбора следующей статьи для показа/обучения (3 балла);
  8. Предложить и реализовать улучшение базового классификатора (до 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