
















































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
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
1 / 56
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!

















































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:
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:
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:
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:
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)
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:
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:
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à:
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.
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:
Statistica e probabilità Statistica e calcolo della probabilità sono due cose diverse.