In questo articolo mostreremo come è stato usato l\'approccio degli algoritmi genetici per l\'ottimizzazione della distribuzione dei link all\'interno di siti web per massimizzare il rank medio delle singole pagine web.
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Utilizzo Di Algoritmi Genetici In Ambito Seo
1. Utilizzo di algoritmi genetici in ambito SEO ( Search Engine
Optimization )
In questo articolo mostreremo come è stato usato l'approccio degli algoritmi genetici per
l'ottimizzazione della distribuzione dei link all'interno di siti web per massimizzare il rank medio
delle singole pagine web.
Iniziamo spiegando come si comporta un algoritmo di link analysis ranking (LAR), i quali sono
molto utilizzati dai motori di ricerca per effettuare l' ordinamento (o ranking) delle pagine web.
Esso inferisce importanza a una pagina web basandosi sulla struttura topologica del grafo, estratto
analizzando i collegamenti ipertestuali del sito in esame, percorrendolo ed analizzandone gli archi
uscenti e gli archi entranti, ovvero, link uscenti e link entranti delle pagine che compongono il
grafo.
Sulla base di queste informazioni viene associato un valore ad ogni pagina, che verrà poi usato per
l'ordinamento.
Il predecessore degli algoritmi di link analysis ranking è InDegree che calcola la popolarità di una
pagina prendendo in considerazione il numero di pagine che hanno un link ad essa. Algoritmi più
recenti e maggiormente raffinati sono:
PageRank
•
Kleinberg (in seguito intitolato HITS)
•
Salsa
•
PageRank segue un percorso casuale nel grafo del web, dove ogni pagina propaga il proprio peso alle
pagine verso cui ha un link, determinando un array di pesi nominati in seguito pesi di authority.
L'algoritmo completo per il calcolo del PageRank fa ricorso all'uso della teoria dei processi di
Markov.
Kleinberg propone uno schema di propagazione dei pesi a due livelli, determinando i valori di
authority e anche i valori di hub. Una pagina con alto valore di hub, sarà una pagina che contiene
collegamenti a pagine di qualità (ossia con alto valore di authority) e simmetricamente una pagina con
un alto valore di authority, sarà un pagina puntata da molti buoni hub.
Salsa è un ibrido fra i due algoritmi precedenti.
Per approssimare questi algoritmi prenderemo in considerazione la formula inizialmente sviluppata
dai fondatori di Google.
Rank[A] = ( 1 - d ) + d (Rank[P1] / Link[P1] + ..... + Rank[Pn] / Link[Pn] )
Rank[A] è il valore di Rank della pagina A che vogliamo calcolare
•
P[1]...P[n] sono le pagine che contengono almeno un link verso A
•
Rank[P1] ... Rank[Pn] sono i valori di Rank delle pagine P1 ... Pn
•
Link[T1] ... Link[Tn] sono il numero complessivo di link contenuti nella pagina che offre il
•
link
d (damping factor) è un fattore deciso da Google che nella documentazione originale assume
•
valore 0,85. Può essere aggiustato da Google per decidere la percentuale di PageRank che
deve transitare da una pagina all'altra e il valore di Rank minimo attribuito ad ogni pagina in
archivio.
2. Gli algoritmi in questione sono ovviamente molto più complessi ed il nostro scopo non è quello di
replicarli fedelmente, ma di ottenere un modello matematico che riesca ad approssimarli per ottenere
un quot;Nostroquot; valore di Rank che ci permetta di stabilire la bontà della struttura topologica calcolata
dall'algoritmo genetico dopo che è stato applicato.
Facciamo adesso una panoramica sugli algoritmi genetici.
L'algoritmo genetico è un algoritmo di analisi dei dati e appartiene a una particolare classe di
algoritmi utilizzati in diversi campi, tra cui l'intelligenza artificiale. È un metodo euristico di ricerca
ed ottimizzazione, ispirato al principio della selezione naturale di Charles Darwin che regola
l'evoluzione biologica.
Principi di funzionamento
Un tipico algoritmo genetico parte da un certo numero di possibili soluzioni (individui) chiamate
popolazione e provvede a farle evolvere nel corso dell'esecuzione: a ciascuna iterazione, esso opera
una selezione di individui della popolazione corrente, impiegandoli per generare nuovi elementi della
popolazione stessa, che andranno a sostituire un pari numero d'individui già presenti, e a costituire in
tal modo una nuova popolazione per l'iterazione (o generazione) seguente. Tale successione di
generazioni evolve verso una soluzione ottimale del problema assegnato.
L' evoluzione viene ottenuta attraverso una parziale ricombinazione delle soluzioni, ogni individuo
trasmette parte del suo patrimonio genetico ai propri discendenti. L'introduzione di mutazioni casuali
nella popolazione di partenza, genera sporadicamente nuovi individui, con caratteristiche non
comprese tra quelle presenti nel corredo genetico della specie originaria.
Finita la fase di evoluzione, la popolazione generata ad ogni iterazione, viene analizzata e vengono
tenute solo le soluzioni che meglio risolvono il problema: gli individui con le qualità più adatte
all'ambiente in cui si trovano hanno maggiori possibilità di sopravvivere e riprodursi. Queste
soluzioni subiranno una nuova fase di evoluzione e così via.
Alla fine ,ci si aspetta di trovare una popolazione di soluzioni, che riescano a risolvere adeguatamente
il problema posto. Non vi è modo di decidere a priori se l'algoritmo sarà effettivamente in grado di
trovare una soluzione accettabile. Di norma gli algoritmi genetici vengono utilizzati per problemi di
ottimizzazione per i quali non si conoscono algoritmi di complessità lineare o polinomiale.
Dettaglio del funzionamento
La soluzione del problema viene codificata in una struttura dati, di solito una stringa, detta gene.
Inizialmente viene creato un certo numero di geni in maniera casuale e si definisce una funzione che
restituisca la quot;bontàquot; di un gene come soluzione del problema, detta funzione di fitness.
L'algoritmo consiste nell'applicazione di operazioni, che tendono a modificare la popolazione dei
geni, nel tentativo di migliorarli in modo da ottenere una soluzione sempre migliore.
L'evoluzione procede quindi in passi, per ognuno di questi viene per prima cosa eseguito un
ordinamento dei geni sulla base del risultato della funzione di fitness. Vengono poi eseguite le
operazioni su un numero di geni stabilito dai parametri dell'algoritmo, che in generale determinano
quanti geni devono subire crossover e mutazioni, e in quale misura.
3. L'algoritmo evolve quindi attraverso i seguenti punti:
generazione, in maniera casuale di una popolazione iniziale;
•
creazione di una sequenza di nuove popolazioni, o generazioni. In ciascuna iterazione, gli
•
individui della popolazione corrente sono usati per creare la generazione successiva e, a
questo scopo, si compiono degli ulteriori passi:
•
Ciascun membro della popolazione corrente è valutato calcolandone il rispettivo
o
valore di fitness (idoneità);
o Si determina un opportuno ordinamento di tali individui sulla base dei valori di fitness;
o Gli individui più promettenti sono selezionati come genitori;
o A partire da tali individui si genera un pari numero di individui della generazione
successiva, e ciò può avvenire secondo due modalità distinte, vale a dire effettuando
cambiamenti casuali su un singolo genitore (mutazione) oppure combinando
opportunamente le caratteristiche di una coppia di genitori (incrocio);
o Gli individui così generati vanno a sostituire i genitori consentendo la formazione
della generazione successiva;
Infine, l'algoritmo s'interrompe quando uno dei criteri d'arresto è soddisfatto.
•
In base a un coefficiente stabilito inizialmente, alcune parti dei geni risultati migliori vengono
scambiate, nell'ipotesi che questo possa migliorare il risultato della funzione di fitness nel successivo
quot;passo evolutivoquot;.
Single point crossover
Ci sono varie tecniche di crossover. Una delle più semplice è la quot;single point crossoverquot; che consiste
nel prendere due individui e tagliare le loro stringhe di codifica in un punto a caso. Si creano così due
teste e due code. A questo punto si scambiano le teste e le code, ottenendo due nuovi geni. Il
crossover non è applicato sempre, ma con una probabilità pc. Nel caso in cui non viene applicato i
figli sono semplicemente le copie dei genitori.
Sperimentalmente si può vedere che il miglioramento diventa apprezzabile solo dopo un certo numero
di passi. Questo a meno di casi fortunati, ovviamente.
Mutazione
La mutazione consiste nella modifica casuale di alcune parti dei geni con valore di fitness più basso,
in base a coefficienti definiti inizialmente. Queste modifiche puntano a migliorare il valore della
funzione per il gene in questione.
In realtà non è corretto pensare di mutare solo i cromosomi con fitness più bassa; al fine di garantire
una maggiore capacità esplorativa dell'algoritmo (e non finire in quot;buchequot; di ottimo locale) sono
ritenute utili anche le mutazioni di cromosomi con valore di fitness alto. In definitiva le mutazioni
servono soprattutto a esplorare lo spazio di ricerca, non hanno quindi scopo migliorativo.
4. L'applicazione
Un sito web è a tutti gli effetti un grafo. Ed è al grafo del sito in esame che applicheremo l' algoritmo
genetico.
La rappresentazione utilizzata è quella per matrice di adiacenza.
La matrice delle adiacenze costituisce una particolare struttura dati comunemente utilizzata nella
rappresentazione dei grafi. In particolare è ampiamente utilizzata nella stesura di algoritmi che
operano su grafi e in generale nella loro rappresentazione informatica.
Dato un qualsiasi grafo la sua matrice delle adiacenze è costituita da una matrice binaria quadrata che
ha come indici di righe e colonne i nomi dei vertici del grafo. Nel posto (i,j) della matrice si trova un
1 se e solo se esiste nel grafo un arco che va dal vertice i al vertice j, altrimenti si trova uno 0.
Se al posto degli 1 nella matrice si trovano dei numeri, questi sono da interpretare come il peso
attribuito a ciascun arco. Ad esempio se l'insieme dei vertici del grafo rappresenta una serie di punti
su una cartina geografica, il peso degli archi può essere interpretato come la distanza dei punti che
questi connettono. Nel nostro caso indicherà la quantità di link.
Nel caso della rappresentazione di grafi non orientati, la matrice è simmetrica rispetto alla diagonale
principale.
Una delle caratteristiche fondamentali di questa matrice è di permettere di ottenere il numero dei
cammini da un nodo i ad un nodo j che devono attraversare n nodi. Per ottenere tutto ciò è sufficiente
fare la potenza n-sima della matrice e vedere il numero che compare al posto i,j.
Come precedentemente spiegato un gene è una stringa binaria, quindi una sequenza di 0 ed 1. L'idea
che sta alla base di questo algoritmo è che anche una matrice può essere vista come una stringa
binaria e quindi un gene. Se vogliamo infatti accedere all'elemento nella posizione X, Y di una
matrice organizzata come stringa, basta applicare la seguente formula:
Value(x,y) = Matrix[ (x+matrixsize) * y]
Applicando quindi un algoritmo genetico al grafo del sito in esame è possibile ottenere una migliore
struttura topologica che migliora il rank delle singole pagine.
Sono stati studiati ed implementate altri processi di evoluzione oltre quello di crossover
precedentemente spiegato, appositamente pensati per la problematica SEO.
La funzione di fitness è abbastanza complessa e tra i parametri che prende in considerazione ci sono il
rank medio delle pagine obiettivo, il numero di link medio per pagina e numero di pagine nulle.
Le pagine obiettivo sono quelle pagine del sito che sono di nostro particolare interesse. Tipicamente
nella maggior parte dei casi si tratta delle pagine di foglia.
Per pagina nulla si intende una pagina con valore di rank pari a 0.15 ( si deduce facilmente dalla
formula di rank sopra citata), oppure dal valore stabilito dall'utente.
5. L'algoritmo è in grado di tenere conto anche dei vincoli editoriali e di evolversi in funzione di essi.
I risultati
A seguito i risultati dell' applicazione dell'algoritmo genetico sul sito: http://www.fratellileonelli.it
Potete vedere la rappresentazione 3D del grafo prima e dopo il processo. La dimensione delle sfere
verdi indica il valore di rank delle pagine, mentre gli archi sono rappresentati in viola.
Prima l'applicazione
Dopo l'applicazione
Si nota a colpo d'occhio la sostanziale differenza tra prima e dopo il trattamento. Le sfere ( Le singole
pagine web ) hanno un diametro più ampio, che significa maggiore rank.
Prima dell' applicazione dell'algoritmo genetico
Url Rank
/ 20,869984
/come-raggiungerci/ 1,923949
/foto/ 3,078781
/eventi/ 1,982173
/progettazione/ 20,345295
/realizzazione/ 20,464703
/manutenzione/ 20,574158
/potatura/ 20,674488
/erbacee-perenni/ 29,898375
/arbusti/ 26,296431
/foto/azienda-florovivaistica-leonelli-0001/ 0,215424
/foto/azienda-florovivaistica-leonelli-0002/ 0,215424
/foto/azienda-florovivaistica-leonelli-0003/ 0,215424
/foto/azienda-florovivaistica-leonelli-0004/ 0,215424
/foto/azienda-florovivaistica-leonelli-0005/ 0,215424
/foto/azienda-florovivaistica-leonelli-0006/ 0,215424
/foto/azienda-florovivaistica-leonelli-0007/ 0,215424
/foto/azienda-florovivaistica-leonelli-0008/ 0,215424
/foto/azienda-florovivaistica-leonelli-0009/ 0,215424
/foto/azienda-florovivaistica-leonelli-0010/ 0,215424
8. Le pagine che sono presenti nel menù come è facile immaginare sono quelle con maggiore rank, sia
prima che dopo. Tuttavia il loro rank è stato abbassato in favore delle pagine obiettivo.
Ovviamente questo comportamento può essere pilotato in base alle esigenze. In questo particolare
caso per il cliente era importante aumentare il rank delle pagine che contengono la descrizione della
pianta, di conseguenza, l' algoritmo si è evoluto in questa direzione.
A seguito potete vedere come sono stati posizionati i link aggiuntivi calcolati dal processo:
Sebastiano Galazzo
18 novembre 2008
sebastiano.galazzo@gmail.com