UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI CORSO DI LAUREA IN INFORMATICA



Documenti analoghi
Generazione Automatica di Asserzioni da Modelli di Specifica

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Architetture Applicative

Tale attività non è descritta in questa dispensa

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Automazione Industriale (scheduling+mms) scheduling+mms.

Cosa è un foglio elettronico

Il database management system Access

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

DOCUMENTAZIONE POISSON

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Visual basic base Lezione 01. L'ambiente di sviluppo

Il calendario di Windows Vista

Esercizio data base "Biblioteca"

Database 1 biblioteca universitaria. Testo del quesito

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Il web server Apache Lezione n. 3. Introduzione

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Registratori di Cassa

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Progetto: Servizio location based per la ricerca di punti di interesse

Guida all uso di Java Diagrammi ER

Strutturazione logica dei dati: i file

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Corso di PHP. Prerequisiti. 1 - Introduzione

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Soluzione dell esercizio del 2 Febbraio 2004

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

3. Installare Wamp Server

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

PowerPoint 2007 Le funzioni

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Progettazione di un Database

MODULO STAMPA BOLLETTINO PDF

Manuale Utente Albo Pretorio GA

Introduzione alla teoria dei database relazionali. Come progettare un database

lem logic enterprise manager

Database. Si ringrazia Marco Bertini per le slides

Sistemi avanzati di gestione dei Sistemi Informativi

Il Programma... 3 I moduli... 3 Installazione... 3 La finestra di Login... 4 La suite dei programmi... 6 Pannello voci... 10

Corso Eclipse. Prerequisiti. 1 Introduzione

SCENARIO. Personas ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Esercizio 1: trading on-line

Guida Software GestioneSpiaggia.it

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Statistica 4038 (ver. 1.2)

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Funzioni in C. Violetta Lonati

marketing highlights Google Analytics A cura di: dott. Fabio Pinello

RISOLUTORE AUTOMATICO PER SUDOKU

SPC e distribuzione normale con Access

On-line Corsi d Informatica sul web

Il concetto di valore medio in generale

Metodi statistici per le ricerche di mercato

Dispensa di Informatica I.1

Esercizi su. Funzioni

STAMPA UNIONE DI WORD

EXPLOit Content Management Data Base per documenti SGML/XML

Corso introduttivo all utilizzo di TQ Qualifica

COSTER. Import/Export su SWC701. SwcImportExport

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A

sito web sito Internet

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Capitolo 2. Operazione di limite

I cookie sono classificati in base alla durata e al sito che li ha impostati.

e-dva - eni-depth Velocity Analysis

Esercizi di JavaScript

INSERIMENTO DATI BASILARI

Dispensa di database Access

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Corso sul pacchetto R

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Come archiviare i dati per le scienze sociali

Elementi di Psicometria con Laboratorio di SPSS 1

Come modificare la propria Home Page e gli elementi correlati

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Raggruppamenti Conti Movimenti

Mon Ami 3000 Provvigioni agenti Calcolo delle provvigioni per agente / sub-agente

DINAMIC: gestione assistenza tecnica

Progetto di Ingegneria del Software 2. SWIMv2

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Transcript:

UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI CORSO DI LAUREA IN INFORMATICA MODELLI DECISIONALI PER L E-COMMERCE Implementazione di un recommender system utilizzando gli algoritmi K-Means e Apriori A cura di: Cattaneo Francesco 041106 cattaneo.francesco@hotmail.it Prandi Alessandro 043110 alessando.prandi@gmail.com

INDICE INTRODUZIONE... 3 GUIDA PER L INSTALLAZIONE... 4 SOFTWARE... 5 Weka... 5 Tomcat... 5 Eclipse... 6 LINGUAGGI DI PROGRAMMAZIONE... 7 Java... 7 JSP... 7 HTML... 7 CENNI TEORICI... 8 Recommender Systems... 8 K-Means... 9 Apriori... 10 IMPLEMENTAZIONE... 11 Creazione del dataset... 11 Algoritmo K-Means... 12 Algoritmo Apriori... 13 Inserimento viaggi... 14 Ricerca viaggi... 15 Visualizzazione risultati... 15 IL PROGETTO... 16 TEST... 17 2

INTRODUZIONE Il lavoro è consistito nella progettazione e implementazione di un sistema di raccomandazione, pensato per un sito di un agenzia viaggi online. Abbiamo inizialmente creato un dataset che contiene 4000 istanze, ognuna delle quali rappresenta un utente diverso; per ciascun utente abbiamo inserito automaticamente, con una procedura semirandom, una sequenza di attributi YES/NO. Ogni YES/NO si riferisce al fatto che un utente sia o non sia andato in un determinato luogo, per un totale di 33 attributi divisi in 3 categorie, che indicano la tipologia del viaggio: Avventuroso, Esotico, Montagna. Questo file così costruito viene passato all algoritmo K-Means che clusterizza tutte le istanze, dividendole nelle 3 categorie di viaggi. Infine il file in output viene processato dall algoritmo Apriori, che permette di rilevare quali siano le associazioni di viaggi più frequenti all interno di una categoria specifica. L idea che sta alla base del progetto è che il recommender system possa suggerire un viaggio ad un utente, in base alle scelte effettuate da altri utenti con un profilo simile. Il sito propone all utente una serie di mete, tra le quali l utente deve selezionare quelle a lui più congeniali o simili per tipologia ai luoghi che desidera visitare. In questo modo andiamo a costruire una specie di dataset storico, costruito sulle preferenze espresse, e il recommender system potrà suggerire una meta, confrontandosi con le scelte fatte da altri utenti. L ordinamento dei viaggi proposti dipenderà dalla similarità del profilo dell utente che si è venuto a creare con le regole trovate dall algoritmo Apriori, che sono ordinate in base al livello di confidenza. 3

GUIDA PER L INSTALLAZIONE Per procedere con l installazione è sufficiente seguire questi passaggi: 1. installare Tomcat 2. copiare la cartella Progetto-E all interno della cartella webapps di Tomcat 3. inserire nella variabili di ambiente del sistema operativo il path per CatalinaHome ( In particolare va inserito il persorso alla cartella dove è installato Tomcat ) 4. startare il server Tomcat 5. aprire il browser all indirizzo http:\\localhost:8080\progetto-e\ Il comando rebuild.bat genera un nuovo dataset sul quale vengono applicati l'algoritmo K-Means e l'algoritmo Apriori. Grazie a questa funzione è possibile ricreare l'intero sistema alla base del recommender system per effettuare nuove prove sul software; facciamo presente che il tempo necessario al completamento di questa operazione si aggira attorno ai 15 minuti(con 4000 utenti e 1000 regole sull algortimo apriori), su computer potenti. Per cambiare il numero di utenti del dataset iniziale o il numero di regole dell algoritmo Apriori bisogna modificare i parametri presenti nel file configuration.java; lanciando poi rebuild.bat viene generato il dataset con le nuove impostazioni. 4

SOFTWARE Weka Weka è un progetto software per data mining sviluppato nell università di Waikato in Nuova Zelanda: Weka è un acronimo che sta per Waikato Environment for Knowledge Analysis. Tutti gli algoritmi implementati nel software sono liberamente disponibili nel web: lo scopo principale è consentire una piena comprensione di come lavorano e di che cosa fanno. Weka è scritto in Java, in quanto il software realizzato con questo linguaggio di programmazione orientato agli oggetti è automaticamente portabile in tutte le principali piattaforme per computer. Il funzionamento di Weka è stato testato su Linux, Windows e Macintosh; grazie alle caratteristiche di portabilità del linguaggio Java, Weka presenta una interfaccia uniforme e un identico funzionamento su tutti questi diversi sistemi operativi. Inoltre Weka è un software Open Source e viene rilasciato con licenza GNU General Public License: ciò consente l'utilizzo e la modifica del codice sorgente (disponibile insieme al software). Weka concentra il suo interesse principalmente sugli algoritmi di classificazione e sui filtri per la pre-elaborazione dei dataset (entrambi presenti in gran numero), ma include anche l'implementazione di un algoritmo per la scoperta di regole di associazione (l'algoritmo Apriori, il più noto) e di qualche algoritmo per il clustering e per la regressione. Tomcat Apache Tomcat (o semplicemente Tomcat) è un web container open source sviluppato dalla Apache Software Foundation. Implementa le specifiche JSP e Servlet di Sun Microsystems, fornendo quindi una piattaforma per l'esecuzione di applicazioni Web sviluppate nel linguaggio Java. La sua distribuzione standard include anche le funzionalità di web server tradizionale, che corrispondono al prodotto Apache. In passato, Tomcat era gestito nel contesto del progetto Jakarta, ed era pertanto identificato con il nome di Jakarta Tomcat; attualmente è oggetto di un progetto indipendente. Tomcat è rilasciato sotto licenza Apache Software License, ed è scritto interamente in Java; può quindi essere eseguito su qualsiasi architettura su cui sia installata un JVM. 5

Eclipse Eclipse è un progetto open source legato alla creazione e allo sviluppo di una piattaforma di sviluppo ideata da un consorzio di grandi società quali Ericsson, HP, IBM, Intel, MontaVista Software, QN, SAP e Serena Software, chiamato Eclipse Foundation, e creata da una comunità strutturata sullo stile dell'open source. Pur essendo orientata allo sviluppo del progetto stesso, questo IDE (ambiente di sviluppo integrato) è utilizzato anche per la produzione di software di vario genere. Si passa infatti da un completo IDE per il linguaggio Java (JDT, "Java Development Tools") ad un ambiente di sviluppo per il linguaggio C++ (CDT, "C/C++ Development Tools") e a plug-in che permettono di gestire ML, PHP e persino di progettare graficamente una GUI per un applicazione JAVA (Eclipse VE, "Visual Editor"), rendendo di fatto Eclipse un ambiente RAD. Il programma è scritto in linguaggio Java, ma anziché basare la sua GUI su Swing, il toolkit grafico di Sun Microsystems, si appoggia a SWT, librerie di nuova concezione che conferiscono ad Eclipse una straordinaria reattività. La piattaforma di sviluppo è incentrata sull'uso di plug-in, delle componenti software ideate per uno specifico scopo, per esempio la generazione di diagrammi UML, ed in effetti tutta la piattaforma è un insieme di plug-in, versione base compresa, e chiunque può sviluppare e modificare i vari plugin. Nella versione base è possibile programmare in Java, usufruendo di comode funzioni di aiuto quali: completamento automatico ("Code completion"), suggerimento dei tipi di parametri dei metodi, possibilià di accesso diretto a CVS e riscrittura automatica del codice (funzionalità questa detta di Refactoring) in caso di cambiamenti nelle classi. Essendo scritto in Java, Eclipse è disponibile per le piattaforme Linux, HP-U, AI, Mac OS e Windows. 6

LINGUAGGI DI PROGRAMMAZIONE Java Il linguaggio Java è un linguaggio di programmazione orientato agli oggetti, derivato dal C++ (e quindi indirettamente dal C) e creato da James Gosling e altri ingegneri di Sun Microsystems. Il gruppo iniziò a lavorare nel 1991, il linguaggio inizialmente si chiamava Oak. Il nome fu successivamente cambiato in Java a causa di un problema di copyright (il linguaggio di programmazione Oak esisteva già nel 1991). Java fu annunciato ufficialmente il 23 maggio 1995 a SunWorld. La piattaforma di programmazione Java è fondata sul linguaggio stesso, sulla Java Virtual Machine (JVM) e sulle API. JSP JavaServer Pages, (letto anche talvolta come Java Scripting Preprocessor) è una tecnologia Java per lo sviluppo di applicazioni Web che forniscono contenuti dinamici in formato HTML o ML. Si basa su un insieme di speciali tag con cui possono essere invocate funzioni predefinite o codice Java. In aggiunta, permette di creare librerie di nuovi tag che estendono l'insieme dei tag standard. JSP è una tecnologia alternativa rispetto a numerosi altri approcci alla generazione di pagine Web dinamiche, per esempio ASP o la più tradizionale CGI. Differisce da queste tecnologie non tanto per il tipo di contenuti dinamici che si possono produrre, quanto per l'architettura interna del software che costituisce l'applicazione Web (e, di conseguenza, sui tempi di sviluppo, la portabilità, la modificabilità, le prestazioni, e altri aspetti di qualità del software). HTML HTML (acronimo per Hyper Text Mark-Up Language) è un linguaggio usato per descrivere i documenti ipertestuali disponibili nel Web; è un linguaggio di pubblico dominio la cui sintassi è stabilita dal World Wide Web Consortium (W3C) ed è basato su un altro linguaggio avente scopi più generici, l'sgml. L'HTML prevede tag specifici per far fronte a molte necessità di formattazione e per fornire molte funzionalità, come ad esempio la visualizzazione di immagini e filmati, o l'accompagnamento audio della pagina, la visualizzazione di tabelle, la visualizzazione di liste, la gestione delle informazioni da passare ai motori di ricerca o ancora l'aspetto grafico del documento. Un'ulteriore ed importante caratteristica di HTML è che esso è stato concepito per definire il contenuto logico e non l'aspetto finale del documento. 7

CENNI TEORICI Recommender Systems Generalmente, gli utenti di un sistema informatico tendono a compiere sempre le stesse azioni o sequenze di azioni, dunque il comportamento passato dell'utente rappresenta con sorprendente accuratezza una stima del suo comportamento futuro; tale assunto è alla base dei più rudimentali, ma nondimeno efficaci, sistemi di personalizzazione. Tuttavia in alcuni contesti questo non si verifica: ad esempio un cliente di un servizio online per la vendita di libri non comprerà due volte lo stesso volume. È probabile invece che acquisti un libro simile ad altri libri acquistati in passato, dello stesso genere o dello stesso autore, ma per sfruttare questo dato occorre avere a disposizione un criterio per misurare la similitudine fra due libri. Un'altra possibilità consiste nel suggerire all'utente le scelte compiute da utenti con comportamenti simili. Le strategie adottate per effettuare le previsioni si dividono in content based, che raccomandano risorse simili a quelle che l'utente ha scelto in passato, e collaborative filtering, che raccomandano le risorse scelte da utenti diversi aventi profili simili. Metodi Content-Based I metodi di predizione content-based osservano le scelte di un utente e le registrano. Tali metodi richiedono una certa quantità di intelligenza, sotto forma di euristiche o modelli probabilistici, per individuare fra le risorse che l'utente ha esaminato (oppure comprato o scaricato) dei motivi ricorrenti di interesse. Sulla base di questi, il sistema tenta di predire l'interesse dell'utente per altre risorse, valutando la similitudine o la complementarità fra queste ultime e ciò che l'utente ha preferito in passato. Un limite dei sistemi content based e che essi non tengono in alcun conto le esperienze fatte con altri utenti nell effettuare predizioni, ma limitano le proprie inferenze ai dati raccolti sulle transazioni di uno specifico individuo. Metodi Collaborative-Filtering I metodi collaborative filtering non tengono conto della natura delle risorse, ma fanno uso del profilo utente per raccomandare le risorse scelte in passato da utenti con profili simili. La costruzione e la comparazione dei profili utente rappresenta il nodo cruciale di questi metodi che funzionano secondo il principio del passaparola. Se esiste un sistema esplicito di rating delle risorse da parte degli utenti, è possibile raggruppare gli utenti che hanno dato voti simili alle stesse risorse. Tuttavia tale feedback rappresenta un impegno che molti utenti non sono disposti a sostenere, anche perché non ne traggono diretto beneficio. Ancora più difficile è ottenere dagli utenti degli esempi negativi di risorse. Questo costituisce infatti un impegno ancora più gravoso dato che ciò che piace è in genere molto meno di ciò che non piace o non interessa. 8

K-Means L'algoritmo K-Means è un algoritmo di clustering che permette di suddividere gruppi di oggetti in k partizioni sulla base dei loro attributi. È una variante dell'algoritmo di aspettazione-massimizzazione, il cui obiettivo è determinare i k gruppi di dati generati da distribuzioni gaussiane. Si assume che gli attributi degli oggetti possano essere rappresentati come vettori, e che quindi formino uno spazio vettoriale. L'obiettivo che l'algoritmo si prepone è di minimizzare la varianza totale inter-cluster. Ogni cluster viene identificato mediante un centroide o punto medio. L'algoritmo segue una procedura iterativa: inizialmente crea k partizioni e assegna ad ogni partizione i punti d'ingresso o casualmente o usando alcune informazioni euristiche. Quindi calcola il centroide di ogni gruppo. Costruisce quindi una nuova partizione associando ogni punto d'ingresso al cluster il cui centroide è più vicino ad esso, quindi vengono ricalcolati i centroidi per i nuovi cluster e così via, finché l'algoritmo non converge. K-Means è uno dei più semplici algoritmi che risolvono il problema del clustering. L idea fondamentale consiste nel definire k centroidi, dove k è il numero di clusters scelto a priori. Dato un insieme di vettori d ingresso, ogni vettore è di dimensione n, tale insieme deve essere raggruppato in k clusters. Un centroide è un vettore di dimensione n che rappresenta il centro del cluster. L algoritmo consiste nei seguenti passi: 1. Posizionare i k centroidi nello spazio a n dimensioni. Tale posizionamento rappresenta la scelta iniziale per i centri dei clusters. 2. Assegnare ad ogni vettore da clusterizzare al cluster che ha il centroide più vicino alla propria posizione. 3. Una volta che tutti i vettori sono stati assegnati ad un cluster, calcolare nuovamente la posizione dei k centroidi. 4. Ripetere i punti 2 e 3 finché i centroidi non si muovono più. I principali svantaggi dell algoritmo K-Means sono i seguenti: Non è specificato il modo in cui si possono inizializzare i centroidi. Un metodo popolare è quello di inizializzarli con valori casuali. Il risultato prodotto dipende dai valori d inizializzazione scelti per i centroidi. Una soluzione standard di questo problema è provare con un certo numero di inizializzazioni differenti Il risultato dipende dalla scelta del numero di clusters k. Lo svantaggio di maggior rilievo è l ultimo visto che non c è un metodo per trovare il numero ottimo di cluster, che valga in generale. Una semplice soluzione del problema può essere quella di eseguire l algoritmo con diversi valori di k e scegliere il miglior valore di k secondo certi criteri che definiscono la qualità della clusterizzazione. Bisogna stare molto attenti con questo approccio perché, aumentando il numero dei clusters k, la funzione di errore diminuisce per definizione ma aumenta il rischio di overfitting. Per fare un esempio, se il numero di elementi da clusterizzare è pari al numero di cluster, un risultato dell algoritmo di clustering che manda la funzione di errore a zero può essere quello in cui ogni elemento è centroide di un cluster. Tale soluzione manda la funzione di errore a zero, ma il risultato di questa clusterizzazione risulta inutilizzabile. 9

Apriori Sia I = { i 1, i 2,..., i n } un insieme di oggetti (ogni oggetto è fondamentalmente una etichetta, un valore categorico). Sia D un insieme di transazioni, dove ogni transazione T è un insieme di oggetti tale che T I. Si noti che il numero di volte che un oggetto appare in una transizione è ininfluente, cioè quello che conta è che un dato oggetto sia presente o meno nella transazione (ad esempio, quando si comprano 12 uova e 2 litri di olio, quello che veramente interessa è il fatto che si siano acquistati uova e olio). Ogni transazione è individuata da un codice identificatore. Indicando con un insieme di oggetti (itemset), si dice che la transazione T contiene se e solo se T. Una regola di associazione è una implicazione del tipo: Y, dove I, Y I e Y = Il supporto per la regola Y si ottiene dividendo il numero di transazioni che soddisfano tale regola per il numero totale di transazioni presenti nell'insieme D. La confidenza per la regola Y si ottiene dividendo il numero di transazioni che soddisfano tale regola per il numero di transazioni che contengono l'insieme. La confidenza indica la precisione della regola, cioè quante volte, essendo presente, è presente anche Y; il supporto invece indica l'importanza della regola rispetto alle dimensioni del database. Spesso è desiderabile rivolgere l'attenzione solo a quelle regole che hanno un supporto ragionevolmente alto. Le regole con confidenza e supporto elevati sono dette regole forti. Lo scopo di qualsiasi algoritmo per la scoperta di regole è essenzialmente quello di trovare regole forti in database di grandi dimensioni. Tale obiettivo di solito si raggiunge dividendo il problema in due passi: scoperta di large itemset, cioè di insieme di oggetti aventi supporto più elevato di un predeterminato supporto minimo smin (se un itemset ha supporto minimo, allora ogni sottoinsieme dell itemset ha pure supporto minimo) utilizzo dei large itemset per generare le regole di associazione. L'algoritmo Apriori è iterativo: ripete per un numero finito di volte (al massimo m-1, dove m è il numero di oggetti della transazione più grande) i due passi appena descritti. Ad ogni iterazione costruisce un insieme di large itemset candidati, conta il numero di occorrenze di ogni large itemset candidato tra le transazioni (ossia valuta il supporto di ognuno), determina i large itemset effettivi (quelli il cui supporto è maggiore del supporto minimo smin), estrae le regole da ogni large itemset. Tra tutte le regole ottenute da un large itemset si escludono quelle che non raggiungono una certa confidenza minima decisa in precedenza. 10

IMPLEMENTAZIONE Creazione del dataset Il programma ha inizio con la creazione di una matrice, inizialmente vuota, che ha per righe gli utenti (o istanze) per un totale di 4000, e per colonne i viaggi (o attributi) per un totale di 33; abbiamo pensato di suddividere gli utenti in 3 categorie: Avventuroso, Esotico, Montagna. Ogni categoria contiene 11 destinazioni specifiche, rappresentative della categoria di appartenenza. Prima di procedere al riempimento della matrice, il programma lancia per ogni utente un tiro random compreso tra 0 e 2 (poiché ci sono 3 categorie di viaggi): il risultato del lancio serve a determinare a quale gruppo appartenga l utente (0=Avventuroso, 1=Esotico, 2= Montagna). Successivamente ha inizio l effettivo riempimento della matrice con 1 e 0, dove 1 indica che l utente ha effettuato un viaggio in una destinazione, 0 che non lo ha effettuato. Per stabilire se un viaggio debba essere messo a 1 o a 0 viene eseguito anche in questo caso un tiro random, con numeri compresi tra 0 e 9, influenzato dal lancio precedente: se infatti un utente è risultato essere appartenente alla categoria Esotico, allora col 70% della probabilità i viaggi appartenenti alla categoria Esotico verranno messi a 1. Riportiamo un esempio parziale della matrice: Tibet Sahara Gobi Antartide Canarie Jamaica Maldive Cuba Cervino Stelvio Bormio Sestriere Utente A 1 1 1 0 0 0 1 0 1 1 0 0 Utente B 0 0 1 1 1 1 1 0 1 0 1 0 Utente C 1 0 1 0 1 0 1 0 1 0 1 1 Possiamo osservare che l utente A ha una predominanza di 1 nei viaggi appartenenti alla categoria Avventura, l utente B in quelli di tipo Esotico, l utente C nelle mete di tipo Montagna. Il passaggio seguente è la trasformazione del dataset in un file adatto a Weka; il processo avviene in 2 fasi: 1. introduzione di tutti gli attributi, ovvero dei nomi dei viaggi nella parte iniziale del file 2. sostituzione degli 1 e 0 con YES e NO, rispettivamente Questo procedimento è indispensabile, poiché gli algoritmi che andremo ad utilizzare sono di Weka; il dataset da processare deve quindi rispettare il suo standard. Per questo motivo il dataset in output è un file in formato.arff, le cui caratteristiche permettono a Weka di elaborarlo nelle fasi successive del programma. 11

Algoritmo K-Means Una volta che il dataset è pronto all utilizzo, nel programma vengono chiamate le funzioni di Weka che realizzano il K-Means. Tramite questo algoritmo intendiamo suddividere il dataset in 3 cluster, tante quante sono le categorie dei viaggi, al fine di creare gruppi più omogenei per quanto riguarda le preferenze sui viaggi; questo procedimento ci aiuterà poi ad ottimizzare i risultati dell applicazione dell algoritmo Apriori. Infatti andremo a creare 3 file distinti, su ognuno dei quali lanceremo l algoritmo Apriori. Abbiamo impostato il numero dei cluster a 3 ed il numero dei seed a 100, poiché in seguito a diversi tentativi questa scelta è risultata la più performante. Riusciamo infatti ad ottenere dei centroidi che risultano essere ideali ai nostri scopi, in quanto ci permettono di clusterizzare correttamente gli utenti come abbiamo potuto verificare nei test successivi; riportiamo di seguito i risultati ottenuti con Weka: Cluster 0 Mean/Mode: NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES YES YES YES YES YES YES YES YES YES YES Cluster 1 Mean/Mode: NO NO NO NO NO NO NO NO NO NO NO YES YES YES YES YES YES YES YES YES YES YES NO NO NO NO NO NO NO NO NO NO NO Cluster 2 Mean/Mode: YES YES YES YES YES YES YES YES YES YES YES NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO Possiamo osservare che otteniamo sequenze di 11 YES consecutivi per ogni cluster, caratteristica che ci permette di distinguere nettamente i 3 gruppi di utenti A partire da questi centroidi vengono clusterizzati tutti gli utenti del dataset; considerando i risultati finali, possiamo dire con un buon margine di sicurezza che la clusterizzazione avviene in maniera corretta per tutti (o almeno la maggior parte) degli utenti. Al termine dell esecuzione dell algoritmo abbiamo ottenuto i 3 cluster, che abbiamo etichettato come 0, 1, 2 in base alla similarità dei viaggi effettuati dagli utenti; per eseguire questa operazione di suddivisione Weka si basa sulla distanza euclidea. Una volta determinati i cluster il programma crea 3 distinti file (cluster0.arff, cluster1.arff, cluster2.arff), all interno dei quali gli utenti sono stati suddivisi in gruppi omogenei rispetto ai viaggi effettuati; la suddivisione viene effettuata in base al cluster di appartenenza con la quale l algoritmo ha etichettato ogni utente. La decisione di creare file distinti è dovuta al fatto che riteniamo che l algoritmo Apriori possa lavorare meglio su gruppi di utenti che hanno in comune mete simili; dovendo ricercare associazioni tra i viaggi, pensiamo sia più probabile che una persona faccia prevalentemente vacanze dello stesso genere: un utente che ha effettuato molti viaggi al mare continuerà a prediligerli rispetto a viaggi avventura o in montagna. Questa scelta ci ha permesso di implementare un recommender system che suggerisce mete più mirate rispetto ai gusti dell utente. 12

Tuttavia, per come abbiamo creato il dataset iniziale, questa scelta non esclude la possibilità che alcuni utenti, appartenenti ad un cluster a prevalenza di viaggi di tipo esotico, abbiano effettuato viaggi di tipo avventura o montagna. Algoritmo Apriori In questa fase, ognuno dei 3 file creati viene processato dall algoritmo Apriori al fine di creare regole associative tra viaggi appartenenti allo stesso cluster; con questo procedimento intendiamo trovare i sottoinsiemi di viaggi effettuati dagli utenti con supporto più elevato (large itemset). A differenza del K-Means, il numero delle che è possibile impostare è maggiore; di seguito specifichiamo quali abbiamo modificato rispetto a quelle di default: minmetric: considera solo le regole al di sopra di una determinata soglia (0.75 nel nostro caso) numrules: il numero di regole che l algoritmo cerca (1000) Al termine dell esecuzione vengono creati 3 file (Apriori0.txt, Apriori1.txt, Apriori2.txt) che contengono le regole rilevate dall algoritmo; i risultati sono ordinati in maniera decrescente rispetto al livello di confidenza. Le regole alle quali ci interesseremo saranno quelle che, nella parte a destra della freccia, hanno YES: considerando la regola 148, ad esempio, possiamo dire che se un utente è stato a Courmayeur e al Sestriere allora, con un livello di confidenza di 0.77 andrà anche a Cortina. 13

Inserimento viaggi La fase seguente comprende la selezione dei viaggi che un utente ha già effettuato: abbiamo inserito delle checkbox in una pagina html, dove possono essere selezionati uno o più viaggi. Nel momento in cui vengono messi i check, viene costruita una stringa di YES/NO in corrispondenza delle mete, al fine di compararla con le scelte effettuate dagli altri utenti presenti nel dataset. Il procedimento è semplice: dove la checkbox è segnata, viene messo YES, in tutti gli altri box lasciati non segnati viene messo NO. L effettiva creazione di questa stringa per il nuovo utente avviene quando si clicca sul bottone Procedi, posto in fondo alla pagina html. 14

Ricerca viaggi Una volta creata l istanza, questa viene confrontata con le istanze ottenute dall esecuzione dell algoritmo Apriori. Il meccanismo di confronto prende in ingresso la stringa creata in base ai checkbox segnati e ricerca, all interno del file.txt, le stringhe che più le sono simili. Più precisamente, il programma da noi implementato confronta gli YES presenti in entrambe le stringhe, effettuando così una prima selezione tra tutte le regole trovate dall algoritmo Apriori. Successivamente, per ogni stringa così trovata, viene ricercato un YES nella parte a destra della freccia: siamo infatti interessati ai viaggi che un utente potrebbe fare, non a quelli che non farà. Visualizzazione risultati L ultima fase si occupa di mostrare a schermo le stringhe rilevate dopo la ricerca: abbiamo pensato di ordinare i risultati prima in base alla similarità delle regole trovate dall algoritmo Apriori con la stringa inserita, e poi di ordinare i risultati così ottenuti in base al livello di confidenza; il criterio di similarità che abbiamo adottato confronta gli YES presenti nelle due stringhe in analisi, senza tenere conto dei NO. Abbiamo operato questa scelta poiché pensiamo sia più significativo che la meta proposta si basi sulle mete visitate, piuttosto che su quelle non visitate: il livello di confidenza, invece, viene calcolato dando egual peso agli YES e ai NO. 15

IL PROGETTO Il sistema descritto permette all utente di operare su strutture dati già esistenti ed ottimizzate per velocizzare la soluzione che viene proposta: riteniamo infatti che l utente finale sia poco propenso ad aspettare un tempo elevato per ottenere una risposta. L idea è che, una volta ottenuto il dataset, il lavoro di analisi ed elaborazione dei dati venga fatto a priori, e che l unico tempo di attesa debba essere quello necessario al confronto tra i viaggi effettuati dall utente e quelli effettuati dagli altri utenti. La fase iniziale della sessione internet prevede l inserimento, da parte dell utente, dei viaggi fino ad ora effettuati; questo procedimento è indispensabile per simulare i dati storici dell utente. Nel nostro caso proponiamo una pagina di checkbox rappresentativa dei viaggi inseriti nel dataset; bisogna quindi segnare tutti i viaggi che già sono stati compiuti. Questa operazione ha un duplice scopo: il primo è quello di cercare utenti che abbiano fatto viaggi simili, e fornire quindi il servizio di recommender system che ci siamo proposti di implementare; il secondo consiste nell evitare di proporre una meta che l utente abbia già visitato. Abbiamo effettuato questa scelta perché supponiamo sia più utile suggerire un luogo dove una persona non sia mai stata, piuttosto che un luogo già visitato: è più probabile che un utente abbia bisogno di essere consigliato rispetto ad una località che non conosce rispetto ad una già nota. Dopo aver selezionato i viaggi si preme il tasto Avvia la ricerca e dopo pochi secondi il sistema proporrà una serie di mete, ordinate in base alla similarità sopra descritta e al livello di confidenza. Per ogni destinazione viene visualizzata una foto della meta suggerita e vengono visualizzate informazioni riguardanti una particolare offerta per quello specifico viaggio, come numero di posti disponibili, il prezzo e la durata del soggiorno. 16

TEST Abbiamo fatto testare il prodotto finito a 10 utenti, diversi tra loro sia dal punto di vista anagrafico che di conoscenze di computer. Ad ognuno di essi abbiamo chiesto di effettuare una scelta tra le mete che il programma suggerisce e, in base ai risultati proposti, comunicarci quanto fossero soddisfatti. Riportiamo le informazioni essenziali dei tester e successivamente la tabella risultante in base al livello di soddisfazione in seguito alle prove effettuate. Utente 1: uomo, 59 anni, conoscenze informatiche discrete Utente 2: donna, 58 anni, conoscenze informatiche buone Utente 3: donna, 60 anni, conoscenze informatiche basse Utente 4: uomo, 65 anni, conoscenze informatiche discrete Utente 5: uomo, 25 anni, conoscenze informatiche buone Utente 6: uomo, 33 anni, conoscenze informatiche ottime Utente 7: donna, 42 anni, conoscenze informatiche ottime Utente 8: donna, 22 anni, conoscenze informatiche discrete Utente 9: donna, 51 anni, conoscenze informatiche buone Utente 10: uomo, 27 anni, conoscenze informatiche ottime Utente 1 Utente 2 Utente 3 Utente 4 Utente 5 Utente 6 Utente 7 Utente 8 Utente 9 Utente 10 Per niente Poco Abbastanza Molto Possiamo notare che la maggior parte degli utenti è sostanzialmente soddisfatta dei risultati proposti dal sistema, poiché questo propone scelte conformi ai gusti da loro espressi al momento della selezione viaggi già effettuati. Per quanto riguarda gli utenti meno soddisfatti, la motivazione deriva non tanto dalle mete proposte, quanto dal numero delle soluzioni che vengono visualizzate: avrebbero preferito una più vasta gamma di scelta. Per aumentare il numero di viaggi esposti basterebbe diminuire la soglia del livello di confidenza che abbiamo scelto in seguito ad alcune prove; tuttavia riteniamo che una soglia di 0,75 sia il minimo indispensabile per evitare di inserire anche viaggi che poco c entrano con i gusti della maggior parte degli utenti. 17