Создание прототипа рекомендательной экспертной системы, реализующей методы коллаборативной фильтрации на языке 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 Кб (Скачать файл)

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

def calculateSimilarItems(prefs,n=10):

  # Создать словарь, содержащий для каждого образца те образцы, которые

  # больше всего похожи на него

  result={}

  # Обратить матрицу предпочтений, чтобы строки соответствовали образцам

  itemPrefs=transformPrefs(prefs)

  c=0

  for item in itemPrefs:

    # Обновление состояний для больших наборов данных

    c+=1

    if c%100==0: print "%d / %d" % (c,len(itemPrefs))

    # Найти образцы, максимально похожие на данный

    scores=topMatches(itemPrefs,item,n=n,similarity=sim_distance)

    result[item]=scores

  return result


 

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

def transformPrefs(prefs):

  result={}

  for person in prefs:

    for item in prefs[person]:

      result.setdefault(item,{})

     

     

      result[item][person]=prefs[person][item]

  return result


 

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

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

Теперь реализуем функцию выработки рекомендаций на основе фильтрации по схожести образцов на языке Python.

def getRecommendedItems(prefs,itemMatch,user):

  userRatings=prefs[user]

  scores={}

  totalSim={}

  # Цикл по образцам, оцененным данным пользователем

  for (item,rating) in userRatings.items( ):

 

    # Цикл по образцам, похожим на данный

    for (similarity,item2) in itemMatch[item]:

 

      # Пропускать, если пользователь уже оценивал данный образец

      if item2 in userRatings: continue

      # Взвешенная сумма оценок, умноженных на коэффициент подобия

      scores.setdefault(item2,0)

      scores[item2]+=similarity*rating

      # Сумма всех коэффициентов подобия

      totalSim.setdefault(item2,0)

      totalSim[item2]+=similarity

 

  # Делим каждую итоговую оценку на взвешенную сумму, чтобы вычислить среднее

  rankings=[(score/totalSim[item],item) for item,score in scores.items( )]

 

  # Возвращает список rankings, отсортированный по убыванию

  rankings.sort( )

  rankings.reverse( )

  return rankings


 

На основе полученного  ранее набора данных о схожести предметов  проверим работоспособность функции getRecommendedItems. Выведем новый список рекомендованных фильмов для пользователя max:

В данном списке рекомендаций некоторые фильмы поменялись местами. Это можно объяснить тем, что точность данного механизма выработки рекомендаций зависит от «разреженности» набора данных. В нашем случае каждым экспертом были выставлены оценки почти всем кинофильмам, поэтому набор данных очень плотный (не разреженный). Возможно, более точные прогнозы можно получить при более разреженном наборе данных. Функции getRecommendedItems в отличие от GetRecommendations не пришлось вычислять коэффициенты подобия для всех остальных киносайтов, так как необходимый набор данных был построен заранее.

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

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

Таким образом, на основе описанных алгоритмов коллаборативной фильтрации может быть создана полнофункциональная экспертная система, способная вырабатывать рекомендации, благодаря которым пользователи смогут лучше ориентироваться в информационных потоках. Подобные Интернет-технологии позволят предложить пользователям новые сервисы и услуги, в основе которых заложены идеи персонализации. Полный текст модуля exp.py с описанием всех функций с комментариями представлен в приложении 1.

 

 

 

Заключение

 

В настоящее  время интеллектуальные Интернет технологии анализа клиентских сред являются достаточно востребованными. Данные технологии позволяют  решать задачи персонализации сервисов, направленного предложения ресурсов пользователям, а также поиска схожих ресурсов и пользователей. Основной целью применения технологий АКС является повышение качества оказываемых услуг, более эффективное привлечение и удержание клиентов. Технология АКС достаточно универсальна и может применяться в различных сферах бизнеса. Её главная идея основана на понятии сходства. Наиболее близким к АКС направлением является коллаборативная фильтрация, алгоритмы которой лежат в основе большинства современных рекомендательных сервисов. Рекомендательные системы призваны составлять для пользователя индивидуальный прогноз в соответствии с его предпочтениями.

В данной курсовой работе было рассмотрено применение интеллектуальных Интернет технологий к построению рекомендательной экспертной информационной системы. Анализ предметной области позволил обосновать целесообразность постановки задачи создания прототипа рекомендательной системы. В ходе выполнения работы были изучены теоретические основы метода коллаборативной фильтрации, рассмотрены основные проблемы и особенности технологии АКС, а также создана функциональная модель работы экспертной системы, которая позволила выделить и описать место информационной системы в бизнес-процессе и определить информационные потоки внутри неё. В качестве метода функционального моделирования использовалась методология описания бизнес-процессов – IDEF0.

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

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

 

Список использованной литературы

 

  1. Алгоритм Google PageRank в 126 строках на Питоне [Электронный ресурс]: http://www.aginstaller.com/3204.html.
  2. Барсегян, А. А. Анализ данных и процессов [Текст]/А. А. Барсегян, М. С. Куприянов. – Спб.: БХВ-Петербург, 2009. – 389 с.
  3. Башмаков, И. А. Интеллектуальные информационный технологии [Текст]: учеб. пособие. – М.: МГТУ, 2005. – 304 с.
  4. Бизли, Д. Python. Подробный справочник [Текст]/Д. Бизли., пер. с англ. – СПб.: Символ-Плюс, 2010. – 864 с.
  5. Воронцов, К. В. О быстрых алгоритмах синтеза плоских представлений метрических конфигураций. Искусственный интеллек<span class="dash041e

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