1 / 117

Tecniche di Clustering per dati con attributi di tipo categorico.

Tecniche di Clustering per dati con attributi di tipo categorico. _____ Seminario per il corso Data Mining e scoperta della conoscenza. _____. Prof.: Giuseppe Manco Ing.: Francesco Folino. Giovanni Ponti Matr.: 87662. Sommario. Introduzione.

Download Presentation

Tecniche di Clustering per dati con attributi di tipo categorico.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tecniche di Clustering per dati con attributi di tipo categorico. _____ Seminario per il corso Data Mining e scoperta della conoscenza. _____ Prof.:Giuseppe Manco Ing.: Francesco Folino Giovanni Ponti Matr.: 87662

  2. Sommario • Introduzione. • Algoritmi di clustering per attributi categorici. • Confronti e prestazioni. • Considerazioni personali. • Conclusione.

  3. Cos’è il Clustering • Il Clustering è uno dei problemi principali del data mining. • In linea generale, dato un dataset, il clustering si propone di individuare delle regioni distinte nelle quali raggruppare dati in modo che i dati all’interno di una stessa regione siano “simili” tra loro, mentre quelli in regioni differenti siano “dissimili” tra loro.

  4. Cos’è il Clustering • …più formalmente: • Sia D un dataset con attributi A1 , … , An che prendono valori dai domini D1 , … , Dn . Una tupla tD è un vettore (r1 , … , rn): ri Di , i = 1,…,n . • Sia inoltre d : D × D → + una misura della distanza (dissimilarità) tra vettori. • Fare Clustering indica il procedimento che trova una partizione (C1 , … , Ck) di D tale che • x  Ci : d(x , Mi) ≤ d(x , Mj) ,  i , j  {1,…,k} , j ≠ i dove Mi è il vettore rappresentativo del cluster Ci.

  5. Cos’è il Clustering Esempio di clustering basato su densità : Dataset D + + + + + + + + + + + + + + + + + + + + + + + + + + + Clustering C {C1 , C2 , C3 } + + + + + + + + + + + +

  6. Tipi di attributi Poiché il clustering si basa sul concetto di “vicinanza” e/o “similarità” per classificare ogni tupla di un dataset nell’apposito cluster, è importante distinguere tra due tipi di attributi che si possono incontrare: Numerico • Criterio di ordinamento già esplicato dall’attributo stesso. • Proprietà geometriche note e ben definite. • Distanza tra attributi con metodi classici (Euclidea, Manhattan,…) Attributi Categorico • Criterio di ordinamento non definibile a priori. • Proprietà geometriche sconosciute e soggettive. • Distanza tra attributi con metodi nuovi e non standard.

  7. Tipi di attributi - Esempio Attributi Numerici Dataset Autovetture Dataset Caratteri somatici Attributi Categorici Spesso in un dataset si possono trovare attributi di entrambi i tipi!!!

  8. Contesti in cui troviamo attributi di tipo categorico • Market basket databases (transactional data). • Management Analysis. Gli attributi categorici possono essere presenti nella maggior parte dei dataset e in particolare laddove risulti necessario utilizzare stringhe per rappresentare valori di uno o più attributi. Comunque, un’analisi più particolare degli attributi categorici viene effettuata nei seguenti contesti:

  9. Problemi per attributi categorici • Definire opportuni criteri di ordinamento nei domini degli attributi. • Definire nuovi criteri di “vicinanza” e/o di “similarità” tra i valori. Vista la particolare natura degli attributi di tipo categorico, è importante definire dei nuovi criteri per classificare correttamente tuple che presentano attributi di questo tipo. Infatti, i criteri utilizzati classificare attributi numerici non possono essere applicati agli attributi categorici. Quindi bisogna:

  10. Algoritmi di clustering per attributi categorici • Estensioni del k-means • k-modes • k-prototypes • ROCK • CLOPE • OPOSSUM • STIRR • CACTUS • CLICK • COOLCAT • LIMBO

  11. k-modes • Il più banale algoritmo di clustering per attributi categorici. • È un’estensione del ben noto algoritmo di clustering k-means. • Definisce una semplice misura per stabilire la dissimilarità tra attributi categorici.

  12. k-modes Formulazione generale del Problema: X = { X1 ,…, Xn } è il dataset composto da n oggetti. Xi = [ x1 ,…, xm ] è un oggetto generico del dataset su m attributi tutti con valori categorici. W è una matrice di partizionamento n × k, dove l’elemento wi,l vale 1 se l’oggetto Xi appartiene al Cluster l, 0 altrimenti. Q = { Q1 ,…, Qk } è l’insieme degli oggetti rappresentativi (mode) per i k cluster. Ogni Ql è un vettore [ ql,1 ,…, ql,m ]. d( Xi , Ql ) è una formula di calcolo della distanza tra due oggetti.

  13. k-means utilizza per il calcolo della distanza la distanza Euclidea quadratica. k-modes utilizza come distanza tra due oggetti il numero di mismatches tra gli attributi dei due oggetti. k-modes - distanza

  14. k-modes - moda • k-modes utilizza la moda come vettore rappresentativo di un set di oggetti. La moda è un vettore che minimizza la somma delle distanze di tutti gli oggetti di un cluster dalla moda stassa: Xl = { Xl,1 ,…, Xl,n } è l’insieme degli oggetti nel cluster l. Minimizzare Teorema : La funzione D( Xl , Ql ) è minimizzata se e solo se Dato un insieme Xl , la moda di quell’insieme viene calcolata calcolando la massima frequenza relativa per ogni attributo:

  15. k-modes - algoritmo • Scegliere i primi k oggetti iniziali come mode. • Scandire il dataset e assegnare ogni oggetto al cluster individuato dalla moda a lui più vicina e aggiornare la moda del cluster dopo ogni assegnamento. • Dopo aver assegnato ogni oggetto al suo cluster, ritestare la dissimilarità degli oggetti con le mode correnti. Se viene trovato un oggetto che risulti più vicino ad una moda di un cluster diverso dal suo, ricollocare l’oggetto nel nuovo cluster ed aggiornare le mode di entrambi i cluster, altrimenti STOP. • Ripetere il passo 3 fintanto che nessun oggetto ha cambiato cluster dopo una scansione completa degli oggetti del dataset. Complessità : O ( Tkn ) , come k-means L’algoritmo converge e trova la soluzione ottima in dipendenza dalla scelta dei primi k oggetti iniziali. Variante:Calcolare le frequenze di tutte le categorie di tutti gli attributi e memorizzarle in array in ordine decrescente sulla base delle frequenze. Assegnare così le prime k mode iniziali alle prime k categorie più frequenti. Procedere poi come l’argoritmo standard.

  16. k-modes – analisi dei risultati • Dataset : Soybean disease dataset. • 47 istanze, ognuna con 35 attributi categorici. • Ogni istanza rientra in una di quattro catagorie di malattie. In questo modo si ha che tre categorie di malattie hanno ognuna 10 istanze, mentre la quarta ne ha 17. • Per analizzare l’influenza dell’ordine delle istanze sono stati creati 100 dataset test ordinando in maniera random le istanze per ottenere diverse mode iniziali per il primo metodo di selezione.

  17. k-modes – analisi dei risultati Misclassification matrix - Dataset 1 Classi di malattie Misclassification matrix - Dataset 9 Tuple mal clusterizzate

  18. k-modes – analisi dei risultati Risultati dei 200 clustering Costo per ottenere i clustering Relazione tra il numero di classi nelle mode iniziali e il costo per ottenere i clustering Accuratezza del clustering : Errore del clustering :

  19. k-modes – scalabilità • Health insurance database (500000 records) Numero di tuple fisso (500000) Numero di clustering fisso (100) Tendenza di crescita lineare

  20. k-prototypes • k-modes può essere usato solo se tutti gli attributi hanno valori di tipo categorico. • Molto spesso però troviamo nei dataset reali presenza di attributi categorici e numerici insieme. • k-prototypes combina insieme k-means e k-modes in un unico algoritmo per clusterizzare oggetti con attributi di diverso tipo.

  21. k-prototypes Un oggetto Xidel dataset è descritto da [ A1 ,…, Ap , Ap+1 ,…, Am ] attributi, dove i primi p attributi sono di tipo numerico, mentre i restanti m-p sono di tipo categorico. La distanza tra due oggetti di questo tipo viene calcolata secondo la seguente formula: Distanza Euclidea Mismatch per attributi categorici γ è un peso per indicare quale termine deve pesare di più nel calcolo della distanza. Il Problema Generale diventa:

  22. k-prototypes – analisi dei risultati • Dataset: Credit approval dataset. • 690 istanze, ognuna descritte da 6 attributi numerici e 9 attributi categorici. 24 istanze eliminate perché contenenti attributi numerici nulli (l’algoritmo non funziona in queste condizioni). • Attributi numerici normalizzati nell’intervallo [0 , 1]. • Analisi al variare di γ. • Clustering in 2 classi. • Per analizzare l’influenza dell’ordine delle istanze sono stati creati 100 dataset test ordinando in maniera random le istanze per ottenere diverse mode iniziali per il primo metodo di selezione.

  23. k-prototypes – analisi dei risultati Accuratezza dei clustering ottenuti al variare di γ I Metodo Accuratezza dei clustering ottenuti al variare di γ II Metodo Considerazione: L’accuratezza rimane pressoché invariata per γ>1.3 . Ciò vuol dire che i gli attributi categorici dominano nel clustering.

  24. k-prototypes – scalabilità • Motor insurance database (500000 records) Numero di tuple fisso (500000) Numero di clustering fisso (100) Tendenza di crescita lineare

  25. k-prototypes – scalabilità Convergenza

  26. ROCK (RObust Clustering using linK) • Algoritmo gerarchico di clustering per dati di tipo transazionale (market basket databases). • Utilizza i link per clusterizzare e non il concetto di distanza classico. • Utilizza il concetto di vicinanza (neighbors) tra coppie di punti per determinare il numero di link tra due punti.

  27. ROCK - neighbors • I punti neighbors ad un altro punto sono quelli che si possono considerare “simili” a quel punto. • Data una funzione di similarità normalizzata nell’intervallo [0 , 1] ed un valore di soglia θ, due punti pie pj si definiscono neighbors se: sim(pi , pj ) ≥ θ La funzione di similarità scelta nello specifico è quella di Jaccard che calcola la similarità tra due transazioni Esempio T1 = { 1 , 3 , 4 , 7 } T2 = { 1 , 2 , 4 , 7 , 8 }

  28. link( pi , pj ) definisce il numero di “common neighbors” tra i punti pie pj . Più questo valore è alto, maggiore è la probabilità che questi due punti appartengano allo stesso cluster. Mentre il solo concetto di similarità fa un’analisi locale al problema, l’approccio basato sui link fornisce delle informazioni globali in quanto cattura l’informazione sui punti vicini ad ogni coppia di punti. {1,2,6} e {1,2,7} hanno 5 links {1,2,6} e {1,2,3} hanno 3 links ROCK - links C1 C2 Esempio: θ = 0.5

  29. ROCK – Funzione di valutazione Massimizzare Dividendo per il numero totale di link atteso tra coppie di punti del cluster Ci si riesce a prevenire il fatto che coppie di punti con basso numero di link appartengano allo stesso cluster perché assegnarli allo stesso cluster farebbe comunque incrementare il numero di link per quel cluster, ma la scelta sarebbe errata. Misura della bontà della fusione di due cluster : Numero atteso di cross-links tra i due cluster

  30. ROCK - Algoritmo Clustering Complessità : • Temporale : O(n2+nmmma+n2logn) • Spaziale : O(min{n2,nmmma}) mm = numero medio di link per punto ma = numero massimo di link per punto

  31. Mushroom dataset. 8124 tuple, 4208 commestibili e 3916 velenosi. θ = 0.8 Algoritmo tradizionale: Cluster non puri. Cluster di dimensioni uniformi. ROCK: Cluster puri, ben distinti. Cluster ad alta varianza tra loro e di dimensione varia ROCK - Prestazioni

  32. CLOPE(Clustering with LOPE) • Algoritmo di clustering per dati transazionali. • Particolarmente efficiente in presenza di database grandi e ad alta dimensionalità. • Basato su istogrammi e sull’incremento del rapporto Altezza/Larghezza Esempio : 5 transazioni {a,b} {a,b,c} {a,c,d} {d,e} {d,e,f} Clustering 1 Clustering 2 H/W=0.5 H/W=0.55 H/W=0.55 H/W=0.32

  33. CLOPE – Funzione di valutazione • Per definire una funzione di valutazione valida per un clustering C = {C1 , … , Ck }, soltanto l’altezza non porta a buoni risultati. Infatti i due clustering {{abc},{def}} e {{abcdef}} hanno la stessa altezza H=1. • Per evitare ciò si usa il concetto di gradiente di un cluster G(C)=H(C)/W(C)=S(C)/W(C)2 Funzione di Valutazione di un Clustering Repulsione. Valori grandi indicano che le transazioni che appartengono allo stesso cluster hanno molti items in comune. Valori piccoli sono usati per databases sparsi

  34. CLOPE - algoritmo Definizione del Problema: Dato un database D e un valore per r, trovare un clustering C che massimizzi il profitto su C con parametro r. Complessità Temporale: O( N × K × A) A = Lunghezza media di una transazione. N = numero di transazioni. K = numero massimo di clusters.

  35. CLOPE - prestazioni • Mushroom data set • r = 2.6 → 27 clusters → p = 8092 (un solo cluster con records misti). • r = 3.1 → 30 clusters → p = 8124 (clustering perfetto). • Paragoni con ROCK (θ=0.8): • ROCK trova 21 clusters dei quali uno solo con records misti (purity=8092). • CLOPE clusterizza un po’ peggio (27 clusters per gli stessi risultati di ROCK) ma ha un costo computazionale lineare sia in tempo che in spazio (ROCK è quadratico), il che lo rende particolarmente efficiente per databases grandi.

  36. OPOSSUM(Optimal Partitioning of Sparse Similarities Using Metis) • Algoritmo di clustering per dati transazionali. • Particolarmente indicato per Market-basket Analysis e per Managment Analysis. • Si basa sul partizionamento di un grafo pesato orientato. • Adatto per databases ad alta dimensionalità dei dati e ad alta sparsità.

  37. OPOSSUM - Notazioni • L’input dell’algoritmo è una matrice prodotti-clienti d × n. Una colonna xjd-dimensionale della matrice rappresenta i prodotti acquistati dal cliente j. xj Clienti Prodotti OPOSSUM estende la classica notazione booleana per trattare gli item nelle transazioni (presenza-assenza). La posizione xi,j indica il volume del prodotto i nella transazione j. ? Per volume non s’intende una semplice misura della quantità di quel prodotto, ma il valore monetario di quel prodotto in quella transazione. • Da questa matrice l’algoritmo genera il clustering assegnando ad ogni transazione un’etichetta λj in modo che transazioni simili abbiano la stassa etichetta. • Il criterio di similarità si basa su quello proposto da Jaccard ma riadattato per valori reali. In questo modo si ottengono risultati simili alla distanza Euclidea.

  38. OPOSSUM - criteri • OPOSSUM ottiene il clustering partizionando il grafo pesato orientato che si ottiene dalla matrice di similarità. • Si propone di ottenere quanto più possibile clusters di uguale importanza e di ugual misura. Per far ciò utilizza i seguenti criteri: • Ugual numero di transazioni. Ogni cluster dovrebbe contenere un ugual numero di transazioni n/k. Questo per dividere i consumatori in gruppi di dimensione uguale (consumer segmentation). Si assegna ad ogni transazione lo stesso peso wj=1. • Ugual valore. Il valore totale di ogni cluster dovrebbe essere quanto più uniforme a quello degli altri. Ogni cluster rappresenta quindi la k-esima frazione del valore totale del database . Si assagna ad ogni transazione xj un peso pari alla somma dei valori dei suoi prodotti

  39. OPOSSUMPartizionamento del grafo • Grafo G=<,> •  = nodi -transazioni (oggetti del dataset) •  = archi pesati w(a,b) = s( xa , xb ) . • Un set di archi che, rimuovendoli dal set iniziale, produce un partizionamento di G=<,> in k sottografi disgiunti Gl=<l ,l > è chiamato set separatore. • L’obiettivo dell’algoritmo è quello di trovare il set separatore minimo (con somma dei pesi minima). • I pesi sui vertici vengono normalizzati in modo che la loro somma sia 1. • Nel perseguire l’obiettivo set separatore minimo, bisogna anche rispettare il vincolo che impone che ogni cluster sia ben bilanciato (in base ai criteri definiti in precedenza).

  40. OPOSSUMAlgoritmo di partizionamento • Trovare il partizionamento ottimale è un problema NP-Hard. • Sono stati proposti diversi algoritmi per questa categoria di problemi che utilizzano euristiche per determinare la prossima scelta ottimale. • Minimum-cut problem: • Costruire un partizionamento iniziale dei vertici in maniera random o in base ad una specifica strategia risolutiva. • L’algoritmo muove i vertici verificando se la dimensione del taglio cresce o descresce se il vertice attuale viene spostato in un’altra partizione. • La decisione di spostare un vertice viene fatta sulla base di dove si trova la maggior parte dei suoi “vicini”: se questi si trovano nella sua partizione, allora il vertice rimane dov’è, altrimenti viene spostato. • In base a questa tecnica, la posizione di un vertice varia continuamente con il variare della posizione dei suoi vicini, il che comporta più scansioni del dataset prima di convergere all’ottimo locale. • Dopo varie analisi, si è deciso di usare in OPOSSUM la tecnica di partizionamento Metis perché si è dimostrata abbastanza veloce e abbastanza scalabile.

  41. OPOSSUM – Clustering ottimale • L’obiettivo è trovare un clustering ad alta qualità e con un numero di clusters il più basso possibile. • Bisogna massimizzare la similarità intra-cluster e minimizzare quella inter-cluster. Quality measure Inoltre, per avere un alto valore di qualità Г del clustering e in contempo un basso numero di clusters k, si utilizza una nuova funzione Л [0 , 1] che è il prodotto della funzione Г per un termine di penalità, che tiene conto del numero di tuple da clusterizzare e del numero di clusters ottenuti. Esempio :

  42. OPOSSUM - Scalabilità • Il calcolo della matrice di similarità è la parte più costosa in OPOSSUM, molto più che il partizionamento del grafo in quanto viene fatto il confronto di tutte le coppie di oggetti, il che porta ad avere un costo computazionale O(n2· d). • In pratica, vista la sparsità, il calcolo della matrice si riduce ad O(n2). • Tuttavia, un opportuno pre-processing dei dati riesce a ridurre il tempo di esecuzione dell’algoritmo: • Pre-segmentazione dei clienti in aree geografiche o per classi sociali (coarse clustering). La complessità diventa O(Σi ni2), dove ni è la dimensione del segmento i. • Se non è possibile fare pre-segmentazione, si può ottimizzare l’algoritmo prendendo solo alcuni campioni rappresentativi del dataset. • La complessità dell’algoritmo di partizionamento METIS è essenzialmente determinata dal numero di archi del grafo, mentre scala linearmente nel numero dei clienti. Ci sono due approcci per ridurre il numero di archi: • Vengono inseriti solo quegli archi il cui peso supera una certa soglia opportunamente stabilita. • Si rimuovono alcuni archi di un nodo verso i suoi vicini mantenendo soltanto quelli con peso più alto.

  43. OPOSSUM - Risultati • Dataset di transazioni di 21672 clienti di una farmacia. • A scopo illustrativo, sono stati scelti in maniera random 2500 clienti, per un totale di 33814 transazioni in un tempo di tre mesi. • È stata fatta una gerarchia dei prodotti e sono stati ottenuti 1236 categorie. • Sono stati ulteriormente eliminati prodotti il cui ricavato totale fosse <25$. • Alla fine si è arrivati a 2466 clienti (n) e 762 prodotti (d). • Per analizzare i risultati di OPOSSUM è stato utilizzato CLUSION, un tool di visualizzazione per cluster.

  44. OPOSSUM - Risultati Matrice di Sparsità k-means binary Jaccard OPOSSUM: • Clusters più compatti (separazione più netta tra regioni fuori e dentro la diagonale) • Clusters più bilanciati OPOSSUM Sample Balanced OPOSSUM Value Balanced

  45. OPOSSUM - Risultati Valori della qualità Лdel clustering al variare del numero di clusters k Punti di tre cluster trovati da OPOSSUM in una rappresentazione 2D definita dai centroidi Si nota la separazione netta dei tre clusters secondo una seplici funzioni di discriminazione lineari Valore di k in corrispondenza del quale si verifica la il valore massimo di Л

  46. STIRR(Sieving Through Iterated Relational Reinforcement) • Algoritmo di clustering che si basa sulla propagazione iterativa dei pesi sui valori categorici in una tabella. • La tecnica facilita la definizione di una misura di similarità basata sulla co-occorrenza dei valori nel dataset. • Questa tecnica mostra una chiara connessione tra le tabelle dei dati categorici e i sistemi dinamici non lineari, definendo quindi una varietà di algoritmi di clustering matematicamente chiari e senza parametri arbitrari. • Inoltre, STIRR definisce una tecnica di partizionamento spettrale di grafi molto efficace, che riduce complessità di questi problemi dovuti alla loro intrinseca natura combinatoria.

  47. STIRR - Introduzione • L’obiettivo dell’algoritmo è quello di produrre un sistema dinamico a partire da una tabella di dati categorici. T è il dataset contenente le tuple. • Una tabella è composta da un insieme di k colonne (attributi), ognuna che prende valori da un proprio dominio. • Ogni possibile valore in ogni colonna viene rappresentato nel grafo con un nodo. Una tupla sarà allora composta da un insieme di nodi, uno per ogni colonna. Grafo Tabella

  48. STIRR – Weight-Propagation • Una configurazionew è un assegnamento di un peso wv ad ogni nodo v del grafo. I pesi verranno poi normalizzati in modo che la somma dei pesi quadratici sia 1. • Un Sistema Dinamico è un’applicazione ripetuta di una funzione f su un set di valori. Un Punto Fisso di un Sistema Dinamico è una configurazione w per la quale vale che f(w)=w. • Funzione Combinatoria. • Esempi di possibili scelte per : • Prodotto (w1 ,…, wk)=w1· w2 · · · wk • Somma (w1 ,…, wk)=w1+w2 +· · · + wk • Combinazione lineare Sp(w1 ,…, wk)=(w1p+· · · + wkp)(1/p) • Combinazione lineare limite S∞(w1 ,…, wk)=max (w1 ,…, wk) Esempio di f È dimostrato che il sistema converge e arriva ad un punto fisso stabile o ad una soluzione che cicla su un insieme finito di valori. Questa configurazione finale prende il nome di bacino.

  49. STIRR – Bacini • Gli algoritmi che si basano su aspetti spettrali per partizionare grafi per problemi di clustering fanno uso degli autovettori non-principali. • Per trovare gli autovettori di un sistema lineare Ax=λx il metodo mantiene un set di autovettori ortonormali x<j> che ad ogni iterazione vengono prima aggiornati e poi opportunamente ripristinati ad essere ortonormali. • In maniera analoga si può fare nel caso del grafo, mantenendo una serie di configurazioni w<1>,…,w<m> e ad ogni passo fare le seguenti operazioni : • Aggiornare w<i>←f(w<i>) ,  i=1,…,m • Aggiornare il set di vettori {w<1>,…,w<m>} in modo che siano ortonormali. • L’iterazione su ogni w<i> avviene secondo quanto detto in precedenza. Questo porta ad avere una serie di bacini (configurazioni stabili) e la prima di queste prende il nome di Bacino Principale, mentre le altre si chiameranno Bacini non-principali. • I Bacini non-principali forniscono informazioni strutturali sui dati, proprio come gli autovettori non principali danno informazioni per il partizionamento spettrale di grafi. • Più nello specifico, per mantenere il set di configurazioni {w<1>,…,w<m>} ortonormali è necessario inserire pesi negativi nelle configurazioni. In ogni bacino, nodi con valori positivi grandi e nodi con valori negativi grandi rappresentano regioni dense distinte tra i dati, con poche connessioni tra loro.

  50. STIRR – Scelte e modifiche Scelta della configurazione iniziale • Semplicemente, si possono scegliere i pesi in maniera uniforme (tutti uguali ad 1 e poi normalizzati). • Oppure, possiamo sceglierli in maniera random (valori [0,1] e poi normalizzati). • Bisogna però tener conto del fatto che la funzione combinatoria è molto sensibile alla scelta della configurazione iniziale. Masking • Per aumentare o diminuire l’influenza di alcuni nodi, è possibile applicare una serie di modifiche locali alla funzione f. • Ad esempio, possiamo comporre la funzione f con la funzione mask(v), che setta a 0 il peso del nodo v alla fine di ogni iterazione. • In maniera simile, possiamo comporre f con augment(v,x), che incrementa il peso del nodo v di una quantità x>0.

More Related