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


Appunti completi di data analytics, Appunti di Analisi Dei Dati

Appunti completi per passare l'esame, con lo svolgimento degli esercizi richiesti.

Tipologia: Appunti

2023/2024

In vendita dal 16/10/2025

sara25C
sara25C 🇮🇹

38 documenti

1 / 64

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
DATA ANALYTICS
1. INTRODUZIONE
Python
Python: uno tra i linguaggi maggiormente utilizzati per l’analisi di dati.
Diffuso in vari ambiti, in particolare per l’analisi di dati.
Dotato di moduli di facile utilizzo per diverse fasi dell’analisi di dati.
Esecuzione:
Codice sorgente
Modalità interattiva
Piattaforma per l’utilizzo via Web di Python:
Nessuna necessità di installazione sul proprio PC
Accesso da browser
Registrazione all’indirizzo
→ www.pythonanywhere.com
Prerequisiti
Conoscenze di base dell'informatica:
Architettura di Von Neumann
CPU Memoria centrale
Memoria di massa
Algoritmo (è una descrizione astratta delle fasi di un procedimento per giungere alla
soluzione. Scriviamo un algoritmo in un linguaggio di programmazione, implementiamo nel
codice in quel linguaggio e a quel punto si può eseguire quel programma. Non può essere
eseguito):
Diramazione: da un blocco derivano due possibili alternative.
Iterazione: una certa sequenza di istruzioni vengono eseguite molte volte, fino a
quando la condizione risulta vera.
Programma (può essere eseguito e un programma che viene eseguito, viene definito
processo).
Progettazione di algoritmi
Algoritmo: procedimento che indica come comportarsi ad un esecutore automatico, per la
risoluzione di un problema utilizzando un numero finito di dati input, che deve trasformare, in
modo tale da calcolare la soluzione di un problema (come ordinare i dati, trovare il massimo
fra una serie di dati). L'algoritmo si deve arrestare, ossia quando giunge alla risoluzione del
problema.
Aspetti fondamentali nella progettazione di un algoritmo:
Correttezza: qualunque siano i dati in input, l’algoritmo calcola sempre la soluzione
corretta.
Efficienza: quanto tempo impiega l’algoritmo per risolvere un problema Raffigura la
velocità con cui un algoritmo risolve un problema.
Progettazione di algoritmi utilizzata per diversi problemi:
Ordinamento di dati
Calcolo di distanze (calcolare la distanza tra due punti in un grafo)
PageRank (algoritmo molto complicato usato dal motore di ricerca)
Sistemi di raccomandazione e suggerimento (da un lato hanno le rappresentazioni
delle reti; una volta che abbiamo rappresentato queste strutture, posso sviluppare gli
algoritmi per cercare quale sia la struttura migliore per suggerire un certo contenuto).
Scienza dei dati
1
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
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40

Anteprima parziale del testo

Scarica Appunti completi di data analytics e più Appunti in PDF di Analisi Dei Dati solo su Docsity!

DATA ANALYTICS

1. INTRODUZIONE

Python Python: uno tra i linguaggi maggiormente utilizzati per l’analisi di dati. Diffuso in vari ambiti, in particolare per l’analisi di dati. Dotato di moduli di facile utilizzo per diverse fasi dell’analisi di dati. Esecuzione: ● Codice sorgente ● Modalità interattiva Piattaforma per l’utilizzo via Web di Python: ● Nessuna necessità di installazione sul proprio PC ● Accesso da browser ● Registrazione all’indirizzo → www.pythonanywhere.com Prerequisiti Conoscenze di base dell'informatica: ● Architettura di Von Neumann ● CPU Memoria centrale ● Memoria di massa Algoritmo (è una descrizione astratta delle fasi di un procedimento per giungere alla soluzione. Scriviamo un algoritmo in un linguaggio di programmazione, implementiamo nel codice in quel linguaggio e a quel punto si può eseguire quel programma. Non può essere eseguito): ● Diramazione: da un blocco derivano due possibili alternative. ● Iterazione: una certa sequenza di istruzioni vengono eseguite molte volte, fino a quando la condizione risulta vera. Programma (può essere eseguito e un programma che viene eseguito, viene definito processo). Progettazione di algoritmi Algoritmo: procedimento che indica come comportarsi ad un esecutore automatico, per la risoluzione di un problema utilizzando un numero finito di dati input, che deve trasformare, in modo tale da calcolare la soluzione di un problema (come ordinare i dati, trovare il massimo fra una serie di dati). L'algoritmo si deve arrestare, ossia quando giunge alla risoluzione del problema. Aspetti fondamentali nella progettazione di un algoritmo: ● Correttezza: qualunque siano i dati in input, l’algoritmo calcola sempre la soluzione corretta. ● Efficienza: quanto tempo impiega l’algoritmo per risolvere un problema Raffigura la velocità con cui un algoritmo risolve un problema. Progettazione di algoritmi utilizzata per diversi problemi: ● Ordinamento di dati ● Calcolo di distanze (calcolare la distanza tra due punti in un grafo) ● PageRank (algoritmo molto complicato usato dal motore di ricerca) ● Sistemi di raccomandazione e suggerimento (da un lato hanno le rappresentazioni delle reti; una volta che abbiamo rappresentato queste strutture, posso sviluppare gli algoritmi per cercare quale sia la struttura migliore per suggerire un certo contenuto). Scienza dei dati

L’informatica nasce prima della scienza dei dati e le discipline della matematica (statistica) si sono sempre occupate di analisi dei dati. La quantità dei dati prodotti nei vari ambiti è aumentata e ha portato alla raccolta, ossia alla possibilità di analisi di tantissimi dati. Importanza dei dati e della loro analisi. Creazione di enorme quantità di dati

  • Nel 2011: creati circa 1800 miliardi di GB di dati
  • Nel 2012: 2400 miliardi di GB
  • Nel 2020: 40.000 miliardi GB Spesso questi dati sono raccolti in maniera digitale. Era dei dati, creatasi grazie all’enorme quantità di dati che vengono raccolti ogni giorno.

BUSINESS DATA: dati prodotti in ambito commerciale, nello scambio finanziario ed ha una crescita relativamente alta. HUMAN DATA: dati che noi produciamo quando usiamo una piattaforma (accediamo, pubblichiamo un post, mandando un messaggio), hanno una crescita importante. SENSOR DATA: dati prodotti dai sensori, che misurano le temperature, l’accesso a determinate aziende e possono riguardare le persone (smartwatch) o l’ambiente (inquinamento, precipitazioni). Hanno una crescita molto elevata. Era dei dati Importanza attuale dell’analisi dei dati Tecnologie per la raccolta di dati: sensori sono delle tecnologie che raccolgono i dati, vengono organizzati anche in base al formato e al metodo di diffusione. Crescita delle capacità di computazione: crescita nelle capacità di memorizzazione e nelle prestazioni, ossia la velocità di raccolta e analisi dei dati. Applicazioni efficaci nell’analisi: avere degli algoritmi molto efficaci che siano in grado di estrarre informazioni nel più breve tempo possibile. Utilizzo dei dati Partendo dai dati, applicazione di algoritmi e tecniche di analisi per: ● Estrarre informazione: serve per descrivere le proprietà dei dati; ● Creare conoscenza: partendo dai dati, arriviamo a delle informazioni circa gli elementi che sto analizzando. Obiettivi: ● Previsioni ● Suggerimenti: indico a qualcuno che potrebbe avere un interesse per un determinato prodotto, anche sulla base dei suoi interessi. ● Supporto alle decisioni: critiche in determinati ambiti (decidere se costruire una strada, sulla base del traffico). Non è il metodo che decide, ma sulla base di alcune supposizioni, l’uomo sceglie come comportarsi. Dato Dato : ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; (in informatica) elementi di informazione costituiti da simboli che debbono essere elaborati. I

Baseball Encyclopedia (http://www.baseballreference.com) Sono ossessionati dai dati: ● Caratteristiche giocatori (peso, altezza, dati anagrafici) ● Andamento carriera ● Andamento dei salari ● Crescita altezza e peso della popolazione ● Attesa di vita di mancini vs destrimani I dati sono diventati talmente vasti, da essere divenuti rappresentativi dell’intera popolazione. Dove possiamo trovare dati? The Internet Movie Database (http://www.imdb.com) ● Attori apparsi in più film, valutazioni ● Aspettativa di vita degli attori (confronto con la popolazione) Allmusic (https://www.allmusic.com/) ● Produzione musicista ● Aspettativa vita musicisti Google Ngrams (http://books.google.com/ngrams) ● Cambiamento nella frequenza delle parole ● Forme scorrette Analisi dei dati L’analisi dei dati coinvolge diverse discipline: ● Informatica: algoritmi e software ● Matematica e statistica ● Conoscenza del dominio Informatica e scienza dei dati INFORMATICA Attenzione agli algoritmi Risultati plausibili Idealizzazione dei dati Invenzione SCIENZA DEI DATI Attenzione ai dati Comprensione di aspetti del mondo reale Dati con eventuali errori Scoperta

2. ALGORITMI Problemi L’obiettivo degli algoritmi è risolvere problemi: Dato un insieme di dati (input) Definire come trasformare i dati in input per ottenere una soluzione del problema (output) Esistono diverse tipologie di problemi: ● Decisione: abbiamo determinati dati e dobbiamo rispondere “sì” o “no” per indicare se i dati forniti hanno più o meno una proprietà. ● Ordinamento e ricerca: sulla base dei dati forniti, ci viene richiesto di calcolare un ordinamento di quegli stessi dati. La ricerca, invece, si definisce come la ricerca all’interno di un determinato insieme di un dato.

● Ottimizzazione: dati dei dati input bisogna calcolare una soluzione, però dobbiamo ottimizzare una funzione-obiettivo, come il processo di minimizzazione o massimizzazione. Dato un problema: più algoritmi per la sua risoluzione. Quale algoritmo è migliore? Es. torneo sportivo tra 8 giocatori: come determinare il vincitore? ● Torneo all’italiana (oggi giocatore incontra in un determinato ordine un altro giocatore. Vince il giocatore che ottiene il punteggio più alto) ● Eliminazione diretta (ogni volta che c’è un incontro, chi vince passa al turno successivo e chi perde viene eliminato). Tornei e metodi di valutazione Quale criterio usare per scegliere tra più algoritmi risolutivi? Dipende dall’obiettivo: ● Massimizzare il numero di partite, perchè ogni volta che qualcuno gioca incassiamo dei soldi: scegliamo il torneo all’italiana ● Minimizzare il numero di partite: eliminazione diretta ● Determinare una graduatoria, non vogliamo solo individuare chi è il più forte, ma anche la classifica: torneo all’italiana. L’eliminazione diretta non ci permette di determinare la classifica delle squadre che non sono state eliminate e non possiamo nemmeno determinare quale sia la squadra più forte, perché può essere che una squadra abbia avuto la sfortuna di aver incontrato quella più forte, ma anche lei aveva molto potenziale. → L’algoritmo viene scelto perché la funzione-obiettivo che abbiamo ci indica che cosa dobbiamo ottenere (massimizzare, minimizzare, definire una graduatoria) o perché ci sono algoritmi più veloci di altri. Algoritmi per l’ordinamento e la ricerca 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 ). Programma per il massimo

I numeri sono memorizzati nel vettore, che è una sorta di lista costituita da tante celle una vicina all’altra e in ognuna di esse è memorizzato un numero. Iniziamo a leggere da sinistra: dal massimo 2, raggiungendo il 12, il massimo diventerà quest’ultimo. Efficienza di un programma La correttezza ci indica che l’algoritmo che abbiamo progettato, può risolvere il problema, qualsiasi sia l’insieme di dati. → Con efficienza intendiamo la velocità che impiega l’algoritmo nell’analizzare un insieme di dati e produrre il risultato. Dato che la velocità può essere influenzata da fattori come il dispositivo che si sta usando, la rete, ecc, è stata sviluppata una teoria sul tempo di calcolo. Per valutare l’ efficienza di un programma o di un algoritmo.

Sort si riferisce all’ordinamento, mentre selection avviene quando si fa una selezione dell’elemento più grande. L’algoritmo Selection sort si occupa di ordinare i numeri calcolando il massimo tramite un’iterazione. Questo algoritmo elabora tante iterazioni quanti sono i numeri. Come possiamo costruire un programma che implementi questo algoritmo di ordinamento? Utilizzando a ogni passo la selezione del numero massimo. Implementazione SelectionSort Selection Sort: complessità (tempo di calcolo) L’algoritmo Selection Sort ha complessità n alla 2 (dove n è il numero di dati da ordinare) ● Per ogni passo, calcolo il massimo in tempo n ● Effettuo al massimo n passi Impiega tempo n e la ricerca del massimo la applichiamo quando spostiamo il primo numero, il secondo numero, il terzo numero, fino all’ultimo. Applichiamo l’iterazione fino a quando non arriviamo ad una lista con vettore vuoto. → Tempo n per ricerca del MAX: per ogni iterazione impieghiamo tempo n, complessivamente avremo n x n, ossia n al quadrato. n volte rappresenta la ricerca dell’elemento più grande di una lista lunga n. Dopo la prima iterazione, ci saranno n-1 numeri, poi n-2. → Al tempo 1 ho n numeri, all’ultima iterazione ne ho solo uno. Per ordinare 1.000.000 di dati con Selection Sort: 1.000.000.000.000= n al quadrato vale 10 alla 12 operazioni Ammettiamo di avere un elaboratore in grado di eseguire 1.000.000.000 di operazioni al secondo, quindi vale 10 alla 9: Se noi dobbiamo eseguire 10 alla dodicesima operazioni, ma in ogni secondo ne riusciamo ad eseguire 10 alla 9, quanto è il tempo che ci serve per eseguire questo algoritmo?

Impiega 1.000 secondi. Divide et impera (divide e comanda) Invece di affrontare subito il problema nella sua difficoltà, cerca di suddividerlo in problemi più semplici. Tecnica divide et impera: scomposizione di un problema in sottoproblemi. I sottoproblemi hanno input di dimensione inferiore. Per la risoluzione del problema: ● Risoluzione dei sottoproblemi ● Combinare le soluzioni dei sottoproblemi MergeSort: divide et impera Questo algoritmo utilizza quello che viene chiamato “divide et impera”, ovvero un ordinamento che si sviluppa in due fasi: Divide : divido l’insieme S di dati da ordinare in due insiemi S1 , S2 di ugual dimensione Ordino i due insiemi S1 , S Impera : partendo da S1 , S2 ordinati: costruisco un ordinamento complessivo di S Come faccio a ordinare S1 , S2? ● Divido S1 in due insiemi e li ordino ● Divido S2 in due insiemi e li ordino Mi fermo quando gli elementi da ordinare sono pochi. MergeSort: divide

Questi elementi di dimensione minima vengono ordinati e devo ritornare verso l’alto. MergeSort: impera Impera: partendo da S1 , S2 ordinati: costruisco un ordinamento complessivo per S. Prendo l’elemento massimo tra: ● Il primo elemento di S1 e il primo elemento di S ● Lo sposto in S ● Continuo fino a quando S1 e S2 sono vuoti

Trovo l’elemento più grande in S1 o in S2, o è il primo elemento di S1 o il primo di S2. Sulla base del numero più grande, lo sposta in S ordinato e lo cancella dal gruppo dal quale è stato estrapolato. Siccome sono ordinati, mi basta fare un confronto tra gli elementi più a sinistra e trovo il massimo. MergeSort: complessità Quanto tempo impiego, partendo da S1 , S2 ordinati, per costruire un ordinamento complessivo di S?

Prendo sempre l’elemento centrale, essendo 1 più piccolo non va bene, quindi lo elimino, continuo così fino a quando non trovo il 4. Ricerca: complessità La ricerca sequenziale ha complessità n Nella ricerca binaria, ad ogni passo i dati considerati sono dimezzati: Complessità log2n. 1.000.000 di dati in cui cercare un elemento. ● Ricerca sequenziale: 1.000.000 di operazioni ● Ricerca binaria: 20 operazioni. → Per poter applicare la ricerca binaria, devo avere dati ordinati, se ciò non succede, facciamo la nostra ricerca sui dati disordinati o se le operazioni sono molto frequenti, ordino i diversi dati, ma con la conseguenza che la ricerca viene effettuata nel minor tempo possibile. LE DISTANZE Grafo: definizione C’è un punto SORGENTE ed uno che si chiama DESTINAZIONE, l’obiettivo è quello di calcolare la distanza per andare dalla sorgente alla destinazione. Questo sistema lo utilizziamo quando dobbiamo risolvere un problema o risolvere delle proprietà di un sistema. Non vogliamo studiare solo le proprietà dei singoli elementi, ma anche le relazioni che si creano. Grafo o rete: costituito da due tipi di elementi ● Nodi (punti) sono gli elementi che sto studiando in un sistema Es. utenti di una piattaforma, documenti da analizzare (possono essere simili), reti sociali. ● Archi : relazione binaria collegamento tra coppie di nodi Es. amicizie tra utenti di una piattaforma, link tra due documenti Grafi Molti problemi possono essere rappresentati (e risolti) usando un grafo ● Clustering (abbiamo una rete che è rappresentato da documenti e persone e vogliamo individuare dei cluster, ossia suddividere la rete in gruppi che sono molto collegati). ● Classificazione (si parte da un insieme complessivo di elementi, si suddividono in due, fino ad arrivare alla collocazione precisa). ● Distanze Grafo: un esempio ● Nodi: a, b, c, d, e ● Archi : (a,e), (a,b), (b,e), (b,c), (d,e), (c,d) rappresentano una relazione tra una coppia di elementi. Due nodi a,b sono adiacenti se esiste l’arco (a,b)

Cammino Il cammino rappresenta lo spostamento da un nodo di partenza ad un nodo di arrivo. Dati due nodi a e b di un grafo, un cammino tra a e b è una sequenza di nodi: ● Adiacenti: quando c’è un arco che li collega. Quando prendo due nodi consecutivi in questa sequenza devono essere adiacenti, perchè sto rappresentando il fatto che mi sto spostando lungo gli archi.

● Distinti: non posso ritornare su un punto in cui sono già passato. ● Che inizia da a e termine con b. Cammino: un esempio Cammino tra a (partenza) e d (destiazione): a, f, e, d

Inizia da a e termina a d, nessuno ha ripetuto un nodo (sono disitnti) e quando considero due nodi vicini, devono essere adiacenti. Cammino più breve Problema di interesse nella progettazione/studio di reti: calcolo del cammino più breve tra due nodi. Esempi: ● Calcolo della distanza tra due elementi di un grafo: si vuole studiare quanto sono vicini gli elementi o quanto sono distanti. ● Problema del commesso viaggiatore : alla base di questo problema c’è la distanza. ● Chiedere al navigatore come andare dal punto in cui mi trovo alla destinazione. Problema : dati due nodi, determinare un cammino più breve che collega i due nodi (partenza ed arrivo). Si vuole diminuire il tempo e la distanza.

In un grafo vogliamo rendere minimo il numero di archi che percorriamo, ma noi si focalizziamo rendere minimo una misura, ossia il peso tale. In questo grafico abbiamo anche dei numeri che vengono associati agli archi, che sono chiamati pesi. Essi descrivono le relazioni: in alcuni casi sono i valori che voglio rendere minimi, ossia voglio un cammino che impiega il minimo tempo. PESO : 0,3+0,1+1=1, Non è detto che per percorrere il cammino minimo siamo costretti a scegliere quello con pochi nodi, ma basta anche selezionare quello che ha pesi bassi. Algoritmo di Djikstra : cammino dal nodo a al nodo d E’ un matematico olandese che risolse alcuni problemi, tra cui quello del cammino più breve. Idea generale: esistono i nodi A e B e cerchiamo un cammino fra questi due nodi. Calcolo il cammino minimo per i nodi intermedi. Ci sono due casi:

  • il cammino è costituito da un arco solo
  • non vi è un solo arco che va da A a B, ma arriva ad un nodo X e percorre come ultimo arco quello cha va da X a D. Il cammino che va da A a X, sarà il cammino più breve. Il nodo X è un nodo intermedio e per calcolare il cammino minimo devo costruire il cammino minimo che parte da A e arriva in uno qualunque degli altri nodi.

F diventa definitiva, e viene resa definitiva, mentre d rimane temporanea e resta 1.

Ora l’algoritmo sceglie c, perchè è più piccolo. L’aggiorna e la rende definitiva con 0,6. Aggiorna anche d e la rende definitiva con 0,7.

  • d è il nodo a cui siamo arrivati e abbiamo calcolato il tempo minimo per arrivare lì.
  • i nodi che sono vicini a d sono già definitivi, quindi non devo aggiornare nulla.
  • non mi serve rendere definitiva d, perchè ho concluso.
  • ci conviene percorrere 3 archi che hanno un peso non elevato, piuttosto che 4 che hanno un peso maggiore, piuttosto che fare la strada più breve, preferisco farne un’altra che ha un peso minore. Un’etichetta viene resa definitiva una sola volta e non si torna più indietro, quindi il numero di iterazione che fa coincide con il numero di nodi nella rete. RICERCA E PAGE RANK Motori di ricerca

Alla fine degli anni ’90 analisi della struttura del Web. L’utente effettua una ricerca e interagisce con l’interfaccia, dove quando scriviamo la parola chiave, il motore di ricerca ricerca nei propri archivi i risultati più affini e ci compare il risultato. Gli archivi permettono ai motori di non esplorare tutto il web e i dati sono già stati analizzati, in particolare è stato costruito un indice da un indicizzatore. Da cosa è costituita questa struttura? Il WEB ha una struttura a grafo ed è costituito da: ● pagine web (nodi) ● link ipertestuali (archi che sono orientati, ossia hanno una direzione) I documenti non sono costituiti solo da testo, ma anche da collegamenti che li collegano fra loro. Link ipertestuali → legame tra le pagine web → GRAFO DEL WEB

I link sono rappresentati con delle frecce che servono per definire l’orientamento. Gli studi sul WEB permettono di conoscere meglio questa struttura. Utilizzato per: ● Esplorazione delle pagine web ● Ordinamento dei risultati dei motori di ricerca (PageRank). Rank Uno degli aspetti per valutare i nodi è misurarne l’importanza Per esempio, in base al grado (numero di connessioni) PageRank Supporta per il motore di ricerca nell’ordinamento dei risultati. PageRank: ranking di Google per la rilevanza delle pagine web Obiettivo: determinare la rilevanza delle pagine (un nodo che ha tante connessioni è importante). Rilevanza di una pagina web: funzione della rilevanza delle pagine web collegate (rilevanza link entranti). L’importanza di una pagina è collegata alla rilevanza delle pagine che sono collegate a questa. Intuitivamente: ● Se una pagina ha rilevanza X e n link uscenti, trasmette una rilevanza X/n ai nodi raggiunti dai link ● Rilevanza di una pagina: somma delle rilevanze ricevute dai nodi con link alla pagina

L’importanza viene suddivisa fra le diverse pagine (una fetta a p1, una a p2…). La rilevanza di X influenza i nodi che sono raggiunti dai link ipertestuali. Il primo rappresenta la rilevanza che viene data da p1 a p, il secondo termine è la rilevanza che viene data da p2 a p e il terzo rappresenta la rilevanza che viene data da pk a p. r(p1) rappresenta la rilevanza / l(p1) rappresenta il numero di link (se ha 2 link, metà li dà a p1, metà li dà a k). Tutti all’inizio hanno una piccola parte di pagerank, utilizzando questa formula calcoliamo il pagerank delle varie parti. Motori di ricerca

I sistemi di raccomandazione o sistemi di suggerimento hanno molti ambiti di applicazione, essi suggeriscono i prodotti a cui siamo interessati. ● Intrattenimento: Netflix, YouTube ● Commercio elettronico In alcuni casi: vastità dei contenuti → fondamentali per la fruizione. Sistema di raccomandazione: software che molte volte combina algoritmi e propone contenuti di (possibile) interesse per un utente. L’input è costituito non solo dai contenuti della piattaforma, ma anche dalle informazioni sull’utente. Basati sul: ● Analisi dei contenuti ● Comportamento degli utenti, attraverso il quale suggeriamo contenuti agli utenti. Grafo delle valutazioni Costruiamo il grafo delle valutazioni che gli utenti danno ai prodotti, è costituita da nodi e archi. Due insiemi di nodi: ● Utenti della piattaforma ● Contenuti Due tipi di archi tra utenti e contenuti: ● Un arco positivo tra un utente e contenuto → valutazione positiva ● Un arco negativo tra un utente e contenuto → valutazione negativa → Non ci sono relazioni tra utenti o tra contenuti. Grafo delle valutazioni: esempio

Abbiamo i nodi relativi agli utenti e quelli relativi ai contenuti (identificati con i numeri). E’ un grafo bipartito : i nodi sono due insiemi e la condizione definisce che non è possibile collegare due nodi che appartengono alla stessa categoria. La linea continua rappresenta una valutazione positiva, mentre quella tratteggiata raffigura una valutazione negativa. Non tutti gli archi sono presenti, per esempio Pierluigi non ha un arco che lo collega al nodo 4, perché o non l’ha mai visionato o l’ha guardato, ma non lo ha valutato. Selezione collaborativa Nell’identificare i diversi contenuti, non si fa un’analisi sul tipo di contenuto, ma si cerca di utilizzare un’approccio implicitamente collaborativo. Si costruisce il profilo dell’utente attraverso le sue valutazioni, si cercano i profili simili all’utente. In base alle similarità o differenze si dice che un individuo non l’ha visto, ma un altro l’ha visionato e l’apprezzato e lo suggerisco. Si considera il comportamento degli utenti per suggerire un nuovo contenuto che dovrebbe piacergli. Ci permette anche di capire quanto sono simili i due utenti o quanto sono diversi.

→ Con questo approccio si cerca di prevedere, ossia quanto un utente possa apprezzare un determinato contenuto che non conosce. Approccio basato sulla selezione collaborativa: ● Analisi del grafo delle valutazioni ● Ricerca di pattern: schemi utili a fini predittivi Vantaggi: è possibile calcolare la similarità degli utenti, attraverso lo studio del suo comportamento e indipendenza da conoscenza del contenuto, non si conosce il contenuto, ossia la semantica degli elementi che appartengono alla piattaforma. E’ un vantaggio, perché risparmio sull’analisi del contenuto. Svantaggi: ● Indipendenza dal contenuto, è importante analizzare il contenuto per capire di cosa si occupano gli elementi e di conseguenza se questi possono interessare o meno gli utenti. Può penalizzare la capacità di predizione. ● Analisi algoritmica Selezione collaborativa e vicinato Vicinato di un nodo x nel grafo delle valutazioni e rappresenta i film che l’utente ha valutato: ● Nodi che sono collegati direttamente, raggiungibili partendo da x con un arco ● Due tipi di vicinato di un utente:

  • Vicinato positivo (linee continue): film con valutazione positiva
  • Vicinato negativo (linee tratteggiate): film con valutazione negativa

Selezione collaborativa per riuscire a dare due suggerimenti mi baso sul fatto che se due utenti hanno due vicinati simili, ossia hanno valutato in modo simile uno stesso contenuto allora: ● Due nodi (che rappresentano utenti) x e y hanno vicinati simili → hanno gusti simili ● Se x ha dato un giudizio positivo su un film z, è probabile che y gradirà z Confronto tra vicinati Come posso valutare la similarità tra vicinati? Associo una lista (un vettore) a ogni utente: valutazioni assegnate ai film. Il numero degli elementi è costituito dal numero dei film. Le valutazioni sono assegnate come segue: ● 0: nessuna valutazione (arco assente) ● 1: valutazione positiva ● -1: valutazione negativa Confronto tra vicinati: esempio

Per misurare il grado di similarità, dividiamo per il numero di film valutati da (almeno) uno dei due utenti Pierluigi = [-1, 1, 1, 0] Linda = [-1, 1, -1, 1] Similarità = (-1-1 + 11 + 1-1 + 01)/4 = 1/4 = 0, Elena = [0, 0, 1, 1] Anna = [1, 0, 0, 1] Similarità = (01 + 00 + 10 + 11)/3 = 1/3 = 0,333 (divido per tre perchè un film non è stato valutato) Tabella di similarità Posso costruire una tabella delle similarità tra tutte le coppie di utenti: valori tra -1 e 1

I nomi sono ripetuti nelle righe e nelle colonne e se calcolo la similarità tra Linda e Pierluigi, è la stessa della similarità tra Pierluigi e Linda. E’ simmetrica e il valore massimo è 1 e viene calcolato quando misuriamo il grado di similarità dello stesso utente (Pierluigi-Pierluigi). Stima della valutazioni La tabella di similarità può essere usata per stimare la valutazione di un utente (quando assente) su un contenuto che non è stato valutato. Stima della valutazione di un utente x: Media pesata dei giudizi degli utenti che hanno visto il film, prendiamo le loro valutazioni per capire se l’utente potrà apprezzare. Da un lato usiamo le valutazioni degli utenti, dall’altro il grado di similarità. Per il calcolo della media pesata , rapporto di: ● Al numeratore: somma dei prodotti tra valutazione degli utenti e la similarità con x ● Al denominatore: somma dei valori assoluti delle similarità con x

Il film 1 è stato valutato ● Positivamente da Marco e Anna ● Negativamente da Linda e da Pierluigi

Stima = (-1 0,25+ -10 + 10 + 0,331)/ (0,25+0+0+0,33)=0,08/0,58 = 0,

Il film 3 è stato valutato ● Positivamente da Pierluigi ed Elena ● Negativamente da Linda e Marco

Stima = (1-0.25 +- 1 0 + -10,5+10,33)/ (0,25+0+0,5+0,33)= - 0,42/ 1,08 = - 0, Stima valutazioni e suggerimenti Per fornire suggerimenti ● Per ogni film non visto è calcolata la stima della valutazione dell’utente ● Le stime delle valutazioni sono ordinate in ordine decrescente ● Sono selezionate le stime di valore maggiore Estensioni ai sistemi suggerimenti Altri fattori considerabili dai sistemi di raccomandazione ● Inclinazione utenti: utenti che tendono a dare giudizi positivi o negativi, se un utente da sempre valutazioni negative, nel momento che assegna una valutazione positiva, significa che quel film è veramente bello. ● Qualità dell’elemento: 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 e ci sono dei contenuti che vengono apprezzati in un determinato periodo e meno in un altro. Fattori nascosti Non considera il grafo delle valutazioni, ma esistono dei fattori che influenzano l’opinione degli individui. Dobbiamo misurare quanto questi fattori pesano sui giudizi degli utenti, portandoci ad una rappresentazione selettiva dei contenuti. Fattore nascosto: caratteristica che influenza il giudizio di un utente Per esempio: ● Un utente apprezza un genere musicale o cinematografico ● Un utente è interessato a una tipologia di prodotti Determinare i fattori nascosti è rilevante, per esempio, nell’ambito dei suggerimenti. Determinare i fattori nascosti Ammettiamo di considerare un catalogo di film Ipotizziamo che esistano pochi fattori nascosti (es. 2) 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