
4. Экспериментальные исследования
4.1 Обработка информации с помощью ассоциативных правил
Результаты, полученные с помощью теоретических исследований, позволяют оптимизировать ассортимент товаров и запасы, размещение их в торговых залах, увеличивать объемы продаж за счет предложения клиентам сопутствующих товаров. Основными алгоритмоми для поиска ассоциативных правил являются алгоритмы, основанные на Apriori. Алгоритм Apriori известен своим основным свойством антимонотонности.
На практике ассоциативные правила не могут в точности предложить потребителю, того что он хочет. Например, правило: «если (вода, масло), то не (молоко)» мало полезно, потому что слабо выражает поведение покупателя. Данные оценки используются при генерации правил. Аналитик при поиске ассоциативных правил задает минимальные значения перечисленных величин. В результате те правила, которые не удовлетворяют этим условиям, отбрасываются и не включаются в решение задачи. С этой точки зрения нельзя объединять разные правила, хотя и имеющие общую смысловую нагрузку.
Например, следующие правила: X = i1,i2 = > Y = i3, X = i1,i2 = > Y = i4, нельзя объединить в одно: X = i1,i2 = > Y = i3,i4.
Достоверности их будут разные, следовательно, некоторые из них могут быть исключены, а некоторые – нет. Пусть имеется база данных, состоящая из покупательских транзакций. Каждая транзакция – это набор товаров, купленных покупателем за один визит. Такую транзакцию еще называют рыночной корзиной. Пусть I = {ii,i2,...,ij,...,in} – множество (набор) товаров (объектов) общим числом n. Пусть D – множество транзакций D = {T1,T2,Tr,...,Tm}, где каждая транзакция T – это набор элементов из I. В сфере торговли, например, такими объектами являются товары, представленные в таблице 4.1:
Таблица 4.1 – Перечень товаров
Наименование товара |
Цена |
Шоколад |
30 |
Хлеб |
12 |
Масло |
10 |
Вода |
4 |
Молоко |
14 |
Орехи |
15 |
Товары соответствуют следующему множеству объектов: I = {шоколад, хлеб, масло, вода, молоко, орехи}. Примерами транзакций могут быть T1 = { хлеб, масло, молоко }, T2 = { шоколад, вода, орехи }.
Множество транзакций, в которые входит объект ij, обозначается следующим образом:
(4.1)
Множество D может быть представлено следующим образом в таблице 4.2:
Таблица 4.2 – Множество транзакций
Номер товара |
Наименование товара |
1 |
Хлеб |
3 |
Вода |
4 |
Молоко |
2 |
Масло |
3 |
Вода |
5 |
Орехи |
5 |
Орехи |
2 |
Масло |
1 |
Хлеб |
2 |
Масло |
3 |
Вода |
2 |
Масло |
5 |
Орехи |
2 |
Масло |
В данном примере, множеством транзакций, содержащим объект «Вода», является следующее множество:
D(вода) = {{ хлеб, вода, молоко},
{ масло, вода, орехи},
{ орехи, масло, хлеб, масло, вода}}.
Некоторый произвольный набор объектов (itemset) обозначим следующим образом:
(4.2)
Например F = {хлеб, масло}. Набор, состоящий из k элементов, называется k–элементным набором. Множество транзакций, в которые входит набор F, обозначим следующим образом:
(4.3)
В данном примере: D(масло, вода) = {{ масло, вода, орехи },
{орехи, масло, хлеб, масло, вода }}.
Отношение количества транзакций, в которое входит набор F, к общему количеству транзакций, называется поддержкой (support) набора F и обозначается Supp(F):
(4.4)
Для набора { масло, вода } поддержка будет равна 0,5, потому что данный набор входит в две транзакции с номерами 1 и 2, а всего транзакций четыре. При поиске аналитик может указать минимальное значение поддержки интересующих его наборов Suppmin. Набор называется частым (large itemset), если значение его поддержки больше минимального значения поддержки, заданного пользователем: Supp(F) > Suppmin. Таким образом, при поиске ассоциативных правил требуется найти множество всех частых наборов:
L = {F | Supp(F) > Suppmin}. (4.5)
В данном примере частыми наборами при Suppmin = 0,5 являются следующие:
{хлеб}Suppmin = 0,5; {хлеб, вода}Suppmin = 0,5; {масло}Suppmin = 0,75; {масло, вода}Suppmin = 0,5; {масло, вода, орехи}Suppmin = 0,5; {масло, орехи}Suppmin = 0,75; {вода}Suppmin = 0,75; {вода, орехи}Suppmin = 0,5; {орехи}Suppmin = 0,75;
Таблица 4.3 – Перечень фирм товаров
Наименование товара |
Фирма |
||
Шоколад |
Корона |
Свиточ |
Nestle |
Хлеб |
Слобожанский |
Салтовский |
Жуковский |
Макароны |
Мельник |
Dovella |
Макматер |
Молоко |
Заречье |
Простоквашиво |
Злагода |
Кетчуп |
Calve |
Фуршет |
Чумак |
В таблице 4.3 предоставлен список некоторых фирм товаров, на основе мнений друзей пользователей информационного портала рассчитывается уровень рекомендации и предлагается потребителю фирмы товаров, выбранной группы.
4.2 Обоснование выбора средств реализации
Информационный портал использует сервер базы данных MySQL для сервера базы данных рекомендации и Microsoft SQL Server для веб–хранилища данных. Все алгоритмы рекомендаций, ассоциативных правил и оптимизатор, реализуются, используя язык сценариев PHP. Данный язык предназначен для создания серверных приложений, поэтому работает с запросами к серверу и базе данных, расположенной на сервере. Синтаксис языка берет начало из C, Java и Perl. Важным преимуществом языка PHP перед такими языками, как языков Perl и C заключается в возможности создания HTML документов с внедренными командами PHP. Язык PHP был выбран в первую очередь из–за основного отличия от какого–либо кода, выполняющегося на стороне клиента, например, JavaScript, то, что PHP–скрипты выполняются на стороне сервера. Можно даже сконфигурировать свой сервер таким образом, чтобы HTML–файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML–файл или результат выполнения скрипта PHP. Также немало важные преимущества языка перед другими языками, используемыми в веб–технологиях – это его простота. PHP достаточно прост для изучения. Предоставляет веб–разработчикам возможность быстрого создания динамических веб–страниц и систем различной сложности, ориентированных на решение различных задач.
Практический характер РНР обусловлен пятью важными характеристиками:
– традиционностью;
– простотой;
– эффективностью;
– безопасностью;
– гибкостью.
Традиционность языка РНР будет казаться знакомым программистам, работающим в разных областях. Многие конструкции языка позаимствованы из C, Perl. Код РНР очень похож на тот, который встречается в типичных программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР. PHP язык, сочетающий достоинства Perl и C и специально нацеленный на работу в Интернете, язык с универсальным и ясным синтаксисом.
Простота Сценарий РНР может состоять из 10 000 строк или из одной строки все зависит от специфики задачи. Необходимость в подключении библиотек, указывании специальных параметров компиляции отсутсвует. Механизм РНР начинает выполнять код после первой экранирующей последовательности (<?) и продолжает выполнение до того момента, когда встретит парную экранирующую последовательность (?>). Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист. PHP язык, который может быть встроен непосредственно в html –код страниц, которые, в свою очередь будут корректно обрабатываться PHP –интерпретатором. PHP можно использовать для написания CGI–сценариев и збавить себя от множества неудобных операторов вывода текста. Можно использовать PHP для формирования HTML–документов, избавившись от множества вызовов внешних сценариев. В PHP имеется большое разнообразие пользовательских функций.
Эффективность является исключительно важным фактором при программировании для многопользовательских сред, к числу которых относится и web. Очень важное преимущество PHP заключается в его «ядре». «Ядро» PHP не является ни компилятором, ни интерпретатором. Оно является транслирующим интерпретатором. Такое устройство «ядра» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью. По некоторым оценкам, большинство PHP–сценариев (особенно не очень больших размеров) обрабатываются быстрее аналогичных им программ, написанных на Perl. Однако, чтобы не делали разработчики PHP, откомпилированные исполняемые файлы будут работать значительно быстрее – в десятки, а иногда и в сотни раз. Но производительность PHP вполне достаточна для создания вполне серьезных web–приложений.
Безопасность РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.
Средства безопасности системного уровня. В РНР реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения РНР пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти. По аналогии с cgi–bin администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сценарии РНР для просмотра конфиденциальной информации на сервере (например, файла passwd).
Средства безопасности уровня приложения. В стандартный набор функций РНР входит ряд надежных механизмов шифрования. РНР также совместим с многими приложениями независимых фирм, что позволяет легко интегрировать его с защищенными технологиями электронной коммерции (e–commerce). Другое преимущество заключается в том, что исходный текст сценариев РНР нельзя просмотреть в браузере, поскольку сценарий компилируется до его отправки по запросу пользователя. Реализация РНР на стороне сервера предотвращает похищение нетривиальных сценариев пользователями, знаний которых хватает хотя бы для выполнения команды View Source.
Гибкость, поскольку РНР является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере. Нет проблем и с зависимостью от браузеров, поскольку перед отправкой клиенту сценарии РНР полностью компилируются на стороне сервера. В сущности, сценарии РНР могут передаваться любым устройствам с браузерами, включая сотовые телефоны, электронные записные книжки, пейджеры и портативные компьютеры, не говоря уже о традиционных ПК. Поскольку РНР не содержит кода, ориентированного на конкретный web–сервер, пользователи не ограничиваются определенными серверами (возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus — РНР работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом является платформенно–независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows.
Cредства РНР позволяют программисту работать с внешними компонентами, такими как Enterprise Java Beans или СОМ–объекты Win32. Благодаря этим новым возможностям РНР занимает достойное место среди современных технологий и обеспечивает масштабирование проектов до необходимых пределов. PHP относится к приложениям с открытыми исходными кодами ( Open Source). Язык PHP постоянно совершенствуется, и ему наверняка обеспечено долгое доминирование в области языков web–программирования, по крайней мере, в ближайшее время.
На момент создания сайта хоста еще нет. Для того чтобы решить проблему создания сайта на локальном компьютере использовался пакет программ «Денвер». [10]. «Денвер» – комплекс программ, эмулирующий на локальном компьютере сервер, содержит в себе набор дистрибутивов (Apache+SSL, PHP5 в виде модуля, MySQL5, phpMyAdmin) и программную оболочку, используемую Web–разработчиками (программистами и дизайнерами). Ключевая особенность Денвера – поддержка работы сразу с несколькими проектами, каждый из которых располагается на отдельном виртуальном хосте. Виртуальные хосты для проектов создаются автоматически: например, достаточно скопировать файлы проекта в /home/ИмяПроекта/www, и он тут же станет доступен по адресу http://ИмяПроекта (DOCUMENT_ROOT также будет корректным). Это особенно удобно работе web–студий, разрабатывающих параллельно несколько сайтов, а также «в связке» с системами контроля версий CVS или Subversion. Схема именования директорий может быть легко настроена персонально на хостинг в шаблоне виртуальных хостов.
Все компоненты Денвера уже настроены и готовы для работы (в частности, корректно настроена русскоязычная кодировка MySQL, SSL). Кроме того, возможно обновлять любой из сервисов Денвера (Apache, PHP, MySQL) вручную, просто копируя новые версии дистрибутивов поверх старых. Денвер автономен: может располагаться в любой директории на диске (или даже на флэш–накопителе). Также не изменяет системных файлов Windows, так что может быть деинсталлирован путем простого удаления своей папки.
4.3 Описание информационного портала
Информационный портал взаимодействует с веб–пользователем, предоставляет рекомендации и учитывает ответную реакцию. Веб–хранилище данных хранит информацию о контенте веб–сайта (например, продукты и каталог продукции, страницы HTML), пользователях и журналах использования, сгенерированных веб–сервером или сервером приложений. Это служит источником информации для системы рекомендации алгоритмов и позволяет оценивать OLAP данные использования и эффективности рекомендаций. База данных рекомендации хранит семантическую информацию об контенте веб–сайта, веб–пользователей, времени и рекомендации в форме правил. Набор алгоритмов генерирует рекомендации, используя данные от веб–хранилища данных. Оптимизатор совершенствует базу данных рекомендации, основанную на обратной связи, полученной от веб–сайта, используя обучение. В системе рекомендации отличаем цикл генерации и цикл оптимизации. Цикл генерации выполняется равномерно. Это включает генерирование и обновление на основе алгоритмов ассоциативных правил и правил рекомендаций, использующих информацию о контенте и недавнюю информацию об использовании от веб–хранилища данных. Цикл оптимизации выполняется непрерывно, выбирает и представляет рекомендации из базы данных. Кроме того, учитывается обратная связь, то есть пользовательские реакции на представленные рекомендации. Оптимизатор использует эту информацию, чтобы совершенствовать рекомендации в базе данных и влиять на выбор будущих рекомендаций.
Рисунок 4.1 – Интерфейс меню сайта
На рисунке 4.1 изображено меню сайта, включающее в себя страницу о разработчике, магазин с группами товаров, собранных на основе ассоциативного анализа и контактную информацию, для возможности связаться с разработчиком.
Рисунок 4.2 – Интерфейс главной странички
На рисунке 4.2 изображен интерфейс главной страницы, с информацией о проекте, условиями использования, а также использованные технологии при разработке.
Рисунок 4.3 – Интерфейс корзины
После выбора группы товаров можно выбрать одну из предложенных фирм каждого товара, по мнению ваших друзей и добавить её в корзину, изображённую на рисунке 4.3.
Рисунок 4.4 – Интерфейс страницы контактов
Страница контактов на рисунке 4.4 содержит информацию о разработчике, его e-mail, имя и фамилию. А также ссылки на “Статус заказа” и “Часто задаваемые вопросы”.
Рисунок 4.5 – Интерфейс Выбора товаров
Рисунок 4.5 показывает перечень групп наиболее покупаемых товаров, построенных при помощи ассоциативного анализа. А также стоимости группы. Для просмотра сожержания товаров группы достаточно кликнуть на одну из групп, после чего система предложит фирму данных товаров, основываясь на мнениях ваших друзей.
Рисунок 4.6 – Страница сгенерированных рекомендаций друзей 1
На рисунке 4.6 наглядно показан выбор ”Группы товаров № 1”, добавленный в корзину и состоящий из совместной покупки Макарон, Кетчупа и Пива. На основе мнений друзей предложены по две фирмы каждого товара с наиболее высоким процентом рекомендации и отсортированных по возрастанию уровня рекомендации.
Рисунок 4.7 – Рекомендации разных фирм определённых друзей 1
Рисунок 4.7 показывает увеличенный заказ и рекомендации друзей. На основе мнений друзей установлено, что из Макарон лидирующие фирмы, предложенные потребителю Dovella с уровнем рекомендации 72% и
Мельник 56%. Кетчупы – Calve 59%, Фуршет 45%. Из пива Miller 87% Heineken 77%. С возможностью выбрать фирму, которая потребилю больше нравится, и составить заказ из полученных продуктов и фирм.
Рисунок 4.8 – Рекомендации разных фирм определённых друзей 2
На рисунке 4.8 показан выбор ”Группы товаров № 3”, добавленный в корзину и состоящий из совместной покупки Молока и Хлеба. На основе мнений друзей предложены две фирмы молока и одна для Хлеба.
Рисунок 4.9 – Рекомендации разных фирм определённых друзей 2
Рисунок 4.9 показывает увеличенный заказ и рекомендованные фирмы. На основе мнений друзей установлено, что из Молока фирмы, набравшие наибольший уровень рекомендации друзей является Злагода – 57% и Заречье 51%. С уровнем рекомендации Хлеба получилась одна фирма, набравшая 100% – Слобожанский.