Development of agent recommendation system of virtual university based on JADE

The paper presents a model of agent-based recommendation system (RS), which will operate in a framework of the virtual university and describes its multi-agent implementation based on JADE. Author grounds the choice of RS type (item-based collaborative filtering systems), algorithms that are used in...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2017
Hauptverfasser: Glybovets, M.M., Konyushenko, O.V.
Format: Artikel
Sprache:Ukrainian
Veröffentlicht: PROBLEMS IN PROGRAMMING 2017
Schlagworte:
Online Zugang:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/134
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Institution

Problems in programming
id pp_isofts_kiev_ua-article-134
record_format ojs
resource_txt_mv ppisoftskievua/90/f0c8fb11dbf55a5614b58a35f5602990.pdf
spelling pp_isofts_kiev_ua-article-1342025-07-15T13:37:16Z Development of agent recommendation system of virtual university based on JADE Разработка агентной рекомендательной системы виртуального университета средствами JADE Розробка агентної рекомендаційної системи віртуального університету засобами JADE Glybovets, M.M. Konyushenko, O.V. UDC 004.4’2 УДК 004.4’2 УДК 004.4’2 The paper presents a model of agent-based recommendation system (RS), which will operate in a framework of the virtual university and describes its multi-agent implementation based on JADE. Author grounds the choice of RS type (item-based collaborative filtering systems), algorithms that are used in various steps of generating recommendations and itemizes the role and behavior of agents. В работе предложена модель агентной рекомендательной системы (РС), которая будет функционировать в рам-ках виртуального университета и описаны ее мультиагентную реализацию средствами JADE. Обоснован выбор типа РС (item-based collaborative filtering systems), алгоритмов, исполь-зуемых на различных шагах генериро-вания рекомендаций. Расписаны роли и поведение агентов. В роботі запропоновано модель агентної рекомендаційної системи (РС), що функціонуватиме в рамках віртуального університету та описано її мультиагенту реалізацію засобами JADE. Обгрунтовано вибір типу РС (item-based collaborative filtering systems), алгоритмів, що використовуються на різних кроках генерування рекомендацій. Розписані ролі та поведінка агентів. PROBLEMS IN PROGRAMMING ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ ПРОБЛЕМИ ПРОГРАМУВАННЯ 2017-06-13 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/134 PROBLEMS IN PROGRAMMING; No 1 (2015) ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 1 (2015) ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 1 (2015) 1727-4907 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/134/127 Copyright (c) 2017 ПРОБЛЕМИ ПРОГРАМУВАННЯ
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2025-07-15T13:37:16Z
collection OJS
language Ukrainian
topic
UDC 004.4’2
spellingShingle
UDC 004.4’2
Glybovets, M.M.
Konyushenko, O.V.
Development of agent recommendation system of virtual university based on JADE
topic_facet
UDC 004.4’2

УДК 004.4’2

УДК 004.4’2
format Article
author Glybovets, M.M.
Konyushenko, O.V.
author_facet Glybovets, M.M.
Konyushenko, O.V.
author_sort Glybovets, M.M.
title Development of agent recommendation system of virtual university based on JADE
title_short Development of agent recommendation system of virtual university based on JADE
title_full Development of agent recommendation system of virtual university based on JADE
title_fullStr Development of agent recommendation system of virtual university based on JADE
title_full_unstemmed Development of agent recommendation system of virtual university based on JADE
title_sort development of agent recommendation system of virtual university based on jade
title_alt Разработка агентной рекомендательной системы виртуального университета средствами JADE
Розробка агентної рекомендаційної системи віртуального університету засобами JADE
description The paper presents a model of agent-based recommendation system (RS), which will operate in a framework of the virtual university and describes its multi-agent implementation based on JADE. Author grounds the choice of RS type (item-based collaborative filtering systems), algorithms that are used in various steps of generating recommendations and itemizes the role and behavior of agents.
publisher PROBLEMS IN PROGRAMMING
publishDate 2017
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/134
work_keys_str_mv AT glybovetsmm developmentofagentrecommendationsystemofvirtualuniversitybasedonjade
AT konyushenkoov developmentofagentrecommendationsystemofvirtualuniversitybasedonjade
AT glybovetsmm razrabotkaagentnojrekomendatelʹnojsistemyvirtualʹnogouniversitetasredstvamijade
AT konyushenkoov razrabotkaagentnojrekomendatelʹnojsistemyvirtualʹnogouniversitetasredstvamijade
AT glybovetsmm rozrobkaagentnoírekomendacíjnoísistemivírtualʹnogouníversitetuzasobamijade
AT konyushenkoov rozrobkaagentnoírekomendacíjnoísistemivírtualʹnogouníversitetuzasobamijade
first_indexed 2025-07-17T09:54:12Z
last_indexed 2025-07-17T09:54:12Z
_version_ 1850410950521257984
fulltext Правові, навчальні та соціальні аспекти програмування © М.М. Глибовець, О.В. Конюшенко, 2015 104 ISSN 1727-4907. Проблеми програмування. 2015. № 1 УДК 004.4’2 М.М. Глибовець, О.В. Конюшенко РОЗРОБКА АГЕНТНОЇ РЕКОМЕНДАЦІЙНОЇ СИСТЕМИ ВІРТУАЛЬНОГО УНІВЕРСИТЕТУ ЗАСОБАМИ JADE В роботі запропоновано модель агентної рекомендаційної системи (РС), що функціонуватиме в рамках віртуального університету та описано її мультиагенту реалізацію засобами JADE. Обгрунтовано вибір типу РС (item-based collaborative filtering systems), алгоритмів, що використовуються на різних кроках генерування рекомендацій. Розписані ролі та поведінка агентів. Вступ За останній час інтерес до алгорит- мів, що лежать в основі рекомендаційних систем невпинно зростає. Відносно прості алгоритми та підходи, які донедавна спра- влялися з генеруванням рекомендацій, по- ступово вичерпують себе, вимагаючи від розробників постійного вдосконалення та пошуку альтернатив [1]. Зі зростанням кількості користувачів Інтернету та досту- пного контенту, сьогодні як ніколи потріб- ні якісні алгоритми генерування рекомен- дацій – адже ми живемо в еру інформацій- ного перевантаження. «Інформаційне перевантаження» – термін, популяризований Алвіном Тоф- флером у його книзі «Майбутній шок» [2]. У ній йдеться про труднощі, що виника- ють у процесі прийняття рішень і розу- міння проблем людиною за умов надзви- чайно великого обсягу інформації. Хоча сам термін виник ще до появи Інтернету, він якнайкраще описує сьогодення та найближче майбутнє. Світ рухається до глобалізації і все більше людей отримують доступ до Інте- рнету, перетворюючись у його активних користувачів. Це призводить до збіль- шення різноманітного контенту в мережі Інтернет. Лоуренс Лессіг пояснює це «чи- тай-пиши» («read-write») природою Інте- рнету [3]. Існує навіть думка, що ми надто залежні від подібного методу отримання інформації [4]. Вона ґрунтується на тому, що, маючи доступ до надзвичайно вели- кого обсягу інформації, ми не завжди за- думуємось про її правдивість, ризикуючи покластися на хибну інформацію. Тому розробники програмного за- безпечення мають прагнути надавати ко- ристувачам якомога кращий сервіс. У 2009 році популярний американ- ський інтернет-сервіс Netflix оголосив конкурс з призовим фондом в 1 мільйон доларів. Учасники повинні були підвищи- ти точність рекомендацій клієнтам сервісу більш ніж на 10 відсотків. За оцінкою Джона Рідла, який був одним з перших дослідників колаборативної фільтрації, у таких гігантів, як Amazon та Netflix – на- разі, найкращі рекомендаційні системи. Втім, «всі прості рішення вже реалізова- ні» і з часом стає все важче покращити точність рекомендацій (передбачень). На- віть незначне покрашення може призвести до відчутного зростання прибутків ком- паній, що й змусило Netflix піти на зазна- чений крок [5]. Тому в найближчі роки актуаль- ність та інтерес до потужних рекоменда- ційних систем лише зростатиме. Коли ми говоримо про зростання контенту в мережі, окрему увагу варто приділити навчальним матеріалам. У нав- чанні – як і інших аспектах свого розвит- ку – людина пройшла довгий шлях: від посиденьок у вогнища до обладнаних за останнім словом техніки лабораторій і аудиторій. Тоді як початкова освіта про- никає навіть у найвіддаленіші куточки планети, на передовій цієї галузі – інтер- нет-портали найвідоміших університетів світу, що пропонують користувачам як анотації і окремі матеріали більшості пропонованих предметі, так і деякі з них – повністю. Правові, навчальні та соціальні аспекти програмування 105 Все починалося трохи більше деся- ти років тому з таких проектів, як MIT OpenCourseWare, AllLearn, Harvard@Home. Цікаво, що важливим поштовхом до подальшого розвитку онлайн-навчання стала поява YouTube – сервісу, що надав необхідний інструментарій не тільки провідним університетам, але й звичай- ним користувачам, які готові були діли- тися своїми знаннями. Деякі з подібних проектів – Khan Academy, The New Boston – стали настільки успішними, що принес- ли своїм засновникам не тільки славу, але й статок. Нині ми маємо змогу спос- терігати за наступним етапом еволюції онлайн-навчання – порталами на зразок coursera.org, edxonline.org та udacity.com [5]. У цій статті опишемо розроблену та реалізовану нами агентну модель подібно- го помічника студента – рекомендаційної системи віртуального університету. Дана рекомендаційна система пок- ликана допомагати студентам з вибором курсів вільного вибору; вона розроблялася з метою імплементації у Віртуальний уні- верситет Національного університету «Ки- єво-Могилянська академія». Ми опишемо побудову рекоменда- ційної системи, що належить до класу item-based collaborative filtering systems. Це – відносно новий та прогресивний підхід до створення рекомендацій. Зокрема, ви- користання подібних систем дозволяє бо- ротися з проблемою розрідженості мат- риць та зробити систему легко масштабо- ваною. Ми також обґрунтовуємо вибір мультиагентної системи для реалізації ре- комендаційної системи. Онлайн-навчання Онлайн-університети, швидше за все, назавжди змінять наші уявлення про освіту; нині вони надають повноцінні кур- си – з лекціями, завданнями, «дедлайна- ми», іспитами та сертифікатами про закін- чення; попри труднощі періоду спроб та помилок, вони вже перетворилися у гріз- них конкурентів «традиційних» універси- тетських відповідників. Сотні тисяч людей записуються на ці курси – і хоча більшість відсіюється ще до здачі іспиту, загальна кількість «студентів», що отримують сер- тифікати різних рівнів, вражає. Успіх та стрімкий розвиток онлайн-навчання зму- шує бачити в ньому майбутнє освіти. Себастіан Тхурн, професор Стен- фордського університету та Google Fellow, а також один із співзасновників онлайн- університету Udacity, каже, що через 50 років лише 10 інституцій у всьому світі пропонуватимуть освіту. В червні 2011 Тхурн став співзасновником KnowLabs, вклавши в компанію $300000 власних грошей – в сподіванні, що його дітище в перспективі стане однією з таких інститу- цій. Можливо, проект KnowLabs – Udacity, що в 2012 році запустив 6 курсів (від СS101 Building a Search Engine до «екзоти- чного» CS373 Programming a Robotic Car) – дійсно чекає така доля [6]. Зрештою, Тхурн як, можливо, ніхто розуміє, що ми стоїмо на порозі револю- ційних змін у навчанні. Коли KnowLabs запускала свій перший курс, в компанії розраховували, що на нього запишеться максимум 2000 людей. Тхурн написав листа в Асоціацію розвитку штучного інтелекту (Association for the Advancement of Artificial Intelligence) в сподіванні заці- кавити її членів. На ранок у них було 5000 користувачів. Через кілька днів – 10000. Два тижні потому – 58000. В середині серпня в The New York Times з’явилася стаття про курс; незабаром була взята планка в 100000 слухачів. Сайт, що був створений з розрахунку на цифру в десять разів меншу, не витримував навантажен- ня. Один з високопосадовців компанії напівжартома сказав, що саме тоді він перестав спати [6]. Безумовно, остаточні цифри вигля- дають не так вражаюче на тлі того безумс- тва, що мало місце на початку курсу, проте це лише омана. Так, 137000 слухачів не закінчило курс, «лише» 20000 дійшли до середини. Проте як для першого подібного експерименту, це був успіх. Отож, так чи інакше, освіта посту- пово перебирається на простори Інтерне- ту, що не тільки знищує географічні рам- ки, але й надає їй свій потужний інстру- ментарій. Тому не дивно, що все більше і більше навчальних закладів по всьому Правові, навчальні та соціальні аспекти програмування 106 світу всерйоз переймаються своєю он- лайн-присутністю – зокрема, головному та допоміжним сайтам. Якщо раніше сайт сприймався в першу чергу як обличчя університету та інформаційний портал для абітурієнтів і медіа, сьогодні акцент робиться на застосуванні різноманітних додатків з метою розширення можливос- тей безпосередньо студентів цього навча- льного закладу, звичайних та «віртуаль- них». Україна все ще на відстані кількох років від онлайн-курсів у відкритому дос- тупі, хоча ця ідея активно обговорюється – зокрема, і в закладі Києво-Могилянської академії. Втім, вже можна говорити про певний прогрес: у нас успішно функціонує система електронного навчання та близь- кий до запуску віртуальний університет. Це значить, що Україна також близька до того, щоб стати частиною глобального освітнього простору. Рекомендаційні системи В англійській мові використовують таке поняття, як «educated guess»; так на- зивають здогадку, припущення, зроблене на основі досвіду чи теоретичних знань. Цікаво, що подібні припущення можуть робити не тільки студенти, які навчаються засобами онлайн-університетів, але й самі університети. Для цього їм достатньо ви- користовувати так звані рекомендаційні системи. Рекомендаційні системи були ство- рені для допомоги в подоланні інформа- ційного перевантаження. Правильне вико- ристання подібної системи позитивно впливає як на користувацький досвід, так і на роботу системи загалом. Двома базовими елементами будь- якої рекомендаційної системи є користу- вач (інколи його називають «покупцем») та предмет інтересу («продукт»). Відпо- відно, рекомендаційна система отримує від користувача оцінку деяких предметів інтересу (в даному випадку – вибіркових курсів), а потім видає йому прогнозовану оцінку (educated guess!) інших курсів. Фо- рмат даних, які надає користувач системі, залежить від використаних алгоритмів, проте загалом буває трьох видів: рейтинги (наприклад, від 1 до 5 «зірочок» для фі- льмів або 1 чи 0 – залежно від того, купив користувач продукт чи ні); демографічна інформація (вік, стать користувача тощо); дані вподобаних користувачем продуктів. Висновком рекомендаційної системи мо- же бути передбачення чи рекомендація. Передбачення – числове значення, що показує прогнозовану оцінку користувача продукту; рекомендація – список продук- тів, які система розцінює як такі, що най- більше сподобаються користувачу [1]. Рекомендаційна система ставить на меті видати користувачу припущення сто- совно нових чи неоцінених ним продуктів на основі введених ним даних. Нехай m – кількість користувачів: },,,{ 21 muuuU  , n – кількість предметів інтересу: },,,{ 21 niiiI  . Кожному користувачеві відповідає список uiL продуктів, які користувач вже так чи інакше оцінив (список може бути порожнім, проте він не повинен містити в собі оцінки всіх проду- ктів). Всі наявні оцінки від усіх користу- вачів створюють матрицю nm . Залежно від алгоритму, що використовується, від- буваються операції з рядками (окремий рядок становлять оцінки кожного корис- тувача) чи стовпчиками (окремий стовп- чик становлять оцінки кожного продукту) матриці; користувачеві повертається під- множина прогнозованих рейтингів неоці- нених ним продуктів або відсортований список неоцінених продуктів для подаль- шого ознайомлення – рекомендація сис- теми [7]. То куди ж рухатимуться рекомен- даційні системи? По-перше, попри постійне розши- рення Інтернету, рекомендаційні системи вийдуть за його рамки – наприклад, в те- лебачення (якщо воно не перебереться до того часу в Інтернет). Хороші рекоменда- ційні системи можуть змінити навіть при- лади у вашому домі. Праска, що рекомен- дує режим прасування? Холодильник з рекомендаціями здорової їжі? По-друге, як зазначається у [8], змі- нюються контекст рекомендацій та кон- текст для рекомендацій. Ми наперед не знаємо в якому місці шукатимемо які речі, Правові, навчальні та соціальні аспекти програмування 107 а системи порівнюватимуть нас з іншими людьми та друзями. Ми будемо шукати рекомендацій для груп людей. Зрештою, музика та інші розваги більше не виступатимуть єдиними «про- дуктами», що підлягають рекомендаціям – дещо несподівано, проте соціальні мережі на зразок LinkedIn зрештою зможуть ста- ти повноцінними помічниками HR-спе- ціалістам: радити не продукти, а людей. В нещодавньому інтерв’ю Wired Рейд Хоф- фман, засновник LinkedIn, бідкався, що люди досі не використовують потужність цієї мережі на повну [9]. Все ще не розк- ритий до кінця потенціал соціальних ме- реж разом з потужними алгоритмами, що використовуються для генерації рекомен- дацій, які суттєво вплинуть на процес по- шуку працівників. Агентна рекомендаційна система Нагадаємо зазначені дві основні за- дачі – забезпечення відповідності рекоме- ндаційної системи вимогам якості (зокре- ма: якісні рекомендації, масштабованість, забезпечення транзитивності в околі кори- стувачів, шляхи вирішення проблем розрі- дженості, «першого рейтингу» та «незвич- ного користувача»), а також – побудова відповідної моделі агентної системи. Розглянемо основні вимоги до ре- комендаційних систем детальніше згідно [7]. Перша з них – якісні рекомендації. Для забезпечення якісних рекомендацій, система має мінімізувати кількість хиб- нопозитивних результатів у вихідних да- них. Хибнопозитивними вважатимемо такі результати, які система відносить до вартих рекомендації, але які не подоба- ються користувачеві: у нашому випадку – якийсь з рекомендованих вибіркових кур- сів. Очевидно, що велика кількість хиб- нопозитивних результатів неприйнятна для рекомендаційної системи [10]. Наступна вимога – масштабова- ність. Алгоритми, що лежать в основі ре- комендаційної системи, мають ефективно опрацьовувати поточну кількість «покуп- ців» та «продуктів», що схильна до зрос- тання [11]. Рекомендаційні системи також ма- ють забезпечувати транзитивність у пев- ному околі користувачів (якщо два корис- тувачі А та B мають високий коефіцієнт кореляції, то третій користувач С, який має високий коефіцієнт кореляції з A, та- кож мусить мати високий коефіцієнт ко- реляції з B). Попри очевидність подібного підходу, ця вимога часто ігнорується ре- комендаційними системами, адже алгори- тми, якими вони керуються, враховують кількість «продуктів», відмічених відразу обома користувачами. Для забезпечення якісних результатів розробнику необхідно забезпечити транзитивність в околах ко- ристувачів [7]. Розробник також мусить вирішити кілька специфічних проблем. Серед них – розрідженість, «першого рейтингу» та «незвичний користувач». Більшість алго- ритмів рекомендаційних систем працю- ють з матрицями «покупець-продукт» та околами користувачів у них. Розрідже- ність матриць виникає внаслідок великої різниці між загальною кількістю «продук- тів» та тими з них, які були якось відміче- ні «покупцями». Розрідженість призво- дить до утруднення встановлення потріб- них околів користувачів [12]. Проблема «першого рейтингу» – яку ще називають проблемою «холодного старту» – необ- хідність наявності хоча б одного рейтингу у «продукту» для його рекомендації сис- темою [13]. Проблема «незвичного корис- тувача» – також відома, як проблема «сі- рої овечки» – присутність окремої групи користувачів, чиї смаки не дозволяють однозначно віднести їх до певного околу, що (переважно негативно) впливає на те, наскільки якісними будуть для них отри- мані рекомендації системи [7]. Процес створення рекомендацій Традиційно, для створення рекоме- ндацій використовуються системи, що мо- жна віднести до двох класів: memory-based collaborative filtering algo rithms та model- based collaborative filtering algorithms. Важливою відмінністю memory- based collaborative filtering algorithms є те, Правові, навчальні та соціальні аспекти програмування 108 що для створення рекомендацій вони ви- користовують всю матрицю «покупець- продукт» (МПП). За допомогою статисти- чних інструментів ці системи знаходять множину користувачів, що називається околом, смаки яких збігаються зі смаком обраного користувача (у випадку з пред- метами вільного вибору це значить, що обидва користувачі в минулому обирали однакові предмети). Після цього, на основі знайденого околу та за допомогою конкре- тних алгоритмів генеруються рекоменда- ції. Перевагою memory-based collaborative filtering algorithms є відносно якісні реко- мендації та відносна простота імплемента- ції, а серед недоліків – відносно повільна швидкість роботи, що є наслідком викори- стання всієї матриці для генерування ре- комендацій [12]. На відміну від memory-based collaborative filtering algorithms, model- based collaborative filtering algorithms гене- рують рекомендації, виходячи з моделі виставлення користувачем оцінок, яку во- ни створюють у процесі. Алгоритми, що використовуються при такому підході, відносять до класу ймовірнісних; вони ро- зглядають процес колаборативного фільт- рування як підрахунок очікуваного рейти- нгу (оцінки) предмету, виходячи з попере- дніх оцінок користувача. За побудову мо- делі оцінювання користувача відповідають алгоритми машинного навчання, такі як Bayesian network (баєсівські мережі, ство- рює ймовірнісну модель оцінювання), clustering (ділить користувачів на групи (кластери) за смаками, після чого викорис- товує умовну ймовірність для генерування рекомендацій) тощо [12]. Подібні підходи були дуже успіш- ними в минулому, проте з часом окресли- лися певні труднощі у їх використанні. По-перше, зі зростанням кількості контенту виникла проблема розрідженості МПП. Враховуючи вражаючі обсяги різ- номанітних продуктів (книжок, фільмів тощо) окремий користувач зазвичай міг надати оцінку зовсім малій їх частці. Це, в свою чергу, ускладнювало пошук найбли- жчих сусідів і, як наслідок, негативно впливало на якісь рекомендацій. По-друге, зростання контенту та кі- лькості користувачів також вказало на проблеми з масштабованістю подібних систем. Пошук сусідів вимагає серйозних підрахунків, відповідно, більші МПП ви- магали потужніших алгоритмів. Тому є сенс у використанні альтер- нативних підходів. Одним з них є, зокрема, використання мультиагентних систем з інтелектуальними агентами (зокрема, фільтрботами). Втім, як зазначено в [12], такий підхід сам по собі не є достатнім для того, щоб нівелювати описані вище про- блеми. Рекомендаційна система, описана в цій роботі, відноситься до класу систем колабораційного фільтрування з акцентом на «продукті» (Item-Based Collaborative Filtering Systems). Можна виділити три кроки процесу створення рекомендацій: репрезентація, формування околів та гене- рування рекомендацій [1,7]. На рис. 1 зображено процес ство- рення рекомендацій (передбачень) [12]. Рис.1. Процес колабораційного фільтрування Правові, навчальні та соціальні аспекти програмування 109 Перший крок – репрезентація реко- мендаційної системи. Ми працюємо з да- ними у вигляді МПП. Для m покупців та n продуктів ця матриця матиме розмірність x*m, при цьому ми не вимагаємо від жод- ного «покупця» оцінити всі можливі «про- дукти» (через що виникає розрідженість, про яку згадувалося вище). Під оцінкою ми розуміємо вибір користувачем певного курсу: «обрав» та «не обрав» (відповідно, 1 та 0). Для боротьби з розрідженістю ми використаємо фільтрботів – агентів, зада- чею яких є автоматичне виставлення рей- тингів у МПП. Рекомендаційна система сприймає фільтрботів як звичайних корис- тувачів, втім, на відміну від останніх, фільтрботи лише оцінюють «продукти» та не потребують рекомендацій. Фільтроботи також є хорошим помічником у випадку так званого «холодного старту», коли не- достатньо «покупців» оцінили різноманіт- ні «продукти». Для підвищення ефективності фільтрботів ми повинні активно їх викори- стовувати при появі нових «продуктів» – у нашому випадку, нових предметів. Змушу- вати конкретного фільтрбота оцінити но- вий предмет ми будемо із врахуванням так званої ієрархії курсів. Ієрархія курсів дозволяє формувати списки конкретних предметів, які обира- тиме студент на кожному курсі. Якщо пре- дмет А, що доступний для вибору на тре- тьому курсі, вимагає від студента прослу- ханих предметів B та С на другому, ми можемо скласти відповідну ієрархію. Ви- користання подібних ланцюжків курсів допомагає нам як при формуванні специ- фічних фільтрботів, так і на етапі форму- вання околів. Незважаючи на те, що фор- мування подібних ланцюжків вимагатиме безпосереднього втручання адміністратора системи, воно дає змогу покращити реко- мендації (передбачення) системи. Таким чином, використання лан- цюжків предметів вільного вибору є час- тиною інтелектуальної потужності фільтр- ботів, що використовуються в нашій реко- мендаційній системі. Ця ідея є розвинен- ням класу так званих «жанрових» фільтр- ботів, які використовуються у системах, що рекомендують користувачам фільми за їх смаками [7]. Другий крок – формування околів. Цей крок ще називають кроком визначен- ня схожості продуктів. Ми виходимо зі схожості (відмінності) смаків пар корис- тувачів. У нашому випадку ми розрізняємо їх за обраними предметами. Якщо корис- тувач обрав предмет, у відповідного еле- мента МПП буде значення 1, в протилеж- ному випадку – 0; таким чином, отримує- мо бінарну рейтингову схему. Щоб визна- чити схожість між двома предметами віль- ного вибору, ji та ki , підрахуємо ймові- рність вибору предмету ji за умови, що предмет ki був обраний раніше (тобто, так звану умовну ймовірність). Такий підхід називається умовною ймовірнісною схожі- стю [7]. Формула: )( )( kFreq jkFreq condsim jkjk  , (1) де: cond – умовна ймовірність, )( jkFreq – кількість користувачів, що обрали обидва предмети, )(kFreq – кількість користува- чів, що обрали предмет k . Варто зазначити, що зазвичай )()!( jkcondkjcond  , тому ми ризикуємо отримати асиметричні реляції. Крім того, кожен предмет матиме високу умовну ймовірність щодо популяр- них предметів: тобто, наш коефіцієнт буде високим лише тому, що один з предметів вибирають часто, а не тому, що користува- чі обирають їх разом [14]. Для вирішення цієї проблеми скористаємось запропонова- ними у [15] методами. Спершу зазначимо, що один з спо- собів вирішення цих проблем – ділення: ми просто ділимо коефіцієнт схожості )( kjsim на )( jFreq , де )( jFreq – кіль- кість користувачів, що обрали предмет j . Ділення також можна замінити множенням на коефіцієнт (подібний підхід «виріс» з інформаційного пошуку) – ))((log2 jP . Продуктивність рекомендаційних систем різко знижується з масштабуван- Правові, навчальні та соціальні аспекти програмування 110 ням системи, тому у [15] пропонується видозмінена формула для підрахунку кое- фіцієнта: ))(()( )( jFreqkFreq jkFreq sim jk   при цьому, у випадку 0 формула на- буває вигляду (1), а при 1 : (1)/ )( jFreq . Єдиний недолік останнього варіан- ту – те, що вона не розрізняє користувачів, які обрали багато предметів, та тих, що обрали всього кілька; проте для створення рекомендацій вибір користувачів з невели- ким набором обраних предметів часто мо- же бути важливішим. Тому варто нормалі- зувати кожен рядок МПП та вираховувати коефіцієнт як ))(()( 0: , , kFreqjFreq r sim jiri ki jk     . (2) Єдина відмінність між покращеним алгоритмом (2) та оригіналом – те, що ми використовуємо суму відповідних нену- льових значень k -ої колонки МПП, а не кількість користувачів, що обрали певний предмет. Завдяки нормалізації ми отри- муємо рядки «одиничної довжини», і користувачі, що обрали багато предме- тів, матимуть менший вплив на рекомен- дації [15]. Після підрахунку коефіцієнтів схо- жості для всіх предметів, мусимо обрати n предметів, коефіцієнти схожості яких з предметом ji , для якого ми формуємо пе- редбачення, найвищі. Цей набір утворить окіл предмету ji . Третій крок – генерування рекомен- дацій (передбачень). Для цього скористає- мось стандартним підходом – зваженою сумою. Система генерує передбачення щодо певного предмету ji підсумовуючи оцінки (у нашому випадку – одиниці та нулі) користувача au предметів у околі ji ; ці рейтинги зважуються коефіцієнтами схожості:       l k ak l k akjk aj sim rsim pr 1 1 , де l – кількість предметів в околі. Алгоритми, описані вище та засто- совані в нашій рекомендаційній системі, належать до класу item-based collaborative filtering. Перевагами цього алгоритму є відносно хороша якість рекомендацій (пе- редбачень). Алгоритм його відносно легко реалізувати, а використання всієї бази даних у процесі генерування рекомендації жодним чином не обмежує оновлення са- мої бази даних. Разом з цим, використан- ня всієї бази даних дещо негативно впли- ває на швидкість роботи; інші недоліки цього алгоритму нівельовані нашими но- вовведеннями, які були описані вище. Використання мультиагентної сис- теми для рекомендаційної системи випра- вдано з точки зору ефективного розподілу задач та синтезу їх рішень (важливі про- блеми з точки зору керування інформаці- єю). Тут стає у нагоді розподіленість, природна для агентів. Інтереси студентів теж змінюються в часі, навчальні матеріа- ли і методики також. Але ж і агентам при- таманно навчатися та адаптуватися до навколишнього середовища. По-третє, студенти мають різні рівні підготовки, кожен з них особистість, тому методоло- гія навчання мусить адаптуватися до ін- дивідуальності студента. Спілкування, обговорення спільних тем й інтересів, може бути підтримано здатністю агентів до переговорів і наявністю спільної аген- тної мови, базованої на онтологіях. Наре- шті, студенти можуть реєструватися в кількох курсах одночасно. Тому так важ- лива координація занять, теж природна для агентів. В роботі [16] серед переваг поєд- нання інтелектуальних агентів з навчаль- ним простором вказуються: швидка інтег- рація нових користувачів та їх залучення до спільноти; ефективне використання контенту та спільних знань; поліпшення якості супроводу, асинхронної комуніка- ції між користувачами та доступу до кон- тенту. Зрештою, варто також врахувати «традиційні» переваги мультиагентних систем. При розподілі обов’язків конт- роль та відповідальність за дії розподілені між різними агентами; відповідно, якщо Правові, навчальні та соціальні аспекти програмування 111 один з них вийде з ладу, система не при- пинить функціонувати. Завдяки модуль- ності мультиагентну систему можна легко нарощувати та видозмінювати, адже для цього не потрібно змінювати код всієї програми. Системи зі змінними у часі па- раметрами можуть бути представлені су- купністю агентів. Реалізація рекомендаційної системи засобами JADE Сучасні мультиагентні системи ви- користовують розподілений тип взаємодії. В колаборативному середовищі кожен агент володіє певними знаннями та спро- можний ділитися ними з іншими агента- ми. В контексті об’єктно-орієнтованого програмування агент представляє собою поєднання набору функцій та інтерфейсу; останній використовується для комуніка- ції між агентами. Втім, агенти також ма- ють зовсім інший рівень автономії порів- няно з програмами, запущеними на відда- лених вузлах чи в мережі – завдяки меха- нізму генерування та послідовного вико- нання власної мети (агенти, що мають цей механізм, називаються інтелектуальними агентами). В розробці використовується широ- кий спектр мов програмування: від універ- сальних (Java) до мов програмування аген- тів (Goal); також варто враховувати окремі платформи (Jason, CLAIM, JACK тощо). Проте, можливо, найпопулярнішою агент- ною платформою є JADE – Java Agent DEvelopment Framework. JADE – фреймворк з відкритим ко- дом, написаний на Java. Він спрощує роз- робку мультиагентної системи, виступаю- чи технологією проміжного рівня, що від- повідає всім вимогам FIPA, та графічним інструментарієм, що підтримує «де- баггінг» та різні фази розробки. Завдяки тому, що агентів можна передавати з од- нієї машини на іншу прямо в процесі ро- боти, доступна зміна конфігурації «на льоту» через графічний інтерфейс. Вико- ристання агентних систем на JADE також дозволяє не турбуватися про відмінності між операційними системами на різних машинах [17]. Завдяки комунікаційній архітектурі JADE, процес обміну повідо- мленнями між агентами – гнучкий та ефе- ктивний: JADE створює чергу та керує потоком ACL-повідомлень (з налашту- ваннями приватності). Доступ агентів до черги відбувається шляхом поєднання кількох доступних режимів роботи: бло- кування, голосування, перерви та співста- влення (з еталоном). Для створення агента в середовищі JADE ми повинні створити клас, що роз- ширює базовий клас jade.core.agent. Ме- тод setup() цього класу ініціалізує агента. При цьому всі дії агента (так звана пове- дінка агента) описуються в об’єктах кла- сів, що називаються behaviours та розши- рюють клас jade.core.behaviours.Behaviour [18]. Графічний інтерфейс платформи, що імплементує RMA агента, дозволяє моні- торити та адмініструвати платформу, а також тестувати її. Дозволяється запуска- ти кілька RMA-агентів одночасно на од- ній платформі. RMA-агенти, по суті, є екземплярами класу jade.tools.rma.rma. В інструментарії JADE є чимало корисних інструментів. Dummy Agent до- зволяє відслідковувати обмін повідомлен- нями між агентами (відправка, отримання повідомлень, збереження у файл). Інтег- роване застосування Sniffer Agent корисне для виправлення помилок в поведінці аге- нтів (агент перехоплює повідомлення ін- ших). SocketProxyAgent призначений для встановлення зв’язку з віддаленими кліє- нтами і підтримує до 50 паралельних під- ключень. DF (Directory Facilitator) agent відповідає за сервіс так званих “жовтих сторінок” (“yellow pages”), через який ін- ші агенти роблять запити на послуги або відповідають на них. Популярність JADE пояснюється потужністю, гнучкістю та відносною про- стотою цієї платформи. Саме тому вона була обрана для реалізації рекомендацій- ної системи. Агентна модель системи Цей розділ присвячено опису моде- лі агентної системи. Спершу, визначимось з різноманітними агентами, що існувати- муть в рамках рекомендаційної системи, вказавши їх назви та поведінку (набір дій, які вони здатні виконувати) (таблиця). Правові, навчальні та соціальні аспекти програмування 112 Таблиця Назва агента Поведінка Student Агент-студент. Може давати оцін- ку (1 чи 0) предметам, виходячи з того, прослухав він їх чи ні Filterbot Агент-фільтрбот. Активний на кроці репрезентації та (за певних умов) формування околів. Задачею фільтрботів є автоматичне вистав- лення рейтингів у МПП. Для реко- мендаційної системи вони – аналог звичайних користувачів, втім, на відміну від останніх, не потребу- ють рекомендацій, вони лише оці- нюють за певними алгоритмами. «Побічний», але важливий ефект від дії фільтрботів – пониження розрідженості МПП; з цією ж ме- тою ми змушуємо фільтрботів мо- ніторити появу нових курсів та оцінювати їх. Фільтрботи також використовують ланцюжки пред- метів (ієрархію) – що перетворює їх у варіацію так званих «жанро- вих» фільтр ботів Mayor Агент-мер. Активний на кроці фо- рмування околів. Найцікавіший з агентів, адже в його обов’язки вхо- дить найнасиченіший етап ство- рення рекомендацій. Щоб визначи- ти схожість між двома предметами вільного вибору, ji та ki , підраху- ємо ймовірність вибору предмету ji за умови, що предмет ki був обраний раніше (тобто, так звану умовну ймовірність). Крім того, завдяки удосконаленням наш кое- фіцієнт буде високим лише тому, що один з предметів вибирають часто, а не тому, що користувачі обирають їх разом; ми враховуємо те, скільки предметів користувач вже обрав (часто думка користува- чів з меншим набором предметів важить більше), а масштабування не повинне стати проблемою. Код цього агента приведений далі Commit- tee Агент-член комітету. Активний на етапах репрезентації та генеруван- ня рекомендацій. Генерує передба- чення стосовно певного предмету ji підсумовуючи оцінки (у нашо- му випадку – одиниці та нулі) ко- ристувача au предметів у околі ji ; ці рейтинги зважуються коефіцієн- тами схожості. Відповідає за ієрар- хію предметів (саме до нього звер- таються фільтрботи) та підрахунок кредитів Складемо діаграму послідовності взаємодії агентів всередині системи. Діаг- рама послідовності відображає взаємодії об’єктів, впорядковані за часом: зокрема, послідовність відправлених повідомлень (рис. 2). Рис. 2. Діаграма послідовності, що відо- бражає взаємодії об’єктів Як видно з діаграми, спочатку фільтрбот посилає запит агенту Commitee Man і отримує назад ієрархію предметів. Після цього оцінки фільтрботів та агентів Student формують МПП. На основі цієї матриці агент Mayor формує окіл для ко- ристувача та передає його агенту Commitee Man, який відповідає за генера- цію рекомендацій. Після цього агент Commitee Man передає згенеровану реко- мендацію (передбачення) агенту Student (це, звісно, передбачає звернення спудея до рекомендаційної системи на самому початку). Правові, навчальні та соціальні аспекти програмування 113 Приклад коду агента: MayorAgent В цьому розділі наведений лістинг (з коментарями) одного з агентів – MayorAgent . Це – один з найцікавіших у реалізації агентів. public class MayorAgent extends Agent { protected void setup(){ addBehaviour(new CyclicBehaviour(this) { @Override public void action() { ACLMessage msg = receive(); if(msg != null) { // TODO Agent logic Entry entry = null; try { entry = (Entry) msg.getContentObject(); if (entry == null) throw new RuntimeException("Internal error"); // TODO internal exception class if (entry.getContent() != null) { ACLMessage reply = msg.createReply(); String subject = msg.getContent(); String[] recommendedCouses = Recommendations.getRecommendations(subject); reply.setContentObject(recommendedCourses); send(reply); } else { // TODO implement } // } catch (UnreadableException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } } else { block(); } } }); } } package recommendations; class ValueComparator implements Comparator { Map base; public ValueComparator(Map base) { this.base = base; } public int compare(Object a, Object b) { if((Double)base.get(a) > (Double)base.get(b)) { return 1; } else if((Double)base.get(a) == (Double)base.get(b)) { return 0; } else { return -1; } } } public class Recommendations { // Альфа – в знаменнику формули (2) const double alpha = 0.5; // Скільки предметів має бути в "околі" const int subjectsToRecommend = 5; // Клас для роботи з базою даних DB db = new DB(); // Визначає рівень схожості між двома предметами - формула (2) static double getSimilarity(Subject s1, Subject s2) { double sim = 0; // Для кожного студента, який слухає дру- гий курс for (Student student : s2.students) { // Якщо він слухає і перший також if (s1.students.Contains(student)) sim++; } } // Ділимо на кількість слухачів кожного з цих предметів return sim / ((double)s1.students.size() * Math.pow((double)s2.students.size(), alpha)); } // Повертає "окіл" для даного предмета public static String[] getRecommendations(String subject) { // Беремо з бази всі предмети ArrayList<Subject> subjects = db.getAllSubjects(); // Створюємо мапу, в якій ключами будуть предмети, а значеннями - // рівні схожості (sim) з даним предметом (subject) Map<Subject,double> map = new HashMap<Subject,double>(); // Проходимо усі предмети з бази for (Subject s: subjects) { // Якщо це наш предмет - пропускаємо if (s.name.equals(subject.name)) continue; // Визначаємо схожість double sim = getSimilarity(subject, s); // Передаємо в мапу map.put(s, sim); } // Сортування ValueComparator bvc = new ValueComparator(map); TreeMap<String,Double> sortedMap = new TreeMap(bvc); sortedMap.putAll(map); // Тепер в sortedMap - усі наші предмети відсорто- вані // за спаданням схожості з даним // Ініціалізуємо масив з 5-ти предметів для рекоме- ндації (окіл) String[] result = new String[subjectsToRecommend]; int i = 0; for (String sName : sortedMap.keySet()) { // Вихід, якщо достатньо Правові, навчальні та соціальні аспекти програмування 114 if (i >= subjectsToRecommend) break; result[i++] = sName; } return result; } } Кінець лістингу. Висновки У цій роботі запропоновано модель агентної рекомендаційної системи віртуа- льного університету, що покликана допо- магати спудеям у виборі предметів вільно- го вибору. Пояснено вибір алгоритмів, використаних на різних кроках генеруван- ня рекомендацій (передбачень), та мульти- агентного підходу. Розписані ролі та пове- дінка різних агентів. Внесені та пояснені зміни, що можуть якісно вплинути на ро- боту рекомендаційної системи. Запропонована модель готова до імплементації у віртуальному університеті – проекті Національного університету “Києво-Могилянська академія”. Існують шляхи подальшого покра- щення рекомендацій (передбачень) систе- ми. Приміром, можна ефективніше вико- ристовувати фільтрботів: порівнювати між собою їх оцінки; використовувати інші типи фільтрботів (не лише варіацію «жан- рових»); використовувати ваги та генеру- вати рекомендації із застосуванням ліній- них комбінації рекомендацій фільтрботів. Також можна застосувати принцип приро- днього відбору, за якого неефективні фільтрботи будуть знищуватися, а на зміну їм приходитимуть варіації їх ефективні- ших відповідників. Варто зазначити, що, попри (випра- вдане) використання нами умовної ймові- рнісної схожості на етапі формування око- лів, існують також інші підходи: CVS (Cosine/Vector Similarity), Adjusted Cosine Similarity тощо. Їх використання буде ви- правданим у випадку появи повноцінних рейтингів (користувачів конкретним пред- метам). 1. Глибовець А.М. Агенти для рекомендацій в колаборативних середовищах // Наукові праці Миколаївського державного гумані- тарного університету ім. Петра Могили комплексу “Києво-Могилянська академія”. – 2010. – Вип. 121, Т. 134: Комп’ютерні те- хнології. – С. 142–151. 2. Тоффлер Э. Шок будущего: Пер. с англ. / Э. Тоффлер. – М.: ООО "Издательство ACT", 2002. – 557 с. 3. Lawrence Lessig The Read-Write Internet – Режим доступу: www.youtube.com/watch?v =7nBL8eClYuU – 2006. 4. Михаил Грунин. “$1 000 000 за новый ре- комендательный алгоритм”. – Режим до- ступу: http://artpragmatica.ru/rs/?uid=1229 – Назва з екрана. 5. Harvard Magazine Online-Education Venture – Режим доступу: http://harvardmagazine. com/2012/05/harvard-mit-launch-edx-online- learning-venture – Назва з єкрана. 6. Steven Leckart. The Stanford Education Ex- periment Could Change Higher Learning For- ever – Режим доступу: http://www.wired. com/wiredscience/2012/03/ff_aiclass// – Назва з екрана. 7. Emmanouil Vozalis, Konstantinos G. Mar- garitis Analysis of Recommender Systems. – Режим доступу: http://lsa-svd-application- for-analysis.googlecode.com/svn- histry/r72/trunk/LSA/Other/LsaToRead/herc ma2003.pdf – 2003. 8. MobBlog. A Pitch on Future Recommender Systems – Режим доступу: http://mobblog.cs.ucl.ac.uk/2008/11/27/a- pitch-on-future-recommender-systems/ – Назва з екрана. 9. David Rowan. For LinkedIn Founder Reid Hoffman, Relationships Rule the World / Da- vid Rowan – Режим доступу: http://www.wired.com/epicenter/2012/03/ff_h offman// – Назва з екрана. 10. Nathaniel Good, J. Ben Schafer, Joseph A. Konstan, Al Borchers, Bardul M. Sarwar, Jon Herlocker and John T. Riedl Combining col- laborative filtering with personal agents for better recommendations AAAI '99/IAAI // Proceedings of the sixteenth national confer- ence on Artificial intelligence and the elev- enth Innovative applications of artificial intel- ligence conference innovative applications of artificial intelligence. – 1999. P. 439–446. 11. Bardul M. Sparsity, Scalability, and Distribu- tion in Recommender Systems // Ph.D. thesis, University of Minnesota – Режим доступу: http://ssc.bibalex.org/viewer/detail.jsf;jsession id=EF26CF691B01A7BE6DB04C97F585C5 2D?lid=E17DA62C3219B2B2CA69FF679A B36CF4&aterm=Search&page=1785&tid=E D69E7D0C1D173E0A63DD495DA59D02F &atype=&apage=1&id=. – 2001. http://www.youtube.com/watch?v%20=7nBL8eClYuU http://www.youtube.com/watch?v%20=7nBL8eClYuU http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://artpragmatica.ru/rs/?uid=1229 http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://harvardmagazine.com/2012/05/harvard-mit-launch-edx-online-learning-venture http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://www.wired.com/wiredscience/2012/03/ff_aiclass/ http://lsa-svd-application-for-analysis.googlecode.com/svn-history/r72/trunk/LSA/Other/LsaToRead/hercma2003.pdf http://lsa-svd-application-for-analysis.googlecode.com/svn-history/r72/trunk/LSA/Other/LsaToRead/hercma2003.pdf http://lsa-svd-application-for-analysis.googlecode.com/svn-history/r72/trunk/LSA/Other/LsaToRead/hercma2003.pdf http://lsa-svd-application-for-analysis.googlecode.com/svn-history/r72/trunk/LSA/Other/LsaToRead/hercma2003.pdf http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://mobblog.cs.ucl.ac.uk/2008/11/27/a-pitch-on-future-recommender-systems/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ http://www.wired.com/epicenter/2012/03/ff_hoffman/ Правові, навчальні та соціальні аспекти програмування 115 12. Badrul Sarwar, George Karypis, Joseph Kon- stan , John Riedl Item-based Collaborative Filtering Recommendation Algorithms // Pro- ceedings of the 10-th international conference on World Wide Web, 1–5 May 2001, Hong Kong: ACM Press. – New York. – 2001. – P. 285–295. 13. Andrew I. Schein, Alexandrin Popescul, Lyle H. Ungar, and David M. Pennock. Methods and metrics for cold-start recommendations // Proceedings of the 25-th annual international ACM SIGIR conference on Research and de- velopment in information retrieval, 11–15 August 2002, Finland: ACM Press. – New York. – 2002. – P. 253–260. 14. Brendan Kitts, David Freed, and Martin Vrieze. Cross-sell: A fast promotion-tunable customer-item recommendation method based on conditional independent probabilities // Proceedings of ACM SIGKDD International Conference, – 2000. – P. 437–446. 15. George Karypis. Evaluation of item-based top-n recommendation algorithms // Proceed- ings of the tenth international conference on Information and knowledge management, – 2001. – P. 247–254. 16. Глибовець М.М., Сергієнко І.В., Гороховсь- кий С.С., Глибовець А.М. Програмні засоби створення і супроводу розподіленого нав- чального середовища // Національний уні- верситет "Києво-Могилянської академії" – К.: НаУКМА: Аграр Медіа Груп, 2012. – 710 с. 17. Глибовец Н.Н. Использование JADE (Java Agent Development Environment) для разра- ботки компьютерных систем поддержки дистанционного обучения агентного типа // Образовательные технологии и обще- ство. – 2005. – Т. 8, № 3. – С. 325–345. 18. JADE Tutorial – Режим доступу: http://jade.tilab.com/doc/tutorials/JADEProgr amming-Tutorial-for-beginners.pdf – Назва з екрана. Одержано 04.07.2014 Про авторів: Глибовець Микола Миколайович, доктор фізико-математичних наук, професор, декан факультету інформатики Національного університету «Києво-Могилянська Академія», Конюшенко Олексій Володимирович, аспірант. Місце роботи авторів: Національний університет «Києво-Могилянська академія» (НаУКМА), 04655, м. Київ, вул. Г. Сковороди, 2. Тел.: (044) 425 60 59. E-mail: glib@ukma.kiev.ua. Київський національний університет імені Тараса Шевченка, 03680, м. Київ, проспект Глушкова 4д. Тел.: (095) 576 60 69. E-mail: okonyushenko@gmail.com. http://www.www10.org/hkcec/hkcec.html#_blank http://www.www10.org/hkcec/hkcec.html#_blank http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf http://jade.tilab.com/doc/tutorials/JADEProgramming-Tutorial-for-beginners.pdf mailto:glib@ukma.kiev.ua mailto:okonyushenko@gmail.com