babeŞ-bolyai university of cluj-napoca · web viewjade oferă un set de instrumente utile pentru...

108
UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ SPECIALIZAREA INFORMATICĂ LUCRARE DE DIPLOMǍ Sisteme de recomandare multi- agent Conducător științific Prof. univ. dr. Gabriela Czibula

Upload: others

Post on 27-Feb-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

UNIVERSITATEA BABEŞ-BOLYAI CLUJ-NAPOCA

FACULTATEA DE MATEMATICǍ ŞI INFORMATICǍ

SPECIALIZAREA INFORMATICĂ

LUCRARE DE DIPLOMǍ

Sisteme de recomandare multi-agent

Conducător științificProf. univ. dr. Gabriela Czibula

AbsolventPaul Colcer

Page 2: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

2014CUPRINS

INTRODUCERE..................................................................................................................4CAPITOLUL I......................................................................................................................8

Sisteme de recomandare...................................................................................................81.1 Ce sunt sistemele de recomandare?........................................................................81.2 Avantajele sistemelor de recomandare...................................................................91.3 Principalele componente......................................................................................13

CAPITOLUL II..................................................................................................................16Agenți inteligenți și sisteme multi-agent........................................................................16

2.1 Ce sunt agenții?....................................................................................................162.1.1 Structura unui agent.......................................................................................172.1.2 Agenți inteligenți...........................................................................................182.1.3 Utilizări ale agenților.....................................................................................19

2.2 Sisteme multi-agent..............................................................................................212.2.1 Comunicarea în sistemele multi-agent..........................................................22

2.2.1.1 Performative...........................................................................................222.2.1.2 Ontologii.................................................................................................222.2.1.3 Knowledge Query and Manipulation Language (KQML).....................232.2.1.4 Foundation for Intelligent Physical Agents (FIPA)...............................232.2.1.5 Sisteme Blackboard................................................................................24

2.3 Limbaje de programare pentru agenți...................................................................262.3.1 Programarea orientă agent (POA).................................................................262.3.2 Limbaje de programare orientate agent.........................................................26

2.3.2.1 Agent0....................................................................................................262.3.2.2 Jack Intelligent Agent.............................................................................272.3.2.3 Open Agent Architecture........................................................................28

2.3.3 Java Agent Development Framework (JADE)..............................................292.3.3.1 Arhitectura JADE...................................................................................292.3.3.2 Instrumente JADE..................................................................................31

2.3.3.2.1 Remote Monitoring Agent................................................................312.3.3.2.2 The Dummy Agent...........................................................................312.3.3.2.3 The Sniffer Agent.............................................................................31

1

Page 3: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

2.3.3.2.4 The Introspector Agent....................................................................322.3.3.3 Funcționalități JADE..............................................................................33

2.3.3.3.1 Crearea agenților.............................................................................332.3.3.3.2 Comportamentul agenților...............................................................332.3.3.3.3 Comunicarea agenților.....................................................................342.3.3.3.4 Serviciul ”Pagini Aurii”..................................................................35

CAPITOLUL III.................................................................................................................36Tehnici utilizate în dezvoltarea sistemelor de recomandare...........................................36

3.1 Tehnici de recomandare.......................................................................................363.2 Algoritmi și clasificări..........................................................................................38

3.2.1 Algoritmul aleatoriu (Random Algorithm)....................................................393.2.2. Mean Algorithm............................................................................................393.2.3 User-based Nearest Neighbors Algorithm....................................................393.2.3 Item-based Nearest Neighbors Algorithm.....................................................41

3.4 Evaluarea sistemelor de recomandare..................................................................413.4.1 Abordări de evaluare.....................................................................................42

3.4.1.1 Metoda off-line.......................................................................................423.4.1.2 Evaluarea on-line....................................................................................42

3.4.2 Metrici de acuratețe.......................................................................................433.4.3 Acoperirea.....................................................................................................433.4.4 Satisfacția utilizatorilor.................................................................................43

3.5 Sisteme de recomandare existente........................................................................443.5.1 Amazon.com..................................................................................................443.5.2 MeeVee..........................................................................................................463.5.3 TiVo...............................................................................................................463.5.4 Alte sisteme de recomandare.........................................................................473.5.5 Biblioteci software open-source....................................................................48

CAPITOLUL IV.................................................................................................................49MovieRightAway – Un sistem de recomandare al filmelor si serialelor.......................49

4.1 Enunțul problemei................................................................................................494.2 Abordarea propusă. Arhitectura sistemului și rolul agenților..............................504.3 Analiză și proiectare.............................................................................................54

4.3.1 Tehnologi utilizate.........................................................................................544.3.2 Diagramă de clase..........................................................................................564.3.3 Diagrama cazurilor de utilizare.....................................................................64

4.4 Manual de utilizare...............................................................................................644.5 Rezultate experimentale și extinderi posibile.......................................................68

2

Page 4: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Concluzie............................................................................................................................71BIBLIOGRAFIE................................................................................................................72

3

Page 5: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

INTRODUCERE

În prezent, cantitatea informației disponibilă utilizatorilor este nelimitată fiind într-o continuă creștere. Navigarea prin toate elementele pentru a decide dacă acestea sunt utile sau nu este aproape imposibil, astfel depistarea elementelor relevante devine o sarcină din ce în ce mai dificilă. Există o multitudine de situații în care sunt prea multe opțiuni de alegere. Să presupunem că doriți să achiziționați o carte de la o librărie on-line care vinde milioane de titluri. Deoarece nu sunteți familiarizat cu majoritatea titlurilor, nu puteți decide dacă un articol v-ar plăcea sau nu, dar cu siguranță dintre toate aceste cărți trebuie să existe o copie de care să vă bucurați. Găsirea acestui articol prin navigarea a milioane de titluri oferite de librărie este aproape irealizabil, cu atât mai mult din moment ce, probabil, nu puteți judeca relevanța elementului fără al examina mai întâi. Această problemă este similară cu găsirea produselor relevante precum: CD-uri, programe TV, fișiere MP3, filme, articole de știri, documente, rezultate din interogări de căutare și multe altele. Popularitatea tot mai mare a conținutului introdus de utilizator cum ar fi video-clipurile de pe YouTube, fotografii pe Facebook și înregistrările blogurilor, se adaugă la o creștere continuă a conținutului disponibil în rețeaua Internet.

În scopul de a depăși această așa-numită problemă ”information overload”, în mijlocul anilor 1990, cercetătorii au început investigarea sistemelor de recomandare. Un sistem de recomandare folosește cunoștințele despre preferințele utilizatorului (și ale altora), cu scopul de a recomanda un produs pe placul acestuia. Utilizatorii pot oferi un feedback pentru obiectele cu care aceștia sunt familiarizați, și sistemul de recomandare va utiliza aceste informații în scopul de a prezice preferința acestora pentru elementele încă nevăzute, ulterior recomandând elemente cu relevanță ridicată.

Multe aplicații comerciale on-line, precum și alte aplicații includ sisteme de recomandare în scopul de a oferi servicii personalizate și pentru a impulsiona vânzările lor. Câteva exemple populare includ Amazon.com, Netflix, Last.fm, MyStrands și iTunes.

Din moment ce fiecare utilizator are preferințe și criterii specifice referitoare la proprietățile care determină relevanța unei entități, sistemele de recomandare ar trebui să ofere recomandări personalizate. De obicei, preferințele pot fi privite ca un complex, un amestec de criterii în continuă schimbare (de exemplu, influențe din partea prietenilor sau experiențe noi). Mai mult decât atât, noi surse de date, furnizând informații relevante, pot deveni disponibile. Astfel design-ul sistemului de recomandare ar trebui să sprijine integrarea de noi strategii și sa fie capabil să se adapteze în mod constant pentru a schimba preferințele utilizatorului.

Problema adaptării web-ului nu este nouă. Sistemele de recomandare au suferit o serie de îmbunătățiri în ultimul deceniu. Una dintre soluțiile actuale care sunt propuse pentru această

4

Page 6: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

problemă este utilizarea agenților autonomi. Sistemele multi-agent sunt un domeniu de cercetare care a fost dezvoltat, în mare, pe parcursul ultimului deceniu, și deține anumite caracteristici speciale care se potrivesc acestei probleme. De fapt, utilizarea unei abordări multi-agent a fost deja propusă, datorită flexibilității sale și capacității de a se adapta dinamic la nevoile aplicațiilor web. Mai mult decât atât, sistemele multi-agent sunt deja utilizate pentru extragerea și actualizarea automată a informațiilor din website-uri. O propunere arhitecturală al unui astfel de sistem de recomandare folosind această abordare a fost deja propusă în [28].

În această lucrare vom prezenta un sistem de recomandare multi-agent pentru filme și seriale TV, unde diferiți algoritmi de recomandare au fost utilizați pentru a crește probabilitatea de a oferi recomandări calitative pentru utilizatori. O tehnică bazată pe filtrarea prin colaborare este aplicată regăsind astfel cei mai populari algoritmi în acest sens: user-base nearest neighbors algorithm și item-base nearest neighbors algorithm. De asemenea, pentru așa cunoscuta problemă de ”cold start” un algoritm hibrid a fost dezvoltat utilizând la bază algoritmii Random și Mean (Average). Rolul agenților în acest sistem este de a asista acest întreg proces. Pornind de la agentul personal al utilizatorului, care preia cererile acestuia, informațiile circulă spre un agent global numit coordonator, care mai apoi interoghează agentul sistemului de recomandare cu scopul de a oferi recomandări înapoi. În acest sens mai mulți agenți care preiau informații de pe Internet au fost adăugați acestei arhitecturi, aceștia ocupându-se strict de căutarea informațiilor despre seriale și filme. Acest proces al căutării și preluării informației utilizând așa numitele web crawler-re este cunoscut sub numele de data mining.

Spre o mai bună înțelegere a tehnicilor și algoritmilor utilizați, capitolele următoare vor introduce o scurtă descriere în acest domeniu. Lucrarea este structurată în patru capitole, două dintre acestea fiind orientate spre sistemele de recomandare, unul pentru agenți inteligenți și sisteme multi-agent, iar cel de-al patrulea reprezintă descrierea aplicației MovieRightAway – un sistem de recomandare pentru filme și seriale TV. Vom oferi în cele ce urmează o scurtă descriere pe capitole.

Capitolul unu prezintă o scurtă istorie și descriere a sistemelor de recomandare, ce sunt acestea, care este scopul și motivul abordării acestor de sisteme în aplicații. Se prezintă câteva avantaje ale utilizării, atât din punct de vedere al celor care oferă aceste servicii cât și din punct de vedere al celor care le utilizează. Ultimul subcapitol pune accentul pe principalele elemente fără de care un astfel de sistem nu ar putea fi conceput.

În capitolul doi este oferită o descriere a structurii și utilizării agenților inteligenți. O scurtă prezentare a sistemelor multi-agent și câteva aspecte ale comunicării agenților sunt abordate în subcapitolul ce urmează. Spre finalul acestui capitol sunt descrise câteva dintre cele mai populare limbaje de programare orientate agent, paradigma programării orientate pe agent și

5

Page 7: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

un framework pentru agenți care este utilizat la implementarea aplicației descrise în capitolul patru.

Capitolul trei pune în evidență câteva tehnici utilizate în dezvoltarea sistemelor de recomandare, un mod de evaluare a acestor sisteme și o scurtă prezentare a câtorva sisteme de recomandare existente.

În ultimul capitol al acestei lucrări vom aborda aplicația propusă. Acesta prezintă tema problemei, decizii de implementare, câteva dintre cele mai importante tool-uri utilizate în dezvoltare cât și viitoare îmbunătățiri ce pot fi aduse acestei aplicații.

6

Page 8: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

7

Page 9: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

CAPITOLUL ISisteme de recomandare

1.1 Ce sunt sistemele de recomandare?

Înainte de apariția Internetului, existau deja mai mule metode de filtrare a informației, spre exemplu, guvernele pot controla și restricționa fluxul de informații într-o anumită țara, prin intermediul cenzurii formale sau informale.

Pe de altă parte, putem vorbi despre filtrarea de informației dacă facem referință la jurnaliști sau editorii de ziare care oferă un serviciu de selecție al informației relevante clienților precum: cititori de cărți, reviste, ziare, audienței radio și telespectatorilor. Acest proces de filtrare este de asemenea întâlnit în școli și universități unde există o selecție de informație ce furnizează asistență bazată pe criterii academice utilizatorilor acestui serviciu, studenții. Apariția Internetului a adus cu sine și posibilitatea publicării informației insignifiante. În acest fel cantitatea informației redundantă crește și, prin urmare informația de calitate este diseminată. Întâmpinând această problemă, a început elaborarea și dezvoltarea de noi filtre, prin intermediul cărora să obținem ușor și eficient informațiile necesare specifice unui domeniu.

Sistemele de recomandare sau sisteme care recomandă au apărut ca domeniu de cercetare independent în mijlocul anilor ’90 [1], fiind o diviziune consistentă a sistemelor de filtrare a informației. Aceste sisteme sunt instrumente și tehnici ce asigură sugestii ale unor articole care ulterior urmează a fi prezentate utilizatorilor [2].

“Articolul” este termenul general utilizat pentru a desemna ceea ce sistemul recomandă utilizatorilor. Un sistem de recomandare se focalizează, în mod normal, pe un anumit tip de produs (de exemplu: CD-uri, știri, filme, mașini etc.); în consecință designul, interfața grafică, precum și tehnica de recomandare fundamentală sunt personalizate pentru a oferi sugestii utile și eficiente pentru acel tip specific de produs.

Sistemele de recomandare sunt, în primul rând, îndreptate către persoanele care nu dispun de suficientă experiență personală sau competența de a evalua un număr copleșitor de articole alternative, pe care un site web, de exemplu, le poate oferi. Un exemplu în acest sens este un sistem care va asista utilizatorii în alegerea unei cărți (Amazon.com, unul dintre cele mai populare web site-uri, folosește un sistem de recomandare pentru a personaliza magazinul on-line al fiecărui client [4]). Întrucât recomandările sunt de obicei personalizate, utilizatorii diferiți sau grupurile de utilizatori vor primi diverse sugestii. De asemenea există și sisteme non personalizate, acestea fiind de o complexitate mai redusă în generarea recomandărilor, regăsindu-se cu preponderență în reviste sau ziare. Exemple tipice includ: primele zece selecții de cărți, CD-uri etc. În timp ce acestea pot fi utile si eficiente în anumite situații, aceste tipuri de recomandări sunt rar abordate în cercetarea sistemelor de recomandare.

În forma lor cea mai simplă, recomandările personalizate sunt oferite asemenea unor liste ordonate de articole. Pentru a determina acest clasament, sistemul de recomandare încearcă să prezică care sunt cele mai potrivite produse sau servicii, folosind preferințele utilizatorului și anumite constrângeri. Cu scopul de a finaliza această sarcină, sistemul colectează preferințele utilizatorilor, care sunt fie exprimate în mod explicit (de exemplu: rating-urile unor produse), sau

8

Page 10: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

sunt deduse din interpretarea acțiunilor acestora (de exemplu un sistem ar putea considera navigarea către pagina unui produs un semn implicit de preferință pentru elementele prezente pe acea pagină).

Dezvoltarea sistemelor de recomandare a fost inițiată pornind de la o observație destul de banală: oamenii se bazează de multe ori pe recomandările furnizate de alte persoane în luarea deciziilor ce presupun rutina de zi cu zi [5, 6]. De exemplu, se regăsește ca fiind obișnuit părerea colegilor în decizia de a selecta o carte, angajatorii evaluează cu mare grijă scrisorile de recomandare în deciziile lor de recrutare sau selectarea unui film este influențată de comentariile unor critici sau a unor telespectatori care au vizionat acel lung metraj.

Creșterea explozivă și varietatea informației regăsită pe web împreună cu introducerea rapidă a noilor servicii de e-business (de achiziționare de produse, comparare a produselor, licitații etc.) au copleșit frecvent utilizatorii. Posibilitatea de alegere, în loc de a produce un beneficiu, a început să deterioreze bunăstarea utilizatorilor. A fost de înțeles că în timp ce alegerea este bună, mai mult, nu este întotdeauna mai bine. Într-adevăr alegerea cu implicațiile sale de libertare, autonomie și autodeterminare poate deveni excesivă, creând un sentiment că libertatea poate deveni un tip de tiranie ce induce “sărăcie” [7].

Sistemele de recomandare s-au dovedit pe parcursul ultimilor ani un mijloc valoros pentru a face față suprasolicitării cu informație. În cele din urmă un sistem de recomandare rezolvă acest fenomen, indicând unui utilizator articole noi, care nu au fost încă experimentate și care ar putea fi relevante pentru sarcina curentă. La cererea unui utilizator, în funcție de tehnica de recomandare, de context și de nevoile acestuia, sistemul generează recomandări utilizând diferite tipuri de informații și date despre utilizatori (elemente disponibile și tranzacții anterioare stocate într-o bază de date). Ulterior utilizatorul poate naviga printre recomandări, putând astfel să ofere imediat sau într-o etapă următoare, un feedback implicit sau explicit. Toate aceste acțiuni ale utilizatorului pot fi stocate si folosite ulterior pentru a genera noi recomandări în interacțiunile ce urmează.

1.2 Avantajele sistemelor de recomandare

După cum am menționat anterior, studiul sistemelor de recomandare este relativ nou în comparație cu cercetarea altor sisteme sau tehnici clasice de filtrare a informației (de exemplu: baze de date sau motoare de căutare). În decursul ultimilor ani, interesul arătat sistemelor de recomandare a crescut dramatic, astfel indicând următoarele fapte:

1. Sistemele de recomandare joacă un rol important în multe dintre web site-urile bine cotate precum Amazon.com, YouTube.com, Netflix, Yahoo, Tripadvisor, Last.fm și IMDb. Mai mult decât atât, multe companii mass-media dezvoltă și implementează sisteme de recomandare ca parte a serviciilor care le oferă abonaților. De exemplu Netflix, serviciul online de închiriere a filmelor, a acordat un premiu în valoare de un milion de dolari primei echipe care a reușit să îmbunătățească substanțial performanțele sistemului său de recomandare [8].

2. Există conferințe și ateliere în acest domeniu. Ne referim în special la ACM Recommender Systems, conferință cu debutul în anul 2007, iar acum evenimentul principal anul în cercetarea si dezvoltarea aplicațiilor bazate pe tehnologi de recomandare. Pe lângă acestea sesiuni dedicate sistemelor de recomandare sunt frecvent incluse în domeniul bazelor de date, sisteme informatice și sisteme adaptive. Printre aceste conferințe sunt de remarcat: ACM SIGIR Special Interest Group on

9

Page 11: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Information Retrieval (SIGIR), User Modeling Adaptation and Personalization (UMAP) și ACM’s Special Interest Group on Management Of Data (SIGMOD).

3. În instituții de învățământ superior din întreaga lume, cursuri universitare si postuniversitare sunt acum dedicate în întregime sistemelor de recomandare; tutorialele sunt foarte populare la conferințele de informatică, recent fiind publicate si o serie de cărți cu această tematică [9].

4. Au fost publicate o serie de articole ce privesc cercetarea și evoluțiile sistemelor de recomandare în reviste academice printre care reamintim: AI Communications (2008), IEEE Intelligent Systems (2007), International Journal of Electronic Commerce (2006), International Journal of Computer Science and Applications (2006), ACM Transactions on Computer-Human Interaction (2005) și ACM Transactions on Information Systems (2004).

Pentru a vorbi despre avantajele folosirii acestor sisteme de filtrare a informației trebuie pentru început să facem o diferențiere clară între rolul pe care aceste sisteme îl joacă.

Pe de o parte putem privi acest sistem din perspectiva furnizorilor de servicii, al căror scop este de a vinde sau promova produse (de exemplu un sistem de recomandare în domeniul turismului este de obicei introdus de o agenție de turism pentru a crește cifra de afaceri prin închirierea mai multor camere de hotel sau prin popularizarea unei destinații turistice). Există mai multe avantaje pentru care furnizorii serviciilor ar putea dori utilizarea unui astfel de sistem:

1. Creșterea numărului de articole vândute. Aceasta este probabil cea mai importantă funcție pentru un sistem de recomandare comercial; de exemplu, pentru a putea vinde mai multe seturi de produse comparativ cu cei care, de obicei, vând fără a folosi un astfel de sistem. În marea majoritate a cazurilor acest obiectiv este atins deoarece elementele recomandate sunt oferite cu scopul de a se potrivi nevoilor și dorințelor utilizatorului. Cel mai probabil, utilizatorul va recunoaște acest lucru după încercarea mai multor recomandări. În opoziție se află aplicațiile non-comerciale al căror obiective sunt similare, dar fără a asocia un cost efectiv între utilizator și articolul selectat. De exemplu, o rețea de conținut social are ca scop creșterea numărului de știri vizualizate pe site-ul său. În general putem afirma că din punct de vedere al furnizorului de servicii, obiectivul principal pentru introducerea sistemului de recomandare este de a crește rata de conversie; de exemplu, numărul de utilizatori care acceptă recomandarea și “consumă” un articol, în comparație cu numărul de utilizatori care doar navighează prin informație.

2. Vânzarea de produse diverse. O altă funcție importantă a sistemelor de recomandare este de a oferi utilizatorilor articole care în mod normal ar fi greu de găsit fără o recomandare precisă. De exemplu, pentru un sistem de recomandare al filmelor, precum ar fi Netflix, furnizorul de servicii este interesat în închirierea tuturor DVD-urilor din catalog, nu doar pe cele mai populare. Acest lucru ar fi dificil de realizat fără utilizarea unui sistem de recomandare, deoarece furnizorii de servicii nu își permit riscul de a recomanda articole care nu sunt pe placul utilizatorilor. Prin urmare, un sistem de recomandare sugerează filme nepopulare pentru utilizatorii potriviți.

3. Creșterea satisfacției utilizatorului. Un sistem de recomandare bine conceput poate îmbunătăți experiența utilizatorului cu site-ul sau aplicația. Cu ajutorul sistemului utilizatorul va găsi recomandările ca fiind interesante, relevante și cu un design om-

10

Page 12: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

calculator corect proiectat. Combinația dintre eficiență, acuratețe, recomandări și o interfață ușor de utilizat va crește gradul de utilizare al sistemului și probabilitatea ca recomandările oferite să fie acceptate.

4. Creșterea fidelității utilizatorului. Un utilizator ar trebui să fie loial unu web site, care atunci când este vizitat, recunoaște vechiul client și îl tratează ca pe un vizitator valoros. Aceasta este o caracteristică normală a unui sistem de recomandare, deoarece multe astfel de sisteme calculează recomandările pe baza informațiilor obținute de la utilizator din interacțiunile anterioare (de exemplu: rating-urile oferite unor produse). În consecință cu cât utilizatorul interacționează mai mult cu aplicația cu atât modelul acestuia devine mai rafinat.

5. O înțelegere mai bună a nevoilor utilizatorului. O altă funcție importantă a sistemelor de recomandare, care poate fi extinsă la multe aplicații, este descrierea preferințelor utilizatorului, fie colectate în mod explicit fie prezise de sistem. Furnizorul de servicii poate decide mai apoi reutilizarea acestor cunoștințe pentru o serie de alte obiective precum îmbunătățirea gestionării stocului.

Am menționat mai sus, câteva motivații și avantaje pentru care furnizorii de servicii ar dori introducerea sistemelor de recomandare. De asemenea, utilizatorii, ar putea dori un astfel de sistem în cazul în care acesta va sprijini în mod eficient sarcinile sau obiectivele acestora. Prin urmare un sistem de recomandare trebuie să echilibreze nevoile acestor doi jucători oferind servicii valoroase ambelor părți.

Herlocker [2], într-o lucrare care a devenit o referință clasică în acest domeniu, definește unsprezece sarcini pe care un sistem de recomandare le-ar putea pune în aplicare. Unele dintre aceste sarcini sunt considerate principale sau de bază, fiind asociate în mod normal unui sistem de recomandare (de exemplu: propunerea unor articole care ar putea fi utile unui utilizator). Altele ar putea fi considerate doar moduri “oportuniste” de a exploata un sistem de recomandare. Această diferențiere de sarcini este foarte asemănătoare unui motor de căutare, a cărui funcție principală este de a localiza documente care sunt relevante pentru nevoia utilizatorului, dar de asemenea poate fi folosit pentru a verifica importanța unei pagini web (analizând poziția acesteia în lista de rezultate a unei interogări) sau pentru a descoperi diverse utilizări ale unui cuvânt într-o colecție de documente.

1. Find some good items: Recomandă unui utilizator, sub forma unui clasament, anumite articole împreună cu anticiparea (de exemplu: pe o scară de la unu la cinci) dorințelor utilizatorului. Aceasta este sarcina principală a unui sistem de recomandare regăsindu-se în majoritate sistemelor comerciale.

2. Find all good items: Recomandă toate articolele care pot satisface nevoile utilizatorilor. Acest lucru este valabil mai ales atunci când numărul de articole este relativ mic sau în cazul în care sistemul de recomandare este de o importanță critică (de exemplu: în aplicațiile medicale sau financiare). În aceste situații, pe lângă beneficiile derivate din examinarea cu atenție a tuturor posibilităților, utilizatorul poate beneficia de rating-urile articolelor din sistem sau de detaliile suplimentare pe care acesta le generează.

3. Annotations in context: Având în vedere un anumit context (de exemplu: o listă de articole), marchează anumite articole în funcție de preferințele pe termen lung ale

11

Page 13: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

utilizatorului. De exemplu un sistem de recomandare pentru televiziune va afișa din lista emisiunilor existente, doar acelea care ar merită a fi vizionate.

4. Recommend a sequence: În loc de a se concentra pe generarea unei singure recomandări, accentul se pune pe recomandarea unei serii de articole considerate plăcute în ansamblu. Exemplele tipice includ: recomandarea unui serial, a unei cărți despre sisteme de recomandare după ce o carte despre data mining a fost recomandată sau o colecție de piese [10].

5. Recommend a bundle: Sugerează un grup de articole care se potrivesc bine împreună. Spre exemplu o excursie poate fi compusă din diverse atracții, destinații și servici de cazare. Din punct de vedere al utilizatorului aceste diverse alternative pot fi luate în considerare ca un singur voiaj.

6. Just browsing: În acest tip de sarcină, utilizatorul răsfoiește catalogul, fără a avea o intenție iminentă de a achiziționa un articol. Sarcina sistemului de recomandare este de a ajuta utilizatorul să vizioneze doar articolele care sunt mult mai probabil să se încadreze în domeniul de interes al acestuia, pentru acea sesiune de navigare.

7. Find credible recommender: Anumiți utilizatori nu au încredere în sistemele de recomandare, astfel, se “joacă” cu acestea pentru a observa calitatea recomandărilor făcute. În acest sens, multe sisteme de recomandare oferă anumite funcții speciale, diferite față de cele necesare pentru a obține recomandări, cu scopul de a permite utilizatorilor să testeze comportamentul acestuia.

8. Improve the profile: Această caracteristică se referă la capacitatea utilizatorului de a furniza informații sistemului de recomandare cu privire la preferințele acestuia. Aceasta este o sarcină fundamentală, care este strict necesară pentru a oferi recomandări personalizate. Dacă sistemul nu deține cunoștințe despre utilizatorul curent, atunci recomandările furnizate acestuia sunt identice cu cele furnizate unui utilizator “mediu”.

9. Express self: Anumiți utilizatori nu sunt deloc interesați de a li se oferi recomandări. Ceea ce este mai important pentru aceștia este posibilitatea de a contribui cu rating-uri și de a-și exprima opiniile sau convingerile. Această sarcină oferă satisfacție utilizatorilor și ca atare acționează ca o pârghie pentru a menține o strânsă legătură cu aplicația (după cum am menționat mai sus, în descrierea motivațiilor furnizorilor de servicii).

10. Help others: Unii utilizatori sunt fericiți să contribuie cu informații (de exemplu: evaluarea lor pentru anumite articole), deoarece considera că, comunitățile beneficiază de pe urma acestor informații. Acest lucru ar putea fi o motivație pentru introducerea de informații într-un sistem de recomandare care nu este frecvent folosit. De exemplu, în cazul unui sistem de recomandare pentru mașini, un utilizator care a achiziționat o mașină este conștient de faptul că ratingul intrat in sistem este mult mai probabil să fie util pentru alți utilizatori, mai degrabă, decât pentru data viitoare când acesta va achiziționa o mașină.

11. Influence others: În sistemele de recomandare online, există anumiți utilizatori al căror scop principal este de a-i influența explicit pe ceilalți, cu scopul de a achiziționa anumite produse. De asemenea există așa numiții utilizatori malware care pot utiliza sistemul doar pentru a promova sau “penaliza” anumite articole.

12

Page 14: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

1.3 Principalele componente

Sistemele de recomandare sunt sisteme care adună în mod activ diferite tipuri de informații cu scopul de a oferi recomandări. Aceste tipuri de informații fac referire la articolele care urmează a fi recomandate și la utilizatorii care vor primi aceste recomandări.

În general, există tehnici de recomandare care se bazează pe o tehnică a cunoașterii limitate, precum cele care folosesc date simple (de exemplu: evaluare articolelor de către utilizatori). Alte tehnici sunt mult mai dependente de cunoștințe (de exemplu: folosesc descrieri ontologice ale utilizatorilor, relații sociale ale acestora sau anumite constrângeri). Astfel putem afirma faptul că datele utilizate de către sistemele de recomandare se referă la trei tipuri de obiecte: articole, utilizatori și tranzacții (relațiile dintre utilizatori si articole).

Articolele sunt obiectele care sunt recomandate de sistem. Acestea pot fi caracterizate prin complexitatea lor, valoare sau utilitatea acestora. Valoare unui articol poate fi pozitivă dacă articolul este valoros pentru utilizator, sau negativă în cazul în care acesta nu este potrivit preferințelor utilizatorului, acesta din urmă luând o decizie greșită în alegerea articolului. Notăm faptul că, atunci când un utilizator achiziționează un articol acesta va suporta un cost, care include costul cognitiv al căutării articolului cât și costuri monetare.

De exemplu, dezvoltatorul unui sistem de recomandare pentru știri trebuie sa ia în considerare complexitatea unei știri, structura, reprezentarea și importanța acesteia. În același timp dezvoltatorul trebuie să înțeleagă că deși utilizatorul nu suportă un cost monetar, un cost fictiv asociat căutării și vizionării este întotdeauna prezent. În cazul în care un articol selectat este relevant pentru utilizator acest cost este dominat de avantajul obținerii unei informații utile, în timp ce dacă elementul nu este relevant valoare netă pe care o reprezintă acesta pentru utilizator este negativă. În alte domenii precum cel financiar costul monetar al unui articol devine un element foarte important în selectare celei mai bune recomandări.

Articole cu o complexitate și valoare scăzută sunt precum: știrile, pagini web, filme, CD-uri; cu o complexitate și valoare mare regăsim articole precum: camerele digitale, telefoanele mobile, calculatoarele etc. Articolele considerate cele mai complexe sunt: polițele de asigurare, investițiile financiare, călătoriile, slujbele [11].

Sistemele de recomandare, în funcție de tehnologia lor de bază, pot să folosească o gamă largă de proprietăți și trăsături ale articolelor. De exemplu un sistem de recomandare pentru filme poate utiliza genul filmului, directorul și actorii acestuia pentru a descrie un film și pentru a învăța cum utilitatea unui articol depinde de caracteristicile acestuia.

Articolele pot fi reprezentate folosind diferite metode, de la un mod minimalist (cu un singur cod de identificare), la o formă mai complexă (ca un set de atribute) sau chiar o reprezentare ontologică a domeniului.

Utilizatorii unui sistem de recomandare, precum am menționat mai sus, pot avea diverse obiective și caracteristici. În scopul de a personaliza recomandările și interacțiunea om-calculator, sistemele de recomandare exploatează o serie de informații despre utilizatori. Aceste informații pot fi structurate în diverse moduri și, reamintim faptul că modelul informației depinde strict de tehnica de recomandare folosită.

Spre exemplu, în filtrarea colaborativă, modelul unui utilizator este structurat într-o listă simplă conținând evaluările oferite de utilizator anumitor articole. Într-un sistem de recomandare demografic, atributele socio-demografice precum: vârstă, sex, profesie și educație sunt utilizate pentru a crea profilul utilizatorului [12]. În modelul utilizatorului se stochează preferințele și

13

Page 15: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

nevoile acestuia. De-a lungul timpului au fost abordate mai multe tipuri de modele putând astfel afirma că un sistem de recomandare este un tool care generează recomandări prin construcția și exploatarea modelelor. Din moment ce nu se poate oferi o recomandare personalizată , doar dacă aceasta este non-personalizată (de exemplu: primele zece rezultate), modelul utilizatorului joacă un rol foarte important in elaborarea și dezvoltarea acestor sisteme.

Utilizatorii pot fi, de asemenea descriși prin șablonul comportamentului lor (de exemplu: șabloane de navigare a site-urilor sau șabloane de căutare a călătoriilor). Mai mult decât atât, datele despre utilizatori pot include relații între aceștia, în această situație un sistem de recomandare va utiliza aceste date pentru a recomanda produse similare preferate de utilizatorii de “încredere”.

Tranzacțiile sunt interacțiunile dintre utilizatori și sistemul de recomandare. Acestea sunt asemenea unui logger care stochează informații importante, generate în timpul interacțiunii om-calculator și care ulterior sunt utile algoritmului de generare a recomandărilor al sistemului utilizat. De exemplu registrul unei tranzacții poate conține o referință către articolul selectat de utilizator și o scurtă descriere a contextului în care acel articol a fost selectat. Dacă este disponibil, o tranzacție poate să conțină și feedback-ul oferit de utilizator respectivului articol.

Observând majoritatea sistemelor de recomandare putem deduce faptul că rating-urile sunt cea mai populară formă de date pe care un sistem le colectează. Aceste evaluări pot fi colectate în mod explicit (utilizatorului i se cere să furnizeze opinia sa cu privire la un articol folosind o scară de evaluare) sau implicit (prin interacțiunile utilizatorului cu sistemul). În conformitate cu [13], există o varietate de forme pentru a evalua un articol:

evaluări numerice (de exemplu: evaluarea unui articol pe o scară de la unu la cinci precum este în sistemul de recomandare al cărților folosit de cei de la Amazon.com);

evaluări ordinale precum: ”cu totul de acord, de acord, neutru, dezacord, dezacord total”, caz în care utilizatorul este rugat să selecteze termenul care indică cel mai potrivit opinia sa cu privire la un articol;

evaluări binare: în acestea utilizatorul este rugat să ia o decizie simplă asupra unui articol: bun sau rău;

evaluări unare: indică faptul că utilizatorul a observat, cumpărat un articol sau doar a evaluat acel articol pozitiv. În astfel de cazuri, absența unui rating indică faptul că nu se deține nici o informație cu privire la legătura dintre utilizator si articol (cel mai probabil acesta a achiziționat articolul din altă parte);

O altă formă cunoscută de evaluare este utilizare tag-urilor, acestea fiind asociate de către utilizator unui articol. Pentru a oferi un exemplu în această direcție putem observa sistemul de recomandare utilizat de MovieLens (http://movielens.umn.edu) unde tag-urile reprezintă modul în care utilizatorii descriu un film, de exemplu: ”prea lung” sau ”acțiune rea”.

În tranzacțiile de colectare implicită, sistemul își propune să deducă opinia utilizatorilor doar bazându-se pe acțiunile acestora. Spre exemplu dacă un utilizator introduce cuvântul cheie ”Yoga”, folosind web site-ul Amazon.com, va primi o listă de cărți dintre care acesta poate să selecteze o anumită carte pentru a primi mai multe detalii. În acest moment sistemul poate deduce că utilizatorul este oarecum interesat de acea carte.

În sistemele conversaționale (sisteme care dispun de un proces interactiv), modelul tranzacției este mai rafinat. În aceste sisteme solicitările utilizatorului alternează cu acțiunile sistemului. Utilizatorul poate solicita o recomandare, iar sistemul să îi ofere o listă de sugestii,

14

Page 16: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

dar în același timp sistemul poate cere informații suplimentare despre nevoile și preferințele utilizatorului cu scopul de a-i oferi acestuia rezultate mai bune. Aici, în modelul tranzacției, sistemul colectează diferite cereri și răspunsuri, ca în cele din urmă să învețe să modifice singur strategia de interacțiune [5].

15

Page 17: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

CAPITOLUL IIAgenți inteligenți și sisteme multi-agent

2.1 Ce sunt agenții?

Majoritatea timpului suntem bucuroși să aprobăm calculatoarele ca fiind niște sisteme supuse, așa numiții ”servitori fără imaginație” [14]. Pentru majoritatea aplicațiilor precum efectuarea plăților această teorie este acceptată, dar trecerea timpului și dezvoltarea aplicațiilor de o complexitate superioară ne atenționează că nevoia sistemelor autonome (sistemele ce pot decide singure execuția anumitor operații cu scopul de a-și îndeplini obiectivele) este într-o continuă creștere. Aceste sisteme sunt numite agenți; agenți ce trebuie să opereze robust în medii nesigure, deschise sau dinamice, unde posibilitatea eșuării este ridicată, sunt numiți agenți inteligenți sau uneori agenți autonomi.

Surprinzător, nu există o definiție unanim acceptată a termenului de agent. Deși este un consens în ceea ce privește faptul că autonomia este noțiunea centrală a unui agent, exceptând acest fapt, sunt puține lucruri general acceptate. Aceasta se datorează faptului ca anumite părți ale unui agent sunt de o importanță mai mult sau mai puțin ridicată în funcție de domeniul de aplicare. De exemplu, pentru anumite aplicații, abilitatea agenților de a învăța este mai importantă în timp ce pentru alte aplicații această caracteristica poate fi nedorită.

Ca și o definiție a agenților putem afirma că: un agent este un sistem de calcul situat într-un anumit mediu, fiind capabil de acțiuni autonome în acesta, cu scopul îndeplinirii obiectivelor construcției [15]. Această definiție nu face referire la agenți inteligenți acest lucru fiind făcut deliberat. Nu se specifică mediul în care acești agenți sunt plasați, iar când vom menționa de autonomia unui agent vom face referință la capacitatea acestora de a acționa fără intervenția umană sau a altor sisteme, având control asupra stării lor interne cât și asupra comportamentului.

Figura 1 ne oferă o privire abstractă asupra unui agent. În multe domenii de complexitate rezonabilă, un agent nu are control deplin asupra mediului. Din punct de vedere al agentului aceasta reprezintă faptul că o acțiune repetată pentru a doua oară poate avea efecte diferite, în această situație aceștia trebuie să fie pregătiți pentru eșec.

În mod normal, un agent va executa un set de acțiuni caracteristice, reprezentând capacitatea efectorială a acestuia. Fiecare acțiune este determinată de anumite precondiții care definesc situațiile posibile în care aceasta poate fi aplicată.

Principala problemă a unui agent, în mod normal, este decizia de a efectua acțiunile astfel ca obiectivele acestuia să fie atinse cu succes. Arhitecturile agenților sunt construite astfel unor sisteme de decizie, unde complexitatea procesului de efectuare al deciziei este afectată de proprietățile mediului.

16

Page 18: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 1. Un agent într-un mediu: agentul primește stimuli de la mediu și produce acțiuni ce afectează mediul (a se vedea Figura 2.1 din [29]).

Mediul asupra cărora agenții acționează poate fi caracterizat de următoarele tipuri ([29]):

Accesibil sau inaccesibil. Un mediu accesibil este acela în care un agent poate obține date complete, exacte și actualizate despre starea mediului. Majoritatea mediilor complexe (de exemplu: lumea reală sau Internetul), sunt inaccesibile. Cu atât cât accesibilitatea mediului este mai mare cu atât construcția agentului care să opereze în acesta este mai simplă.

Determinist sau nedeterminist. Mediul determinist este acela în care orice acțiune are un singur efect garantat, neexistând nesiguranțe în ceea ce-l privește după executarea acestei acțiuni. Lumea reală poate fi privită ca fiind un mediu nedeterminist. Un astfel de mediu prezintă o doză mare de complexitate pentru descrierea unui agent.

Episodic sau non-episodic. Într-un mediu episodic performanța unui agent este dependentă de un număr discret de episoade. Un exemplu de meniu episodic ar putea fi sistemul de sortare al mail-urilor [16]. Mediile episodice sunt mai simple din punct de vedere al programării, deoarece agentul poate decide ce acțiune să desfășoare bazându-se doar pe episodul curent, nefiind nevoit să se focuseze pe interacțiunile dintre episodul următor și acesta.

Static sau dinamic. Un mediu static este acela care rămâne neschimbat înafara acțiunilor agentului, spre deosebire de un mediu dinamic a cărui componență se modifică încontinuu. Lumea reală este recunoscută ca fiind un mediu foarte dinamic.

Discret sau continuu. Mediul este discret dacă este caracterizat de un număr fix de acțiuni și percepții. Russel și Norvig oferă ca și exemplu de mediu discret jocul de șah, iar conducerea unui autovehicul ca pe unul continuu.

2.1.1 Structura unui agent

Un agent este caracterizat de o arhitectură și de un program.Programul, cunoscut de altfel și ca fiind partea internă a agentului, este o funcție ce

realizează corespondența dintre percepțiile pe care agentul le primește de la mediu și acțiunile sale. Acest program trebuie să fie compatibil cu arhitectura agentului.

Arhitectura, numită și comportamentul agentului, realizează interfața între percepția dată de senzori și program, rulează programul și asigură efectuarea acțiunilor alese pe măsură ce acestea sunt generate.

Scopul inteligenței artificiale este de a proiecta programe agenți: o funcție care implementează maparea făcută de agent, de la percepții la acțiuni. Toate programele agent vor fi

17

Page 19: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

dezvoltate după același schelet – colectează percepții de la un mediu și generează acțiuni. Fiecare program agent va folosi structuri de date interne care vor fi actualizate pe măsura ce noi percepții apar. Folosind aceste structuri de date, procedurile de luare a deciziilor, vor genera acțiuni posibile.

Scheletul unui agent [15]:

Funcția ProgramAgent(percepție): întoarce o acțiune

static memorie // memoria agentului despre mediul în care se află

memorie = ActualizeazăMemorie(memorie, percepție)

acțiune = AlegeCeaMaiBunăAcțiune(memorie)

memorie = ActualizeazăMemorie(memorie, percepție)

întoarce acțiune

Sfârșit funcție ProgramAgent

Un astfel de program agent utilizează structuri interne de date, acestea fiind actualizate pe măsură ce se interceptează noi semnale. Precum se poate observa, programul agent, primește ca și parametru un singur semnal de intrare, sub forma unei percepții asupra mediului înconjurător. La fiecare apel al funcției, memoria agentului este actualizată pentru a procesa noul semnal primit. Pe baza unor proceduri de decizie, se va alege acțiunea optimă, care apoi va fi transmisă arhitecturii agentului cu scopul de a fi executată, mai apoi se memorează faptul că acțiunea respectivă a fost aleasă.

În mod normal un agent inteligent are atașată o funcție de performanță care reflectă eficiența acțiunilor sale. Aceasta este, în mod obișnuit, unică pentru toți agenții care acționează într-un mediu dat. Performanța este de fapt o funcție care asociază unei stări un număr real, reprezentând măsura gradului de succes al stării.

Pe baza funcției de performanță agentul este capabil să rezolve așa numitele situații conflictuale, în care la un moment dat poate opta pentru mai multe stări, niciuna dintre acestea putând fi realizată.

2.1.2 Agenți inteligenți

Anumiți agenți precum termostatul sau daemon-urile sistemului de operare Unix, care sunt plasați primul în mediul fizic, iar cel de-al doilea într-un mediu software care execută acțiuni relativ simple, nu sunt considerați agenți inteligenți.

Ca o definiție a agentului inteligent putem spune ca acesta este un sistem informatic care este capabil de acțiuni flexibile și autonome ce concluzionează cu îndeplinirea obiectivelor pentru care acesta a fost dezvoltat.

Prin flexibilitatea unui agent se subînțelege ([29]):

Reactivitate: agenții inteligenți sunt capabili să înțeleagă mediul și să acționeze schimbărilor care se produc în acesta, cu scopul de a-și îndeplini obiectivele.

18

Page 20: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Pro-activitate: agenții inteligenți sunt capabili să arate comportament orientat spre un anumit scop, prin preluarea de inițiative.

Abilitate socială: agenții inteligenți sunt capabili să interacționeze cu alți agenți sau cu oameni cu scopul de a-și îndeplini obiectivele.

Pro-activitatea sau comportamentul orientat spre scop. Nu este foarte dificil de implementat un sistem care manifestă un astfel de comportament, deoarece noi implementăm acest comportament de fiecare dată când dezvoltăm o procedură în Pascal, o funcție in C sau o metodă în Java. Acestea se bazează pe anumite precondiții, iar dacă precondițiile sunt îndeplinite când procedurile sunt invocate ne așteptăm ca rezultatul execuției să fie corect, astfel scopul va fi atins. Acest tip de model este potrivit pentru multe medii, cu precondiție pentru sistemele funcționale, în care se prelucrează o anumită dată de intrare x și se produce ca și date de ieșire f(x), rezultatul apelării unui funcții (compilatoarele sunt un bun exemplu de sisteme funcționale). Pentru sistemele nefuncționale comportamentul bazat pe scop nu este acceptabil deoarece se fac câteva presupuneri care limitează aria de aplicabilitate.

Sistemele reactive sau pur-reactive sunt cele care răspund în mod continuu mediului, prezentând un grad ridicat de complexitate pentru obținerea unui raport eficient între comportamentul orientat spre scop și comportamentul reactiv.

Abilitatea socială este de asemenea o caracteristică foarte importantă a agenților inteligenți. În decursul unui zile milioane de calculatoare de pe glob interschimbă mesaje pentru a-și îndeplini scopul. Această abilitate de a schimba șiruri de biți nu poate fi considerată o activitate socială, în comparație cu abilitățile pe care oamenii le prezintă în acest domeniu. Așadar pentru a ne atinge scopurile trebuie să negociem și sa cooperăm cu alți, o astfel de situație similară se regăsește și în cadrul sistemelor bazate pe agenți.

Putem diferenția agenții pe baza mai multor caracteristici ([30]):

Învățarea – capacitatea de a învăța din interacțiunea cu mediul extern, din experiență. Ca rezultat al procesului de învățare, agentul poate anticipa viitorul.

Cooperarea (comunicarea) – capacitatea unui agent de a interacționa cu alți agenți sau cu omul în scopul îndeplinirii obiectivelor pentru care acesta a fost dezvoltat.

Mobilitatea – capacitatea unui agent de a se deplasa în mediul său sau chiar de a se transfera într-un alt sistem.

Negocierea – agenții pot în anumite situații să negocieze, prin anumite forme de cooperare, pentru a obține obiectivul pentru care aceștia au fost programați. Această negociere se face după un anumit model.

Simularea – agenții pot, în anumite situații, să simuleze un sistem sau un element al unui sistem (de exemplu: un personaj al unui joc sau o bază de date).

2.1.3 Utilizări ale agenților

Aplicațiile dezvoltate cu ajutorul agenților pot fi clasificate din mai multe puncte de vedere precum tehnologia folosită sau domeniul de aplicare. Dacă clasificăm aceste aplicații după domeniul de aplicare putem distinge următoarele categorii:

Aplicațiile industriale au fost printre primele dezvoltate în acest sens și includ o gamă largă de domenii precum:

19

Page 21: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Controlul procesului – este o aplicare naturală a agenților și a sistemelor multi-agent, deoarece acestea sunt ele însele sisteme autonome și reactive. Cel mai popular sistem de acest tip este ARCHON.

Procese de fabricație – fiecare întreprindere este organizată în mai multe module sau celule de lucru. Fiecare dintre acest modul are o anumită funcționalitate (obiectiv) precum asamblarea unui produs, împachetarea acestuia etc. [31]

Control al traficului aerian – un astfel de sistem este OASIS. În acest sistem agenții sunt utilizați pentru a reprezenta aeronava și diferite sisteme de control al traficului aerian. Un agent este alocat fiecărui avion care intră în spațiul aerian din Sydney, având cunoștințe elementare și obiective corespunzătoare aeronavelor din lumea reală.

Aplicațiile comerciale includ ([31]):

Gestionarea informației – având în vedere faptul că diversitatea resurselor informaționale a crescut exponențial s-a ivit nevoia unei gestionării acestei informații. Proiecte dezvoltate în acest sens sunt: Maximis, Newt și The Zuno Digital Library.

Comerțul electronic – reprezintă automatizarea activităților umane din zona comerțului. În acest sens, luarea deciziilor comerciale poate fi lăsată în seama agenților.

Business Process Management – reprezintă sisteme IT care ajută cu diverse aspecte ale procesului de afaceri. Proiectul ADEPT a fost dezvoltat în acest sens cu scopul de a rezolva această problemă prin vizualizarea unui proces de afaceri ca o comunitate a negocierilor.

Aplicațiile medicale fac parte din industria sănătății. Remarcăm două dintre acestea:

Monitorizarea pacienților – folosite pentru gestionarea și monitorizarea pacienților, activitate executată cu preponderență de medici sau asistente medicale.

Health care – includ sisteme prototip, care au fost dezvoltate în această direcție, cu scopul de a integra procesul de gestionare al pacienților, proces care de obicei implică mai multe persoane.

Domeniul divertismentului de asemenea poate fi dezvoltat utilizând tehnologii bazate pe agenți. Agenții au un rol bine definit în dezvoltarea acestor aplicații, deoarece aceste sisteme tind să fie populate cu personaje animate semi-autonome, ce în mod normal pot fi considerate agenți. Aici putem regăsi:

Jocurile sunt activități ce necesită alte entități pentru a lucra, fie cu sau împotriva jucătorului sub un set de reguli bine definite. Pentru ca un joc să fie suficient de agreat, agenții trebuie sa fie suficient de inteligenți pentru a juca la un nivel decent.

Teatru sau cinema interactiv – în aceste tipuri de aplicații utilizatorii joacă un rol similar cu cel al actorilor. Agenții care înlocuiesc utilizatorii în aceste aplicații sunt numiți believable agents.

20

Page 22: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

2.2 Sisteme multi-agent

Inteligența artificială distribuită este un domeniu de cercetare din aria inteligenței artificiale, fiind o combinație a mai multor domenii precum: informatica, sociologia sau psihologia; dedicată dezvoltării de soluții distribuite pentru probleme complexe, considerate ca având nevoie de inteligență. Inteligența artificială distribuită în sine este împărțită în două subdomenii în concordanță cu P. Stone în [32]: un domeniu de rezolvare a problemelor distribuite și un domeniu al sistemelor multi-agent. Principalele subiecte considerate în programarea sistemelor distribuite sunt probleme de management al informației cum ar fi descompunerea și sintetizarea. De exemplu, o problemă ar putea fi divizată în mai multe subprobleme total independente, mai apoi rezolvate și în cele din urmă asamblate pentru a oferi o soluție problemei originale.

Sistemele multi-agent(SMA) sunt sisteme alcătuite din mai mulți agenți inteligenți care împărtășesc același mediu, de obicei cu posibilitatea de a comunica, coopera sau negocia cu scopul de a-și atinge obiectivele pentru care au fost dezvoltați. Aceste sisteme sunt utilizate în rezolvarea problemelor complexe unde un singur agent sau limitările acestuia nu sunt suficiente.

Caracteristicile sistemelor multi-agent pot fi definite după cum urmează [33]:

Fiecare agent are informații sau capacități de rezolvare a problemei incomplete și, prin urmare are un punct de vedere limitat.

Nu există un sistem de control la nivel global, ceea ce înseamnă că fiecare agent este o entitate autonomă, fără control, care acționează pe cont propriu.

Datele nu sunt centralizate, fiecare agent având propriul set de informații despre mediul înconjurător.

Calculul se execută în mod asincron.Caracteristic, în sistemele multi-agent fiecare agent are un obiectiv bine definit, urmărind

realizarea propriului scop indiferent de obiectivele celorlalți. Cu toate acestea, există situații în care sistemul are un obiectiv global care este prioritar tuturor agenților. Când dezvoltatorii proiectează sisteme multi-agent se confruntă cu două probleme cheie. Prima problemă cunoscută sub numele de problema agent sau micro-problema, este de a dezvolta agenți autonomi cu scopul de a-și îndeplini obiectivele. A doua problemă cunoscută sub numele de problema socializării sau problema macro, este de a proiecta un sistem în care agenții interacționează într-un mod util și coerent. Unele dintre avantajele SMA sunt descrise în cele ce urmează ([33]):

eficiență de calcul ridicată prin concurență;

fiabilitate îmbunătățită prin redundanță;

extensibilitatea sistemului cu noi agenți și posibilitatea de a schimba capacitățile agenților;

îmbunătățirea mentenabilității datorită modulelor;

reutilizarea agenților în diferite sisteme.

Sistemele multi-agent au o gamă largă de utilizare în domenii precum: transportul, jocuri, logistică, producție, planificare, control, de simulare sau de modelare a structurilor sociale.

21

Page 23: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

2.2.1 Comunicarea în sistemele multi-agent

Pentru o comunicare și o coordonare eficientă agenții trebuie să interschimbe date între aceștia. Limbajele de comunicare ale agenților le permite acestora să formeze o adevărată societate, fără a expune procesele lor interne, abordând astfel probleme care un agent individual nu le-ar putea soluționa. Există două abordări principale atunci când discutăm despre comunicarea agenților, prima abordare este bazată pe limbajele de comunicare dedicate agenților, iar cea de-a doua bazată pe așa numitele sisteme Blackboard. În cele ce urmează vom detalia cele două abordări menționate.

Asemănător oamenilor, care folosesc limbajul natural pentru a se exprima, agenții utilizează un limbaj de comunicare specific (Agent Communication Language - ACL) cu scopul de a interschimba informații, intenții și obiective [34]. Aceste limbaje de comunicare sunt bazate pe mesaje, unde agenții trimit mesaje unul celuilalt pentru o mai bună cunoaștere, coordonare sau în scopul unei negocieri. În sistemele multi-agent comunicarea se poate realiza sincron, după expedierea unui mesaj agentul așteaptă răspunsul, sau asincron. Datorită schimburilor multe de mesaje, în majoritatea cazurilor, agenții dezvoltă o relație client-server. Majoritatea limbajelor de comunicare ale agenților au o structură a mesajului bine definită, ce conține informații precum: expeditorul, receptorul, conținutul, performativa, ontologii etc. Un astfel de exemplu poate fi urmărit în cele ce urmează.

(tell

Sender: Agent1

Receiver: Agent2

Language: ASCII

Ontology: negociere

Content: valoare_nouă = 1000

)

2.2.1.1 Performative

O performativă este de obicei atașată conținutului unui mesaj și determină ce tip de interacțiune va fi utilizat. Semnificația acestora poate fi faptul că, conținutul este o afirmație, o interogare, o comandă sau un alt act de comunicare [40]. Performativele descriu de asemenea modul în care expeditorul dorește ca răspunsurile să fie livrate. În exemplul anterior perofmativa ”tell” este utilizată pentru a informa receptorul că mesajul expediat este unul informativ și că nu se solicită un răspuns.

2.2.1.2 Ontologii

”A specification of a representational vocabulary for a shared domain of discourse — definitions of classes, relations, functions, and other objects — is called an ontology”

[Gruber, 1993]22

Page 24: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Folosind alte cuvinte pentru a descrie o ontologie putem spune că aceasta este o specificare conceptuală, o descriere a conceptelor și relațiilor existente într-o societate a agenților. În exemplul oferit mai sus, conținutul mesajului este plasat în contextul unei licitații, concept care este definit atât pentru expeditor cât și pentru receptor.

În ansamblul limbajelor de comunicare ale agenților, regăsim două care au influențat într-o mare măsură acest domeniu: Knowledge Query and Manipulation Language (KQML) [14] și Foundation for Intelligent Physical Agents – Agent Communication Language (FIPA-ACL) [34].

2.2.1.3 Knowledge Query and Manipulation Language (KQML)

Knowledge Query and Manipulation Language (KQML) este un limbaj de comunicare al agenților, conceput la începutul anilor ’90 de către Knowledge Sharing Efort (KSE) [14], un consorțiu condus în cea mai mare parte de către cercetători în domeniul inteligenței artificiale. După cum sugerează și numele acestuia, KMQL nu a fost inițial conceput ca un limbaj de comunicare al agenților, ci mai degrabă ca o colecție de tipuri de mesaje speech-act-like, exprimate ca șiruri de caractere ASCII, cu o sintaxă asemănătoare LISP, fiind transportate cu ajutorul protocoalelor TCP/IP, care vizează cunoașterea și schimbul de informații între sistemele software privite ca baze de cunoștințe virtuale. În zilele noastre, KMQL este privit ca un limbaj de comunicare de nivel înalt orientat spre mesaje si protocoale între agenții software. Arhitectura limbajului este un stratificată, diferențiind trei straturi semnificative: stratul de conținut (content layer), stratul mesajelor (message layer) și stratul de comunicare (communication layer). Stratul de conținut înglobează conținutul mesajului, care poate fi utiliza orice reprezentare (de exemplu: codul ASCII sau cod binar). Stratul de comunicare codifică un set de parametrii, cum ar fi identitatea expeditorului și cea a receptorului. Stratul mesajelor este nucleul limbajului KMQL, definind printre altele: protocolul de transport (TCP/IP, UDP, SMTP, IIOP etc.), limbajul conținutului, ontologia folosită și performativa atașată de expeditor conținutului.

Aceste trei straturi indică faptul că limbajul KMQL este capabil de a analiza, ruta și expedia mesaje, indiferent de conținutul acestora. Anumite caracteristici KQML includ independența față de mecanismul de transport, față de limbajul conținutului, precum și independența ontologiei utilizate în conținut.

2.2.1.4 Foundation for Intelligent Physical Agents (FIPA)

Foundation for Intelligent Physical Agents (FIPA) [34] este o organizație internațională dedicată promovării industriei agenților inteligenți prin dezvoltarea specificațiilor care suportă interoperabilitatea între agenți si aplicații bazate pe agenți. Specificațiile se refera la gestiunea agenților, limbajele de comunicare între agenți, formatul mesajelor de comunicare etc. Gestiunea agenților se refera la cadrul normativ în care agenții FIPA există și operează, stabilind modelul logic de referință pentru crearea, înregistrarea, localizarea, comunicarea, migrarea și retragerea agenților. Modelul include entitățile logice prezentate in Figura 2.1, fiecare desemnând un serviciu.

23

Page 25: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.1 FIPA – Modelul entităților (vezi Figura 1 din [34])

Limbajul FIPA ACL are foarte asemănător cu limbajul prezentat anterior, KQML, dar sunt anumite diferențieri pe care am dori să le menționăm. Performativele limbajului FIPA ACL diferă de ce utilizate de KQML, de exemplu performativa ”tell” utilizată în limbajul KMQL este echivalentă cu performativa ”inform” utilizată de limbajul FIPA ACL. O altă diferență majoră a performativelor utilizate de cele două limbaje este faptul că performativele limbajului KQML precum: ”insert”, ”uninsert”, ”delete-one”, ”delete-all” sau ”undelete” permit manipularea directă a cunoștințelor virtuale ale altui agent, în timp ce manipularea acestor cunoștințe nu este permisă în limbajul FIPA ACL. Asemenea limbajului KQML, FIPA ACL nu face un angajament asupra unui anumit limbaj de reprezentare al conținutului, deși limbajul FIPA ACL aduce propriul său limbaj de reprezentare numit SL, limbaj bazat pe logica modală.

2.2.1.5 Sisteme Blackboard

Sistemele Blackboard sunt, în contrast cu alte limbaje de comunicare bazate pe mesaje, o abordare de comunicare centralizată. O metaforă caracteristică și utilizată des pentru a descrie aceste sisteme este prezentată în cele ce urmează:

“Imagine a group of human specialists seated next to a large blackboard. The specialists are working cooperatively to solve a problem, using the blackboard as the workplace for developing the solution. Problem solving begins when the problem and initial data are written onto the blackboard. The specialists watch the blackboard, looking for an opportunity to apply their expertise to the developing solution. When a specialist finds sufficient information to make a contribution, she records the contribution on the blackboard, hopefully enabling other specialists to apply their expertise. This process of adding contributions to the blackboard continues until the problem has been solved.”

Această metaforă prezintă anumite caracteristici ale sistemelor blackboard (35):

Expertiză independentă. În domeniul informaticii un specialist este un modul software, mai mult, în general, o sursă de cunoștințe, o unitate specializată în rezolvarea unui anumit aspect al problemei. Această abordare permite altora de a adăuga, elimina sau înlocui respectivele surse. Posibilitate de a modifica modulul software creează flexibilitate în proiectarea și mentenabilitatea unor astfel de aplicații.

Diversitatea tehnicilor de rezolvare a problemelor. Fiecare expert aparținând grupului poate avea o perspectivă diferită asupra modului de rezolvare al problemei.

24

Page 26: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.2 Organizarea sistemului blackboard (vezi Figura 23 la [37])

Reprezentare flexibilă a informației. Informația regăsită pe tablă poate avea diferite reprezentări (de exemplu: numere, fraze, formule, desene etc.). Nu există nici o restricție în ceea ce privește structura informațiilor ce pot fi adăugate în acest sistem. Flexibilitatea în sistemele blackboard nu este definită doar de varietatea posibilităților reprezentării datelor, dar, de asemenea de datele care sunt scrise pe tablă (de exemplu: soluții parțiale sau complete, alternative, date de test etc.).

Limbaj comun de interacțiune. Reprezentarea flexibilă a datelor în sistemele blackboard necesită o înțelegere comună a informațiilor. Acest lucru înseamnă că orice sursă de cunoștințe ar trebui să poată accesa și procesa datele publicate în acest sistem. În practică aceste sisteme conțin o reprezentare comună utilizată de către toți experții, asemenea unei legende.

Actualizare în timp real. După cum am menționat anterior, în aceste sisteme, experții pot adăuga, șterge sau modifica anumite informații. De obicei acești experți nu scanează întreaga tablă pentru a detecta modificările asupra informațiilor, ci mai degrabă, aceștia așteaptă ca sistemul să îi notifice asupra acestor schimbări. Acest sistem de actualizare în timp real este foarte util atunci când pe tablă există un volum mare de date.

Nevoia controlului. Un sistem blackboard este format din trei componente majore: modulele de specialitate, tabla în sine și un modul de control care acționează ca un moderator între module, cu scopul de a organiza și programa acțiunile acestora. Când o informație este adăugată aceasta poate oferi informații precum gradul de calitate al contribuției, costul sau rezultatul așteptat.

Obținerea soluției incremental. Ca și expert, acesta pot contribui la rezolvarea problemelor, rafinarea soluțiilor existente, infirma soluții existente sau propune noi direcții în rezolvarea problemelor.

2.3 Limbaje de programare pentru agenți

Dezvoltarea sistemelor mult-agent poate fi realizată în orice tip de limbaj de programare, cu preponderență cele orientate-obiect, deoarece conceptul de obiect este foarte asemănător agentului. Deși agenții pot fi dezvoltați pornind de la obiecte, limbaje specifice agenților,

25

Page 27: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

platforme sau instrumente de dezvoltare sunt utile în abordarea sistemelor multi-agent, acestea putând îmbunătăți calitatea și stabilitatea sistemului.

2.3.1 Programarea orientă agent (POA)

Yoav Shoham propune “o nouă paradigmă de programare, bazată pe un alt punct de vedere asupra procesului de calcul”, pe care o numește programare orientată pe agenți, agent-oriented programming [14].

Principală noțiune de bază a programării orientate pe agenți este programarea acestor entități în termeni de noțiuni mentale: opinie, cerere, intenție, termeni pe care teoreticienii în domeniu i-au dezvoltat cu scopul de a descrie proprietățile agenților.

De ce abordarea unei programări orientate agent? Capacitatea agenților inteligenți de a acționa independent prin procese simple a stârnit un interes major. Printre caracteristicile principale ce clasifică acești agenți de interes regăsim [14]:

capacitatea de a acționa independent;

reprezentarea superioară a funcționalității – un nivel superior de abstractizare comparativ modelelor orientate-obiect;

flexibilitatea, combinând caracteristicile funcționale active și reactive;

performanța în timp real;

fiabilitatea pentru aplicațiile distribuite;

abilitatea muncii în echipă.

Vom prezenta în cele ce urmează câteva limbaje de programare ce implementează paradigma programării orientate agent.

2.3.2 Limbaje de programare orientate agent

2.3.2.1 Agent0

Agent0 este limbajul propus de Shoham în [17], cu scopul de a dovedi teoriile sale, reprezentând un punct de pornire în direcția limbajelor orientate agent. Într-un astfel de limbaj, un agent este descris de următoarele caracteristici: capabilitatea (instrucțiunile pe care le poate executa), opinii inițiale (jucând rolul opiniilor dintr-o arhitectură BDI), angajamente, reguli de angajament (acestea determină modul în care agentul acționează, comportamentul acestuia). Fiecare regulă de angajament este definită prin următoarele: condiția mesajului, condiția mentală și o acțiune.

Pentru a determina următoarea regulă aplicată la un moment dat, condiția mesajului este potrivită cu mesajele pe care agentul le recepționează, iar condiția mentală este potrivită cu intenția agentului. Dacă regula este clasificată ca fiind acceptată, atunci agentul execută acțiunea. Așa cum este prezentat în [17], sintaxa regulilor de angajament este următoarea:

COMMIT (msgcond, mntlcond, agent, action)unde msgcond reprezintă mesajul, mntlcond reprezintă starea mentală, agent definește numele agentului, iar action acțiunea ce urmează a fi executată.

26

Page 28: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.3 Fluxul de control în limbajul AGENT0

Modul de operare este descris prin instrucțiunea repetitivă descrisă mai jos (Figura 2.3):

1. Citește toate mesajele curente, actualizând opiniile – și în consecință angajamentele – când acest lucru este necesar.

2. Execută toate angajamentele pentru ciclul curent, acolo unde condiția de capabilitate a acțiunii asociate este satisfăcută.

3. Salt la pasul 1.

Este de remarcat faptul că acest limbaj este de fapt un prototip, nefiind conceput pentru realizarea sistemelor de producție la scară largă.

2.3.2.2 Jack Intelligent Agent

Jack Intelligent Agent sau pe scurt Jack, este un limbaj de programare dedicat agenților dezvoltat de Agent Oriented Software Pty. Ltd. (AOS). Jack este un framework dezvoltat in Java, care vine cu o extensie a programării orientate obiect prin introducerea caracteristicilor tipice agenților precum: agenți, obiective, evenimente, capacități și baze de cunoștințe. Jack utilizează agenți inteligenți pentru modelarea comportamentelor simple și raționale [18].

În [19] agenții Jack sunt descriși ca fiind ”componente software autonome care au obiective explicite de atins sau evenimente de tratat”. Jack introduce un set de clase și interfețe, precum și un set de componente plug-in, care permit dezvoltarea componentelor bazate pe agenți.

27

Page 29: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.4 Structura sistemului Open Agent Architecture (vezi Figura 1 în [20])

Agenții nu sunt constrânși în utilizarea unui anumit limbaj de comunicare, dar limbaje precum KQML sau FIPA ACL pot fi utilizate în acest scop [18].

Jack oferă suport pentru diverse arhitecturi, dar modelul de bază care este abordat de către autori este Belief Desire Intention (BDI). Bazat pe modelul BDI, agentul va urmări dorințele sau obiectivele pentru care a fost dezvoltat prin găsirea planurilor corespunzătoare și a intențiilor pe baza unui set actual de date (convingeri) cu privire la starea mediului.

În conformitate cu [18] Jack este compus din trei extensii principale. Prima extensie oferă limbajului o sintaxă suplimentară care poate fi împărțită în:

Cuvinte cheie pentru identificarea componentelor agent.

Un set de declarații utilizate la declarația atributelor sau a unor caracteristici ale componentelor.

Un set de declarații utilizate pentru definirea relațiilor.

Un set de declarații folosit pentru manipularea stării agenților.

Compilatorul este considerat cea de-a doua extensie a limbajului Jack, acesta fiind utilizat pentru a converti codul în sintaxă pur Java. Din moment ce codul este compilat în Java, acesta poate fi apelat de un alt cod Java.

În cele din urmă, a trei-a extensie este reprezentată de agentul Jack Kernel (agentul nucleu), care furnizează o serie de clase necesare în momentul rulării, oferind astfel caracteristica orientată agent a limbajului.

2.3.2.3 Open Agent Architecture

Open Agent Architecture (OAA) este un framework dedicat dezvoltării agenților, care a fost creat la centrul inteligenței artificiale al Institutului de Cercetare Stanford (SRI). Acesta este definit de autori ca “a framework for integrating a community of heterogeneous software agents in a distributed environment”. Deci, OAA, permite dezvoltarea sistemelor multi-agent, în care agenții comunică cu scopul de a-și îndeplini obiectivele pentru care aceștia au fost implementați. Procedurile bibliotecii dedicată agenților sunt disponibile în mai multe limbaje de programare precum: Java, Lisp, Prolog și C/C++.

În OAA agenții sunt văzuți ca procese independente ce folosesc un limbaj de comunicare la nivel înalt și care pot contribui în mod activ la procesul de calcul. Caracteristicile de autonomie și reactivitate ale unui agent sunt de asemenea regăsite în agenții utilizați de acest limbaj.

OAA se bazează pe agenți ce comunică între aceștia folosind Inter-Agent Communication Language (ICL), și de asemenea specifică modelul de comunicare descris de structura sistemului, așa cum se poate observa și în Figura 2.4.

28

Page 30: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

În această structură agentul Facilitator joacă rolul principal. El reprezintă un agent special de tip server care are rolul de a comunica și coordona ceilalți participanți și care de asemenea permite un sistem blackboard de comunicare [20]. Într-un mediu de tip OAA pot exista mai mulți agenți de tip facilitator, fiecare dintre aceștia având proprii săi agenți de servicii.

Celelalte categorii de agenți regăsiți în acest sistem sunt Application Agent, Meta Agent și User Interface Agent. Agenții dedicați aplicației oferă un anumit serviciu, fie independent de domeniu precum recunoașterea vorbirii, procesarea limbajului natural sau e-mailul, fie pentru un domeniu specific precum agentul care rezervă anumite locuri. Meta Agent are rolul de a asista facilitatorul în coordonarea altor agenți. În plus acești agenți pot utiliza cunoștințele specifice aplicației și domeniului.

În anumite sisteme agenții dedicați interfeței cu utilizatorul constau în mai multe tipuri de ”micro-agenți”, fiecare dintre aceștia monitorizând diferite date de intrare, cum ar fi scrierea, vorbirea sau alte acțiuni ale utilizatorului. Acești ”micro-agenți” sunt numiți Modality Agents și pot fi observați în structura sistemului definită mai sus (Figura 2.4).

Cu excepția agentului facilitator care acționează asemănător unui server, toți restul agenților sunt denumiți, ca o generalitate, agenți client, deoarece acționează asemenea unor clienți pentru facilitator, acesta din urmă oferind serviciile necesare, servicii ce se regăsesc și în paradigmele client-server.

2.3.3 Java Agent Development Framework (JADE)

Java Agent Development Framework (JADE) [36] reprezintă un instrument implementat în întregime în limbajul Java, cu scopul de a simplifica dezvoltarea sistemelor multi-agent în conformitate cu standardele FIPA. JADE este un software gratuit, distribuit de Telecom Italia, care deține de altfel și drepturile de autor asupra produsului. JADE oferă posibilități de distribuire a platformei agent pe mai multe mașini, precum și un set de instrumente grafice utile pentru fazele de implementare și depanare ale aplicației.

2.3.3.1 Arhitectura JADE

Platforma JADE este formată din mai multe recipiente pentru agenți, numite containere, ce pot fi distribuite într-o rețea. Un container poate stoca un set de agenți și reprezintă o instanță a mediului de rulare JADE după cum se menționează în [21]. Printre aceste containere există unul special numit ”container principal” (”main container”), ce reprezintă primul container creat, precum și cel care este activ până în momentul închiderii platformei. Odată ce sunt lansate, toate celelalte containere trebuie să se înregistreze acestuia. Containerele sunt identificate prin numele acestora, astfel încât recipientul principal este numit ”Main Container”, în timp ce altele sunt pur și simplu numite ”Container-1”, ”Container-2” etc., aceste denumiri putând fi schimbate de către dezvoltator. Figura 2.5 reprezintă modelul FIPA de management al agenților implementat in JADE.

29

Page 31: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.5 Captură a platformei JADE

Agenții din interiorul containerelor sunt identificați cu ajutorul unui identificator unic (AID), precum se menționează în standardele FIPA. Elementele de bază conținute de identificatorul unic sunt numele și adresa agentului. Numele agentului este un identificator unic global și are următoarea formă: ”local_name@platform_name” unde local_name reprezintă numele sau porecla dată de către utilizator agentului, iar platform_name este numele platformei pe care agentul rulează. Adresa agentului este moștenită de la platforma pe care acesta activează, și este utilizată pentru schimbul mesajelor folosind protocolul de transport al mesajelor (MTP).

JADE implementează toate standardele protocolului de transport al mesajelor definit de FIPA, cu scopul de a obține interoperabilități între diferite platforme [18]. Protocolul implicit utilizat de către JADE MTP este protocolul HTTP și începe de la inițializarea containerului principal. Alte protocoale de transport al mesajelor regăsite în domeniul public sunt: IIOP, JMS și JABER XMPP.

Împreună cu containerul principal, doi agenți speciali sunt inițializați si activați în mod automat. Acești doi agenți sunt Sistemul de Management al Agenților (Agent Management System - AMS) și Directory Facilitator (DF) definiți în standardele de management ale agenților FIPA. AMS este responsabil cu gestionarea operațiunilor platformei agent și cu furnizarea serviciilor descrise, astfel acesta devine: ”authority in the platform” [21]. DF oferă un serviciu numit ”pagini aurii”, a cărui datorie este de a ajuta agenții în găsirea serviciilor necesare realizării obiectivelor.

2.3.3.2 Instrumente JADE

JADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și depanare ale aplicației. Utilizarea acestor instrumente presupune extinderea clasei jade.core.Agent, prin urmare acestea pot fi administrate asemenea unor agenți. În cele ce urmează vom prezenta pe scurt câteva dintre aceste instrumente.

30

Page 32: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.6 Interfața grafică a agentului Dummy

2.3.3.2.1 Remote Monitoring Agent

Agentul pentru monitorizarea la distanță (RMA) este probabil unul dintre cele mai importante instrumente pe care JADE le oferă. Acesta prezintă o interfață grafică (a se consulta Figura 2.4) pentru gestionarea și controlul platformei agent și oferă un mod grafic de inițiere a altor instrumente JADE. O instanță a RMA poate fi inițiată folosind comanda ”-gui” introdusă la linia de comandă sau prin invocarea clasei jade.tools.rma.rma.

2.3.3.2.2 The Dummy Agent

Agentul Dummy este un instrument folosit pentru testarea comportamentului altor agenți prin trimiterea de mesaje ACL. Interfața grafică (a se vedea Figura 2.6) oferă dezvoltatorilor posibilitatea de a compune și expedia mesaje cu ușurință, precum și verificarea unui istoric al mesajelor trimise și recepționate.

2.3.3.2.3 The Sniffer Agent

Agentul Sniffer are rolul de a intercepta mesajele ACL trimise între agenți cu scopul de a le evidenția grafic (vezi Figura 2.7), similar unei diagrame de secvență. Este un instrument de o mare importanță în monitorizarea comunicării agenților ce activează în respectiva platformă.

31

Page 33: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 2.8 Interfața grafică corespunzătoare agentului Introspector

2.3.3.2.4 The Introspector Agent

Agentul Introspector (a se vedea Figura 2.8) poate fi utilizat pentru depanarea și monitorizarea ciclului de viață al unui agent, comportamentul, precum și mesajele expediate sau recepționate de acesta. Acesta oferă posibilitatea dezvoltatorului de a observa comportamentul agentului pas cu pas.

2.3.3.3 Funcționalități JADEÎmpreună cu instrumentele grafice utile procesului de depanare, JADE respectă

standardele specificațiilor FIPA oferind mai multe caracteristici necesare dezvoltării sistemelor multi-agent. Unele dintre acestea sunt descrise în secțiunile ce urmează.

32

Page 34: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

2.3.3.3.1 Crearea agenților

Implementarea unui agent JADE, este o operație simplă ce presupune crearea unei clase Java ce extinde clasa jade.core.Agent și mai apoi implementarea metodei setup() a clasei de bază. Această metodă reprezintă punctul de pornire al agentului, în consecință toate inițializările acestuia se declară aici. Un exemplul simplu al unui agent ”Hello World” este prezentat mai jos.

Încetarea activității unui agent are loc în momentul apelării metodei doDelete(). Similar cu procesul de creare, imediat înaintea încetării execuției metoda takeDown() a clasei Agent este apelată. Implementarea acestei metode este opțională, deși este foarte utilă când este necesar un clean-up, cum ar fi închiderea conexiunii la baza de date sau eliminarea unor elemente de interfață.

2.3.3.3.2 Comportamentul agenților

Obiectivele pe care un agent trebuie să le îndeplinească sunt efectuate în JADE folosind modelul abstractizat al comportamentului. Deoarece una dintre principalele caracteristici ale unui agent este autonomia, agenții JADE își pot controla comportamentul prin introducerea acestora în funcție de nevoi. Comportamentele sunt implementate folosind clase Java ce extind clasa jade.core.Behaviour, acestea fiind atribuite agentului apelând metoda addBehaviour(behaviour) și sunt disociate folosind metoda removeBehaviour(behaviour). Parametrul furnizat acestor metode reprezintă comportamentul implementat de către dezvoltator. Fiecare clasă ce reprezintă un comportament trebuie să implementeze două metode action() și done(). Metoda action() definește acțiunea asociată comportamentului respectiv, în timp ce metoda done() indică dacă sarcina a fost finalizată sau nu. De fiecare dată când agentul execută un comportament, metoda action() va fi executată pana la finalizarea respectivei sarcini. Deoarece comportamentele sunt executate în paralel este datoria programatorului de a defini momentul în care agentul ar trebui să comute între execuțiile acestora.

În Figura 2.9 este prezentat modelul execuției comportamentelor unui agent.

33

Page 35: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

În acest context JADE oferă trei tipuri principale de comportamente: one-shot behaviour, cyclic și generic behaviors. Fiecare dintre acestea respectă caracteristicile menționate anterior, cu mici particularități descrise în aliniatele ce urmează.

One-Shot Behavior reprezintă cel mai simplu comportament, fiind finalizat într-o singură execuție. Prin aceasta ne referim la faptul că metoda action() este apelată o singură dată, iar valoarea returnată de metoda done() este întotdeauna adevărată. Pentru implementarea acestui comportament clasa OneShotBehaviour trebuie extinsă.

Cyclic Behavior este opusul comportamentului descris anterior, acesta fiind asemenea unui ciclu infinit, deci metoda done() returneză tot timpul o valoare falsă în timp ce metoda action() este executată la infinit. Pentru implementarea acestui comportament clasa CyclicBehaviour trebuie extinsă. Pentru a opri ciclul infinit comportamentul trebuie sa fie îndepărtat din lista comportamentelor atribuită agentului utilizând metoda removeBehaviour().

Generic Behavior este reprezentat de clasa Behaviour. Diferă de comportamentele prezentate mai sus prin faptul că metodei done() nu i se oferă o implementare prealabilă. Responsabilitate de a determina condiția de stop a comportamentului cade în seama programatorului.

2.3.3.3.3 Comunicarea agenților

Unul dintre principalele aspecte în dezvoltarea sistemelor multi-agent este reprezentat de comunicarea agenților. JADE oferă aceasta ca una dintre caracteristicile sale fundamentale, iar implementarea acesteia este în conformitate cu standardele FIPA descrise anterior. Comunicarea între agenții JADE se bazează pe un schimb asincron de mesaje, fiecare agent având o coadă internă în care sunt stocate mesajele recepționate. Chiar dacă agentul este înștiințat de recepționarea unui mesaj este alegerea dezvoltatorului când și dacă aceste mesaje sunt preluate.

Structura mesajelor, în conformitate cu FIPA ACL, este formată din mai multe elemente precum: expeditorul mesajului, lista receptorilor, actul comunicativ, conținutul mesajului, limbajul conținutului, ontologia precum și unele câmpuri ce permit controlul conversațiilor

34

Page 36: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

concurente: identificatorul conversației, reply-with, in-reply-to, reply-by. Limbajul conținutului se referă la sintaxa utilizată pentru exprimarea conținutului mesajului în timp ce ontologia se referă la semnificațiile asociate acestui conținut.

2.3.3.3.4 Serviciul ”Pagini Aurii”

O altă caracteristică importantă este reprezentată de serviciul ”Pagini Aurii” (Yellow Pages Service), care permite agenților să publice o descriere a serviciilor pe care aceștia le oferă, în scopul de a fi ușor de găsit de către alți agenți interesați de aceste servicii [22]. În conformitate cu specificațiile FIPA, JADE pune la dispoziție agentul Directory Facilitator, care oferă serviciul ”pagini aurii”, astfel încât publicarea și căutarea serviciilor este realizează prin intermediul schimbului de mesaje.

Pentru publicarea unui serviciu următoarele trebuie furnizate următoarele informații ce includ: identificatorul agentului (AID), lista de servicii oferite și descrierea lor și opțional, lista limbajelor conținutului și ontologi. Pentru fiecare serviciu descrierea include numele său, tipul, precum și o listă de proprietăți specifice serviciului reprezentată ca perechi de tipul cheie-valoare. Pentru a publica serviciul descrierea acestuia trebuie creată ca o instanță a clasei DFAgentDescription, invocând mai apoi metoda register() din clasa DFService.

Pe de altă parte, căutarea unui serviciu presupune definirea unui model ce conține descrierea serviciului solicitat. Acest model este trimis agentului DF, care va oferi răspunsul în forma unei liste de servicii ce se potrivesc cu descrierea oferită. Implementarea acestui proces este realizată folosind metoda search() din clasa DFService.

35

Page 37: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

CAPITOLUL III

Tehnici utilizate în dezvoltarea sistemelor de recomandare

Cu scopul de a aplica funcția sa de bază, identificând elementele utile pentru utilizator, un sistem de recomandare trebuie să prezică dacă un articol merită să fie recomandat. Cu scopul de a determina acest lucru, sistemul trebuie să fie capabil de a prezice utilitatea unor articole, sau cel puțin să compare utilitatea acestora, și apoi să decidă ce produse vor fi recomandate pe baza acestei comparații. Etapa predicției nu trebuie neapărat să se regăsească explicit în algoritmul de recomandare, dar putem aplica în continuare acest model pentru a descrie rolul unui sistem de recomandare.

În acest capitol scopul nostru este de a oferi cititorului o perspectivă globală asupra tehnicilor și algoritmilor de recomandare existenți, mai degrabă decât o descriere detaliată a acestora. De asemenea în cele ce urmează vom prezenta și câteva dintre sistemele de recomandare existente.

3.1 Tehnici de recomandare

Pentru a ilustra etapa de predicție a unui sistem de recomandare, luăm în considerare următorul exemplu, un algoritm de recomandare simplu, nepersonalizat care recomandă doar cele mai populare piese. Motivul pentru utilizarea acestei abordări este că, în lipsa unor informații mai precise despre preferințele utilizatorului, un cântec popular, de exemplu, care este plăcut de mulți utilizatori (are o utilitate ridicată), cel mai probabil va fi agreat și de către un utilizator generic, cel puțin mai mult decât o piesă aleasă aleatoriu.

Această lucrare prezintă diferite tipuri de sisteme care recomandă produse, ce variază în funcție de domeniul abordat, cunoștințele utilizate, dar mai ales în ceea ce privește sistemul de recomandare; de exemplu, cum se construiește predicția utilității unei recomandări. Alte diferențe se referă la modul în care recomandările sunt asamblate și prezentate utilizatorului ca răspuns cererilor acestuia.

Pentru a oferi o primă privire de ansamblu asupra diferitelor tipuri de sisteme de recomandare, am dori să cităm o taxonomie oferită de [2], care a devenit un mod clasic de a distinge sistemele de recomandare. [2] distinge între șase diferite abordări de recomandare:

Filtrare bazată pe conținut: Sistemele care pun în aplicare o astfel de abordare bazată pe filtrarea conținutului, analizează un set de date, documente și/sau descrieri ale elementelor evaluate anterior de către un utilizator, construind astfel un model sau profil al intereselor utilizatorului pe baza caracteristicilor articolelor evaluate de acesta. Profilul este o reprezentare structurată a intereselor utilizatorului, adoptat pentru a recomanda elemente noi interesante. Procesul de recomandare constă practic în potrivirea atributelor profilului de utilizator contrar atributelor conținute de un articol. Rezultatul este o deducție relevantă care reprezintă nivelul de interes al utilizatorului pentru acel obiect. În cazul în care un profil reflectă cu acuratețe preferințele utilizatorului, acesta este un avantaj imens pentru eficiența procesului de acces la informație. De exemplu, informațiile ar putea fi folosite pentru a filtra rezultatele căutării și de a decide dacă un utilizator este interesat sau nu de o pagină Web, în caz negativ, evitând afișarea acelei pagini.

36

Page 38: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Filtrarea prin colaborare(CF): Cea mai simplă și originală implementare a acestei abordări [13] constă în a recomanda elemente pentru utilizatorul activ, pe care alți utilizatori cu gusturi similare le-au plăcut în trecut. Similaritatea gustului a doi utilizatori se calculează pe baza similarității evaluărilor oferite de utilizatori anterior. Acesta este motivul pentru care [24] se referă la filtrarea prin colaborare ca ”people-to-people correlation”. Filtrarea prin colaborare este considerată a fi cea mai populară tehnică în sistemele de recomandare fiind utilizată la scară largă.

Printre abordările recomandărilor prin colaborare, metodele bazate pe cel mai apropiat vecin (nearest-neighbors), se bucură de o mare popularitate, datorită simplității, eficienței, precum și capacitatea acestora de a produce recomandări precise și personalizate. Aceste metode se concentrează pe relațiile dintre obiecte sau, alternativ, între utilizatori. O abordare element-element (item-item) modelează preferința utilizatorului pentru un element în funcție de evaluările oferite de același utilizator elementelor similare.

Algoritmii de filtrare prin colaborare sunt de obicei împărțiți în două categorii: filtrare prin colaborare pe bază de memorie (memory-based) și bazată pe modele (model-based). Filtrarea prin colaborare bazată pe memorie utilizează baza de date a utilizatorului (sau cel puțin un eșantion mare) pentru a crea recomandări. Algoritmul cel mai proeminent este cel de filtrare prin colaborare bazat pe utilizator (user-based). Dezavantajele acestei abordări este scalabilitatea, deoarece întreaga bază de date a utilizatorului trebuie prelucrată on-line pentru crearea recomandărilor. Algoritmii bazați pe model utilizează baza de date a utilizatorului pentru a descoperi un model mai compact (de exemplu, grupuri de utilizatori cu preferințe similare), care este ulterior folosit pentru a crea recomandări.

Demografice: Acest tip de sistem recomandă elemente bazându-se pe profilul demografic al utilizatorului (sex, vârstă, studii etc.). Se presupune că diferite recomandări ar trebui să fie generate pentru diferite nișe demografice. Multe site-uri web adoptă soluții simple și eficiente de personalizare bazate pe datele demografice (de exemplu, utilizatorii sunt redirectați către anumite site-uri web în funcție de limba sau țara lor). Unele sugestii pot fi personalizate în funcție de vârsta utilizatorului. În timp ce aceste abordări au fost destul de populare în literatura de specialitate a marketing-ului, cercetarea în această direcție a sistemelor de recomandare nu a fost des abordată.

Bazată pe cunoaștere: Sistemele bazate pe cunoștințe recomandă un produs bazându-se pe cunoștințe specifice domeniului, cu privire la modul în care anumite caracteristici ale elementului satisfac nevoile și preferințele utilizatorului și, în cele din urmă, modul în care elementul este util utilizatorului. Cele mai populare sistemele bazate pe cunoștințe sunt cele bazate pe caz (case-based) [25]. În aceste sisteme o funcție de similitudine estimează cât de mult nevoile utilizatorilor (descrierea problemei) se potrivesc cu recomandările (soluții ale problemei). Aici scorul de similaritate poate fi interpretat direct ca utilitatea recomandării pentru utilizator.

Sistemele bazate pe constrângeri sunt un alt tip de sisteme de recomandare ce implementează la bază filtrarea bazată pe cunoaștere. În termeni de cunoștințe utilizate, ambele sisteme sunt similare: cerințele utilizatorului sunt colectate; alternative pentru cererile inconsistente sunt propuse automat în cazul în care nu a fost găsită o soluție; și rezultatele recomandării sunt explicate. Diferența majoră constă în modul de calcul al soluțiilor. Recomandările bazate pe conținut determină recomandări pe baza indicatorilor de similaritate în timp ce sistemele bazate pe constrângeri determină soluții prin exploatarea cu predominanță a bazei de cunoștințe predefinită, care conține reguli explicite despre cum se raportează cerințele clientului la caracteristicile elementelor.

37

Page 39: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Sistemele bazate pe cunoștințe tind să funcționeze mai eficient decât altele la începutul lansării lor, dar în cazul în care acestea nu sunt echipate corespunzător (de exemplu, componente care ajută la învățare), acestea pot fi depășite prin alte metode superficiale care pot exploata istoricul interacțiunii om-calculator (ca în CF).

Bazate pe comunitate: Aceste tip de sistem recomandă produse utilizând preferințele utilizatorilor prieteni. Această tehnică urmează epigrama ”Spune-mi care îți sunt prietenii și iți voi spune cine ești”. Dovezile sugerează faptul că oamenii au tendința să se bazeze mai mult pe recomandările oferite de prieteni decât pe recomandările primite de la persoane fizice similare, dar anonime [26]. Această observație, combinată cu popularitatea în creștere a rețelelor de socializare, generează un interes ridicat pentru sistemele bazate pe conținut sau cum sunt ele altfel denumite, sisteme de recomandare sociale. Acest sistem modelează și colectează informații despre relațiile sociale ale utilizatorului și preferințele prietenilor acestuia. Recomandarea se bazează pe evaluările care au fost furnizate de către prietenii utilizatorului. De fapt aceste sisteme de recomandare sunt o urmare a dezvoltării rețelelor de socializare și permit o achiziție simplă și cuprinzătoare a datelor referitoare la relațiile sociale ale utilizatorului.

Cercetarea în acest domeniu este încă în fază incipientă, iar rezultatele cu privire la performanțele sistemelor nu sunt foarte clare. De exemplu, în general recomandările bazate pe comunitate nu sunt mai precise decât cele provenite din abordări tradiționale bazate pe colaborare, cu excepția cazurilor speciale, cum ar fi evaluarea utilizatorului pentru un anumit tip de produs, (evaluare extrem de variată) sau pentru situații de cold-start (de exemplu, în cazul în care utilizatorii nu au furnizat suficiente evaluări pentru a calcula similarități pentru alți utilizatori). Alții au arătat faptul că în anumite cazuri, recomandările bazate pe rețelele de socializare sunt mai bune în comparație cu cele oferite de sistemele ce utilizează similarități ale profilului, și adăugarea datelor preluate dintr-o rețea socială sistemelor bazate pe colaborare poate îmbunătăți substanțial rezultatele recomandării.

Sisteme de recomandare hibride: Aceste sisteme utilizează o combinație a tehnicilor menționate anterior. Un sistem care combină tehnicile A și B încearcă să folosească avantajele A pentru a remedia dezavantajele B și viceversa. Spre exemplu, metodele de filtrare bazate pe colaborare suferă de problema produsului nou (new-item), ceea ce înseamnă ca ele nu pot recomanda un produs care nu a fost evaluat. Acest lucru nu limitează abordarea sistemelor bazate pe conținut, din moment ce recomandarea elementelor noi se bazează pe descrierea lor (caracteristici), informații ce sunt, de obicei ușor accesibile. Având în vedere două (sau mai multe) tehnici de recomandare, au fost propuse mai multe moduri de a le combina cu scopul de a crea un nou sistem hibrid (a se consulta [2] pentru mai multe detalii).

3.2 Algoritmi și clasificări

Sarcina fundamentală în filtrarea prin colaborare este de a prezice un set de evaluări lipsă pentru un anumit utilizator (utilizatorul activ), pe baza datelor conținute de matricea evaluărilor (denumită uneori și ca baza de date a utilizatorului). Există următoarele două abordări generale pentru filtrarea prin colaborare:

1. Algoritmi pe bază de memorie - acești algoritmi funcționează online peste întreaga matrice de rating-uri pentru a calcula predicții.

2. Algoritmi bazați pe model - spre deosebire de algoritmii pe bază de memorie, aceștia utilizează matricea de rating-uri într-un mod offline pentru a estima un model, care mai apoi este folosit pentru predicții;

38

Page 40: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Algoritmii pe bază de memorie, de obicei, oferă rezultate generale mai bune și sunt mult mai adaptabili la medii dinamice, în care matricea de rating-uri este des modificată. Pe de altă parte, aceasta abordare este foarte costisitoare din punct de vedere al procesării, astfel aplicațiile care utilizează seturi mari de date preferă abordarea oferită de algoritmii pe bază de modele.

În cele ce urmează vom examina câțiva dintre cei mai populari algoritmi utilizați în filtrarea prin colaborare. Printre algoritmii prezentați se regăsesc algoritmii bazați pe (k) – cei mai apropiați vecini: User-User Nearest Neighbors Algorithm și Item-Item Nearest Neighbors Algorithm - aceștia fiind probabil cei mai importanți algoritmi din categoria celor pe bază de memorie, Random Algorithm (algoritmul aleatoriu) și Mean Algorithm – doi algoritmi simpli, utilizați cu scopul de a evidenția performanțele celorlalți.

3.2.1 Algoritmul aleatoriu (Random Algorithm)

Conform ”definiției” de mai sus, algoritmul aleatoriu este un algoritm asemănător celor bazați pe modele, mai mult decât celor pe bază de memorie. Fiecare predicție a acestuia este o valoare aleatorie uniform distribuită pe scara de valorilor rating-ului. Pentru utilizatorii statici a și j acesta va prezice întotdeauna aceeași valoare aleatorie . Păstrarea acestei constrângeri asigură că previziunile algoritmului rămân aleatorii, dar comportamentul acestuia este invariabil chiar și atunci când este implicat în mai multe rulări.

3.2.2. Mean Algorithm

Algoritmul Mean este un algoritm foarte simplu, dar surprinzător de eficient încadrându-se în categoria algoritmilor bazați pe memorie. Uneori este menționat cu numele de Average Algorithm sau POP, fiind clasificat în categoria așa numitelor tehnici de predicție a popularității. Predicția este calculată ca valoarea medie a tuturor evaluărilor oferite de utilizatorul j (~ scorul mediu al utilizatorului j). Dacă este un set de utilizatori care au evaluat utilizatorul j, atunci media scorului pentru acest utilizator este definită astfel (3.1):

= (3.1)aceasta fiind, de asemenea, și predicția ( ). Se poate observa ușor că aceasta abordare ignoră complet informațiile introduse în sistem de utilizatorul activ.

Acest algoritm împreună cu algoritmul aleatoriu sunt utilizați cu scopul de a crea o comparație în eficiența față de alți algoritmi prezenți.

3.2.3 User-based Nearest Neighbors Algorithm

Acest algoritm prezice rating-ul unui utilizator u, pentru un element nou i, utilizând rating-urile acordate elementului i de către cei mai mulți utilizatori similari cu u, numiți astfel cei mai apropiați vecini. Să presupunem că pentru fiecare utilizator v u avem o valoare ce reprezintă preferințele similare utilizatorului u și v. K - cei mai apropiați vecini (k-NN) ai utilizatorului u, notat cu , sunt primii k, v utilizatori cu cea mai mare similitudine față de u. Totuși, doar utilizatorii care au evaluat elementul i, pot fi utilizați în predicția , și considerăm, în schimb, k cei mai similari utilizatori pentru u care au evaluat i. Notăm acest set de

39

Page 41: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 3.3

vecini cu . Rating-ul poate fi estimat ca medie a rating-urilor oferite elementului i de către acești vecini (3.2):

(3.2)

O problemă în (3.2) este că nu se ia în calcul faptul că vecinii pot avea diferite nivele de similitudine. Fiind considerat exemplul din Figura 3.3, dacă cei mai apropiați vecini a lui Eric sunt Lucy și Diane, ar fi o greșeală să considerăm rating-urile lor egale pentru filmul ”Titanic”, din moment ce gusturile lui Lucy sunt mult mai apropiate de cele a lui Eric.

O soluție comună pentru rezolvarea acestei probleme este de a nota contribuția fiecărui vecin prin similitudinea lui față de u. Cu toate acestea, în cazul în care suma acestor contribuții nu este 1, rating-urile prezise pot ieși din raza valorilor permise. În consecință, se obișnuiește ca aceste valori ale contribuțiilor să fie normalizate, astfel că rating-ul prezis devine:

(3.4)

În numitorul (3.4), este utilizat în schimbul deoarece valorile negative pot produce rating-uri în afara razei permise. De asemenea, poate fi înlocuit de , unde α > 0 este un factor de amplificare. Când α > 1, așa cum este acesta cel mai des utilizat, este oferită o importanță mai mare vecinilor lui u.

Exemplu: Să presupunem că dorim să prezicem rating-ul lui Eric pentru filmul ”Titanic” (Figura 3.3) utilizând rating-urile lui Lucy și Dianei pentru acest film. Mai mult decât atât, presupunem că valorile de similaritate dintre acești vecini și Eric sunt 0,75, respectiv, 0,15. Rating-ul prezis va fi:

care este mai aproape de rating-ul lui Lucy decât cel al Dianei. Ecuația 3.4 are, de asemenea, un defect important: se omite în calcul faptul că utilizatorii

pot folosi diferite valori ale rating-ului pentru a cuantifica același nivel de apreciere pentru un element. De exemplu, un utilizator poate oferi cea mai mare valoare a rating-ului doar câtorva

40

Page 42: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

elemente deosebite, în timp ce un utilizator mai puțin dificil poate oferi această valoare majorității elementelor care îi sunt pe plac. Această problemă este, de obicei, abordată prin conversia rating-urilor vecinilor la cele normalizate , oferind următoarea predicție:

(3.5)

De reținut faptul că rating-ul prezis trebui transformat din nou la scara originală, datorită lui din ecuație.

3.2.3 Item-based Nearest Neighbors Algorithm

În timp ce algoritmul bazat pe cei mai apropiați utilizatori se utilizează opinia utilizatorilor cu preferințe asemănătoare pentru a prezice un rating, algoritmii bazați pe elemente verifică rating-urile acordate elementelor similare. Vom prezenta în cele ce urmează un exemplu bazat pe Figura 3.3.

Exemplu: În loc de a se consulta cu vecinii lui, Eric determină în schimb dacă filmul ”Titanic” este potrivit pentru el luând în considerare filmele pe care deja le-a vizionat. El observă că utilizatorii care au evaluat acest film, au dat rating-uri similare filmelor ”Forest Gump” și ”Wall-E”. Din moment ce Eric a fost plăcut impresionat de aceste două filme, el ajunge la concluzia că va dori, de asemenea, să vizioneze filmul ”Titanic”.

Această idee poate fi formulată după cum urmează. Notăm cu elementele apreciate de utilizatorul u care sunt similare elementului i. Predicția rating-ului lui u pentru i este obținută ca medie a rating-urilor oferite de utilizatorul u elementelor :

(3.6)Exemplu: Să presupunem că prezicerea noastră se calculează, din nou, utilizând două

aprecieri ale celor mai apropiați vecini, și că elementele cele mai similare cu ”Titanic” sunt ”Forest Gump” și ”Wall-E”, cu valori ale similarității egale cu 0,85, respectiv 0,75. Din moment ce rating-urile oferite de Eric acestor două filme sunt 5 și 4, rating-ul prezis pentru filmul ”Titanic” este calculat astfel:

Din nou, diferențele de scalare în evaluările individuale ale utilizatorilor pot fi normalizate utilizând un h:

(3.7)41

Page 43: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Mai mult decât atât, putem defini, de asemenea, o abordare bazată pe clasificarea elementelor. În acest caz, elementele j evaluate de utilizatorul u, votează pentru rating-ul ce trebuie oferit unui element i, iar aceste voturi sunt calculate ca fiind similitudinile dintre i și j. Versiunea normalizată a acestei abordări poate fi exprimată după cum urmează:

= (3.8)

3.4 Evaluarea sistemelor de recomandare

În capitolele anterioare am prezentat cele mai frecvent utilizate tehnici de recomandare din acest domeniu. Fiecare dintre aceste tehnici are adepți ce pretind că aceasta este o îmbunătățire față de o altă tehnică, având în vedere un anumit scop. Cu toate acestea nu există o noțiune comună de calitate a sistemelor de recomandare, și prin urmare, compararea diferitelor sisteme este dificilă. Mulți cercetători au recunoscut această problemă și mai multe contribuții ce încearcă să o rezolve au fost prezentate de-a lungul timpului. În acest subcapitol vom prezenta pe scurt stadiul actual în evaluarea sistemelor de recomandare.

3.4.1 Abordări de evaluare

Sistemele de recomandare pot fi evaluate folosind abordarea off-line, diferite metode experimentale live sau o combinație a acestor două abordări. Vom prezenta în continuare metoda off-line cât si metoda online [27].

3.4.1.1 Metoda off-line

În metoda off-line de evaluare nici un utilizator real nu este implicat fiind utilizat un set de date existent. Setul de date este împărțit într-un set de test și un set de formare (antrenare). Utilizând rating-urile din setul de antrenament, algoritmul sistemului de recomandare încearcă să prezică rating-urile ce se află în setul de test, care mai apoi pot fi comparate pentru a determina eroarea absolută.

În validarea încrucișată de k ori (K-fold cross validation), setul de date este partiționat în K subseturi. Din aceste subseturi, unul este reținut și utilizat ca set de test, în timp ce seturile rămase sunt utilizate pentru antrenament. Acest proces este repetat de K ori, de fiecare dată cu un set de test diferit.

Algoritmul de recomandare este evaluat mai apoi prin compararea evaluărilor prezise de sistem și evaluările din setul de test. Acest rezultat poate fi evaluat utilizând mai multe metrici, ce vor fi descrise pe scurt în secțiunile ce urmează.

Evaluările off-line au avantajul că sunt rapide, economice și ușor de efectuat cu o cantitate mare de date, mai multe seturi de date și cu mai mulți algoritmi. Când setul de date include și marcaje ale timpului care indică momentul când un element a fost evaluat, este posibilă replicarea tuturor interacțiunilor cu sistemul de recomandare. Cu toate acestea un sistem permite evaluarea previziunilor pentru elementele ce au fost efectiv evaluate de către utilizator, astfel se limitează setul de elemente ce pot fi evaluate. Mai mult de atât, evaluarea off-line nu poate măsura ”adevărata” satisfacție a utilizatorului.

42

Page 44: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 3.9 Exemplu de evaluări

3.4.1.2 Evaluarea on-line

În evaluarea on-line utilizatorii interacționează cu un sistem de recomandare funcțional și chiar primesc recomandări. Feedback-ul din partea utilizatorilor este mai apoi colectat de sistem, fie în mod implicit sau explicit. Un astfel de experiment poate fi controlat (de exemplu, se asignează utilizatori diferitelor condiții) sau poate fi în cadrul unei cercetări în care un sistem de recomandare este lansat pentru a observat comportamentul acestuia. Realizarea unei astfel de evaluări este consumatoare de timp și dificilă, dar pentru acest domeniu este inevitabilă realizarea unei astfel de evaluări din moment ce aceasta este singura modalitate de a măsura satisfacția utilizatorilor.

3.4.2 Metrici de acuratețe

Din nenumăratele dimensiuni ce ar putea fi măsurate, precizia este de departe cel mai abordat [27]. O metrică de acuratețe măsoară cum un rating prezis de sistemul de recomandare diferă față de rating-ul oferit de utilizator. Metricile de precizie pot măsura cât de bine rating-urile unui utilizator pot fi reproduse de către sistemul de recomandare, și de asemenea, cât de bine este prezisă lista preferințelor acestuia. Pentru a ilustra aceasta diferență subtilă, un exemplu este prezentat în Figura 3.9. În coloana din stânga sistemul de recomandare (coloana RS), încearcă să reproducă rank-ul fiecărui utilizator, în timp ce în dreapta (coloana User) încearcă să reproducă rating-ul oferit de utilizator fiecărui element de la A la F.

Menționăm faptul că există trei subcategorii ale metricelor de performanță, pe care nu le vom detalia în această lucrare: metrici de performanță pentru predicție, pentru clasificare și pentru rank-uri.

3.4.3 Acoperirea

Pe lângă metricele de acuratețe, există o serie de alte dimensiuni ce pot fi măsurate. Una dintre aceste dimensiuni, menționată și în literatura de specialitate este acoperirea. Acoperirea măsoară procentajul elementelor pentru care sistemul de recomandare poate oferi predicții sau recomandări. Un sistem de recomandare nu poate genera întotdeauna o predicție, deoarece nu ar putea exista suficiente date. De exemplu, când un element nu a mai fost votat anterior, o tehnică bazată pe element nu poate prezice rating-ul pe care un utilizator l-ar oferi acelui element.

Există două tipuri de acoperire abordate de Herlocker în [27]: acoperirea predicțiilor (prediction coverage) și acoperirea cataloagelor (catalogue coverage). Acoperirea predicțiilor măsoară procentajul elementelor pentru care sistemul poate oferi recomandări. Acoperirea

43

Page 45: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

cataloagelor, pe de altă parte este o măsură a procentului de elemente care este recomandat vreodată unui utilizator. O acoperire mai mare înseamnă că sistemul este capabil de a lua decizii în cât mai multe situații posibile. Acoperirea poate fi măsurată prin alegerea unui set aleatoriu de perechi utilizator-element, pentru ca mai apoi sistemul de recomandare să genereze recomandări pe baza acestui set. În cele din urmă, atât acoperirea predicțiilor cât și cea a cataloagelor poate fi măsurată.

3.4.4 Satisfacția utilizatorilor

Satisfacția utilizatorilor este un aspect oarecum vag și slab definit, acesta fiind prin urmare, forte dificil de măsurat. În contextul cercetării, satisfacția utilizatorului, este definită ca măsura în care un utilizator poate face față problemei supraîncărcării cu informații. Dimensiunile descrise în secțiunile anterioare, vor sprijini sau inhiba satisfacția utilizatorilor într-o anumită măsură. Cu scopul de a putea determina efectul acestor dimensiuni în satisfacția utilizatorului, aceasta în sine trebuie definită.

Herlocker a prezentat un număr de dimensiuni de-a lungul cărora metodele de evaluare a satisfacției utilizatorului pot fi clasificate [27]. Aceste dimensiuni sunt:

Explicite vs implicite. Metoda de evaluare poate cere în mod explicit factorul de mulțumire al utilizatorului, sau acesta poate fi observat. Metodele de evaluare implicite necesită ipoteze, în scopul de a traduce observațiile într-o măsură de satisfacție a utilizatorilor, de exemplu, o creștere a vânzărilor unui anumit produs implică o satisfacție mai mare a utilizatorilor ce au achiziționat acel produs.

Studii de laborator vs studii în mediul real (field studies). Studiile de laborator se desfășoară în medii controlate în timp ce studiile în mediu real au loc într-un context concret al utilizatorului.

Rezultate vs procese. Studiul se poate axa doar pe rezultatele obținute, dar se poate orienta și spre procesele din care acestea provin.

Pe termen scurs vs pe termen lung. Evaluările pe termen scurt ale utilizatorului pot omite rezultate care apar doar după o anumită perioadă de timp. De exemplu, evoluția preferințelor utilizatorului este un fenomen ce poate fi investigat doar pe o perioadă lungă de timp.

Studiile care au investigat satisfacția utilizatorilor cu privire la sistemele de recomandare sunt puține, iar studiile care se concentrează pe satisfacția utilizatorilor cu privire la recomandări sunt chiar mai rare. Multe studii care se concentrează pe satisfacția utilizatorilor sunt în primul rând încadrate în categoria interacțiunilor om-calculator și nu se focusează asupra proprietăților sistemelor de recomandare.

3.5 Sisteme de recomandare existente

Sistemele de recomandare s-au transformat de-a lungul timpului de la niște instrumente folosite de cercetători la instrumente de afaceri, care devin utilizate pe o scară largă în diferite domenii. Aceste sisteme sunt în special cunoscute pentru capacitatea lor de a recomanda cărți, muzică, filme și programe de televiziune etc. În secțiunile ce urmează vom descrie pe scurt câteva dintre aceste sisteme.

44

Page 46: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 3.10

Figura 3.11 ”Recomandările de astăzi pentru tine” Amazon

3.5.1 Amazon.com

Probabil cea mai cunoscută aplicație care utilizează tehnologia sistemelor de recomandare este Amazon.com. Utilizatorii site-ului primesc recomandări în diferite forme. Un exemplu este ”Clienții care au cumpărat”, facilitate care recomandă produsele achiziționate de oamenii ce au cumpărat un anumit produs (așa cum se poate observa în Figura 3.10).

Utilizatorii care dețin un cont de Amazon.com și sunt conectați vor primi, de asemenea, un număr de recomandări bazate pe istoria cumpărăturilor (vezi Figura 3.11). Utilizatorul poate specifica din ce categorie i-ar plăcea să primească recomandări doar făcând clic pe ea.

Amazon.com implementează tehnica bazată pe filtrarea prin colaborare (CF) pentru a anticipa care sunt produsele care se potrivesc cel mai bine nevoilor utilizatorului dintr-un set enorm de date. Scalabilitatea este un aspect important aici, deoarece Amazo.com are zeci de milioane de clienți și produse. Algoritmul de filtrare prin colaborare bazat pe elemente potrivește fiecare produs cumpărat și evaluat de utilizator cu produse similare, combinând aceste elemente într-o listă de recomandări pentru acesta. Pentru a determina care elemente sunt similare, algoritmul construiește un tabel de elemente similare pe baza elementelor pe care clienții tind să le achiziționeze împreună. Această abordare este diferită de cei mai mulți algoritmi de recomandare care calculează o metrică de similitudine pentru fiecare pereche de elemente.

Algoritmul utilizat de Amazon.com poate fi descris după cum urmează:

45

Page 47: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 3.12 Listă TV MeeVee

For each item in product catalog, I1For each customer C who purchased I1

For each item I2 purchased by customer CRecord that a customer purchased I1 and I2

For each item I2Compute the similarity between I1 and I2

Similaritatea dintre cele două produse este calculată ca unghiul între doi vectori de dimensiune M, P1 și P2, unde fiecare dimensiune corespunde unui utilizator care a achiziționat sau nu un element. Similaritatea este calculată astfel:

Având în vedere tabelul similaritate-obiect, algoritmul găsește rapid produsele similare la fiecare achiziție și evaluare a utilizatorului. Aceste elemente sunt apoi agregate și cele mai populare sau corelate elemente sunt de fapt recomandate.

3.5.2 MeeVee

MeeVee (http://www.meevee.com) este un ghid on-line TV, care poate oferi utilizatorilor o listă personalizată de programe TV. Personalizarea se bazează pe o listă de interese pe care un utilizator poate să o completeze. Interesele nu sunt limitate doar la emisiuni TV ci, de asemenea pot să includă persoane, subiecte de interes, hobby-uri, filme și sporturi. Odată ce un utilizator a completat lista de interese, MeeVee nu doar are posibilitatea de a construi lista personalizată a programelor TV, dar poate recomanda și conținut video on-line din sute de surse. Tehnicile utilizate de către MeeVee nu sunt descrise, dar ei afirmă că site-ul lor este patentat.

46

Page 48: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 3.13 Sugestii TiVo

3.5.3 TiVo

O altă aplicație ce utilizează tehnologia sistemelor de recomandare poate fi regăsită în TiVo. TiVo (http://www.tivo.com) este o combinație dintre un recorder video digital (DVR) și un serviciu de televiziune, care este foarte popular în Statele Unite ale Americii. DVR poate înregistra emisiuni TV pe hard-disk-ul acestuia, în format MPEG, cere ulterior pot fi vizualizate. Utilizatorii pot, de asemenea, pune pauză și să vizioneze emisiunile în direct, precum și spectacolele înregistrate. Serviciul TiVo oferă o gamă largă de caracteristici, cum ar fi un ghid inteligent de programe electronice (EPG), sistemul de recomandare (RS), on-line sharing, programarea on-line, acces la radio prin Internet, informații meteo și de trafic etc.

Sistemul de recomandare TiVo, numit Sugestii TiVo, ajută utilizatorii să găsească spectacolele, filmele sau emisiunile care probabil vor fi îndrăgite de aceștia. Acest sistem de recomandare combină două tehnici pentru a genera recomandări: filtrarea bazată pe elemente și filtrarea bazată pe conținut, Bayesian (CBF). Tehnica filtrării bazată pe conținut folosește părerile utilizatorilor like-minded (de exemplu, utilizatorii care urmăresc seriale similare cu cele ale utilizatorului căruia i se oferă recomandarea). În schimb filtrarea bazată pe conținut utilizează caracteristici ale elementelor în sine (precum: tipul emisiunii, actori, timpul de rulare etc.).

3.5.4 Alte sisteme de recomandare

Pe lângă aplicațiile descrise anterior, există numeroase alte site-uri și aplicații ce folosesc tehnologii ale sistemelor de recomandare. Unele dintre acestea sunt enumerate în continuare.

Yahoo! Movies, sistem de recomandare pentru filme;

eBay, site pentru licitații on-line;

NetFlix, serviciu de închiriere filme on-line;47

Page 49: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

iTunes;

CDNOW.com;

MovieLens, un sistem de recomandare pentru filme și seriale;

Jester, un sistem ce recomandă glume;

Last.fm;

MyStands;

Pandora;

StumbleUpon.

3.5.5 Biblioteci software open-source

Există diverse biblioteci software open-source, care oferă dezvoltatorilor posibilitatea de a adăuga caracteristici de recomandare pentru aplicații sau site-uri web. Printre acestea enumerăm:

Duine (http://sourceforge.net/projects/duine)

Taste (http://taste.sourceforge.net)

Cofi (http://www.nongnu.org/cofi)

CoFE (http://eecs.oregonstate.edu/iis/CoFE)

Colfi (http://colfi.wz.cz)

RACOFI (http://www.daniel-lemire.com/fr/abstracts/COLA2003.html)

SUGGEST (http://glaros.dtc.umn.edu/gkhome/suggest/overview)

Vogoo (http://www.vogoo-api.com)Consensus (http://exogen.case.edu/projects/consensus)

48

Page 50: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

CAPITOLUL IVMovieRightAway – Un sistem de recomandare al filmelor si serialelor

Așa cum s-a văzut în capitolele de început ale lucrării, creșterea volumului de date în rețeaua Internet, a condus la studierea și implicit dezvoltarea unor sisteme de recomandare, menite să ajute utilizatorii în găsirea articolelor relevante pentru aceștia. Astfel pentru preîntâmpinarea acestei probleme a fost realizat un sistem de recomandare automat, care clasifică filmele și serialele ca fiind articole relevante sau irelevante pentru utilizatorul curent. Rolul acestui sistem, precum am menționat anterior, este de a ajuta utilizatorii în găsirea articolelor relevante pentru aceștia, reducând astfel timpul necesar căutării.

Sistemul de recomandare are la bază un algoritm bazat pe cel mai apropiat vecin (User -based Nearest Neighbors Algorithm) și utilizează un sistem alcătuit din agenți inteligenți care ajută la calculul recomandărilor, dar și la preluarea datelor necesare.

Acest capitol descrie contextul problemei de la care s-a pornit dezvoltarea aplicației, alături de o analiză a acesteia. Aplicația va fi descrisă în mod sistematic, prezentând atât design-ul cât și implementarea oferită de combinarea mai multor instrumente.

4.1 Enunțul problemei

Precum am menționat anterior, scopul acestei aplicații este de a ajuta utilizatorii în depistarea filmelor sau serialelor, care ar putea crea un interes de vizionare pentru aceștia. Vom formula în continuare o posibilă cerință a problemei:

Să se creeze o aplicație care să preia informații despre filme și seriale și mai apoi să recomande unele dintre aceste articole bazându-se pe rating-urile oferite de utilizatorul curent altor filme, iar în caz de inexistență a acestor rating-uri, se vor recomanda cele mai vizionate articole. Pentru preluarea filmelor și serialelor utilizatorul trebuie sa completeze o cerere în acest sens, mai apoi putând să vizualizeze, cat și sa voteze articolele cerute. Aplicația va putea fi folosită de orice tip de utilizatori.

Utilizatorii neautentificați vor putea să vizioneze filmele și serialele existente, cât și să plaseze cereri pentru preluarea unor noi articole. Pentru a utiliza funcționalitățile care permit votarea articolelor și cererea recomandărilor, utilizatorii trebuie să se înregistreze în sistem și în prealabil să se autentifice. De asemenea utilizatorii pot folosi o bară de căutare și niște filtre speciale pentru a găsi anumite articole. Pentru solicitarea recomandărilor utilizatorul trebuie să completeze mai multe câmpuri referitoare la algoritmul utilizat pentru crearea indicilor de corelare dintre acesta și restul utilizatorilor (în această situație for fi două opțiuni: Pearson Correlation și Euclidean Distance), numărul recomandărilor care dorește să le primească, numărul corelărilor care dorește să fie utilizate în generarea recomandărilor (în acest caz -1 va reprezenta valoarea maximă), iar utimul câmp reprezintă valoarea scorului de corelare care vor fi incluse în recomandări (fiecare scor de corelare poate să oscileze între -1 și 1; -1 semnifică faptul că utilizatorii nu sunt deloc similari, iar 1 indică faptul că preferințele utilizatorilor sunt identice).

49

Page 51: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

4.2 Abordarea propusă. Arhitectura sistemului și rolul agenților

În acest subcapitol vom descrie abordarea propusă spre dezvoltarea unei aplicații care să respecte cerințele descrise anterior, arhitectura acesteia cât și anumite avantaje în acest sens.

Platforma sistemului de recomandare propusă în această lucrare MovieRightAway(MRA), este implementată în Java, având utilitate generală, folosirea sa fiind posibilă prin utilizarea unor servicii web expuse de aceasta, care permit accesul de pe orice platformă sau tehnologie. În acest sens o aplicație web implementată în ASP .Net a fost dezvoltată.

Platforma de recomandare este concepută cu scopul de a oferi un motor de recomandare personalizat pentru fiecare utilizator, cât și posibilitatea de a prelua și întreține articolele necesare recomandărilor. Deși platforma a fost dezvoltată strict pentru preluarea și întreținerea filmelor și ale serialelor, aceasta poate fi extinsă spre orice tip de articol, recomandările fiind generate doar pe baza unor scoruri oferite de utilizator anumitor articole. Funcționarea sistemului de recomandare presupune existența unor interacțiuni între utilizatori și produse exprimate sub formă de preferințe, în particular scoruri. În funcție de aceste preferințe sistemul poate oferi N recomandări pentru un utilizator particular sau poate construi lista predicțiilor pentru acesta, adică predicții generate de sistemul de recomandare pentru scorurile produselor despre care utilizatorul nu și-a exprimat încă nicio preferință. De asemenea este foarte importantă interacțiunea utilizatorului cu sistemul în ceea ce privește articolele existente în sistem, deoarece sistemul pune la dispoziția utilizatorilor o funcționalitate prin care aceștia au posibilitatea de a plasa cereri acestuia cu scopul de a prelua filme sau seriale care nu există în baza de date a aplicației. După ce aceste articole vor fi preluate sistemul se va ocupa personal de întreținerea acestora.

Deoarece sistemul este unul distribuit și necesită decizii flexibile și autonome, a fost identificat ca un sistem multi-agent, prin urmare este logic să regăsim agenții ca cel mai înalt nivel de abstractizare în cadrul sistemului. Următoarele clase de agenți s-au distins la nivelul sistemului de recomandare:

Utilizatorii (agenții umani)

Agentul personal al utilizatorului (agenți de interfață software, notați cu PA – Personal Assistant)

Agentul coordonator

Agentul web

Agentul manager

Agentul recomandărilor

Agentul GateWay

Arhitectura platformei de recomandare pe care o propunem pentru un sistem generic decizional bazat pe agenți este prezentată în Figura 4.1.

50

Page 52: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Vom prezenta în cele ce urmează rolul fiecărui agent din acest sistem.

51

Figura 4.1 Arhitectura sistemului multi-agent

GATEWAY AGENT

Page 53: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Agentul personal al utilizatorului (User Personal Agent). Rolul acestui agent este de a intercepta fiecare solicitare plasată de utilizatorul căruia îi este asignat, fiind într-o stare de inactivitate până în momentul autentificării utilizatorului. Toate cererile pe care acesta le primește în urma interacțiunii cu utilizatorul sunt procesate și, dacă aceste cereri sunt adresate sistemului de recomandare sau sistemului de preluare a datelor, atunci ele sunt trimise spre coordonator. Deși sistemul nu implementează un algoritm de învățare a preferințelor utilizatorului, acest agent joacă un rol foarte important și poate oferi spre viitor posibilitatea de implementare a unei astfel de funcționalități.

Agentul coordonator (Coordinator Agent). Acest agent are rolul de a coordona toate cererile sistemului și de a plasa însăși cereri diferiților agenți aflați în sistem. Faptul că fiecare agent activ participant în sistem își înregistrează serviciile oferite de acesta, una dintre sarcinile coordonatorului este de a căuta aceste servicii necesare si de a trimite cereri. Este demn de menționat faptul că fiecare agent din acest sistem implementează o coadă cu priorități a solicitărilor, astfel fiecare solicitare este plasată în această coada, iar mai apoi agentul deținător procesează aceste cereri în funcție de prioritatea acestora (de exemplu: dacă coordonatorul primește două cereri de la agenții personali una marcată cu critical, iar cealaltă cu prioritate low, cea cu prioritate mai mare, adică critical, va fi tratată prima). Agentul coordonator implementează de asemenea un comportament de trimitere a solicitărilor către agenții răspunzători, așteptând mesajul de confirmare cererea fiind procesată cu succes, sau contrar. În cazul în care cererea nu a fost procesată cu succes de către agentul prestator de servicii, coordonatorul se ocupă si de partea de nereușită, trimițând încă o dată solicitarea, acest proces repetându-se de patru ori. Odată ce mesajul este primit și confirmarea a fost cu succes, acest agent răspunde cererii agentului personal, dacă cererea a fost primită de la acesta. Pe lângă faptul că rezolvă cererile primite de la agentul personal, coordonatorul se ocupă și de întreținerea articolelor din baza de date, aceasta însemnând că, periodic se verifică data la care articolul a fost salvat, iar dacă această dată marchează o săptămână atunci o cerere pentru actualizare este plasată agentului manager.

Agentul web (Web Movie Agent/Web Tv Series Agent). Agentul web are rolul de a procesa cererile primite de la coordonator în sensul extragerii de noi informații de pe rețeaua Internet. În momentul dezvoltării aplicației, funcționalitatea acestui agent a fost special implementată pentru preluarea de filme sau seriale, totuși, cu ajutorul implementării unor clase generale și a unei interfețe (GeneralRetriever și IRetriever) se pot implementa noi retrievere pentru preluarea diferitor alte articole. Acest agent utilizează un mecanism de preluare a datelor de pe site-ul TheMovieDb, aceste date fiind salvate într-un context. Dacă vreo operație a eșuat în timpul preluării datelor, la fel ca și agentul coordonator acesta implementează un mecanism de “nereușită”. În caz de succes, agentul trimite contextul cu informațiile despre film sau serial la agentul manager care se va ocupa de salvarea acestuia în baza de date.

Agentul manager (Manager Agent). Acest agent a fost special creat pentru a se ocupa de toate operațiile ce țin de accesarea bazei de date. Unul dintre motivele principale ale acestei decizii a fost și unul dintre bine cunoscutele principii ale programării orientate pe obiect, principiul separării responsabilităților, dar cu atât mai mult decizia a căzut și în privința faptului că având un sistem multi-agent (agenții care practic sunt văzuți ca fiind thread-uri), nu a fost dorită accesarea bazei de date într-un mod concurent. Scopul acestui agent este unul simplu, primește cereri pentru salvarea unui context primit de la agentul web, cereri pentru a actualiza informațiile (informații care de asemenea sunt recepționate de la agentul web) sau de a verifica existența unui articol, pentru a omite duplicatele.

52

Page 54: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Agentul recomandărilor (Recommender Agent). Recomandările sunt principalul motiv pentru dezvoltarea acestei aplicații, în consecintă prezența unui astfel nu a putut fi omisă. Cu toate că, în scopul performanțelor și a experimentelor, algoritmii de recomandare au fost implementați de partea bazei de date (algoritmi implementați în SQL), acest agent acceseasză este o piesă importantă în structura sistemului. Se poate observa că acest agent comunică direct cu baza de date rezervată utilizatorilor, unde se află toate filmele vizionate de utilizatori și filmele pentru care aceștia au oferit un vot. În acest sens pot să existe filme care au fost vizionate dar nu au fost votate, de aici putem deduce una dintre atribuțile acestui agent, aceea de a se asigura că recomandările sunt valide. Acesta la rândul său primește cereri de la agentul coordinator cu informații despre utilizator, numărul recomandărilor dorite și alte anumite setări în ceea ce privește calculul recomandărilor.

Agentul GateWay (GateWay Agent). Acest agent joacă cel mai important rol în sistemul descris anterior. Principala sa sarcină este de a face posibilă comunicare cu un sistem exterior. Sistemul pune la dispoziția dezvoltatorilor un web service prin care este posibilă comunicarea cu platforma agenților. Deoarece agenții au propriu lor “ecosistem”, interacțiunea directă cu aceștia este imposibilă, de aceea platforma JADE pune la dispoziție acest agent. Cu ajutorul unui sistem de tip BackBoard, când o solicitare sosește în web service, se creează un nou obiect de tip BlackBoard, care ulterior este atașat agentului GateWay. Acest agent trimite cererea agentului personal sau coordonatorului. Îm momentul în care cererea a fost rezolvată cu succes se eliberează obiectul creat și se răspunde solicitării primite de la client.

Am menționat anterior de existența unei aplicații web, dezvoltată cu scopul de a demonstra funcționalitățile sistemului multi-agent și cu atât mai mult de a demonstra interoperabilitate celor două platforme și paradigme de programare, pe de o parte comunicarea Java (server/prestator de servicii) cu .Net (client/consumator de servicii), iar pe de altă parte imbinarea paradigmei programării orientate pe obiect cu paradigma programării orientată pe agent. Această aplicație este direct conectată la baza de date cu infomații despre utilizatori cât și la informațiile despre filmele sau serialele preluate de sistem. De asemena aceasta pune la dispoziția utilizatorului funcționalități precum: înregistrarea, autentificarea, vizualizarea filmelor și a serialelor precum și filtrarea rezultatelor, plasarea cererilor pentru recomandări și plasarea cererilor pentru preluarea de noi articole.

Arhitectura aplicației web este bazată pe un bine cunoscut șablon de proiectare, Model-View-Controller (MVC), șablon care este des întâlnit mai ales cu precondiție în partea dezvoltării aplicațiilor web. Model - Această parte a controlatorului manipulează operațiunile logice și de utilizare de informație (trimisă dinainte de către rangul său superior) pentru a rezulta de o formă ușor de înțeles. View - Acestui membru al familiei îi corespunde reprezentarea grafică, sau mai bine zis, exprimarea ultimei forme a datelor: interfața grafică ce interacționează cu utilizatorul final. Rolul său este de a evidenția informația obținută până ce ea ajunge la controller. Controller - Cu acest element putem controla accesul la aplicația noastră. Pot fi fișiere, scripts sau programe, in general orice tip de informație permisă de interfață. În acest fel putem diversifica conținutul nostru de o formă dinamică și statică, în același timp.

53

Page 55: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

4.3 Analiză și proiectare

În continuare vom prezenta aspecte legate de dezvoltarea platformei de recomandare MovieRightAway, cu accent pe analiză, proiectare, implementare și utilizare.

4.3.1 Tehnologi utilizate

Pentru dezvoltarea întregului sistem au fost utilizate o serie de medii de programare, limbaje de programare și software framework-uri, pe care le vom prezenta pe scurt în cele ce urmează.

Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems la începutul anilor ’90. Cele mai multe aplicații distribuite sunt scrise în Java, iar noile evoluții tehnologice permit utilizarea sa și pe dispozitive mobile, agendă electronică, palmtop etc. În felul acesta se creează o platformă unică, la nivelul programatorului. Acesta este utilizat în prezent cu un succes deosebit.

Limbajul împrumută o mare parte din sintaxă de la C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel jos. Un program Java compilat, corect scris, poate fi rulat fără modificări pe orice platformă care are instalată o mașină virtuală Java (Java Virtual Machine, prescurtat JVM). Acest nivel de portabilitate (inexistent pentru limbajele mai vechi cum ar fi C) este posibil deoarece sursele Java sunt compilate într-un format standard.

Eclipse este un mediu de dezvoltare open-source scris preponderent în Java. Acesta poate fi folosit pentru a dezvolta aplicații Java și, prin intermediul unor plug-in-uri, în alte limbaje.

Unul dintre principalele motive care a condus la utilizare tehnologiilor descrise mai sus este platforma JADE (Java Agent DEvelopment Framework). JADE este o platformă dezvoltată în limbajul Java, bine cunoscută în domeniul agenților inteligenți și al sistemelor multi-agent, cu p documentație bogată față de majoritatea instrumentelor asemănătoare ce se pot regăsi în acest domeniu. Acest instrument pentru cu ușurință crearea și întreținerea sistemelor multi-agent oferind o serie de tool-uri ce au fost descrise în capitolele anterioare. Mai important decât atât este faptul ca posibilitatea de a crea aplicații distribuite în Java se reflectă și asupra sistemului multi-agent, permițând astfel crearea agenților mobili cât și crearea de noi containere pe diferite mașini.

C Sharp (C#) este un limbaj asemănător sintactic cu limbajul Java, fiind un limbaj multi-paragimă, înglobând mai multe discipline precum: puternic tipizat, declarativ, funcțional, generic, orientat-obiect (bazat pe clase) și orientat spre componente. Acesta a fost dezvoltat de Microsoft în cadrul inițiativei de dezvoltare a framework-ului .NET și mai tarziu a fost aprobat ca și un standard de Ecma (ECMA-334) și ISO (ISO/IEC 23270:2006). C# este unul dintre limbajele de programare conceput pentru Common Language Interface. C# este destinat să fie un limbaj simplu, modern, de uz general, orientat-obiect. Cea mai recentă versiune a sa este C# 5.0, care a fost lansată pe 15 august 2012.

Microsoft Visual Studio este un mediu de dezvoltare ce include un set de instrumente ce permit dezvoltarea aplicațiilor ASP.NET, servicii web XML, aplicații desktop și aplicații mobile. Visual Basic, Visual C++, Visual C# și Visual J# toate folosesc acest mediu de dezvoltare integrat (IDE) care le permite partajarea instrumentelor și facilitează crearea de soluții folosind mai multe limbaje de programare. Aceste limbaje permit să beneficieze de caracteristicile

54

Page 56: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

framework-ului .NET care oferă acces la tehnologi cheie și simplifică dezvoltarea de aplicații web ASP și XML Web Services cu Visual Web Developer. Acesta include un editor de cod și sprijinul ItelliSense-ului, precum și posibilitatea de refactorizare a codului. Depanatorul integrat funcționează atât ca un debugger la nivel de sursă cât și ca un debugger la nivel de mașină. Alte unelte built-in includ un designer de formulare pentru dezvoltarea aplicaților ce includ si o interfață pentru utilizator, web designer, designer pentru clase și un designer pentru schema bazei de date. Acceptă plug-in-uri care îmbunătățesc funcționalitatea la aproape fiecare nivel, inclusiv adăugarea suportului pentru sistemele de source control (cum ar fi Git) și adăugarea de noi toolset-uri.

Tehnologiile Microsoft au fost utilizate pentru dezvoltarea parții web a acestui sistem, acestea venind în ajutorul dezvoltatorilor cu o multitudine de instrumente, având ca scopul creșterea productivității, dar și calitatea soft-ului dezvoltat. Aplicația a fost dezvoltată utilizănd ultima tehnologie în materie de aplicații web, de pe piață, pe care cei de la Microsoft o pun la dispoziție împreună cu versiunea 2013 a IDE-ului. Pe langă faptul că tehnologia MVC 5 oferă o mare parte din template-uri, precum generarea claselor pentru view și controller îmreună cu operațiile de CRUD aferente (create-read-update-delete), aceasta vine integrată și cu un framework pentru CSS, mai exact Bootstrap.

Pentru stocarea datelor s-a folosit Microsoft SQL Server – un sistem de gestionare de baze de date relaționale, produs de Microsoft. Suportă versiunea companiei Microsoft de SQL (Structured Query Language - limbaj structurat de interogări), cel mai răspândit limbaj pentru bazele de date. Este un sistem pentru întreprinderi - se poate aplica bazelor de date de dimensiuni foarte mari. Microsoft SQL Sever folosește o variantă de SQL numită T-SQL, sau Transact-SQL, o implementare de SQL-92 (standardul ISO pentru SQL) cu unele extensii. T-SQL în principal adaugă sintaxa adițională pentru procedurile stocate si pentru tranzacții. Standardele SQL necesită ACID; acesta este un acronim pentru cele 4 condiții pentru orice tranzacție: atomicitate, consistenta, izolare, durabilitate. MS SQL Server suporta ODBC (Open Database Connectivity).

Microsoft Azure SQL Database este un serviciu bazat pe cloud creat de Microsoft, oferind capabilițăți de stocare a datelor ca și parte a platformei Azure. Spre deosebire de alte baze de date din cloud, Azure permite utilizatorilor săi să execute interogări relaționale peste datele stocate.

JSON este un format text care facilitează schimbul de date structurate între orice două limbaje de programare, atâta timp cât există o librărie care să facă conversia. Este ușor de citit și de editat de către oameni, iar mașinile pot să îl păstreze și să îl genereze fără mari probleme. JSON este construit pe baza a două structuri care constau într-o colecție de perechi cheie-valoare, care în cazul altor limbaje se reprezintă cu ajutorul unor obiecte, structuri sau dicționare, iar al doilea element al construcției este reprezentat de o listă ordonată de valori, care în majoritatea limbajelor este cunoscută sub denumirea de array, vector, listă sau secvență. Formatul este în special folosit ca și punte de comunicare între JavaScript și datele din baza de date, cu preponderență cele pentru statistici a căror format variază în funcție de mai multe criterii.

JavaScript este limbajul de programare al web-ului datorită faptului că majoritatea website-urilor folosesc JavaScript și toate navigatoarele moderne de pe orice tip de dispozitiv includ un interpretor de JavaScript făcând limbajul să fie atotprezent în momentul din care se trece granița dinspre mediul real spre cel virtual. JavaScript este un limbaj care poate să fie folosit la programarea orientă pe obiect sau programarea funcțional, parte din sintaxa acestuia fiind inspirată din limbajul Java.

55

Page 57: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Git este un sistem de revision control pentru platforma UNIX. Ca și Mercurial, Git este un sistem distribuit și nu întreține o bază de date comună. Este folosit în echipe de dezvoltare mari, în care membrii echipei acționează oarecum independent și sunt răspândiți pe o arie geografică mare.În mod curent, Git este dezvoltat și întreținut de Junio Hamano.

4.3.2 Diagramă de clase

În continuare vom prezenta aspecte legate de dezvoltarea platformei de recomandare MRA, cu accent pe analiză, proiectare și utilizare.

Platforma de recomandare MovieRightAway este concepută respectând normele actuale ale programării orientate pe obiecte și ale programării orientate pe agent, fiind caracterizată prin:

Coeziune înaltă (high cohesion). Coeziunea măsoară cât de puternic sunt legate între ele responsabilitățile unui modul. Coeziunea înaltă a unui sistem generează o serie de avantaje, cum ar fi:

Modulele devin mai ușor de înțeles, fiind mai simple, executând operații relativ puține și care sunt strâns legate între ele în contextul responsabilității pe care o îndeplinește modulul.

Întreținerea sistemului devine mai facilă, din cauza faptului că schimbările într-unul dintre modulele sistemului necesită puține schimbări în cadrul celorlalte module.

Reutilizabilitatea modulelor crește, pentru că eventualii dezvoltatori ai sistemului vor găsi componentele de care au nevoie mult mai ușor, din cauza setului de operații coeziv ce-l furnizează un modul.

Robustețea sistemului este afectată în mod pozitiv, modulele mai simple facilitând tratarea erorilor din timpul execuției.

Cuplare slabă (low coupling). Cuplarea măsoară gradul de dependență între modulele ce alcătuiesc sistemul. Se spune că un modul este puternic cuplat cu un alt modul dacă schimbările din interiorul său vor genera schimbări și în celălalt modul. Un modul se spune că este cuplat slab dacă acesta este independent de celelalte module. Cuplarea slabă aduce o serie de avantaje sistemului, cum ar fi:

Întreținerea sistemului devine mai ușoară. Testarea modulelor se execută mai ușor. Codul devine mai ușor de citit și de înțeles.

Cuplarea slabă este în general considerată un identificator al unui sistem bine structurat și bine conceput, iar atunci când este combinată cu coeziunea înaltă conferă sistemului soft multiple avantaje, ca și cele menționate mai sus.

Exită mai multe componente de bază ce alcătuiesc sistemul de recomandare, și nu am putea afirma că unul dintre acestea este de o importanță mult vizibilă față de celelate. În consecință în cele ce urmează a fi prezentate vom expune câteva dintre componente, iar o anumită parte din acestea vom prezenta și implementarea.

Vom începe prin a prezenta structura bazei de date impreună cu o diagramă a claselor componente alte proiectului.

56

Page 58: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.2 Baza de date a filmelor și serialelor

Există două base de date pentru acest proiect, o bază de date unde se stochează informații despre filmele sau serialele preluate de pe rețeaua Internet (Figura 4.2) și o bază de date a utilizatorilor (Figura 4.3) unde sunt stocate informații precum: profilul utilizatorului, lista filmelor vizionate, liste filmelor pe care utilizatorul le-a votat etc.

În ceea ce privește baza de date cu informații despre filme, aceasta a fost astfel construită și evaluată, cu scopul de a avea interogări a căror durată de execuție să fie minimă. Se pot pot observa următoarele tabele:

Type – reprezintă tipul obiectului care urmează să fie stocat în baza de date. În acest caz tipul poate fi unul dintre următoarele: Movie, TvSeries, Season, Episode.

Source – reprezintă sursa de unde au fost preluate informațiile (în acest caz sursa este: TheMovieDb).

Rating – în acest tabel se stochează informațiile referitoare la voturile preluate din respectiva sursă (votul de pe respectivul site, numărul de persoane care au votat acel articol).

PosterPath – acest tabel are rolul de a stoca informațiile despre url afișului filmului sau a serialului.

Genre – În acest tabel se află toate genurile regaăsite pentru fiecare film sau serial.

MovieGenre – Este un tabel de legătură, ce ajută la eliminarea duplicatelor între genuri și filme. Astfel dacă două filme au genuri asemănătoare acestea vor fi salvate o singură dată în tabelul Genre.

57

Page 59: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.3 Baza de date cu informații despre utilizatori.

MovieMaste - Acest tabel este asemănător unei clase generice (abstracte). În acesta se țin informațiile care sunt comune celor patru categorii definite mai sus.

Movie – În acest tabel datele care sunt specifice filmelor sunt salvate.

TvSeries – În acest tabel datele specifice serialelor sunt salvate. Există și o legătură cu tabelul Season pentru a face scădea complexitatea interogărilor (de asemenea se poate obseva și legătura dintre Season și Episode care a fost contruită cu același scop).

Season – Acest tabel stochează informații particulare despre sezoanele unui serial.

Episode – Acest tabel stochează informații particulare despre episoadele unui serial.

Baza de date care este responsabilă cu stocarea datelor despre utilizatori are o structură simplă și este menită pentru a ajuta la stocarea datelor despre voturile utilizatorilor cât și anumite informații despre aceștia.

Datorită complexității diagramei de clase generate pentru întreg sistemul de recomandare multi-agent, vom prezenta în cele ce urmează câteva secțiuni importante ale acestei diagrame. O prezentare pe modulele aplicației poate fi observată în Figura 4.4.

58

Page 60: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.5 Metoda de inițializare a platformei JADE

Figura 4.6 Metoda de inițializare a serviciului web

Application este modulul principal al aplicației. Acesta înglobează clasa Main, cu ajutorul căreia sistemul multi-agent poate fi pornit și de asemenea tot în această clasă se face deploy-ul serviciului web prin care se asigură comunicarea cu o altă platformă sau tehnologie. În această clasă există doua metode: initializeJadePlatform (Figura 4.5) și initializeWebService (Figura 4.6).

59

Figura 4.4 Diagrama UML a modulelor aplicației

Figura 4.4 Diagrama modulelor

Page 61: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.7 Interfața serviciului web

Figura 4.8 Diagrama agentului care oferă recomandări

Interfața serviciul web, cu ajutorul căruia se întreține comunicarea dintre aplicația web și sistemul multi-agent se poate observa în Figura 4.7. Aceasta conține trei metode cu ajutorul cărora clientul poate să solicite sistemului să plaseze o cerere pentru un film, să plaseze o cerere pentru un serial și să solicite sistemului recomandări.

Diagrama agentului care oferă recomandări unui utilizator poate fi observată în Figura 4.8.

60

Page 62: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.9 Diagrama agentului care oferă recomandări

Se poate observa că acest agent comunică direct cu baza de date în care se află recomandările, prin relația către clasa RecommenderDataBaseManager. Această clasă este responsabilă cu deschiderea conexiunii la baza de date (datele conexiunii sunt preluate din fișierul config.xml) și cu executarea unui interogări pentru a obține rezultatele dorite, de asemenea această clasă moștenește din clasa GeneralManager unde sunt setate informațiile strigului de conexiune și sunt implementate metodele de deschidere și inchidere a conexiunii cu baza de date.

Atât agentul coordonator cât și agentul care se ocupă de recomandările sistemului utilizează un comportament numit GetAndSendMessageBehaviour, care odată implementat se ocupă de primirea mesajelor din partea agenților, de tratarea acestora (din diagramă se poate observa faptul că ambii agenți prezenți utilizează o clasă numită ResolveRecommenderRequest pentru agentul Recommender ți ResolveCoordinatorRequests pentru agentul Coordinator, clasă care se ocupă de prelucrarea solicitărilor) ți trimiterea răspunsului emițătorului solicitării.

În aplicație există două mari comportamente implementate de agenți. Unul dintre acestea tocmai ce a fost descris anterior (GetAndSendMessageBehaviour), iar cel de-al doilea numit SendAndWaitMessageBehaviour al cărui scop este de a trimite un mesaj (solicitare) unui agent prezent în sistem și mai apoi de a aștepta răspunsul. Acesta este comportamentul care implementează sistem în caz de nereuțită, dacă raspunsul primit este unul de refuz, atunci acest comportament mai trimite o dată cererea.

61

Page 63: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.10 Algoritmul corelării utilizatorilor: Pearson Correlation

În Figura 4.9 se poate observa comportamentul agentului care se ocupă de preluarea datelor de pe rețeaua Internet. Acesta la rândul său implementează comportamentul GetAndSendMessageBehaviour, cu ajutorul căruia primește o solicitare de la agentul coordonator și apoi începe operația de preluare a datelor. Se poate observa faptul că acest agent deține ca și membru privat în clasă un obiect de tipul IRetriever.

IRetriever este o interfață ce cuprinde două metode getMovieInfo și getTvSeriesInfo. Cu ajutorul clasei TheMovieDbRetriever care implementează această intefață, agentul care prestează acest serviciu primește informațiile despre articolul căutat. Prezența acestei interfețe ne indică faptul că agentul poate implementa mai multe tipuri de obiecte care să se ocupe de preluarea informației, defapt dacă aruncăm o privire peste Figura 4.5, putem ovserva faptul că atunci câng agentul se creează un parametru care indică clasa care se ocupă de preluarea informației este pasat constructorului. În acest sens se pot crea oricâți astfel de agenți care pot să preia diferite articole.

În sețiunile ce urmează vom prezenta pe scurt algoritmii de recomandare implementați în sql. După cum am menționat anterior, din motive de performanță și din necesitatea de a executa anumite pre-procesări pentru a primi recomandările într-un timp util (pentru a testa sistemul de recomandare s-a utilizat un set de date de pe [41]http://grouplens.org/, acesta conținând un numar de 6.000 de utilizatori, 4.000 de filme și un număr de 1.000.200 voturi) am decis dezvoltarea acestor algoritmi pe partea bazei de date, efectul fiind unul pozitiv. Pentru corelările dintre utilizatorii sistemului s-au utilizat doi algoritmi: PearsonCorrelationAlgorithm (Figura 4.10) și EuclideanDistance (Figura 4.11).

62

Page 64: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.11 Algoritmul corelării utilizatorilor: Euclidean Distance

Figura 4.12 Procedura stocată care oferă recomandări

Ca urmare a calculului similarităților a utilizatorului curent cu ceilalți utilizatori prezenți în baza de date (aceste similaritate se calculează pe baza voturilor pe care ambii utilizatori le-au acordat unui articol), o altă metodă preia toate articolele pe care utilizatorul nu le-a votat și se face un join între similarități și aceste articole, rezultatul fiind prezicerea sistemului asupra votului pe care utilizatorul l-ar oferi unui anumit articol. Pentru a utiliza aceste metode cât mai ușor cu putință, o procedură stocată a fost creată (Figura 4.12).

63

Page 65: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.12 Procedura stocată care oferă recomandări

4.3.3 Diagrama cazurilor de utilizare

Funcționarea sistemului de recomandare oferit de platforma de recomandare MovieRightAway este ilustrată prin diagrama cazurilor de utilizare de mai jos (Figura 4.13).

4.4 Manual de utilizare

Cu scopul de a exemplifica funcționalitatea platformei de recomandare multi-agent, o aplicație web a fost dezvoltată în acest sens. Complexitatea utilizării acestei aplicații nu este una ridicată, fiind ușor abordabilă chiar și de utilizatorii neexperimentați.

Funcționalitățile de bază pe care aplicația le oferă utilizatorilor pot fi cu ușurință regăsite aproape în orice aplicație existentă în rețeaua Internet, ceea ce semnifică faptul că nici un utilizator nu ar trebui să întâmpine dificultăți în accesarea acestora.

Printre funcționalitățile oferite de aplicație regăsim:

Înregistrarea unui utilizator nou.

Autentificarea unui utilizator existent.

Căutarea filmelor și ale serialelor.

64

Page 66: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.13 Formularul pentru înregistrare

Figura 4.14 Formularul pentru înregistrare

Plasarea cererilor pentru preluarea filmelor și serialelor.

Vizualizarea recomandărilor.

Formularul pentru înregistrarea unui utilizator nou poate fi accesat utilizând link-ul Register, din partea dreaptă sus a site-ului. Pentru înregistrare este necesară completarea tuturor câmpurilor acestui formular (Figura 4.13), ulterior butonul Register fiind apăsat (! atenție parola trebuie să conțină minim 6 caractere, litere mari, litere mici și un caracter special).

Dacă utilizatorul este deja înregistrat pe site, atunci acesta se poate autentifica utilizând link-ul LogIn (Figura 4.14).

65

Page 67: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.15 Căutarea unui articol pe site

Căutarea unui serial sau a unui film este o operație foarte simplă. În partea din dreapta a site-ului există o căsuță de tip text unde utilizatorul poate introduce numele întreg sau parțial al articolului căutat după care trebuie să apese tasta enter, iar rezultatele vor fi afișate (Figura 4.15).

Vizualizarea detaliilor unui articol presupune doar o simplă acțiune de click pe poza articolului sau pe titlul din dreptul acestuia (Figura 4.16).

66

Page 68: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

67

Page 69: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Figura 4.18 Plasarea unei solicitări pentru a primi recomandări

Figura 4.17 Plasarea unei solicitări pentru un film sau serial

Pentru a plasa cereri de preluare a unui film sau serial utilizatorul trebuie sa completeze trei câmpuri (Figura 4.17): tipul articolului dorit, titlul articolului și anul apariției acestuia.

Dacă se dorește calcularea unor recomandări (Figura 4.18), utilizatorul trebuie sa completeze un formular care conține următoarele informații: numărul de recomandări dorite (primele recomandări sunt întotdeauna cele mai sugerate), algoritmul utilizat pentru calcularea similitudinilor, numărul de similitudini care să participe în calcularea recomandărilor și în cele din urmă scorul minim al similitudinilor care participă în calculare (scorul minim este -1 – utilizatorii nu sunt similari sau 1 – utilizatorii sunt perfect similari).

4.5 Rezultate experimentale și extinderi posibile

Algoritmii incluși în platforma de recomandare MovieRightAway au for evaluați pe un set de date mari, conținând aproximativ 1.000.000 de scoruri, acordate de 6.000 de utilizatori pentru 4.000 de filme. Scara folosită pentru scoruri este cea cu valori de la 1, reprezentând satisfacția minimă a utilizatorului, la 5, reprezentând satisfacția maximă a utilizatorului. Setul de date este oferit de GroupLens [41].

Evaluarea se va face prin efectuarea unor teste hold-aut. Acestea constau în partiționarea aleatoare a datelor în două seturi, unul de antrenament și unul de test.

68

Page 70: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

S-au utilizat în cadrul experimentului următorii algoritmi.

Filtrarea colaborativă bazată pe utilizator, cu similarități calculate folosind corelarea Pearson, cu un prag de similaritate de 0,0.

Filtrarea colaborativă bazată pe utilizator, cu similarități calculate folosind corelarea Euclidean Distance, cu un prag de similaritate de 0,0.

Rezultatul evaluării pentru algoritmul de filtrare colaborativă bazată pe utilizator, folosind ca date de antrenament 90% din setul complet de date, este:

MAE (Pearson Correlation) = 0,642MAE (Euclidean Distance) = 0,625

Movie ID

My System (Pearson Correlation)

My System (Euclidean Distance)

Real Rating

Pearson Correlation MAE

Euclidean Distance MAE

480 3.78875639 3.743957445 3 0.78875639 0.7439574451214 4.216194583 4.256033701 5 0.783805417 0.7439662991287 4.199241368 4.232124233 5 0.800758632 0.7678757672194 3.998103858 4.049652947 4 0.001896142 0.0496529472571 4.368013131 4.405610714 5 0.631986869 0.5943892862692 4.268081123 4.263676724 4 0.268081123 0.2636767242949 3.912480003 3.935097852 4 0.087519997 0.0649021483639 3.677572221 3.728114581 5 1.322427779 1.2718854193946 2.101718485 2.129049151 1 1.101718485 1.129049151 0.642994537 0.625483909

Rezultatul evaluării pentru algoritmul de filtrare colaborativă bazată pe utilizator, folosind ca date de antrenament 80% din setul complet de date, este:

MAE (Pearson Correlation) = 0,756MAE (Euclidean Distance) = 0,691

69

Tabelul 4.1: Rezultatele evaluării motorului de filtrare colaborativă bazată pe utilizator

Page 71: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Extinderi posibile

Platforma de recomandare MovieRightAway este concepută pentru a pentru a oferi recomandări utilizatorilor, posibilitatea preluării automate a informație cât și întreținerea acestei informații, dar în același timp oferă și accesul unor consumatori de servicii pentru a accesa si utiliza informația existentă.

În cadrul platformei fiecare componentă majoră implementează o interfață sau o clasă abstractă, după cum a fost prezentat în subcapitolul referitor la diagrama de clase. Acest lucru conferă un avantaj major dezvoltatorilor ce doresc extinderea platformei, deoarece dezvoltarea unei noi componente în cadrul sistemului ce implementează interfața sau moștenește o clasă abstractă, asigură buna funcționare cu celelalte componente. Un dezavantaj prezent în arhitectura aplicației este lipsa unui modul de recomandări, acestea fiind construite în limbajul SQL, ca și funcții sau proceduri stocate. În acest sens adăugarea de noi algoritmi referitori la recomandare ar necesita muncă suplimentară, sau la rândul lor aceștia ar putea implementați asemenea celor existenți.

Ca și următoare extinderi și îmbunătățiri ale platformei de recomandare multi-agent MovieRightAway considerăm implementarea unor algoritmi mai complecși de calcul a recomandărilor, și folosirea acestora pentru a crea un sistem hibrid de recomandare. Unul dintre algoritmii propuși este cel care utilizează ca și tehnică de predicție factorizarea de matrice, dat fiindfaptul că recent, modelele factorizării de matrice au câștigat popularitate, datorită acurateții și scalabilității oferite. Deși partea recomandărilor este esențială, trebuie să avem în vedere că am construit un sistem bazat pe agenți care poate ajuta în acest sens determinarea recomandărilor.

70

Tabelul 4.2: Rezultatele evaluării motorului de filtrare colaborativă bazată pe utilizator

Movie ID

My System (Pearson Correlation)

My System (Euclidean Distance)

Real Rating

Pearson Correlation MAE

Euclidean Distance MAE

18 3.313550304 3.382812443 2 1.313550304 1.38281244320 2.475882247 2.662415709 3 0.524117753 0.33758429122 3.314611298 3.49495679 4 0.685388702 0.5050432125 3.677777211 3.66976508 4 0.322222789 0.3302349234 3.938371663 3.942938075 4 0.061628337 0.05706192567 3.507217387 2.816111385 4 0.492782613 1.18388861570 3.169763682 3.249266506 5 1.830236318 1.75073349489 3.041665115 3.183508039 4 0.958334885 0.816491961

… 103 3.034081149 3.228707315 4 0.965918851 0.771292685117 3.64441406 3.680103456 2 1.64441406 1.680103456124 3.812372294 3.676268037 3 0.812372294 0.676268037145 3.239718565 3.409903879 5 1.760281435 1.590096121

0.75603666 691311048

Page 72: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Pentru sistemul multi-agent propunem aplicare unor algoritmi de învățare, care să ajute sistemul să prezică preferințele utilizatorului și astfel să crească procentajul de acuratețe al sistemului. O arhitectură a agenților mobili ar putea fi un plus adus îmbunătățirii, deoarece s-a demonstrat faptul că agenții mobili au un timp de răspuns mai mic decât al celor stționari.

Concluzie

Sistemele de recomandare reprezintă în contextul actual, o necesitate a aplicațiilor ce oferă utilizatorilor acces spre o gamă variată și spre un volum consistent de informație. Acest lucru oferă utilizatorilor o experiență îmbunătățită, rezultând într-o creștere a încrederii manifestate de aceștia pentru serviciile furnizate de aplicație.

Această lucrare a propus MovieRightAway, platformă de recomandare multi-agent capabilă să ofere recomandări pentru filme și seriale, să preia informații despre acestea și să întrețină datele. Această platformă oferă dezvoltatorilor soft o serie de avantaje, precum flexibilitatea și extensibilitatea. De asemenea, un alt avantaj major îl reprezintă dezvoltarea algoritmilor în limbajul SQL, lucru care permite utilizarea acestora în orice aplicație care utilizează o bază de date Microsoft Sql, dar nu putem omite faptul că acest sistem a fost construit în cadrul unui sistem format din agenți inteligenți, domeniu care câștigă tot mai mult teren.

În urma muncii depuse în vederea construirii unei astfel de platforme, se pot trage mai multe concluzii. Prima dintre acestea este faptul că sistemele de recomandare reprezintă o soluție rapidă și eficientă pentru aplicațiile care au nevoie de motoare de recomandare, însă personalizarea acestora este limită, majoritatea platformelor de recomandare luând în considerare aspecte generale ale tuturor domeniilor informaționale, și nu pe cele ale domeniului caracteristic aplicației în care platforma de recomandare este utilizată. Cea de-a doua concluzie reprezintă faptul că algoritmii de recomandare sunt foarte costisitori din punct de vedere al timpului, și această problemă se agravează o dată cu creștrea exponențială a datelor care trebuie prelucrate. În momentul de față, nu există un algoritm care sa învingă toate limitările din cadrul sistemelor de recomandare și care să poată fi utilizat în practică.

O ultimă concluzie demnă de menționat și pe care nu o putem omite din concuzia finală se referă la sistemele multi-agent. Aceste sisteme au avansat foarte mult de-a lungul timpului și s-au dovedit a fi cu adevărat valoroase în dezvolatarea aplicațiilor unde regăsim cu preponderența interacțiunea cu utilizatorul. Aceste sisteme, cum sunt ele descrise, crează o lume virtuală și încearcă să copieze natura omenească cu scopul de a ne oferi nouă, utilizatorilor, serviciile necesare. Cu toate că aceste sisteme sunt o provocare în sensul dezvoltării lor și necesită un anumit nivel de cunoștere mediu în această arie, pot confirma că sunt o alegere extraordinară în dezvoltarea sistemelor de recomandare.

Ca urmare putem concluziona cu afirmația că platforma de recomandare multi agent MovieRightAway, este ușor de utilizat, oferind recomandări valabile utilizatorilor cât și posibilitatea de preluare a articolelor necesare. Flexibilitatea și extensililitatea sunt caracteristi prezente ale sistemului ce oferă posibilitatea de extindere a componetelor sale.

71

Page 73: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

BIBLIOGRAFIE

[1]. Anand, S.S., Mobasher, B.: Intelligent techniques for web personalization. In: Intelligent Techniques for Web Personalization, pp. 1-36. Springer (2005)

[2]. Burke, R.: Hybrid web recommender systems. In: The Adaptive Web, pp. 377–408. Springer Berlin / Heidelberg (2007)

[3]. Resnick, P., Varian, H.R.: Recommender systems. Communication of the ACM 40(3), 56-58 (1997)

[4]. Jannach, D.: Finding preferred query relaxations in content-based recommenders. In: 3rd International IEEE Conference on Intelligent Systems, pp. 355-360 (2006)

[5]. Mahmood, T., Ricci, F.: Improving recommender systems with adaptive conversational strategies. In: C. Cattuto, G. Ruffo, F. Menczer (eds.) Hypertext, pp. 73-82. ACM

[6]. McSherry, F., Mironov, I.: Differentially private recommender system: building privacy into the net. In: KDD ’09: Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining, pp. 627-636. ACM, New York, NY, USA (2009)

[7]. Schwartz, B.: The Paradox of Choice. ECCO, New York (2004)

[8]. Koren, Y., Bell, R.M., Volinsky, C.: Matrix factorization techniques for recommender systems. IEEE Computer 42(8), 30-37 (2009)

[9]. Jannach, D., Zanker, M., Felfering, A., Friedrich, G.: Recommender Systems An Introduction. Cambridge University Press (2010)

[10]. Hayes, C., Cunningham, P.: Smartradio-community based music radio. Knowledge Based Systems 14(3-4), pp. 197-201 (2001)

[11]. Montaner, M., Lopez, B., de la Rosa, J.L.: A taxonomy of recommender agents on the internet. Artificial Intelligence Review 19(4), pp. 285-330 (2003)

[12]. Billsus, D., Pazzani, M.: Learning probabilistic user models. In: UM97 Workshop on Machine Learning for User Modeling (1997)

[13]. Schafer, J.B., Frankowski, D., Herlocker, J., Sen, S.: Collaborative filtering recommender systems. In: The Adaptive Web, pp. 291-324. Springer Berlin / Heidelberg (2007)

[14]. Weiss, G.: Multiagent Systems – A Modern Approach to Distributed Artificial Intelligence, The MIT Press, Cambride, Massachisetts, London (1999)

[15]. M. Wooldridge and N. R. Jennings. Intelligent agents: Theory and Practice. The Knowlodge Engineering Review, 10(2) (1995)

72

Page 74: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

[16]. S. Russell and D. Subramanian. Probably bounded-optimal agents. Journal of AI Research, pp. 575-609 (1995)

[17]. Shoham Y.: AGENT0: A simple agent language ant its interpreter, In: Proceedings of the National Conference on Artificial Intelligence, pp. 704-709 (1991)

[18]. Howden, N., Rönnquist, R., Hodgson, A., Lucas A.: JACK intelligent agents – Summary of an agent infrastructure, Proceedings of the 5th International Conference on Autonomous Agents, Montreal (2001)

[19]. Agent Oriented Software Pty. Ltd.: Jack Intelligent Agents-Agent Manual, 4.1 ed.,

Australia (2003)

[20]. Martin, D.L., Cheyer, A.J., Douglas B.M.: The Open Agent Architecture: A Framework

for Building Distributed Software Systems, Applied Artificial Intelligence, vol. 13, no. 1-2, pp. 91-128, January-March 1999

[21]. Caire G.: JADE tutorial – JADE programming for beginners, June 2009

[22]. Bellifemine F. L., Caire G., Greenwood D.: Developing Multi-Agent Systems with JADE, Wiley, February 2007

[23]. Manning, C.: Introduction to Information Retrievel. Cambridge University Press, Cambridge (2008)

[24]. Schafer, J.B., Konstan, J.A., Riedl, J.: E-commerce recommendation applications. Data Mining and Knowledge Discovery 5(1/2), pp. 115–153 (2001)

[25]. Ricci, F., Cavada, D., Mirzadeh, N., Venturini, A.: Case-based travel recommendations. In: D.R. Fesenmaier, K. Woeber, H. Werthner (eds.) Destination Recommendation Systems: Behavioural Foundations and Applications, pp. 67–93. CABI (2006)

[26]. Sinha, R.R., Swearingen, K.: Comparing recommendations made by online systems and friends. In: DELOS Workshop: Personalisation and Recommender Systems in Digital Libraries (2001)

[27]. Jonathan L. Herlocker, Joseph A. Konstan, Loren G. Terveen, and John T. Riedl, Evaluating collaborative filtering recommender systems, ACM Trans. Inf. Syst. 22, no. 1, pp. 5–53 (2004)

[28]. Morais, A.J.: A Multi-Agent Approach for Web Adaptation. In: Demazeau, Y., et al. (eds.) 7th International Conference on PAAMS 2009, AISC, vol. 55, pp. 349-355, Springer, Heidelberg (2009)

[29]. Michael Wooldridge: An Introduction to MultiAgent Systems, 2nd Edition, Wilwy, May 2009

[30]. Pedrycz W., Vasilakos A.V., Computational Intelligence in Telecommunications Networks , CRC Press (2000)

[31]. Jennings N.R., Wooldridge M.: Applications of Intelligent Agents, In, Jennings, N.R. and Wooldridge, M. J. (eds.) Agent Technology: Foundations, Applications and

73

Page 75: BABEŞ-BOLYAI UNIVERSITY OF CLUJ-NAPOCA · Web viewJADE oferă un set de instrumente utile pentru operarea, managementul și monitorizarea agenților în fazele de implementare și

Markets. Agent Technology: Foundations, Applications and Markets, Springer, pp. 3-28 (1998)

[32]. Siricharoen W. V.: Learning Semantic Web from e-tourism, Proceedings of the 2nd KES International conference on Agent and multi-agent systems: technologies and applications, Incheon, Korea, March 26-28 (2008)

[33]. Syncara, K.: MultiAgent Systems, AI Magazine, 19 (2) (1998)

[34]. Foundation for Intelligent Physical Agents Specifications: http://www.fipa.org

[35]. Daniel D. Corkill: Blackboard Systems, Blackboard Technology Group, Inc.

[36]. Jade: http://jade.cselt.it/

[37]. Blackboard Systems: http://www.cs.cf.ac.uk/Dave/AI2/node105.html

[38]. Caire G.: JADE tutorial – JADE programming for beginners, June 2009

[39]. Thomas R. Gruber: A Translation Approach to Portable Ontology Specifications, In: Knowledge Acquisition, 2(5) (1993)

[40]. Rogier M. van Eijk, Marc-Philippe Huget, Frank Dignum: International Workshop on Agent Communication, AC 2004, New York, NY, USA, July 19 (2004)

[41]. GroupLens: http://grouplens.org/

74