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

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

Версия 03:53, 21 ноября 2015

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



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

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

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

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

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

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

Чему вы научитесь?

Вы точно пройдете все круги ада, начиная от прототипирования интерфейсов и заканчивая тестированием ;)

В зависимости от выбранных заданий вы можете:

  1. Получить опыт написания кода на Python, создать собственный модуль для языка.
  2. Научиться работать с Unix-подобной системой.
  3. Изучить одну из популярных баз данных.
  4. Узнать что такое машинное обучение.

Какие начальные требования?

  1. Наличие машины с unix-подобной ОС
  2. Базовые знания Python или желание интенсивно изучать этот язык

Какие будут использоваться технологии?

Вы точно будете использовать:

  1. Unix подобную ОС + вашу любимую командную оболочку
  2. Python3
  3. Git

В зависимости от выбранных заданий вы можете изучить:

  1. Библиотеку Django
  2. Одну из популярных баз данных
  3. Библиотеку boost::python

Темы вводных занятий

  1. Обсуждение общих организационных вопросов
  2. Введение в git
  3. Введение в машинное обучение.
  4. Линейный классификатор.

При необходимости можно провести несколько занятий по Python3.

Направления развития

Два основных направления развития:

  1. Cоздание красивого web-интерфейса
  2. Улучшение качества классификации

Критерии оценки

Оценка складывается из общей суммы заданий, которые успешно выполнил студент. Однако обязательным условием для получения оценки 10 является хорошее выступление на защите проекта, иначе оценка может быть не выше 9 баллов.

Ориентировочное расписание занятий

  1. ПН 18:00-20:00
  2. ВТ 8:00-10:00 либо 18:00-20:00
  3. CР Недоступен
  4. ЧТ 8:00-10:00 либо 18:00-20:00
  5. ПТ Недоступен
  6. СБ 8:00 - 20:00