210 likes | 326 Views
Raymond Chi-Wing Wong , Ada Wai-Chee Fu, Jian Pei, Yip Sing Ho, Tai Wong , Yubao Liu. Efficient Skyline Querying with Variable User Preferences on Nominal Attributes. Gruppo 3 Alessandro Cangini (Relatore) Marco Casadio Valerio Sandri. Scenario .
E N D
Raymond Chi-WingWong, Ada Wai-Chee Fu, Jian Pei, YipSing Ho, Tai Wong, YubaoLiu Efficient Skyline QueryingwithVariableUserPreferences on NominalAttributes Gruppo 3 Alessandro Cangini (Relatore) Marco Casadio Valerio Sandri
Scenario • Le attuali tecniche di valutazione dello skyline si basano sull’ordinamento fisso degli attributi. • Esistono attributi il cui ordinamento non è prefissato e varia da utente a utente. • E’ il caso degli attributi nominali.
Scenario • Assumiamo che un’auto sia universalmente migliore quanto inferiore è il prezzo e superiore la cilindrata. • Questo non vale per gli attributi Colore e Alimentazione. • Consideriamo, per ora, solo preferenze sull’attributo colore. Preferenze del genere si dicono preferenze implicite
Scenario - Esempio • Consideriamo le tuple: • Se consideriamo solo gli attributi numerici: • A > B, in quanto ha minore prezzo e maggiore cilindrata • Tuttavia se consideriamo una preferenza del tipo • I.e. una macchina Verde e’ preferibile ad una Nera • A non domina più B in quanto e’ preferibile per Prezzo e Cilindrata, ma non per Colore. Come Facciamo??? Verde > Nero
Definizione Del Problema • Gli algoritmi tradizionali (tipo BBS) non sono applicabili: la funzione distanza, in questo caso, non è calcolata solamente su attributi numerici. • Primo approccio: determinare gli skyline di tutte le possibili preferenze implicite. • Numero di tutte le possibili preferenze implicite proporzionale a: • Es. con 3 ( = m’ ) attributi nominali ognuno dei quali ha 40 ( = c ) possibili valori. Il numero totale di preferenze implicite è nell’ordine di 109. • Problema: Trovare un modo efficiente di calcolare gli skyline su attributi nominali con preferenze utente variabili. O((c*c!)m’ )
Andiamo oltre… • Un primo tentativo è stato quello di adattare qualcosa di già esistente. Algoritmi quali BBS e NN richiedono, ad ogni nuova preferenza implicita, una generazione di un indice sull’attributo categorico sul quale l’algoritmo lavora. • Es. Supponiamo di avere 10.000 query con preferenze implicite. Per ognuna di esse bisogna calcolare l’indice. Troppo oneroso!!!
SFS (Sort-First-Skyline) • E’ un algoritmo nel quale tutte le tuple sono ordinate con una funzione f di preferenza in base a un loro punteggio e lo skyline viene ricavato sulla base di tale ordinamento. • Es. f come somma di tutte le dimensioni di un punto. • Vale solo per attributi numerici totalmente ordinati. • Se possiamo sfruttare la possibilità di variare i valori dei punteggi in base alle preferenze implicite, non abbiamo costi aggiuntivi in pre-processing e possiamo sfruttare solo raffinamenti sulle preferenze implicite e non più sugli attributi numerici.
SFS - ADAPTIVE • Calcolo dello skyline senza preferenze implicite • Calcolo del punteggio per ogni punto dello skyline HOW TO: per ogni valore dell’attributo “Colore” si calcola uno skyline. Lo skyline totale si ottiene dall’unione degli skyline parziali Punteggio calcolato come: Prezzo + (1800 – Cilindrata) + |Colore| Monotonicità Un’auto è ora più preferibile se Prezzo e Cilindrata sono inferiori.
SFS - ADAPTIVE Per ogni nuova query occorrono (1)una nuova modifica del ranking; O(n) (2)un nuovo ordinamento; O(n*log n) (3)un nuovo check di dominanza. O (n2) PROBLEMA: non scalabilità a fronte di skyline grandi ed alto numero di query… • Modifica del ranking in base ad una preferenza implicita e si ordina per valori crescenti di score. • Si applica SFS coi valori modificati • Poiché b > g, si elimina g; lo skyline risultante è { a,b,c,h } Query: N > A > * INFATTIBILE!!! N = 2 , A = 1 e si ricalcola il punteggio IT WORKS!
IPO – tree: Presentazione (ImplicitPreferenceOrder) • Idea di base: memorizzare alcuni risultati parziali che, combinati tra loro, generino il risultato richiesto. • Come? IPO – tree: albero che memorizza risultati per certe combinazioni di preferenze implicite. • Come lo usiamo? Esiste la possibilità di dividere la query in sotto-query più semplici e di trovare i relativi skyline. Questi risultati parziali saranno poi composti per formare il totale.
E con preferenze del tipo “N > A > *” ?? IPO – tree: Costruzione S:{a,b,c,e,f,g,h} Root N > * A = {} R > * A = {} V > * A = {} A > * A = {} Φ A = {} … … G > * D > * B > * Φ G > * D > * B > * Φ … … A = {e,f,g} A = {e,f} A = {g} A = {e,f,g} A = {e,f} A = {e,f} A = {} A = {e,f} 2.Ad ogni livello dell’albero ci sono i nodi relativi alle preferenze implicite di solamente un attributo (inclusa la preferenza nulla Φ). 1.Per ogni combinazione dei valori degli attributi categorici si calcola lo skyline sugli attributi numerici e questo si inserisce nella radice. 3. Le foglie contengono le tuple “squalificate” dallo skyline della radice per quella combinazione di preferenze implicite
IPO – tree: Proprietà di merge • Date due preferenze implicite su uno stesso attributo categorico e i rispettivi skyline • v1 > v2 > … > vx-1 > * e SKY1 • vx > * e SKY2 Lo skyline relativo alla preferenza implicita v1 > v2 > … > vx-1 > vx > * (indicato con SKY3) si calcola come SKY3 = (SKY1 ∩ SKY2) ∪ PSKY1 dove PSKY1 è l’insieme dei punti di SKY1 che hanno valori in v1, … , vx-1 (quelli esplicitati nella preferenza implicita) • Oss: La definizione è ricorsiva su (1).
IPO – tree: Proprietà di merge • Es. Consideriamo le preferenze sul colore di Chris Molto Bene!!! N > A > * N > A > R > * / \ N > A > * R > * / \ N > * A > * N > * SKYN = {a,b,c,h} PSKYN = {a,b} A > * SKYA = {a,b,c,g,h} IT WORKS!!! (SKYN ∩ SKYA) ∪ PSKYN = {a,b,c,h} Come la mettiamo con le mie preferenze?!
IPO – tree: Applicazione del merge S:{a,b,c,e,f,g,h} S:{a,b,c,e,f,g,h} Root N > * R > * V > * A > * Φ G > * D > * B > * Φ G > * D > * B > * Φ A = {e,f,g} A = {e,f} A = {g} A = {e,f} A = {e,f} A = {} A = {e,f} A = {e,f,g} N > *, B > * A > *, B > * N > A > *, B > * SKY1 = {a,b,c,e,f,h} PSKY1 = {e} SKY2 = {a,b,c,e,f,g,h} MERGE: SKY3 = {a,b,c,e,f,h}
IPO – tree: Dimensione • L’albero così creato ha un numero di nodi proporzionale a: • Es. con 3 ( = m’ ) attributi nominali ognuno dei quali ha 40 ( = c ) possibili valori. Il numero totale di nodi è nell’ordine di 104. • Oss: la generazione di tutte le preferenze implicite e’ nell’ordine di 109. O(cm’ ) Che risparmio!!!
Risultati Computazionali • Misuriamo l’efficienza confrontandola con SFS-A su di un Dataset Reale (Nursery Datasetfrom UCI MachineLearningRepository) in termini di: • Memoria impiegata. • Costo temporale in fase di preparazione (preprocessing) • Costo temporale in fase di esecuzione (querytime) • Parametri di Riferimento: • DB Size • Numero di attributi non nominali • Ordine delle preferenze implicite delle query
Risultati Computazionali • Misuriamo l’efficienza in termini di • Memoria impiegata • Costo temporale in fase di preparazione (preprocessing) • Costo temporale in fase di esecuzione (querytime) Storage (MB) DB size • Numero di attributi non nominali • Ordine delle preferenze implicite delle query
Risultati Computazionali • Misuriamo l’efficienza in termini di • Memoria impiegata • Costo temporale in fase di preparazione (preprocessing) • Costo temporale in fase di esecuzione (querytime) QueryTime (s) DB size • Numero di attributi non nominali • Ordine delle preferenze implicite delle query
Risultati Computazionali • Misuriamo l’efficienza in termini di • Memoria impiegata • Costo temporale in fase di preparazione (preprocessing) • Costo temporale in fase di esecuzione (querytime) Pre-ProcessingTime (s) DB size • Numero di attributi non nominali • Ordine delle preferenze implicite delle query
Conclusioni e Sviluppi Futuri • A fronte di una maggiore costo in fase di pre-processing e in termini di memoria impiegata, si hanno notevoli miglioramenti a run-time • Maggiore efficienza! • Sviluppi futuri: • Aggiornamento IPO-tree; • Studio di metodologie alternative (introdurre negli attuali algoritmi di skyline il concetto di attributo nominale qualora ne siano sprovvisti).
Gruppo 3 - FINE • Alessandro Cangini (Relatore) • Marco Casadio • Valerio Sandri