Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


DATA ANALYTICS - Appunti completi delle lezioni, Dispense di Probabilità e Statistica

Appunti completi e accuratamente organizzati che raccolgono tutti i contenuti principali del corso di Data Analytics, offrendo una panoramica chiara e approfondita delle metodologie e degli strumenti utilizzati per analizzare, interpretare e valorizzare i dati. Il materiale è pensato per facilitare lo studio, il ripasso e la preparazione dell'esame, grazie a una struttura schematica e facilmente consultabile.

Tipologia: Dispense

2025/2026

In vendita dal 09/06/2026

Silviiamaffii
Silviiamaffii 🇮🇹

10 documenti

1 / 56

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
DATA ANALYTICS
INTRODUZIONE AGLI ALGORITMI
Progettazione di algoritmi
Il concetto di algoritmo è un procedimento per la risoluzione di un problema utilizzando un numero finito
di istruzioni. La prima cosa su cui ci concentriamo è che quando definiamo un algoritmo lo facciamo per
risolvere un problema. I due aspetti fondamentali nella progettazione di un algoritmo:
- Correttezza: dato un certo insieme di dati in input, l’algoritmo deve fornire sempre la soluzione corretta.
- Efficienza: riguarda la velocità di un algoritmo di risolvere un certo problema.
La progettazione di algoritmi è utilizzata per diversi problemi fondamentali di analisi di dati:
- Ordinamento dei dati: operazione di base
- Calcolo di distanza tra elementi
- Calcolo della rilevanza: PageRank - algoritmo di Google per ordinare i risultati delle proprie ricerche
- Algoritmi di suggerimento
Scienza dei dati
La disciplina che si occupa dell’analisi dei dati viene chiamata “scienza dei dati”. è diventata importante
perché la produzione di dati negli ultimi vent’anni è cresciuta sempre di più, diventando importante la
descrizione di questi dati per descrivere le persone, interessi delle persone, per scopi commerciali. Si parla
infatti di “era dei dati”.
Chi produce i dati? Gli individui quando navigano in rete in quanto esistono diversi dispositivi che tengono
traccia dei nostri movimenti; dati che vengono ricavati dai sensori, tipo le temperature, o di macchinari. I
dati che riguardano gli esseri umani e quelli dei sensori crescono di più di quelli degli altri.
Era dei dati
Quando parliamo di analisi dei dati bisogna tener conto di alcuni fattori che hanno portato alla crescita dei
dati:
- Diffusione delle tecnologie che permettono di raccogliere i dati: questo permette di avere un certo
insieme di dati, sono in se importanti ma hanno la necessità di essere analizzati.
- Crescita delle capacità di computazione: si riesce a studiare i dati in maniera sempre più efficiente
l’analisi, questo riguarda quindi i dispositivi.
- Applicazioni efficaci nell’analisi: si diffondono tecniche di analisi dei dati innovative e che permettono
di analizzare e riuscire ad ottenere informazioni utili. Molte di queste tecniche sono di apprendimento,
se io ho pochi dati apprendo meno se ne ho di più la capacità di apprendere cresce, ecco perché queste
tecniche sono negli ultimi anni sempre più utili.
Utilizzo dei dati
Per dato si intende ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione (in
informatica) elementi di informazione costituiti da simboli che debbono essere elaborati.
Mentre per informazione si intende notizia, dato o elemento che consente di avere conoscenza più o meno
esatta di fatti, situazioni, modi di essere.
Partendo dai dati, devo applicare degli algoritmi e delle tecniche di analisi per riuscire a estrarre
informazione e creare conoscenza. Questa analisi permette di arrivare agli obbiettivi che sono:
- Proprietà
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38

Anteprima parziale del testo

Scarica DATA ANALYTICS - Appunti completi delle lezioni e più Dispense in PDF di Probabilità e Statistica solo su Docsity!

DATA ANALYTICS

INTRODUZIONE AGLI ALGORITMI

Progettazione di algoritmi Il concetto di algoritmo è un procedimento per la risoluzione di un problema utilizzando un numero finito di istruzioni. La prima cosa su cui ci concentriamo è che quando definiamo un algoritmo lo facciamo per risolvere un problema. I due aspetti fondamentali nella progettazione di un algoritmo:

  • Correttezza: dato un certo insieme di dati in input, l’algoritmo deve fornire sempre la soluzione corretta.
  • Efficienza: riguarda la velocità di un algoritmo di risolvere un certo problema. La progettazione di algoritmi è utilizzata per diversi problemi fondamentali di analisi di dati:
  • Ordinamento dei dati: operazione di base
  • Calcolo di distanza tra elementi
  • Calcolo della rilevanza: PageRank - algoritmo di Google per ordinare i risultati delle proprie ricerche
  • Algoritmi di suggerimento Scienza dei dati La disciplina che si occupa dell’analisi dei dati viene chiamata “scienza dei dati”. è diventata importante perché la produzione di dati negli ultimi vent’anni è cresciuta sempre di più, diventando importante la descrizione di questi dati per descrivere le persone, interessi delle persone, per scopi commerciali. Si parla infatti di “ era dei dati ”. Chi produce i dati? Gli individui quando navigano in rete in quanto esistono diversi dispositivi che tengono traccia dei nostri movimenti; dati che vengono ricavati dai sensori, tipo le temperature, o di macchinari. I dati che riguardano gli esseri umani e quelli dei sensori crescono di più di quelli degli altri. Era dei dati Quando parliamo di analisi dei dati bisogna tener conto di alcuni fattori che hanno portato alla crescita dei dati:
  • Diffusione delle tecnologie che permettono di raccogliere i dati : questo permette di avere un certo insieme di dati, sono in se importanti ma hanno la necessità di essere analizzati.
  • Crescita delle capacità di computazione : si riesce a studiare i dati in maniera sempre più efficiente l’analisi, questo riguarda quindi i dispositivi.
  • Applicazioni efficaci nell’analisi : si diffondono tecniche di analisi dei dati innovative e che permettono di analizzare e riuscire ad ottenere informazioni utili. Molte di queste tecniche sono di apprendimento, se io ho pochi dati apprendo meno se ne ho di più la capacità di apprendere cresce, ecco perché queste tecniche sono negli ultimi anni sempre più utili. Utilizzo dei dati Per dato si intende ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione (in informatica) elementi di informazione costituiti da simboli che debbono essere elaborati. Mentre per informazione si intende notizia, dato o elemento che consente di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere. Partendo dai dati, devo applicare degli algoritmi e delle tecniche di analisi per riuscire a estrarre informazione e creare conoscenza. Questa analisi permette di arrivare agli obbiettivi che sono:
  • Proprietà
  • Suggerimenti : analizzo il comportamento di certi utenti suggerendo ad altri utenti un tipo di comportamento.
  • Previsioni : cerco di stimare e prevedere che un certo comportamento avverrà anche nel futuro.
  • Supporto alle decisioni : alcune decisioni sono importanti, analizzando i dati, è possibile costruire dei sistemi che non prendono le decisioni ma che suggeriscono gli scenari successivi in modo che quando prende una decisione si basa sulle informazioni fornite. Tipi di dati
  • Dati organizzati: sono dati che posseggono una struttura, in genere una tabella
  • Dati non organizzati: privi di una struttura organizzativa Big data Il concetto di big data , molto utilizzato in passato, non ha una definizione univoca e condivisa: non è sempre chiaro stabilire se un insieme di dati possa essere considerato tale. L’espressione “big data” richiama principalmente l’idea di una quantità molto elevata di dati. Proprio per questa abbondanza, è necessario ricorrere a tecniche specifiche per estrarre informazioni utili. Infatti, i big data sono spesso poco strutturati, quindi occorre applicare metodi in grado di organizzare e dare forma ai dati stessi. Come osservato, la quantità di dati prodotti è cresciuta notevolmente: quando si ha a disposizione un volume così ampio di informazioni, diventa possibile applicare tecniche avanzate di analisi dei dati, come ad esempio l’apprendimento automatico. In generale, dunque, con il termine big data si indica una grande quantità di dati, spesso così estesa da risultare difficile da gestire e memorizzare nei sistemi tradizionali, come la memoria centrale. Tre proprietà dette “le tre V”:
  • Volume : grandi quantità di dati
  • Velocità : flusso ad alta velocità, gestione in tempo reale
  • Varietà : varietà di formato - strutturati e non strutturati In realtà ci possono anche essere altre proprietà, che li rendono interessanti ma anche complessi:
  • Variabilità : la generazione dei dati non ha velocità costante ma segue dei flussi non costanti, ci sono dei picchi di attività e momenti di maggior quiete
  • Complessità : cioè errori/dati mancanti. Estrarre informazione Quando facciamo un’analisi di dati ci occupiamo di un certo insieme di dati “ dataset ” che descrive proprietà di un certo insieme di elementi (persone, oggetti) per:
  • capire quali sono le proprietà che ha questo insieme.
  • cominciare ad estrarre informazione/conoscenza.
  • L’insieme dei dati può portare ad una conoscenza reale? L’obiettivo finale di chi lavora nell’analisi dei dati è quello di costruire un modello dei dati , ovvero analizzare i dati ed estrarre informazione cercando relazioni tra diverse caratteristiche, entità, relazioni che non sono proprio esplicite (data mining). Esempio : Posso individuare una relazione tra il numero di auto vendute e il prezzo medio delle auto. Quando aumentano gli incentivi aumentano le auto_._ Se verifico una cosa di questo tipo verifico una correlazione tra i dati, esiste un legame tra i dati, l’obiettivo ultimo sarebbe quello di descrivere questa relazione con delle formule matematiche.

Ordinamento e ricerca: Algoritmi per l’ordinamento e la ricerca Esempio : Algoritmo per un torneo Immaginiamo di dover scrivere un algoritmo per determinare il vincitore di un torneo, ogni giocatore è associato a un valore numerico: valore del giocatore. Dobbiamo scrivere un algoritmo che calcola il valore massimo di una lista di numeri ( vettore ). L’algoritmo legge i risultati di cella per cella per trovare il massimo. Valutare l’efficienza di un programma Con efficienza intendiamo la velocità che impiega l’algoritmo nell’analizzare un insieme di dati e produrre il risultato. L’aspetto difficile di valutare l’efficienza è che se noi ragioniamo in un contesto concreto la velocità di un programma dipende dalla tecnologia utilizzata, dalla quantità di dati che deve analizzare, da come è stato progettato l’algoritmo. Per valutare l’ efficienza di un programma bisogna calcolare il tempo di calcolo dell’algoritmo tenendo conto:

  • Cosa succede nel caso peggiore, ovvero il tempo massimo che impiega l’algoritmo,
  • Il tempo di calcolo degli algoritmi viene espresso con una funzione che lega il tempo di calcolo alla

dimensione di dati in input (n, n^2 , …).

  • Non sono considerate le costanti (Esempio: Quindi se abbiamo 2n-2 e n+1, a noi interessa n. L’idea è che il 2 e il 1 non influiscono sul tempo di n). La ricerca del tempo massimo è quindi semplicemente tempo n. A partire dagli anni 60 si è iniziato a classificare i problemi portando alla suddivisione in due categorie principali:
  • Facili : esistono algoritmi risolutivi efficienti (veloci) per il problema. Esempio - Calcolare il massimo di un insieme di numeri.
  • Difficili : non si conoscono algoritmi risolutivi efficienti per il problema. Esempio - Abbiamo un certo insieme di numeri interi (input), il problema chiede di dividere in due insieme questi numeri in modo che se facciamo la somma dei due insiemi le due somme sono identiche. Un approccio che posso seguire è provare tutte le possibilità, ma non è efficiente, ma è l’unica soluzione. Selection Sort L’ ordinamento è uno dei procedimenti più diffusi in diversi ambiti, come analisi preliminare dei dati e identificazione misure del centro ed estremi. Come ordinare un insieme di dati? Quale algoritmo utilizzare? Esempio 92, 44, 18, 56, 11, 26, 88, 72, 47, 93, 21 Vogliamo ottenere: 93, 92, 88, 72, 56, 47, 44, 26, 21, 18, 11 Come facciamo ad ordinare un insieme di dati? Prendendo il massimo, ad ogni iterazione cerchiamo il massimo della lista, nel frattempo costruiamo una lista ordinata dove i numeri sono in ordine, ad ogni passaggio dell’iterazione prendiamo il massimo, lo cancelliamo e lo spostiamo nella lista ordinata. Questo algoritmo si chiama Selection Sort. Questo algoritmo quanto tempo impiega per ordinare un certo insieme di dati? Se abbiamo n dati da ordinare l’algoritmo Selection Sort impiega n^2. Bisogna tenere conto che noi stiamo valutando il caso

peggiore. Immaginiamo di avere una lista di n numeri, l’algoritmo applica tante volte la ricerca del massimo, per trovarlo impiega n. Sappiamo che quando fa un’iterazione impiega tempo n, fa tante iterazioni quanti sono i numeri, dunque impiega n iterazioni. Il tempo complessivo è quindi n x n (n2). In media le liste che vengono analizzate hanno una lunghezza “n mezzi”, quindi ci impiegheremo n mezzi per trovare il massimo in media, ma visto che togliamo le costanti possiamo dire che impieghiamo tempo n. Esempio : Per ordinare 1.000.000 di dati con Selection Sort Mi servono 1012 operazioni (n elevato alla 2). Supponiamo di poter eseguire un programma su un computer in grado di eseguire 1.000.000.000 di operazioni al secondo, avremo quindi bisogno di: 1012 / 109 = 10^3 secondi, sono circa 16 minuti. 16 minuti è tantissimo per ordinare un insieme di numeri, questo ci dice che l’operazione è così basilare che sono utilizzati degli approcci più efficienti, Selection sort viene usato per pochi dati infatti. Esistono però altre tipologie di algoritmi più efficienti per risolvere sempre questo problema, ad esempio il divide et impera. Divide et impera (MergeSort) Tecnica divide et impera , l’idea di questo approccio è quello di, prendere il problema che dobbiamo risolvere e dividerlo in diversi insiemi, così da creare dei problemi più piccoli, dei sottoproblemi. I sottoproblemi hanno input di dimensione inferiore e per la risoluzione del problema iniziale, devo quindi risolvere dei sottoproblemi e combinare le soluzioni dei sottoproblemi. Il procedimento è quindi il seguente:

  • Divide : divido l’insieme S di dati da ordinare in due insiemi S 1 , S 2 di ugual dimensione
  • Ordino i due insiemi S 1 , S 2
  • Impera : partendo da S 1 , S 2 ordinati: costruisco un ordinamento complessivo di S. Come faccio a ordinare S 1 , S 2? Prendo S 1 e lo divido in due insiemi S1.1 e S1.2, prendo S 2 e lo divido in due insiemi S 2 .1 e S 2 .2. Continuo poi a suddividere in problemi più piccoli gli insiemi S, e mi fermo quando ho due numeri da ordinare. Quando ho finito la fase di divisione applico impera, parto da S 2 .1 e S 2 .2 e costruisco l’ordinamento di S 2 (stessa cosa per S 1 ), fino all’ultimo insieme S. Quando arrivo agli elementi in fondo li ordino, anche attraverso il Selection Sort , e poi devo fare la fase impera. Ogni volta che vado dal basso all’alto ordino dei dati, costruendo l’unione degli elementi ordinata. Il vantaggio è che quando faccio questa operazione lavoro su due parti che sono già ordinate. Impera : partendo da S 1 , S 2 già ordinati, costruisco un ordinamento complessivo per S, prendo l’elemento massimo tra:
  • Il primo elemento di S 1 e il primo elemento di S 2
  • Lo sposto in S
  • Continuo fino a quando S 1 e S 2 sono vuoti

Le diverse applicazioni dell’ordinamento Ordinare i dati serve per predisporre i dati per effettuare un’analisi, inoltre viene anche utilizzato per studiare meglio o presentare meglio i risultati della ricerca che ho fatto. L’ordinamento serve per calcolare una misura sintetica dei dati, ovvero la mediana. Inoltre, è utile per rendere più efficiente una ricerca, la ricerca di dati all’interno di un insieme. Ricerca sequenziale Esempio: Dato un insieme di elementi mi chiedo se esiste un certo elemento che sto cercando ed anche dove sta, in quale posizione, e per farlo scorriamo da sinistra a destra. In questa lista possiamo chiederci se c’è il 9 e dove si trova, scorrendo. Ci sono due possibilità, due esiti con cui l’algoritmo termina:

  • Il primo scorre e ad un certo punto incontra il 9
  • La seconda non trova l’elemento Ricerca binaria Se la lista all’interno della quale è ordinata posso usare una strategia più efficiente e questa non è altro che la ricerca binaria. La ricerca binaria segue l’approccio divide et impera. Dunque, prendo l’elemento in posizione centrale (se sono 11 prendo il sesto), confronto l’elemento che cerco con l’elemento in posizione centrale. Abbiamo tre possibilità:
  • Se ho trovato l’elemento, ho terminato la ricerca
  • Se l’elemento è maggiore di quello centrale, effettuo la ricerca solo nella parte destra
  • Se l’elemento è minore di quello centrale, effetto la ricerca solo nella parte sinistra Esempio : Il 5 è il numero centrale. Confronto 4 con 5, ma non sono uguali. Quindi essendo 4 minore di 5 prendo la parte sinistra. L’1 è la parte centrale, 4 è maggiore di 1 quindi non considero la parte sinistra, rimango con 2,4. E così trovo il 4. La ricerca sequenziale quanto tempo impiega se esiste un elemento in una lista lunga n? Nel caso peggiore ci impiega n (il caso peggiore è quando non trova l’elemento). Quanto impiega la ricerca binaria nel caso peggiore? Log 2 n , perché, all’inizio ho n elementi e faccio un confronto. Quando faccio il confronto con l’elemento centrale se non l’ho trovato devo fare n:2, di questi n/2 prendo l’elemento centrale, quando faccio un altro passaggio di questo n/2 metà non li considero, la metà di n/2 è n/4 e così via. Mi fermo quando resto con un elemento (n/2z, quindi Z= log 2 n). Esempio : 1.000.000 di dati in cui cercare un elemento:
  • Ricerca sequenziale: 1.000.000 di operazioni
  • Ricerca binaria: 20 operazioni Lo svantaggio della ricerca binaria è che questi devono essere ordinati. Posso dunque concludere che prima di applicare la ricerca binaria devo usare l’ordinamento (divide et impera). Se devo fare tante ricerche allora conviene prima ordinare e poi applicare la ricerca binaria.

Distanze: Proprietà distanza Grafo o rete, si utilizza quando bisogna studiare e rappresentare le proprietà e le relazioni che si creano a questi elementi del sistema ed è costituito da due tipi di elementi (solitamente usati per le mappe)

  • Nodi (punti): elementi che sto studiando all’interno del sistema (es. utenti di una piattaforma, documenti da analizzare)
  • Archi : relazione binaria collegamento tra coppie di nodi (es. amicizie tra utenti di una piattaforma, link tra due documenti) I grafi vengono utilizzate in tante discipline ma noi vedremo solo alcuni utilizzi:
  • Clustering: suddivisione della rete in gruppi legati al loro interno
  • Classificazione: approccio con l’obbiettivo di classificare degli elementi per un argomento dandogli una collocazione precisa
  • Distanze Esempio :
    • Nodi: a, b, c, d, e
    • Archi: ( a,e), (a,b), (b,e), (b,c), (d,e), (c,d)
    • Due nodi a, b sono adiacenti se esiste l’arco (a, b) Due nodi possono essere adiacenti (ossia c’è una linea/arco che li collega), ma non necessariamente tutti i nodi sono adiacenti. Una delle operazioni che si può fare sui grafi è spostarsi, ovvero spostarsi da un punto all’altro (mappa geografica) e questo è quello che si chiama cammino. Dati due nodi a e b di un grafo, un cammino tra a e b è una sequenza di nodi che deve avere queste caratteristiche:
  • Adiacenti , solo quando prendo due nodi consecutivi, se non sono consecutivi non c’è l’obbligo che siano così;
  • Distinti , in questa sequenza i nodi devono essere distinti quindi non tornando sugli stessi nodi ma solo se si parla di cammino. Non possiamo farlo perché non ci conviene tornare in un certo punto. Questo perché noi utilizziamo questi grafi per valutare il percorso più “breve”; dunque, pensiamo a quando dobbiamo trovare la strada più veloce, se passassimo due volte dallo stesso punto allunghiamo il tempo.
  • Che inizia da a e termine con b, ossia presenza di un nodo di partenza (a) e una di arrivo (b) che è l’ultimo nodo; Esempio
  • prima proprietà rispettata perché i nodi consecutivi sono adiacenti
  • seconda proprietà rispettata perché sono distinti tra di loro
  • terza proprietà rispettata perché c’è un nodo di partenza e uno di arrivo Cammino più breve Il problema di interesse nella progettazione/studio di reti è il calcolo del cammino più breve tra due nodi, questo porta a diversi esempi come il calcolo della distanza tra due elementi di un grafo e il problema del commesso viaggiatore (sempre basato sulle distanze). Per brevità sul cammino si intende o rendere minimo il numero di archi o rendere minimo il peso totale.
  1. Parte l’iterazione e rende definitiva l’etichetta con il valore più basso quindi l(a)=0. A questo punto aggiorno altre etichette, per andare da A ad A ci metto tempo 0. Se parto da A e seguo l’arco AB ci metto 1, se cerco l’arco AF ci impiego 0,3. Dunque, aggiorno le etichette attribuendo a l(f)=0,3 e a l(b)= 1.
  2. Da qui per andare da f come faccio? Parto da A e percorro l’arco fino ad F stessa cosa per B quindi da qui parte l’aggiornamento di entrambe le etichette dei nodi F e B e quindi so quanto pesano gli archi AF e AB.
  3. Prendo quindi l’arco con peso più basso e cambio l’etichetta per farlo diventare definitivo. Da qua controllo l’arco fb e l’arco fe, da qui parte l’aggiornamento delle etichette e prenderò l’etichetta più bassa.
  4. Rendo definitivo quindi il nodo e, da qua percorro gli archi possibili aggiornando le etichette e da qua prendo l’etichetta più piccola quindi l’arco ec e rendo definitiva l’etichetta del nodo c.
  5. Da qui percorro l’arco cd aggiornando l’etichetta di d e visto che non ho altri archi e d è il punto di arrivo.
  1. Rendo definitiva l’etichetta del nodo d così ho completato il mio cammino e avrò ottenuto il cammino più breve. Questo algoritmo fa quindi tante iterazioni quanti nodi ci sono nella rete generalmente. Ricerca e Pagerank: Algoritmi e motori di ricerca Motori di ricerca I motori di ricerca hanno il compito di individuare gli elementi più rilevanti. Nel contesto del web, però, questa operazione presenta diverse difficoltà: la rete è composta da un’enorme quantità di contenuti e trovare le informazioni pertinenti non è semplice. Inoltre, le risposte devono essere fornite in tempi molto rapidi; per questo i motori di ricerca interrogano principalmente il proprio archivio interno, in cui i documenti sono già stati analizzati. Un’altra criticità riguarda proprio la costruzione di questo archivio: i documenti devono essere individuati, raccolti e organizzati, e risulta fondamentale anche l’ordine con cui vengono presentati nei risultati. Fino alla fine degli anni ’90, i motori di ricerca funzionavano come sistemi tradizionali di recupero dell’informazione, basati soprattutto sull’analisi delle parole e del testo. Tuttavia, questi metodi non garantivano sempre risultati di alta qualità: spesso i siti nelle prime posizioni non rispondevano in modo efficace alle richieste degli utenti. Alla fine degli anni ’90 si iniziò a comprendere che il web rappresenta un contesto informativo con caratteristiche peculiari, tra cui la natura multimediale e ipertestuale. In particolare, la presenza dei collegamenti ipertestuali permette di costruire una struttura nota come “ grafo del web ”. Alcuni studiosi ipotizzarono che i link avessero un ruolo fondamentale: non solo collegano i contenuti, ma possono anche essere sfruttati per determinare la rilevanza delle pagine e migliorare la qualità dei risultati. Tutto questo porta allo studio del grafo del Web. Costituito dai nodi che corrispondono alle pagine web e gli archi (orientati) che rappresentano i link ipertestuali. La caratteristica dei link ipertestuali è che i link sono diretti/orientati (è fondamentale questa caratteristica). Questo grafo può essere utile per l’esplorazione delle pagine web (i motori di ricerca non riescono ad esplorare tutte le pagine del web quindi non tutte quelle esistenti), dunque per arricchire gli archivi. Un altro aspetto è quello che riguarda l’ordinamento dei risultati dei motori di ricerca, per definire un ordinamento devo capire quali sono le pagine più importanti, quindi, devo trovare un metodo per dare un numero che viene associato all’importanza, alla rilevanza delle pagine. L’approccio che ha avuto maggior successo è quello che si chiama Page Rank , ovvero l’algoritmo che introduce Google per capire quali sono le pagine più rilevanti, con l’obbiettivo di sfruttare il grafo del web per determinare la rilevanza delle pagine web. Quindi, per il Page Rank l’importanza della pagina dipende dall’importanza delle pagine ad essa collegate. Rank è uno degli aspetti per valutare i nodi è misurarne l’importanza come, ad esempio, in base al grado (numero di connessioni), questo metodo però non molto preciso.

struttura della pagina, è indipendente dalle parole chiave cercate (se le parole sono le stesse la gerarchia è la stessa), il contenuto non viene considerato. Sono state cercate delle interpretazioni dal PageRank, una è quella della rilevanza , una invece riguarda il modo in cui possiamo considerare un utente che considera pagine web casualmente, l’utente sceglie una pagina e poi segue i link casualmente arrivando ad un’altra pagina e così via. L’interpretazione che è stata data è che la probabilità di arrivare ad una determinata pagina è proprio il PageRank. La pagina più importante è la pagina B che ha un certo numero di collegamenti in entrata la seconda pagina è C. C è la seconda pagina perché nonostante abbia solo un link ipertestuale quel link è quello più importante, ma soprattutto è l’unico link ipertestuale che esce da B; quindi, tutta la rilevanza di B viene trasferita da C e poi viene ritrasferita a B, per questo anche B è il più importante. (questo mostra come la rilevanza va oltre al numero di link ipertestuali che arrivano). Sistemi di raccomandazione: funzione ed algoritmi I sistemi di raccomandazione/suggerimento sono software basati su algoritmi che suggeriscono ad utenti determinati contenuti, prodotti, utenti a seconda dei casi, a cui l’utente può essere interessato. Sono stati studiati diversi approcci basati su due tipi di informazioni:

  • Analisi dei contenuti
  • Comportamento degli utenti
  • Ibridi Sono diventati particolarmente importanti quando in alcuni ambiti, ad esempio l’intrattenimento, il soggetto che ha investito maggiormente è Netflix. Parliamo di ambiti, piattaforme con un insieme molto vasto di contenuti e per riuscire a migliorare l’interazione con l’utente sfruttano due principali strumenti:
  • I sistemi di suggerimento : (Analisi dei contenuti, Comportamento degli utenti, Ibridi)
  • Utilizzo della ricerca : si fonda sull’analisi del grafo delle valutazioni e sulla ricerca di pattern, cioè di schemi ricorrenti utili a fini predittivi; il principale vantaggio di questo metodo è l’indipendenza dalla conoscenza del contenuto degli elementi analizzati, mentre tra gli svantaggi rientrano proprio la mancanza di utilizzo del contenuto e la complessità dell’analisi algoritmica necessaria per elaborare i dati. Grafo delle valutazioni Il grafo delle valutazioni, ci basiamo sulle valutazioni che gli utenti danno ai contenuti. Questo approccio dal punto di vista concreto non è validissimo perché non tutti gli utenti danno delle valutazioni, quindi, bisogna tener conto che non possiamo basarci sulle valutazioni. Nella rappresentazione del sistema per cui vogliamo costruire un suggerimento immaginiamo di avere due tipi di contenuti. Abbiamo due nodi: gli utenti e i contenuti. Dobbiamo considerare come un utente ha valutato un unico contenuto. Immaginiamo che le valutazioni possono essere solo di due tipi, positiva (arco positivo, linea continua) o negativa (arco negativo, linea tratteggiata)

C’è una proprietà che hanno i grafi di questo tipo, ovvero, viene detto bipartito , cioè quando posso suddividere i nodi in due insiemi distinti, gli archi collegano un elemento del primo insieme e del secondo insieme, dunque, vanno dal nodo utente e dal nodo contenuto. Questi tipi di strutture sono stati usati con due approcci diversi:

  • Approccio basato sulla similarità dei contenuti : se io fruisco di un certo contenuto potrò essere interessato a contenuti simili. Questi sistemi funzionano attraverso un’analisi dei contenuti, devo capire che un film si occupa di un certo argomento in modo da dire, questi due film hanno contenuti simili quindi potresti essere interessato anche a quest’altro. Mi interessa il comportamento del singolo utente. Lo svantaggio è che per riuscire ad applicarlo devo usare l’analisi dei contenuti e se sono molti diventa complicato.
  • Selezione collaborativa Selezione collaborativa Implicitamente c’è una collaborazione con gli utenti, si fa una ricerca dei pattern delle strutture simili. I vantaggi di questo approccio è che non ho bisogno di analizzare i contenuti, mi interessa che un contenuto può essere suggerito perché il primo utente ha visto un film e lo ha valutato positivamente e quindi si suggerisce al secondo. Gli svantaggi sono che non viene fatta l’analisi dei contenuti ed è un’informazione importante questa. Inoltre, ho anche la necessità di fare un’analisi algoritmica, non mi basta osservarlo, e questo richiede un costo computazionale. Dobbiamo definire un concetto generale, ovvero quello di vicinato di un nodo considerando X, il vicinato è dato dall’insieme di nodi collegati con un arco dal nodo X. Sono quei nodi collegati direttamente. Siamo interessati al vicinato degli utenti. Siccome abbiamo due tipi di nodi e il grafo è bipartito il vicinato di un utente non contiene nessun altro utente, ma solo film, e in generale contiene tutti i film che ha valutato. Possiamo distinguere:
  • Vicinato positivo : valutato positivamente.
  • Valutato negativo : valutato negativamente. Linda ha valutato positivamente il film 2 e il film 4 (vicinato positivo), poi abbiamo invece due archi tratteggiati che collegano Linda da 1 a 3 (vicinato negativo). Nella selezione collaborativa selezioniamo due utenti vogliamo misurare quanto due utenti sono simili (=quando hanno valutato in modo simile i film). Selezione collaborativa:
  • Due nodi (utenti) x e y hanno vicinati simili = hanno gusti simili

In questo modo costruiamo la tabella delle similarità tra tutte le coppie di utenti che rappresenta quanto sono simili gli utenti della nostra piattaforma. L’idea è usare questa tabella per valutare quanto potrebbe apprezzare un certo contenuto un utente che non ha ancora valutato quel contenuto. Bisogna focalizzarsi su un utente X e calcoliamo una misura, ovvero la media pesata. Calcoliamo la media pesata perché i valori che consideriamo sono le valutazioni che hanno dato gli utenti ma le pesiamo per il grado di similarità. Calcolo media pesata è un rapporto tra due quantità:

  • Numeratore: calcolo la somma, prendo il grado dell’utente X che voglio esaminare (1 se gli è piaciuto e
    • 1 se non gli è piaciuto) e lo moltiplico per la similarità (quella che abbiamo calcolato prima e che troviamo nella tabella sopra), prima con l’utente 1 (Pierluigi) poi con l’utente 2 (Linda) e così via.
  • Denominatore : somma dei valori assoluti dei gradi di similarità tra l’utente X e gli altri utenti. Dunque, al denominatore sommo tutti i gradi di similarità, ovvero quelli che trovo nella tabella sotto. Esempio : Stimiamo la valutazione di Elena del film 1. Peso il giudizio in base alla similarità con Elena. Valutiamo se il film 1 è un buon suggerimento per Elena. Questi sono i giudizi che hanno dato gli altri utenti: il film 1 è stato valutato positivamente da Marco e Anna e negativamente da linda e Pierluigi. Numeratore : giudizio di Pierluigi * la similarità (-1x0,25) + quello di Linda, Marco e Anna Denominatore : prendo tutti i numeri assoluti 0,25+0+0+0,33= 0,08/0,58 = 0,138. Le stime delle valutazioni sono ordinate in ordine decrescente. Altri fattori considerabili:
  • Inclinazione degli utenti : magari c’è chi da valutazioni sempre positive o negative, bisogna tenerne conto.
  • Caratteristiche degli elementi che stiamo considerando : alcuni elementi (film, un prodotto, …) sono considerati di ottima qualità (ricevono ottimi giudizi) dalla quasi totalità degli utenti.
  • Dinamiche temporali : caratteristiche di un utente possono cambiare nel tempo. Fattori nascosti Questo metodo si basa sull’idea che, se un utente ha apprezzato un contenuto ci dev’essere una motivazione. Le motivazioni sono chiamate “ fattori nascosti ”, ovvero quei fattori che influenzano i giudizi che l’utente da. Noi non sappiamo quali sono questi fattori, sappiamo che esistono e che sono pochi, e guidano le valutazioni che gli utenti daranno. L’obiettivo del metodo non è tanto capire quali sono ma individuare numericamente il ruolo che questi fattori hanno nelle valutazioni, perché nel momento in cui sappiamo che il fattore 1 ha un peso 0,5, il fattore

2 ha un peso 0,2 e il fattore 3 ha un peso 0,3 possiamo cercare di usare queste informazioni per stimare il giudizio di un utente. Esempio : Ammettiamo di considerare un catalogo di film, ipotizziamo che esistano pochi fattori nascosti (es.

  1. che influenzano le valutazioni degli utenti. Per esempio il genere del film e il paese in cui è stato girato. Cerchiamo di determinare quanto questi fattori influenzano le scelte degli utenti. Supponiamo di avere:
  • Giudizi di tre utenti (U1, U2, U3) su tre film (F1, F2, F3)
  • Alcuni dati non sono noti Assumiamo le caratteristiche C1 e C2 siano i due fattori che influenzano le votazioni I valori delle due tabelle sono ignoti: vanno stimati. Conoscendo precisamente i dati: Interesse per una caratteristica degli utenti, Presenza di una caratteristica in un film. Potrei calcolare la matrice delle valutazioni , cioè giudizio degli utenti sui film. Il giudizio di U1 su F1 = X1,1 Y1,1 + X1,2 Y2, Il giudizio di U2 su F2 = X2,1 Y1,2 + X2,2 Y2, I valori delle tabelle 1 e 2 non sono noti. Come stimarli? Consideriamo dei valori casuali delle tabelle, per esempio tutti i valori uguali a 1. Calcoliamo le valutazioni, a partire dalle tabelle 1 e 2: Il giudizio di U1 su F1 = X1,1 Y1,1 + X1,2 Y2,1 1+1= Il giudizio di U2 su F2 = X2,1 Y1,2 + X2,2 Y2,2 1+1= Consideriamo i valori nella tabella reale. Basandosi sui valori stimati, calcoliamo l’errore commesso:

Minimizzazione di: (x-1)^2 +(x-3)^2 + (x-4)^2 +15= X^2 - 2X+1+ X^2 - 6x+9+ X^2 - 8x+16+ 3X^2 - 16x+ Minimo per x=8/3 =2, Nella riduzione dell’errore:

  • Si procede iterativamente minimizzando il valore di ogni cella, fino a che non sono possibili miglioramenti
  • Il valore di una cella può essere aggiornato più volte
  • In genere, il procedimento converge Ottenuta la matrice per i fattori nascosti: Previsione delle valutazioni mancanti degli utenti, in base alle previsioni delle valutazioni → suggerimenti agli utenti.

INTRODUZIONE ALLA STATISTICA

Statistica e probabilità Statistica e calcolo della probabilità sono due cose diverse.

  • Statistica : il suo obiettivo è quello di comprendere, estrarre informazione dai dati. Ci dice qualcosa su quello che abbiamo raccolto. È una disciplina applicativa, analizza i dati.
  • Calcolo delle probabilità : cerca di misurare numericamente la probabilità che determinati eventi si verifichino nel futuro. È una disciplina predittiva. Statistica descrittiva Serve ad analizzare dei fenomeni e dei dati raccolti (in genere con un numero elevato di osservazioni). Cerca quindi di dare delle descrizioni sintetiche, presentando complessivamente l’andamento. Quando raccogliamo dei dati vogliamo descrivere:
  • Popolazione : è l’insieme totale dei soggetti ovvero di unità statistiche. Non sempre si ottengono dati su tutta la popolazione ma viene effettuata un’analisi su un campione.
  • Carattere : sono le proprietà che prendo in analisi, che voglio misurare o stimare per una popolazione. Per associare popolazione e carattere utilizzo delle variabili statistiche , ovvero delle funzioni che prendono in esame gli elementi di una popolazione associandogli un valore numerico (in questo caso) che è il valore del carattere che ho preso in esame. Caratteristiche dei dati: analisi dei dati Tipologie di dati Abbiamo dati strutturati e dati non strutturati:
  • Dati strutturati : hanno una struttura, organizzazione chiara dei dati (database, osservazioni scientifiche). In genere l’elaborazione è più semplice perché riesco a capire le proprietà. Il problema è che sono poco diffusi.
  • Dati non strutturati : dati che non hanno una struttura, i dati non hanno un’organizzazione interna (post social media, in generale il testo sul web). Elaborazione più complessa, bisogna prima effettuare delle fasi preliminari che hanno l’obiettivo di definire una struttura su questi dati. → Fase di pre-elaborazione : input (dati non strutturati); output (organizzare i dati strutturati). Queste tecniche possono essere più o meno complicate, nel caso del testo posso usare delle tecniche semplici basate sul fatto che il testo è costituito da parole dunque rappresento il testo come una tabella in cui le colonne sono le parole e il testo specifico è caratterizzato dal numero di occorrenze che ho di quella parola, conto quante volte quella parola è nel testo. Dati qualitativi e quantitativi Dati:
  • Quantitativi : possono essere espressi in forma numerica, possono essere usate applicazioni matematiche. Esempio: Operazioni che si possono applicare = somma, media, andamento nel tempo.