Создание прототипа рекомендательной экспертной системы, реализующей методы коллаборативной фильтрации на языке Python

Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 08:31, курсовая работа

Описание работы

Цель работы: реализация прототипа рекомендательной экспертной информационной системы, основанной на алгоритмах коллаборативной фильтрации.
Объектом исследования данной курсовой работы являются интеллектуальные Интернет технологии анализа клиентских сред.
Предметом исследования выступает рекомендательная экспертная система, реализующая методы коллаборативной фильтрации.
При выполнении работы ее цель определила необходимость решения следующих задач:
Изучить теоретические основы технологии анализа клиентских сред.
Рассмотреть особенности коллаборативной фильтрации.
Описать предметную область с точки зрения применения технологии АКС к построению рекомендательной информационной системы.

Содержание работы

Введение………………………………………………………………………..
3
1. Основные проблемы и технология анализа клиентских сред…………...
5
1.1. Технология анализа клиентских сред …………………………….
5
1.2. Рекомендательные системы………………………………………..
9
1.3. Понятие и особенности коллаборативной фильтрации…………..
12
1.4. Возможности и перспективы языка Python……………………….
15
2. Реализация рекомендательной экспертной системы…………………….
18
2.1. Анализ предметной области……………………………………….
18
2.1.1. Постановка задачи………………………………………….
18
2.1.2. Математическая постановка задачи коллаборативной фильтрации………………………………………………………..

19
2.2. Функциональная модель рекомендательной экспертной
системы.....................................................................................................

21
2.3. Реализация алгоритмов коллаборативной фильтрации с помощью языка Python………………………………………………………

24
2.3.1. Сбор информации………………………………………….
24
2.3.2. Оценка похожести объектов……………………………….
26
2.3.3. Ранжирование объектов……………………………………
33
2.3.4. Рекомендование предметов………………………………..
34
Заключение……………………………………………………………………
42
Список использованной литературы………………………

Файлы: 1 файл

kursovaya_1.doc

— 896.00 Кб (Скачать файл)

Рисунок 1. Пример реализации рекомендаций сайта Ozon.ru

Рекомендательные  системы могут генерировать прогнозы (рекомендации) тремя основными способами:

  1. Контентным методом. В данном случае полезность товара выводится из потребительской оценки сходства продуктов. Например, для того, чтобы посоветовать человеку фильм, контентная система пытается найти сходства между различными картинами, которые прежде получили у него высокую оценку (одни и те же актеры, режиссеры, жанры и т.д.). Подобные рекомендации основаны на принципе «найдите для меня вещи, подобные тем, что мне нравились в прошлом». В основе контентной рекомендательной системе лежат методы поиска информации, её сопоставления и фильтрация. Этот подход чаще всего используется для текстов – документов, веб-сайтов, блогов. Профиль предпочтений формируется на основе информации, которую получают от потребителя либо напрямую, либо косвенно.
  2. Методом коллаборативной фильтрации: потребителю рекомендуют товары, которые вычисляются по оценкам людей со схожими вкусами, уже опробовавших данный продукт и поделившихся своими суждениями.
  3. Гибридными методами, которые представляют собой комбинацию коллаборативных и контентного подходов и позволяют избежать ограничений, свойственных каждой из систем в отдельности. Комбинации могут быть разными. Возможен вариант произведения расчетов в рамках коллаборативной и контентной схем по отдельности, а затем объединить предсказания. Можно встроить некоторые из контентных принципов в коллаборативную методику и наоборот. Наконец, в рамках гибридного подхода возможно построение единой рекомендательной модели. Основная сложность, которая возникает в этом случае, заключается в необходимости получения информации об объектах рекомендаций.

Кроме того, существуют вспомогательные системы, которые не вычисляют рекомендации. Их основная идея заключается в том, чтобы служить инструментом обмена рекомендациями. Первая в мире рекомендательная система Tapestry относилась к вспомогательному типу. Узкое место вспомогательных систем обусловлено тем, что они эффективны только при наличии некоторого числа добровольцев, готовых генерировать информацию, полезную для общества. Как правило, подобная работа не оплачивается.

Зачастую рекомендательные системы реализуются на алгоритме  коллаборативной фильтрации. В данной курсовой работе более подробно будут рассмотрены принципы выработки рекомендаций с помощью методов коллаборативной фильтрации.

 

 

1.3. Понятие  и особенности коллаборативной  фильтрации

 

 

Современного  человека окружает огромное информационное пространство, в котором довольно легко заблудиться, но еще сложнее в нем найти то, что действительно заинтересует именно вас. Другая проблема большого объема информации в том, что вам хочется усвоить как можно больше полезных сведений, соответствующих вашим предпочтениям. Искать и перебирать книги, фильмы, спектакли – это довольно длительный процесс. Он отнимает драгоценное время и деньги: покупая книгу или билет на зрелище, никто не может гарантировать, что он получит удовольствия от процесса ознакомления с этим продуктом. В подобных случаях полезной окажется коллаборативная фильтрация.

Впервые термин «Коллаборативная фильтрация» употребил  Дэвид Голдберг из компании Xerox PARC в 1992 году в статье «Using collaborative filtering to weave an information tapestry». Он спроектировал систему Tapestry, которая позволяла людям аннотировать информацию как интересную или неинтересную и применяла эту информацию для фильтрации документов, предлагаемых другим людям. В настоящее время алгоритм коллаборативной фильтрации получил широкое призвание и применяется на тысячах сайтах для рекомендования музыки, книг, товаров, подкастов, других сайтов, статей и т.д.

Коллаборативная фильтрация (совместная фильтрация) – это метод, дающий автоматические прогнозы относительно интересов пользователя по собранной информации о вкусах множества пользователей (сотрудничающих между собой) [22, с. 51]. Основное допущение этого метода состоит в следующем: те, кто соглашался в прошлом, склонны согласиться и в будущем. Например, коллаборативная фильтрация или рекомендательная система по музыкальным вкусам способна прогнозировать, какая музыка понравится пользователю, имея неполный список его предпочтений (симпатий и антипатий). На рисунке 2 представлен пример выработки рекомендаций на сайте Last.fm.

Рисунок 2. Рекомендации сайта Last.fm

Необходимо  отметить, что эти прогнозы индивидуальны, хотя используемая информация собрана от многих участников. Тем самым они отличаются от более простого подхода, дающего усреднённую оценку для каждого объекта интереса, к примеру, базирующуюся на количестве поданных за него голосов. К слову, подобные Интернет-технологии могут оказаться весьма полезными в век Интернет-технологий, поскольку количество объектов даже в одной категории неуклонно возрастает.

Зачастую системы коллаборативной фильтрации применяют двухступенчатую схему:

  1. Находят тех, кто разделяет оценочные суждения активного (прогнозируемого) пользователя.
  2. Используют оценки сходно мыслящих людей, найденных на первом шаге, для вычисления прогноза.

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

Главное достоинство  коллаборативной фильтрации состоит  в том, что рекомендации персонифицированы. При этом сервис не просто использует повседневную потребительскую активность участников, а подталкивает их к размышлениям над своими поступками.

Однако в  коллаборативных сервисах имеются  и свои ограничения. К их числу  относится проблема нового пользователя. Чтобы дать ему точные рекомендации, системе прежде надлежит выяснить его предпочтения. Поэтому некоторые сервисы первым делом просят новичков проставить оценки заданному числу объектов. Так, подобная практика применяются в рекомендательном сервисе Имхонет (рисунок 3).

Рисунок 3. Рекомендательный сервис сайта Imhonet.ru

Но чаще всего  спрос на рекомендации превышает  наличие оценок в системе. Люди предпочитают не давать оценки, а получать их. В  связи с этим возникает проблема «холодного старта». В общем случае, если в базе данных число «экспертов» относительно мало по сравнению с количеством объектов, прогнозы будут неточны. Часть же проблем совместной фильтрации носят сугубо технический характер и связана со сложностями вычислений при работе с большими базами данных, так как почти все алгоритмы были разработаны на небольших базах данных. Так, например, сотрудниками Amazon был разработан собственный оригинальный алгоритм совместной фильтрации для работы с гигантскими базами данных, способный выдавать качественные рекомендации в режиме реального времени.

Рекомендательные  системы применяют технику анализа  данных для решения проблемы помощи пользователям в поиске предметов, которые им должны понравиться. Рекомендации, основанные на пообъектной модели, могут быть произведены различными способами. Основная идея алгоритмов коллаборативной фильтрации – предоставить рекомендации по предметам, основываясь на мнениях других пользователей. Мнения собираются явно от пользователей или используя неявные измерения.

Наиболее практичным и удобным средством реализации алгоритмов коллаборативной фильтрации является интерпретируемый язык программирования Python.

 

 

1.4. Возможности  и перспективы языка Python.

 

 

Python представляет собой высокоуровневый интерпретируемый язык программирования, разработанный Гвидо ван Россумом в 1990 году. Это язык общего назначения с акцентом на производительность разработчика, читаемость кода, удобный дизайн и целостную архитектуру. Синтаксис ядра Python минималистичен. Одним из достоинств данного языка является поддержка нескольких парадигм программирования: структурного, функционального, объектно-ориентированного. Сейчас Python доступен почти на всех существующих платформах и обладает очень высокой межплатформенной переносимостью. Появившись сравнительно недавно Python создан под влиянием множества таких языков программирования, как: С, С++, Modula, Icon, Java, Lisp, Fortran [9, с. 176].

В курсовой работе использовалась последняя версия приложения – Python 3.2.2, обновленная разработчиками в сентябре 2011 года. Интерфейс командной строки интерпретатора Python представлен на рисунке 4.

Рисунок 4. Интерпретатор командной строки Python 3.2.2

Классический Python, как и многие другие интерпретируемые языки, имеют общий недостаток – сравнительно невысокую скорость выполнения программ. Однако в случае с Python этот недостаток компенсируется уменьшением времени разработки программы. В среднем, программа, написанная на Python, в 2-4 раза компактнее, чем её аналог на C++ или Java.

В настоящее  время Python представляет собой активно развивающийся язык программирования. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. На Python реализовано большое количество проектов, также он активно используется для создания прототипов будущих программ. Python применяется во многих крупных компаниях. Например, он используется корпорацией Google для реализации множества алгоритмов и скриптов. В частности на языке Python реализован алгоритм подсчета – Page Rank, который представляет собой метод Google для измерения «важности» страниц. Когда все другие факторы, такие как тэг, заголовок и ключевые слова учтены, Google использует PageRank, чтобы откорректировать результаты так, что более «важные» сайты поднимутся соответственно вверх на странице результатов поиска пользователя. «С момента основания Python был важной частью Google, и остается ей по мере того, как система растет и развивается. Множество инженеров Google используют Python, и мы ищем больше людей, умеющих с ним работать» – заявил директор по исследованию качества корпорации Google Inc – Peter Norvig [1].

Недавно компания Google объявила о выпуске нового языка программирования с открытым исходным кодом под названием Go. Go представляет собой экспериментальный язык, который объединяет в себе возможности С++ и таких динамических языков как Python. Данный язык предназначен для создания приложений с поддержкой многоядерных процессоров и параллельных вычислений. Go будет полезен разработчикам крупных серверных приложений. С его помощью можно будет сократить время сборки с десятков минут до нескольких секунд. При этом разработчики не будут сталкиваться со многими сложностями, присутствующими в других языках программирования.  

 

2. Реализация рекомендательной экспертной информационной системы

 

 

2.1. Анализ  предметной области

 

 

На фоне накопленного в настоящее время огромного количества информации, востребованность технологий АКС объясняется тем, что пользователи все чаще сталкиваются со следующей проблемой. Количество объектов даже в одной категории (такой, как музыка, книги, новости, веб-сайты) стало настолько большим, что отдельно взятый пользователь не способен проанализировать всю интересующую его информацию самостоятельно и выбрать для себя подходящее. Для этого полезны автоматизированные помощники, которые способны в короткое время обработать большой объем информации и предоставить пользователю рекомендации или прогноз. Соответственно, чем больше система знает о предпочтениях пользователя (его симпатиях и антипатиях), тем более качественным будет результат ее работы.

В связи с  этим, актуальной задачей, решаемой в рамках курсовой работы по дисциплине «Интеллектуальные информационные системы», является разработка прототипа рекомендательной экспертной системы, предсказывающей, какие объекты заинтересуют пользователя, имея определенную информацию о его предпочтениях. При этом, областью исследования является анализ выработки рекомендаций с помощью алгоритмов коллаборативной фильтрации, предполагающей сбор информации о предпочтениях, отыскание «похожих» пользователей и рекомендование предметов.

 

2.1.1. Постановка задачи

 

 

Входными данными  для разрабатываемой экспертной информационной системы будут являться оценки по фильмам, предложенные отдельным кино-сайтом, выставленные ранее пользователями по 10-ти балльной шкале. Выходными данными выступают рекомендации экспертной системы – набор фильмов, который максимально близок по вкусам клиента.

Клиенты представляют собой  группу пользователей, желающих получить рекомендации по просмотру фильмов.

Информация о работе Создание прототипа рекомендательной экспертной системы, реализующей методы коллаборативной фильтрации на языке Python