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, Appunti di Elementi di Informatica

Appunti accurati delle lezioni di Data Analytics

Tipologia: Appunti

2019/2020
In offerta
30 Punti
Discount

Offerta a tempo limitato


Caricato il 29/05/2020

Nicholas.Rucci1
Nicholas.Rucci1 🇮🇹

4.5

(26)

20 documenti

1 / 29

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
20/04/20
LEZIONE 1
Prima parte del corso: Tecniche algoritmiche
Dobbiamo capire cos’è un problema perché l’algoritmo viene creato per la risoluzione di un
problema specifico che può essere semplice o complesso.
Grafi e algoritmi su grafi perché le reti sono diventate fondamentali nello studio di diversi
ambiti come gli studi epidemiologici che cercano di capire come si diffondono le epidemie
nelle reti.
Sistemi di raccomandazione o suggerimento sono sistemi che usiamo quando effettuando
un acquisto riceviamo un suggerimento sula possibilità di comprare un altro prodotto, lo stesso
vale per le serie come su netflix. Sono sistemi di suggerimento di contenuti che potrebbero
essere per noi interessanti. È con la nascita degli elaboratori automatici che gli algoritmi
assumono importanza, infatti lo studio degli algoritmi inizia tra gli anni 50 e 60.
Tecniche di apprendimento e reti neurali, in questo caso l’approccio è diverso studiamo i
dati per studiare quali solo le proprietà di essi e tramite questa operazione quali problemi
possono risolvere. Tra le tecniche più importanti è quella delle reti neurali che si ispira al
funzionamento del nostro cervello.
Seconda parte del corso: Analisi di dati
Dobbiamo capire quali sono i tipi di dati da analizzare, capire i tipi di dati da analizzare per
comprenderne le operazioni.
Introduzione al calcolo della probabilità e della statistica, vedremo che legato al calcolo
delle probabilità c’è la tendenza del prevedere il comportamento di un dato nel futuro
sfruttando le informazioni che ho nel passato. La statistica è la scienza che cerca di
rappresentare i dati, la loro distribuzione.
Rappresentazione dei dati, una volta raccolti devo rappresentarli visivamente e vedremo i
grafici più comuni per la rappresentazione di dati.
Machine learning (apprendimento automatico) sono tecniche legate da un lato agli approcci
algoritmici accennate e le probabilità con cui certi dati possono verificarsi.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
Discount

In offerta

Anteprima parziale del testo

Scarica Data Analytics Appunti e più Appunti in PDF di Elementi di Informatica solo su Docsity!

LEZIONE 1

Prima parte del corso: Tecniche algoritmiche

  • Dobbiamo capire cos’è un problema perché l’algoritmo viene creato per la risoluzione di un problema specifico che può essere semplice o complesso.
  • Grafi e algoritmi su grafi perché le reti sono diventate fondamentali nello studio di diversi ambiti come gli studi epidemiologici che cercano di capire come si diffondono le epidemie nelle reti.
  • Sistemi di raccomandazione o suggerimento sono sistemi che usiamo quando effettuando un acquisto riceviamo un suggerimento sula possibilità di comprare un altro prodotto, lo stesso vale per le serie come su netflix. Sono sistemi di suggerimento di contenuti che potrebbero essere per noi interessanti. È con la nascita degli elaboratori automatici che gli algoritmi assumono importanza, infatti lo studio degli algoritmi inizia tra gli anni 50 e 60.
  • Tecniche di apprendimento e reti neurali , in questo caso l’approccio è diverso studiamo i dati per studiare quali solo le proprietà di essi e tramite questa operazione quali problemi possono risolvere. Tra le tecniche più importanti è quella delle reti neurali che si ispira al funzionamento del nostro cervello. Seconda parte del corso: Analisi di dati
  • Dobbiamo capire quali sono i tipi di dati da analizzare, capire i tipi di dati da analizzare per comprenderne le operazioni.
  • Introduzione al calcolo della probabilità e della statistica , vedremo che legato al calcolo delle probabilità c’è la tendenza del prevedere il comportamento di un dato nel futuro sfruttando le informazioni che ho nel passato. La statistica è la scienza che cerca di rappresentare i dati, la loro distribuzione.
  • Rappresentazione dei dati , una volta raccolti devo rappresentarli visivamente e vedremo i grafici più comuni per la rappresentazione di dati.
  • Machine learning (apprendimento automatico) sono tecniche legate da un lato agli approcci algoritmici accennate e le probabilità con cui certi dati possono verificarsi.

Conoscenze di base dell’informatica Architettura di Von Neumann:

  • CPU : è l’unità che elabora tutti i calcoli di elaborazione vengono fatti;
  • Memoria centrale : è veloce ma ha delle limitazioni infatti è volatile e non conserva il contenuto se non alimentata da corrente elettrica, un altro elemento è che la capacità della memoria è limitata;
  • Memoria di massa : è il disco rigido. Algoritmo: non può essere eseguito come programma.
  • Diramazione : il percorso si divide in due rami in base al valore della condizione scritta nel blocco di controllo, se la condizione è vera segue un certo percorso se è falsa ne segue un altro;
  • Iterazione : avviene il processamento di una serie di istruzioni che vengono eseguite, iterate, fino a che la condizione presente nel blocco di controllo continua ad essere vera; nel momento in cui non è più vera l’iterazione termina. Programma: può essere eseguito da un elaboratore. Progettazione degli algoritmi È il procedimento per la risoluzione di un problema utilizzando un numero finito di istruzioni, a un certo punto deve terminare il calcolo non può andare avanti all’infinito. Gli aspetti fondamentali di un algoritmo sono:
  • Correttezza : stabilisce che un algoritmo risolve correttamente un certo problema, qualunque sia l’input l’algoritmo deve calcolare l’output che risolve il problema.
  • Efficienza : è un aspetto che si è rivelato fondamentale. È la velocità con cui l’algoritmo risolve un certo problema. La progettazione degli algoritmi utilizzata per diversi problemi:
  • Ordinamento di dati ;
  • Page Rank : non solo ordina i dati pa stabilisce quali pagine sono più rilevanti sul web.
  • Calcolo di distanze : calcolo delle distanze tra due punti. Scienza dei dati È importante analizzare i dati perché si è compreso che a partire dall’analisi dei dati è possibile determinare delle informazioni rilevanti. Il XIX secolo rappresenta l’ era industriale , il XX secolo rappresenta l’ era dell’informazione con la creazione di una enorme quantità di dati. c’è una tendenza alla crescita nella produzione e analisi dei dati. Si dice che la nostra è l’ era dei dati. Partendo da un insieme di dati possiamo applicare tecniche algoritmiche con l’obiettivo di estrarre:
  • Estrarre informazione
  • Creare conoscenza Gli obiettivi raggiungibili possono essere:
  • Previsioni : per esempio il meteo;
  • Suggerimenti : rispetto a un contenuto che può interessare a un utente;
  • Simulazioni : cercare di capire il comportamento di un sistema complesso per esempio la diffusione di una epidemia in certo contesto o anche di un messaggio pubblicitario;
  • Matematica e statistica : calcolo delle probabilità;
  • Conoscenza del dominio : la conoscenza dell’ambito specifico di cui ci stiamo occupando. 27/04/ LEZIONE 2 Algoritmi e problemi Esistono più algoritmi per risolvere un problema. Bisogna capire qual è l’algoritmo migliore per risolvere il problema. La scelta dell’algoritmo di pende dall’obiettivo che io mi pongo. Nel caso del torneo sportivo gli obiettivi possono essere molteplici:
  • Massimizzare il numero di partite: il tipo di algoritmo che massimizza il numero di partite è il torneo all’italiana perché viene organizzato un torneo che prevede il massimo numero di scontri che permettono di stabilire il vincitore;
  • Minimizzare il numero di partite: eliminazione diretta, non prevede l’incontro di tutte le squadre perché per ogni fase del torneo viene eliminata una squadra;
  • Determinare una graduatoria del torneo: stabilisce l’odine delle posizioni raggiunte dalle squadre. Con il torneo all’italiana è facile perché il primo sarà quello con maggior numero di vittorie. Nell’eliminazione diretta non necessariamente riesco a costruire una graduatoria; possiamo assumere che chi vince tutte le gare potrebbe essere la prima classificata. Uno degli aspetti fondamentali nella scelta degli algoritmi risolutivi di un problema è quello di valutare l’efficienza dell’algoritmo. Considero gli algoritmi risolutivi e tra essi scelgo il più veloce nel risolvere il problema e nel fornire una soluzione. Come valutare l’efficienza:
  • Individuare le operazioni che vengono fatte dall’algoritmo per produrre il risultato. È necessario individuare l’operazione base che fanno gli algoritmi, nel caso del torneo l’operazione base è la partita;
  • Valutare il numero di operazioni di base , nel caso del torneo è il numero di partite. Nell’eliminazione diretta il vincitore giocherà N - 1 partite, perché su un giocatore avremo N - 1 sconfitti. Non posso essere più efficiente di così, l’eliminazione diretta è il metodo più efficiente. Programmi La risoluzione di un problema con un computer richiede:
  • Progettazione di un algoritmo: questa viene fatta in un linguaggio astratto per l’elaboratore;
  • Traduzione dell’algoritmo in linguaggio di programmazione: una persona deve considerare l’algoritmo di risoluzione e cercare di scrivere quell’algoritmo in un linguaggio di programmazione in base a determinati criteri. Dobbiamo scrivere un programma per determinare il vincitore di un torneo all’italiana. Ogni giocatore è associato a un valore numerico: forza del giocatore. Dobbiamo scrivere un programma che calcola il massimo di una lista di numeri. Efficienza di un programma Per valutare l’efficienza di programmi e algoritmi la caratterizzo con le operazioni che vengono fatte. Elemento fondamentale è il tempo che è espresso in funzione dei dati in input (n, n^2 …). Non sono considerate le costanti per valutare il tempo. La metodologia di misurazione del tempo è quella del caso peggiore, ovvero nel caso peggiore quante operazioni deve svolgere l’algoritmo. Complessità dei problemi I problemi possono essere classificati in due categorie:
  • Facili : perché esistono algoritmi risolutivi efficienti per risolvere un problema. Es. calcolare il massimo di un insieme di numeri;
  • Difficili : perché non si conoscono algoritmi risolutivi efficienti per il problema. Dato un insieme di numeri interi, suddividerlo in due parti che sommate hanno lo stesso valore. Ordinamento L’ordinamento è uno dei procedimenti più diffusi in diversi ambiti. Come ordinare un insieme di dati? Quale algoritmo usare? Es. Consideriamo dei numeri da 1 a 100 e di volerlo ordinare con ordinamento decrescente. Consideriamo un algoritmo che a ogni passo:
  • Seleziona il numero massimo ;
  • Lo aggiunge a un elenco ordinato ;
  • Lo elimina dall’elenco di partenza ovvero la lista disordinata. Slection Sort (selezione ordine) L’algoritmo Selection Sort ha complessità n^2 (dove n è il numero di dati da ordinare). Per ogni passo calcolo il massimo in tempo n, ed effettuo al massimo n passi. Per ordinare 1.000.000 di dati con Selection Sort: 1.000.000.000.000 = 10^12 operazioni. Ammettiamo di avere un elaboratore in grado di eseguire 1.000.000.000 di operazioni al secondo: 1012 fratto 10^9 = 10^3 ovvero 1.000 secondi. 30/04/ LEZIONE 3 Divide et Impera Non viene applicata solo in informatica. Se noi dobbiamo risolvere un problema un approccio per semplificare la risoluzione del problema è considerare dei sottoproblemi. È una tecnica di scomposizione di un problema in sottoproblemi, in modo da risolvere il problema non immediatamente sui dati generali ma su dei sottoinsiemi. Se riusciamo a dividere il problema la risoluzione è più facile perché abbiamo meno dati da analizzare. L’idea generale della tecnica è che dobbiamo risolvere un problema dividendo in sottoproblemi, ma una volta suddivisi come facciamo a sapere che il problema è stato risolto? Dobbiamo combinare le soluzioni di tutti i sottoproblemi per verificare che il problema iniziale è stato risolto. Questa tecnica porta a progettare un algoritmo per l’ordinamento che si chiama MergeSort , l’idea di questo algoritmo è che si prendono delle soluzioni e le si combinano per trovare la soluzione al problema iniziale. ESEMPIO: guarda slide Divide : divido l’insieme S di dati da ordinare in due insiemi S1, S2 di ugual dimensione. Ordino i due insiemi. Quando si riesce ad ordinali si passa alla fase Impera. 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 (per esempio se ho un totale di 20 li divido in 10 e 10); Divido S2 in due insiemi e li ordino. Continuo a suddividere per semplificare l’operazione di ordinamento fino a un certo punto in cui devo fermarmi perché raggiungo degli insiemi che hanno dimensione molto piccola che rende semplice l’ordinamento. Ora entra in gioco la fase impera: partendo da S1, S2 ordinati costruisco un ordinamento complessivo per l’insieme S. come li ordino?

LEZIONE 4

Tecnica Greedy (ingorda) È una tecnica che decide il modo in cui deve essere risolto un problema scegliendo gli elementi che devono essere selezionati. Per capire meglio vediamo il problema del resto: Una macchinetta del caffè deve dare il resto ai clienti Obiettivo: restituire il minimo numero di monete Es: 122 centesimi: 1 moneda da 1 euro, 1 moneta da 20 centesimi, 1 moneta da 2 centesimi. La tecnica ingorda si basa sull’idea che quando devo costruire il resto devo fare una serie di scelte. Ogni volta che si deve prendere una decisione si prende quella che in quel preciso momento è la scelta ottimale o appropriata. Nel caso del problema del resto: La macchina deve dare un resto x:

  • Considero le monete in base all’ordine, nel nostro caso decrescente;
  • Seleziona la prima moneta che ha un valore y ≤ a x;
  • Aggiungo il resto, sottraendovi y;
  • Il processo è ripetuto fino a che x 0 Resto 127 (y) cent la macchina deve usare le seguenti monete:
  • 100 cent: è inferiore a 127 centesimi e quindi viene selezionata, il resto a questo punto diventa 100 – 27 = 27 centesimi;
  • 50 cent: valore superiore al resto, non la posso usare per dare il resto;
  • 20 cent: viene scelta perché è inferiore a 27, il resto passa da 27 a 7 centesimi; l’algoritmo riparte sempre dall’alto;
  • 10 cent: troppo alto
  • 5 cent: valore inferiore quindi lo scelgo, il resto passa da 7 a 2; ricomincia l’analisi dall’alto
  • 2 cent: valore inferiore quindi lo sceglie, il resto diventa 0;
  • 1 cent. La prima considerazione che possiamo fare è che queste tecniche in alcuni casi costruiscono la soluzione ottima, per alcuni problemi questi algoritmi con tecnica ingorda arrivano a costruire una soluzione ottima. Questo non sempre avviene perché la soluzione migliore in un certo momento non è la soluzione universalmente ottimale, questo perché la tecnica ingorda lavora localmente. In genere si tratta di algoritmi veloci, quindi per una serie di problemi in cui è difficile calcolare la soluzione ottima si preferisce trovare una soluzione soddisfacente ma in modo più veloce. Nel caso del resto la tecnica è quella ottimale, ma con altri tipi di monete il procedimento non è risolto in modo ottimo. Problemi intrattabili : si ritiene che questi problemi non ammettano degli algoritmi efficienti, che possono essere eseguiti in modo veloce. Ovvero quando abbiamo moltissimi tipi di tagli di monete, in questo caso il problema non è risolvibile dagli algoritmi greedy perché sono algoritmi che cercano di dare risultati rapidi mentre in una situazione con molte monete non è possibile.
  • Resto : 14 cent
  • Monete da: 10 cent, 7 cent, 2 cent
  • Algoritmo ingordo : parte considerando la moneta da 10 centesimi e avendo valore inferiore a 14 la seleziona il resto diventa 4, ricomincia l’analisi da capo salta 10 e salta 7 e seleziona 2, rifà la stessa cosa e raggiunge l’obiettivo. 1 moneta da 10, 2 monete da 2. In totale 3 monete.
  • Soluzione ottima : 2 monete da 7 centesimi. La soluzione ottima è costituita da 2 monete che non hanno il valore immediatamente più vicino a 14 nella prima interazione. Algoritmi e distanze GPS Global Positioning System hanno come obiettivo quello di identificare la posizione in cui ci troviamo in un certo momento il più accuratamente possibile. La posizione viene determinata da satelliti, in particolare sul fatto che i satelliti ci possono fornire la distanza tra il dispositivo che usiamo e il satellite stesso. Però l’informazione sulla distanza che ci da il satellite non è sufficiente per determinare la posizione. Triangolazione Si usa la tecnica della triangolazione : calcolo della distanza da tre o più punti di riferimento (satelliti). Si combinano le informazioni e si determina la posizione. Abbiamo un satellite che crea una circonferenza che segnala la distanza di un dispositivo dal satellite che non riesce a individuare la posizione di un dispositivo, allora aggiungiamo un altro satellite e facciamo in modo che le due circonferenze si intersechino in qualche punto ma ancora non possiamo individuare il dispositivo; solo con un terzo satellite che interseca possiamo individuare il dispositivo che si trova nel punto in cui tutti e tre intersecano. Grafo: definizione Il grafo è una struttura costituita da due tipi di elementi:
  • Nodi : punti importanti in una mappa, per esempio utenti facebook;
  • Archi : relazione binaria, collegamento tra coppie di nodi, per esempio le amicizie su facebook. Due nodi sono adiacenti se esiste un arco tra essi. È importante il calcolo del cammino più breve tra due nodi, la distanza più breve per raggiungere la destinazione. Naturalmente i navigatori sono più complicati perché utilizzano anche informazioni sul traffico. Esiste un problema detto del commesso viaggiatore : commesso che parte da un punto e deve toccare determinati punti nel suo viaggio ma deve effettuare questo viaggio utilizzando il cammino più breve. È difficile trovare algoritmi efficienti che risolvano il problema. Algoritmo di Djikstra : approccio combinatorio che descrive le operazioni che faccio singolarmente per riuscire a calcolare il cammino minimo. Cammino dal nodo a al nodo d. L’idea generale è che calcolo il cammino mino per nodi intermedi che porta da un punto di partenza a una destinazione. In un certo senso ragiona in un’ottica ingorda ma ha una visione più ampia. Ci porta dalla sorgente attraverso altri nodi alla destinazione. 07/05/ LEZIONE 5 Se esistono nodi intermedi nel cammino l’operazione è un po’ più complicata. L’idea generale è che quello che vogliamo fare è calcolare dei numeri assegnandoli ai nodi della rete che rappresentano il cammino minimo che impiego per andare dalla sorgente alla destinazione, quindi per calcolare questo dato l’algoritmo usa un’etichetta cioè assegna un numero ai nodi. Esistono due tipi di etichette ciclicamente aggiornate:

Il grafo del web è stato analizzato e ne son emerse le caratteristiche: è una rete orientata, cioè ci possono essere pagine con molti link ipertestuali uscenti ma pochissimi entranti, i link che escono da una pagina formano il grado uscente , mentre il grado entrante è dato dai link verso una certa pagina. Il contributo principale è quello del grado di separazione che è stata stimata a 19 link in media da Barabasi. Il grafo del web è utilizzato per due motivi dai motori:

  • Esplorazione del web : la premessa per la costruzione dell’archivio è l’esplorazione del web per cercare le pagine create ogni giorno. Se una pagina nuova viene creata, se essa ha un link ipertestuale, il sistema la raggiunge e la memorizza;
  • Ordinamento dei risultati dei motori: l’ordinamento rispetto a una nostra richiesta vengono definiti. È fondamentale perché diversi studi hanno mostrato come essere collocati in prima posizione in una pagina è fondamentale, per lo meno fino al quinto posto. I crawler esplorano il web trovano nuove pagine partendo da alcune pagine importanti quando incontrano una pagina:
  • Memorizzano il contenuto : indicizzazione ovvero per l’archivio;
  • Memorizzano i link ipertestuali : esplorazione. Nel momento in cui viene trovata una pagina viene indicizzata, i motori costruiscono un indice per cui per ogni parola chiave i motori sanno riconoscere quali sono le pagine importanti che vanno restituite in risposta all’utente. La struttura del web condiziona l’esplorazione e l’indicizzazione perché se una pagina non ha link ipertestuali non può essere raggiunta. Indicizzazione L’aspetto principale è costruire un buon ordinamento delle pagine, la costruzione dell’indice. Ad ogni parola viene associato un numero e quello che può succedere per la memorizzazione è che questi numeri vengono ordinati in un certo modo per esempio quanto una pagina è rilevante. L’ordine alfabetico non sarebbe efficace. Quando si scrive una sola parola è facile la ricerca ma quando ne scrivo due l’operazione inizia a complicarsi perché devo cercare in due liste. Per fare questa operazione devo trovare in entrambe le liste ovvero l’ intersezione tra i due insiemi: essendo delle liste ordinate posso calcolare l’intersezione in modo efficiente scorrendo le due liste da sinistra verso destra, quando trovo un elemento comune allora lo aggiungo all’intersezione; se trovo due elementi distinti li confronto e prendo il valore minimo tra i due e lo elimino e mi sposto più avanti nella lista. 1, 2, 5, 7, 9 Intersezione: 1, al 2 l’algoritmo può decidere di avanzare solo nella lista in alto mentre sotto mi fermo perché il 4 può appartenere all’intersezione ma avanzando mi accorgo che il numero successivo è il 5 allora proseguo; continuo così fino a raggiungere 7 e così fino alla fine dell’operazione. 1, 4, 6, 7, 8 08/05/ LEZIONE 6 Page Rank Rappresenta il motivo di successo di Google. È un algoritmo che ha il compito di individuare, misurare la rilevanza di un nodo all’interno della rete. È importante perché nel 90 i motori offrivano degli ordinamenti della SERP non particolarmente qualitativa. Dai 2000 ha permesso la costruzione di pagine di risultati con un’ottima efficacia.

Si tratta di un algoritmo complesso e si basa su una procedura ricorsiva questo nasce dall’esigenza di dover calcolare la rilevanza di una pagina web; la rilevanza della pagina che mi interessa dipende dalla rilevanza delle pagine web della stella entrante; mentre la rilevanza delle pagine web nella stella uscente è influenzata dalla rilevanza della mia pagina. Nel PageRank non basta contare la quantità di link ipertestuali diretti verso di essi ma è fondamentale anche l’importanza che hanno i link entranti. Questo rende complesso il calcolo del PageRank infatti bisogna applicare la procedura del calcolo del valore di rilevanza diverse volte. Intuitivamente se una pagina ha rilevanza X e N link uscenti, trasmette una rilevanza X/N ai nodi della stella uscente. Rilevanza della pagina : somma delle rilevanze ricevute dai nodi della stella entrante. Si dice che la procedura arriva a una convergenza ovvero se la applico per aggiornare le pagine non noto nessun cambiamento, i valori si sono stabilizzati e questi valori che ho calcolato sono i valori di rilevanza effettivi che hanno i nodi all’interno della rete. Il PagaRank è stato analizzato molto nel dettaglio e sono state fornite diverse interpretazioni del suo significato:

  • Interpretazione : probabilità che navigando in modo casuale nel web si visiti una determinata pagina. Quindi seguendo in modo casuale i link ipertestuali possiamo arrivare a una determinata pagina in base alla rilevanza dei link stessi.
  • Rilevanza di una pagina indipendente dalle parole chiave utilizzate nelle ricerche. Il contenuto del testo influenza parzialmente il PageRank.
  • È un valore calcolabile a priori : i risultati vengono presentati in un certo ordine e supponiamo che dipenda solo dal PageRank (valori numerici di rilevanza assegnati alle pagine) non sono stati calcolati in questo momento ma diverso tempo prima, riflettono il valore delle pagine indipendentemente dal momento in cui io faccio la ricerca. La rilevanza delle pagine dipende dal fatto che all’interno della rete le pagine hanno una certa importanza. Non dipende dalle parole chiave inserite ma dalla struttura della rete. Sistemi di raccomandazione o di suggerimento Sono quei software che si azionano quando devono fornirci dei suggerimenti su un comportamento da avere nel futuro (suggeriscono dei contenuti da fruire a cui potremmo essere interessati, come quando facciamo acquisti online). Sono diversi dai cookie che servono a tracciare le nostre attività, il nostro comportamento. I sistemi di raccomandazione sfruttano le informazioni fornite dai cookie, la differenza è che i cookie entrano in funzione anche se non effettuo nessuna autenticazione, mentre i sistemi di raccomandazione si attivano solo se faccio un’autenticazione in modo da essere più precisi nei suggerimenti. A noi interessa il meccanismo che usano questi sistemi per darci i suggerimenti. Ci sono due caratteristiche dei dati che sono importanti per costruire un sistema di raccomandazione:
  • La prima è il comportamento dello specifico utente (quali film ha guardato su netflix);
  • La seconda è come si comportano complessivamente gli utenti. Il comportamento degli utenti di una piattaforma nella generalità per poter dare suggerimenti a utenti diversi in base a delle ricerche generali. Sono applicati a molti ambiti come l’intrattenimento, commercio elettronico, le reti sociali. La possibilità di avere un sistema di raccomandazione efficace è importante data la quantità di dati presenti sul web per cui è fondamentale riuscire a indirizzare l’utente e guidarlo nell’individuazione dei prodotti ai quali può essere interessati.
  • 0 : nessuna valutazione, l’utente non ha visto il film o l’ha visto ma non lo ha valutato;
  • 1 : l’utente da una valutazione positiva;
  • - 1 : l’utente ha dato valutazione negativa. Calcolo Se gli utenti hanno dato entrambi una valutazione e se la valutazione è la stessa, se calcoliamo il prodotto avrà valore 1. Se gli utenti concordano e hanno espresso entrambi una valutazione positiva o negativa il prodotto vale 1. Questo ci permette di legare il valore del prodotto con il fatto che gli utenti abbiano dato un’opinione concorde. Se il giudizio è discorde ovvero se uno ha dato giudizio positivo e l’altro negativo il prodotto sarà sempre - 1. Se invece uno dei valori è 0 non ho nessuna informazione, perché significa che almeno uno dei due utenti non ha espresso valutazioni, il prodotto vale 0. Per valutare il grado di similarità tra vicinati di due utenti x e y faccio la somma dei prodotti delle liste degli utenti. Calcolo il prodotto dei giudizi su uno stesso film e poi sommo tutti i prodotti. Calcolo quanto i utenti concordano globalmente su tutti i film valutati Per misurare il grado di similarità , dividiamo la somma dei prodotti per il numero di film valutati da almeno uno dei due utenti. Calcolo quanto il valore può rappresentare davvero la similarità in base alla valutazione singola di ogni film. Tabella di similarità Posso costruire una tabella di similarità tra tutte le coppie di utenti nella quale memorizziamo il grado di similarità tra ogni coppia di utenti, i valori sono compresi tra - 1 e 1. Valuto la similarità non solo tra utenti differenti ma anche tra utenti che sono lo stesso utente questi valori formano una diagonale che da sempre valori 1, a indicare che siamo sempre al valore massimo con noi stessi. È una proprietà che dal punto di vista pratico non ha nessun tipo di implicazione. La tabella di similarità può essere usata per stimare la valutazione di un utente (quando assente). Stima della valutazione di un utente x : media pesata dei giudizi degli utenti diversi da x che hanno visto il film. Per il calcolo della media pesata:
  • Al numeratore : usiamo le valutazioni che gli utenti hanno dato ma queste valutazioni sono moltiplicate per la similarità che gli utenti hanno con x.
  • Al denominatore : dividiamo per dei valori assoluti delle similarità che gli utenti hanno con x. Stima, valutazioni e suggerimenti Posso stimare le valutazioni degli utenti e cercare di prevedere l’apprezzamento che un utente avrà di un film quindi posso costruire i contenuti che avendo valore più alto hanno maggiore probabilità di incontrare i gusti dell’utente. Per ogni film non visto è calcolata la stima della valutazione dell’utente. Altri fattori considerabili dai sistemi di raccomandazione:
  • Inclinazione degli utenti : gli utenti hanno una loro modalità di comportamento, c’è chi tende a dare giudizi più positivi e altri più negativi;
  • Qualità dell’elem ento: alcuni elementi sono considerati di ottima qualità dalla quasi totalità degli utenti;
  • Dinamiche temporali : caratteristiche di un utente possono cambiare nel tempo. Le opinioni cambiano.

LEZIONE 8

Fattori nascosti Determinazioni e previsioni Sistemi che cercano di comprendere le motivazioni che motivano i giudizi positivi o negativi degli utenti. L’obiettivo è individuare questi fattori che non sono espliciti per permettere una migliore comprensione dei meccanismi di valutazione da parte degli utenti. Il fattore nascosto è un attributo che ha un elemento all’interno che fa sì che l’utente giudichi positivamente o negativamente il bene o prodotto. In breve, influenza il giudizio di un utente. Determinare i fattori nascosti è rilevante nell’ambito dei sistemi di suggerimento e per capire le motivazioni che spingono gli utenti a comprare una cosa piuttosto che un’altra. ESEMPIO: Ammettiamo di considerare un catalogo di film. Ipotizziamo che esistano pochi fattori nascosti, diciamo 2, che influenzano le valutazioni degli utenti per esempio il genere del film e il paese in cui è stato girato. Cerchiamo di determinare quando 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, magari perché gli utenti non hanno visto il film. F1 F2 F U1 2 4 5 U2 1 / 4 U3 5 3 / Assumiamo le caratteristiche C1 e C2 siano i due fattori che influenzano le votazioni. Dobbiamo capire quanto un utente è appassionato dalle due caratteristiche e la seconda cosa da valutare è quanto il prodotto possiede queste due caratteristiche. Usiamo due tabelle:
  • la prima descrive l’interesse che hanno gli utenti per le due categorie; (x1, 1 riga 1 colonna 1). C1 C U1 X1, 1 X1, 2 U2 X2, 1 X2, 2 U3 X3, 1 X3, 3
  • la seconda rappresenta quanto è presente una caratteristica in uno specifico film. I valori inseriti nelle tabelle sono ignoti e noi dobbiamo capire come calcolare questi valori. Nel momento in cui noi conosciamo i valori sapremmo due informazioni:

F1 F2 F

C1 Y1, 1 Y1, 2 Y1, 3

C2 Y2, 1 Y2, 2 Y2, 3

Una volta terminato il procedimento abbiamo ottenuto che abbiamo una conoscenza su quanto gli utenti hanno interesse nei due fattori; un altro aspetto importante è che possiamo fare previsioni per il giudizio che gli utenti daranno ad un certo film. Sfida di Netflix Nel 2006 Netflix propose una sfida per migliorare il sistema di suggerimento usando il metodo dei fattori nascosti che ha portato un miglioramento del 7%. Purtroppo, ce n’è stato un altro che ha fatto meglio BellKor’s Pragmatic Chaos che combinava molti algoritmi e ha portato un miglioramento del 10%. SECONDA PARTE DEL CORSO LEZIONE 9 15/05/ I dati possono avere caratteristiche differenti:

  • Strutturati e non strutturati;
  • Quantitativi e qualitativi;
  • Testi, numeri, grafi. Per ogni tipo di dato esistono diverse tecniche di analisi. Caratteristiche dei dati La prima distinzione da fare è tra dati strutturati e non strutturati.
  • Dati strutturati : sono dati per cui possiamo sfruttare un’organizzazione generalmente in tabelle. Sono caratterizzati da una chiara organizzazione dei dati grazie all’organizzazione in tabelle (es. osservazioni scientifiche, database). Dal punto di vista dell’elaborazione nei dati strutturati è più semplice perché i dati sono organizzati con criterio. I dati sono diffusi in ambiti limitati come gli archivi.
  • Dati non strutturati : sono quei dati in cui non abbiamo un’organizzazione così chiara, non abbiamo una chiara interpretazione dei dati, non è immediata l’interpretazione ma dobbiamo ragionare per interpretarli e comprenderli (es. post social media, sequenza generica di nucleotidi). L’elaborazione dei dati è più complessa perché ho un’informazione priva di organizzazione e quindi non so dove andare a prendere i dati che mi servono. Prima di analizzare i dati per arrivare al proprio obiettivo c’è una preelaborazione dei dati. Questo tipo di dati è molto più presente rispetto agli altri. Molti dati però sono privi di struttura come per esempio le pagine web perché se inserisco un testo in una pagina web non so cosa rappresenta dal punto di vista del significato. Pre – elaborazione La fase di pre – elaborazione:
  • Input : dati strutturati;
  • Output : dati non strutturati. La definizione di una struttura è basata sulla definizione di caratteristiche dei dati. Per esempio, in un testo: il numero di parole, presenza di caratteri speciali, classificazione semantica. Nel momento in cui faccio la preelaborazione può essere che non tutte le informazioni vengano rappresentate.

Dati quantitativi e qualitativi I dati quantitativi sono dati esprimibili con dei numeri, a seconda del dato che ho posso effettuare delle operazioni matematiche, sono una delle categorie più diffuse di dati (fatturato di un negozio, numero di acquisti giornalieri, numero di visite di una pagina web). I dati qualitativi sono quelli che non vengono rappresentati come numeri e su cui non posso effettuare operazioni matematiche; ciò che si può fare è tenere conto della rappresentazione di categorie. Il testo in generale è un dato qualitativo, anche il CAP pur essendo numerico anche sommandoli non ottengo un dato significativo. Operazioni sui dati Dati quantitativi : posso fare operazioni di somma, media, andamento nel tempo come si sono evolute le visite a una pagina web tra ieri e oggi. Dati qualitativi : posso fare operazioni valori univoci (le parole che possiamo trovare in un testo), numero dei valori univoci (quante sono le parole distinte che occupano il testo), la frequenza dei valori (quanto spesso si verifica una parola). Dati discreti e continui I dati quantitativi possono essere divisi in:

  • Dati discreti : se li analizzo possono assumere un insieme finito di valori, possono essere contati come il lancio di un dado possono essere 6;
  • Dati continui : dati che possono assumere un numero infinito di valori perché questi dati possono assumere una precisione infinita, devono essere misurati occorre una misura e una approssimazione per esempio misuriamo la temperatura consideriamo delle cifre decimali. Quattro livelli dei dati I dati possono appartenere a uno dei diversi livelli e a seconda del livello di appartenenza posso applicare tecniche diverse di analisi. I dati strutturati possono essere suddivisi in livelli. Per ogni livello posso definire:
  • Caratteristiche dei dati;
  • Operazioni applicabili;
  • Misure per descrivere i dati. Quattro livelli Livelli dei dati:
  • Livello nominale ;
  • Livello ordinale ;
  • Livello degli intervalli ;
  • Livello dei rapporti. Per ogni livello esistono:
  • Operazioni applicabili;
  • Definizione di centro della caratteristica. La misurazione del centro è un valore che sintetizza il dato e ne descrive la tendenza, rappresenta una sintesi dei dati. Possiamo calcolare il centro in modo differente a seconda dei livelli in cui si trovano i dati: media, mediana, moda.
  • Quelle dei livelli precedenti ;
  • Somma ;
  • Sottrazione ;
  • Non posso fare moltiplicazioni e divisioni : questo dipende dall’assenza di uno 0 assoluto. Il centro può essere misurato con:
  • Moda ;
  • Mediana ;
  • Media aritmetica : è la somma dei valori numerici divisa per il numero di valori numerici considerati. A questo livello posso cercare di descrivere meglio come è fatto l’insieme dei dati. Dispersione dei dati Oltre al centro dei dati, possiamo misurare la dispersione dei dati: quanto i dati sono distanti dal centro. La Dispersione dei dati serve per capire quanto i dati sono ben rappresentati dal centro o quanto sono rappresentati in maniera sommaria. Rappresenta quanto in media i dati sono distanti dal centro cioè dalla media aritmetica. Per misurare la dispersione si usa una quantità che si chiama deviazione standard e misura quanto i dati sono vicini o lontani dalla media. Livello dei rapporti È molto simile al livello degli intervalli ma i dati sono espressi in modo quantificabile su cui è definito uno 0 assoluto. Esempio numero di visite giornaliere di una pagina web. Le operazioni consentite sono:
  • Ordinamento ;
  • Somma e differenza ;
  • Moltiplicazione e divisione. In genere i valori sono non negativi. Il centro può essere misurato con:
  • Moda ;
  • Mediana ;
  • Media aritmetica : questa operazione è la più utilizzata anche in questo livello;
  • Media geometrica : La media geometrica di due o più valori numerici è la radice n-esima del prodotto dei valori considerati, con n il numero di valori. Definizione di una struttura In alcuni casi, considerando un insieme di dati privi di struttura, è possibile imporre una struttura sui dati ovvero permettere operazioni apparentemente non consentite. Per esempio:
  • Consentire la somma a livello ordinale;
  • Consentire la divisione a livello degli intervalli. Esplorare i dati: tipi di dati e loro caratteristiche La disciplina che si occupa di analisi dei dati è la scienza dei dati. Nel momento in cui devo analizzare un insieme dei dati questa disciplina richiede 5 fasi:
  • Definire la domanda : cerchiamo di definire il motivo per cui vogliamo analizzare i dati, quale problema vogliamo risolvere, a quale domanda dobbiamo dare risposta;
  • Acquisire i dati : volgiamo raccogliere i dati che nelle fasi successive dovremo analizzare per formulare la risposta;
  • Esplorare i dati : è un’analisi preliminare dei dati. Cerchiamo di capire quali sono i tipi di dati che abbiamo a che livello si collocano e quali sono le operazioni che posso applicare;
  • Definire un modello per i dati : si cerca di capire se esistono legami tra i dati, delle regole che stanno alla base dei dati che possono spiegare i dati stessi;
  • Presentazione dei risultati : una volta costruito il modello, quando siamo riusciti a rispondere alla domanda, dobbiamo presentare, comunicare i dati. Dobbiamo comunicare i risultati raggiunti. Tecniche per l’analisi dei dati L’ analisi esplorativa dei dati: trasformazione dei dati grezzi in dati organizzati. Quando i dati non sono perfetti ci possono essere due problematiche:
  • Presenza di dati mancanti : tra i dati che stiamo considerando una parte dei dati non c’è;
  • Presenza di errori : dati che presentano dei valori scorretti. Per i dati mancanti è possibile cercare in qualche modo una soluzione (usando il centro o la media). Per gli errori è più complicato perché prima bisogna determinare l’errore, e già questo è difficile, ma ancora più complesso è correggere l’errore stesso. Dopo l’analisi esplorativa c’è la definizione di un modello che spieghi in qualche modo mi aiuti a dare una risposta al problema formulato. Ci sono due tecniche:
  • Data mining : esplorare ulteriormente i dati per trovare relazioni implicite che non sono immediatamente disponibili ma sono meno evidenti;
  • Machine learning : sono tecniche di apprendimento sulla base dei dati che cercano di individuare l’insieme dei dati per definire che esistono delle relazioni. Processo di esplorazione SLIDE Nel processo di esplorazione è necessario:
  • Comprendere la natura dei dati : se sono organizzati o non organizzati; qualitativi o quantitativi;
  • Comprendere il livello dei dati : nominale, ordinale, degli intervalli, dei rapporti;
  • Migliorare la qualità : dati mancanti. Informazione statistiche su una colonna numerica (anche se ordinale):
  • Mediana;
  • Minimo e massimo;
  • Distribuzione dei valori: È una descrizione più fine di come sono fatti i valori. Per ogni categoria quanti valori ho? Analisi più complesse Oltre alle statistiche complessive, potremmo chiederci informazioni più complesse. Es. calcolare la media solo per una categoria di dati il valore più frequente per una certa categoria.