<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>caccio&#039;s blog</title>
	<atom:link href="https://caccio.bimodeler.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://caccio.bimodeler.com</link>
	<description>The BLOG of Stefano Cazzella</description>
	<lastBuildDate>Tue, 30 May 2023 17:39:05 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.7</generator>
	<item>
		<title>Problemi di ottimizzazione per computer quantistici</title>
		<link>https://caccio.bimodeler.com/problemi-di-ottimizzazione-per-computer-quantistici/</link>
					<comments>https://caccio.bimodeler.com/problemi-di-ottimizzazione-per-computer-quantistici/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Mon, 01 Mar 2021 06:06:30 +0000</pubDate>
				<category><![CDATA[Quantum Computing]]></category>
		<category><![CDATA[D-Wave]]></category>
		<category><![CDATA[Ising]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Quantum Annealing]]></category>
		<category><![CDATA[QUBO]]></category>
		<guid isPermaLink="false">https://caccio.bimodeler.com/?p=819</guid>

					<description><![CDATA[<p>La risoluzione di problemi di ottimizzazione è fra le prime applicazioni concrete dell'attuale generazione di computer quantistici per la risoluzione di problemi reali in contesti di business.<br />
Un semplice esempio illustra come tali problemi vadano formulati sotto il profilo matematico e come questi possano essere risolti con le librerie rilasciate da D-Wave (prima azienda a realizzare computer quantistici specializzati per la risoluzione di tale classe di problemi).</p>
The post <a href="https://caccio.bimodeler.com/problemi-di-ottimizzazione-per-computer-quantistici/">Problemi di ottimizzazione per computer quantistici</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">



<p>La risoluzione euristica di problemi di ottimizzazione rientra fra le prime applicazioni di modelli computazionali basati sulla meccanica quantistica per la risoluzione di problemi reali in contesti di business.</p>



<p>Si tratta di quei problemi in cui esistono un numero molto elevato di scelte che un&#8217;azienda può operare e un modello matematico che sia in grado di valutare numericamente quanto ciascuna combinazione di tali scelte soddisfi gli obiettivi aziendali. Il numero di combinazioni è però così elevato (infinito nel caso in cui le scelte riguardino un dominio continuo) da rendere non perseguibile in pratica la ricerca esaustiva della soluzione migliore che consisterebbe nel calcolare il valore corrispondente a ciascuna combinazione e scegliere quella cui corrisponde il valore maggiore o minore (a seconda dell&#8217;obiettivo).</p>



<p>In termini matematici, se \( x = x_1, \dots, x_n \) è il vettore delle possibili scelte e \( H(x) \) la funzione che rappresenta l&#8217;obiettivo aziendale da massimizzare o minimizzare (i due problemi sono formulabili in modo identico a meno di un cambio di segno), il problema può essere espresso come: \[  x^*  = \underset{ x \in D}{\arg\min} \, H(x) = \underset{x \in D}{\arg\max} \, &#8211; H(x)  \]</p>



<p>Diverse aziende stano sperimentando metodi risolutivi che sfruttano le <strong>tecnologie quantistiche</strong> per trovare una soluzione ottimale ad alcuni problemi aziendali. Il primo esempio Italiano che ha attirato la mia attenzione, circa un anno fa, è quello di <a href="https://www.techradar.com/news/tim-uses-quantum-computing-to-optimise-4g-5g" target="_blank" rel="noreferrer noopener">TIM </a>che ha utilizzato, prima in Europa, tale approccio per l&#8217;ottimizzazione della propria rete 4G/5G; non mancano altri esempi di applicazioni reali in mercati differenti o per problemi differenti.</p>



<p>La prima azienda a realizzare computer quantistici dedicati alla risoluzione di questa tipologia di problemi è stata <strong>D-Wave</strong>, ma altre aziende stanno sviluppando soluzioni concorrenti basate spesso su una combinazione di computazione classica e quantistica.</p>



<p>L&#8217;euristica adottata per la risoluzione di tali problemi è detta <em>Quantum Annealing</em> e si basa su due principi cardine della meccanica quantistica: la sovrapposizione degli stati (che consente di rappresentare contemporaneamente tutte le possibili soluzioni) e il tunnel quantistico che consente di oltrepassare le barriere di potenziale alla ricerca di uno stato fondamentale a energia minima (che rappresenterà la soluzione ottimale).</p>



<p>Tale tecnica risolutiva si applica ad una particolare formulazione di problemi di ottimizzazione nota come <strong>QUBO </strong>(Quadratic Unconstrained Binary Optimization) o ad una sua variante meglio nota come modello di <strong>Ising</strong>. Nel primo caso le variabili del modello sono di tipo binario, mentre nel secondo queste assumono come valore 1 o -1. In entrambi i casi la funzione da minimizzare (o massimizzare) è espressa come polinomio di secondo grado \[ x^* = \underset{x \in \{-1,1\}^n}{\arg\min} { }  \sum_{i=1}^{n} {\sum_{j=i}^{n} {h_{i,j} x_i x_j}} \]</p>



<h2 class="wp-block-heading">Esempio di applicazione del modello di Ising</h2>



<p>Un esempio scolastico di applicazione del modello di Ising è rappresentato dal problema di distribuire uniformemente una serie di container su due navi cargo in modo da equilibrarne il peso. Le variabili \( x_i \in \{-1,1\} \) rappresentano la scelta di caricare il container i-esimo di peso \( w_i \) sulla nave A \( ( x_i = -1 ) \) piuttosto che sulla nave B \( ( x_i = 1 ) \). </p>



<p>La funzione da minimizzare è quella che misura la differenza (in valore assoluto) fra il peso del carico della nave A e quello della nave B che, tenendo conto dei segni assunti dalle variabili \(x_i\), può quindi essere scritta come \[  H = \left| \sum_{i=1}^{n} {w_i x_i} \right| \] Essa può essere formulata equivalentemente anche come \[ H = \left( \sum_{i=1}^{n} {w_i x_i} \right)^2 \] avendo sostituito l&#8217;operatore di valore assoluto con quello di elevazione al quadrato. Sviluppando il quadrato del polinomio di primo grado, e tenendo conto che \( w_i^2 x_i^2 \) assume lo stesso valore indipendentemente dal valore assunto da  \( x_i \) ed è quindi ininfluente ai fini della minimizzazione di \( H \), si ottiene \[  H = \sum_{i=1}^{n} {\sum_{j=i+1}^{n} 2{w_i w_j x_i x_j}} \] che coincide esattamente con la formulazione generale vista in precedenza in cui \( h_{i,j} = 2 w_i w_j \).</p>



<h2 class="wp-block-heading">Risoluzione con D-Wave (Simulated Annealing)</h2>



<p>L&#8217;esempio delle due navi cargo così formulato può essere facilmente risolto con poche righe di Python ricorrendo alle librerie di Simulated Annealing rilasciate da D-Wave .</p>



<pre class="wp-block-code"><code>import neal

# questo è il vettore dei pesi dei container da caricare:
w = &#091;5, 1, 9, 21, 35, 5, 3, 5, 10, 11]
N = len(w)

# questa è la funzione che calcola i coefficienti della funzione H
def getQuadraticTerms(weights) :
    model = {}
    for i in range(0,N) :
        for j in range (i+1,N) :
            model&#091;(i, j)] = weights&#091;i]*weights&#091;j]
    return model

# questo è il codice per la definizione e risoluzione del problema
J = getQuadraticTerms(w)
sampler = neal.SimulatedAnnealingSampler()
sampleset = sampler.sample_ising({}, J)
print(sampleset)</code></pre>



<p>Il risultato ottenuto consiste nella soluzione \( x^*_0, \dots, x^*_9 \) al problema formulato </p>



<pre class="wp-block-code"><code>   0  1  2  3  4  5  6  7  8  9  energy num_oc.
0 +1 -1 -1 +1 -1 -1 -1 +1 +1 +1 -1026.0       1
&#091;'SPIN', 1 rows, 1 samples, 10 variables]</code></pre>



<p>seguendo la quale si ottiene un bilanciamento ottimale del carico fra le due navi:</p>



<pre class="wp-block-preformatted">Container 0 is on ship B 
Container 1 is on ship A 
Container 2 is on ship A 
Container 3 is on ship B 
Container 4 is on ship A 
Container 5 is on ship A 
Container 6 is on ship A 
Container 7 is on ship B 
Container 8 is on ship B 
Container 9 is on ship B 
A = 53, B = 52</pre>
</div>The post <a href="https://caccio.bimodeler.com/problemi-di-ottimizzazione-per-computer-quantistici/">Problemi di ottimizzazione per computer quantistici</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/problemi-di-ottimizzazione-per-computer-quantistici/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Classificatori quantistici e reti neurali</title>
		<link>https://caccio.bimodeler.com/classificatori-quantistici-e-reti-neurali/</link>
					<comments>https://caccio.bimodeler.com/classificatori-quantistici-e-reti-neurali/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Wed, 06 Jan 2021 13:30:00 +0000</pubDate>
				<category><![CDATA[Advanced Analytics]]></category>
		<category><![CDATA[Quantum Computing]]></category>
		<category><![CDATA[Neural Networks]]></category>
		<category><![CDATA[Variational Classifier]]></category>
		<guid isPermaLink="false">https://caccio.bimodeler.com/?p=602</guid>

					<description><![CDATA[<p>I Variational Classifier sono una delle possibili applicazioni pratiche della computazione quantistica all'ambito del machine learning. Essi hanno alcune analogie con le reti neurali sia nella struttura topologica che nelle tecniche di addestramento. Il confronto fra i due modelli può quindi essere utile per capire meglio i primi, partendo dai secondi.</p>
The post <a href="https://caccio.bimodeler.com/classificatori-quantistici-e-reti-neurali/">Classificatori quantistici e reti neurali</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">



<div class="wp-block-group disclaimer"><div class="wp-block-group__inner-container is-layout-flow">
<p>Pur non essedo squisitamente tecnica, la lettura presuppone una conoscenza di base su tematiche di machine leraning e computazione quantistica. Potete trovare alcune informazioni introduttive ai seguenti link:</p>



<ul><li>Machine learning: <a href="https://towardsdatascience.com/simple-introduction-to-neural-networks-ac1d7c3d7a2c" target="_blank" rel="noreferrer noopener">Introduction to Neural Netwokrs</a> illustra nel dettaglio come funziona un modello di classificazione basato su rete neurale e come possa essere addestrato con la tecnica della discesa del gradiente</li><li>Quantum computing: <a href="https://towardsdatascience.com/the-ultimate-beginners-guide-to-quantum-computing-and-its-applications-5b43c8fbcd8f" target="_blank" rel="noreferrer noopener">The Ultimate Beginner’s Guide to Quantum Computing and its Applications</a> fornisce una prima introduzione sulle basi teoriche e le implementazioni fisiche esistenti di computer quantistici</li></ul>
</div></div>



<h2 class="wp-block-heading">Reti neurali</h2>



<p>Le reti neurali sono una delle classi di algoritmi di machine learning più note e iconiche per l&#8217;addestramento automatico di modelli predittivi, compresi i modelli di classificazione automatica. Sono quei modelli che, dato un vettore di caratteristiche \( x = (x_1, \dots, x_n)  \in \mathbf{R}^n\) che descrive un evento o un oggetto, sono in grado di assegnare tale evento/oggetto ad una classe \( y \in \{0, \dots, c\} \). Ad esempio, se descriviamo lo stato di salute di un paziente attraverso i risultati numerici di una serie di analisi cliniche, diagnosticare se quel paziente sia affetto o meno da una specifica malattia è una forma di classificazione del paziente; in questo caso si tratta di una classificazione binaria essendo definite solo due classi: pazienti sani \( (y = 0) \) e malati \( (y = 1) \) rispetto a quella specifica malattia. Dal punto di vista matematico, un classificatore binario è una funzione del tipo:</p>



<p>\[ y=f(x) : \mathbf{R}^n \rightarrow \{0, 1\} \]</p>



<p>Nella loro forma generale, le reti neurali sono costituite da un grafo (rete) di nodi (neuroni artificiali) organizzati in più strati. Ogni nodo calcola un valore a partire dalla combinazione lineare dei valori calcolati dai nodi dello strato precedente con una serie di parametri detti pesi (più una costante additiva denominata <em>bias</em>). Generalmente i modelli di classificazione basati su reti neurali hanno un primo strato con tanti nodi quante sono le caratteristiche che compongono il vettore di input \(x\) e un ultimo strato con un nodo per ogni classe che valuta la probabilità di appartenenza del vettore di input \(x\) a quella classe. </p>



<figure class="wp-block-image size-large"><a href="https://caccio.bimodeler.com/wp-content/uploads/2021/01/ann.png"><img decoding="async" src="https://caccio.bimodeler.com/wp-content/uploads/2021/01/ann.png" alt="ANN - Rete neurale" class="wp-image-736"/></a></figure>



<p>I pesi \( \omega \) e i bias \( \nu \) di tutti i nodi della rete costituiscono l&#8217;insieme dei parametri del modello: al variare dei parametri, cambia anche la classe associata dalla rete ad un vettori di input. Nel caso di un <strong>classificatore binario</strong> è sufficiente un unico nodo per il calcolo della funzione: </p>



<p>\[ y = \left \{ \begin{split}<br> 1 &amp; \mbox{ se } f(x;\omega, \nu) \geq 0.5 \\<br> 0 &amp; \mbox{ altrimenti} \\<br>\end{split} \right. \]</p>



<p>Per individuare il giusto valora da attribuire ai parametri del modello viene utilizzato un insieme di esempi \(T={(x^1,y^1),\dots,(x^m,y^m)} \) costituito da \( m \) coppie (\( x^j, y^j \)) che rappresentano la corrispondenza fra uno specifico vettore \(x^j\) e la sua classe di appartenenza \(y^j\) già nota. L&#8217;addestramento consiste nel trovare una configurazione dei parametri che minimizzi la distanza fra le previsioni della rete e gli esempi a disposizione. Tale distanza è definita da una funzione di costo o funzione di errore (loss function) e per la sua minimizzazione si utilizza una tecnica algoritmica denominata <a href="https://en.wikipedia.org/wiki/Gradient_descent">discesa del gradiente</a>. </p>



<p>Se l&#8217;addestramento avviene correttamente, la rete neurale sarà in grado di classificare correttamente (o meglio con un accettabile margine di errore) anche vettori di input (pazienti) che non fanno parte dell&#8217;insieme di esempi forniti per il suo addestramento.</p>



<h2 class="wp-block-heading">Classificatori quantistici</h2>



<p>Esiste una tipologia di classificatori quantistici, detti <strong>Variational Classifier</strong>, che presenta diverse analogie con le reti neurali. La loro struttura è costituita da una serie di nodi (gate) che effettuano un&#8217;unica tipologia di calcolo parametrico a partire da quanto calcolato dai loro predecessori (come avviene per i neuroni di una rete neurale con i suoi pesi &#8211; i parametri &#8211; e le dipendenze dai neuroni dello strato precedente). </p>



<p>Un processore quantistico, al pari di uno classico, effettua una serie di cambi di stato dei propri registri interni seguendo la sequenza di istruzioni che gli viene fornita. Diversamente dai computer classici, i registri sono costituiti da <strong>qubit </strong>anziché bit: un registro composto da \( n \) qubit è in grado di rappresentare un vettore di \( 2^n \) numeri complessi.</p>



<p>Il vettore di input \( x \in \mathbf{R}^n \) che descrive le condizioni di salute di un paziente può quindi essere codificato in un registro di \( N = \lceil log_2(n) \rceil \) qubit; i nodi (gate) del grafo (circuito) realizzano la serie di cambiamenti di stato del registro che calcola la classe di appartenenza prevista dal modello. Diversamente da quanto accade in un computer classico, lo stato interno del registro non è direttamente accessibile, ma è possibile effettuare delle misure ripetute per poter estrarre la probabilità di appartenenza del vettore di input \( x \) ad una delle due classi: \( y=0 \) o \( y=1 \).</p>



<figure class="wp-block-image size-large"><a href="https://caccio.bimodeler.com/wp-content/uploads/2021/01/vqc-1.png"><img decoding="async" src="https://caccio.bimodeler.com/wp-content/uploads/2021/01/vqc-1.png" alt="Variational Quantum Classifier - circuit model" class="wp-image-754"/></a></figure>



<p>Per la fase di <strong>codifica </strong>si usa la così detta <em>amplitue encoding</em>, ossia le caratteristiche del vettore vengono normalizzate e rappresentate come ampiezze dei versori della base canonica del registro \( q_1 \otimes \dots \otimes q_n  \) che assume lo stato:</p>



<p>\[ \vert \psi(x) \rangle = \frac{1}{| x |} \sum_{i=0}^{n-1} x_{i+1} \vert i \rangle \]</p>



<p>La fase di <strong>classificazione </strong>combina le ampiezze che codificano le diverse caratteristiche utilizzando delle trasformazioni parametriche; abitualmente la scelta ricade su una qualche combinazione di operatori di rotazione \(  R_a(\omega)  \) e gate CNOT. Ogni blocco di operatori è applicato tipicamente a due qubit alla volta (non necessariamente adiacenti), ma la ricombinazione interessa tutte le ampiezze. La disposizione dei gate \( G ( \omega_k) \) nel circuito e la scelta degli assi di rotazione rappresentano le caratteristiche topologiche del modello. Gli angoli di rotazione \( \omega_k \) costituiscono invece l&#8217;insieme dei parametri del modello.</p>



<p>La <strong>misura </strong>del qubit \( q_1 \) può restituire solo due valori: 0 e 1; per calcolare la funzione di classificazione del vettore \( x \) definita come</p>



<p>\[ y = \left \{ \begin{split}<br>1 &amp; \mbox{ se } f(x;\omega,\nu) = \Pr(q_1=0|x,\omega) + \nu \geq 0.5 \\<br>0 &amp; \mbox{ altrimenti} \\<br>\end{split} \right. \]</p>



<p>e necessario stimare la \( \Pr(q_1=0) \) reiterando la misura del qubit \( q_1 \) più volte, a parità di \( x \) e \( \omega \), e calcolando la frequenza con cui viene ottenuto il valore 0.</p>



<p>Come per le reti neurali, l&#8217;individuazione dei parametri ottimali viene effettuata attraverso l&#8217;algoritmo di discesa del gradiente.</p>



<figure class="wp-block-image size-large"><a href="https://caccio.bimodeler.com/wp-content/uploads/2021/01/vqc-2.png"><img decoding="async" src="https://caccio.bimodeler.com/wp-content/uploads/2021/01/vqc-2.png" alt="Hybrid quantum architecture for Variational Quantum Classifiers" class="wp-image-773"/></a></figure>



<p>L&#8217;architettura adottata per l&#8217;addestramento di un Variational Classifer è di tipo ibrido e prevede una suddivisione dei ruoli fra unità di calcolo quantistico (QPU) e classico (CPU). La componente quantistica del calcolo è realizzata dai circuiti del modello di cui sopra e viene attivata dalla CPU che fornisce sia il vettore normalizzato delle caratteristiche \( x \) che i parametri del modello \( \omega \) e \( \nu \) da utilizzare. La QPU fornisce in output le misure rilevate al termine della computazione che vengono utilizzate dalla CPU per confrontarle con il risultato corretto \( y \) fornito dall&#8217;esempio \( (x, y) \) e determinare la variazione da apportare ai parametri del modello nel giro successivo. Fissata una opportuna funzione di errore che valuti la distanza fra le previsioni del modello e gli esempi forniti, l&#8217;algoritmo di discesa sul gradiente individua la correzione da apportare ai parametri per far convergere il modello verso una configurazione sub-ottimale (ottimo locale).</p>



<p>L&#8217;adozione di un&#8217;<strong>architettura ibrida</strong> come quella mostrata è oggi la soluzione di riferimento per l&#8217;applicazione di modelli di computazione quantistica in contesti reali. L&#8217;astrazione di una QPU e una CPU che interagiscono va traslata in un&#8217;architettura in cui le risorse di calcolo quantistico sono disponibili sotto forma di servizi in cloud attivati e integrati all&#8217;interno di algoritmi implementati con architetture di calcolo di tipo classico in cloud o on-premises.</p>
</div>The post <a href="https://caccio.bimodeler.com/classificatori-quantistici-e-reti-neurali/">Classificatori quantistici e reti neurali</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/classificatori-quantistici-e-reti-neurali/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>La mia strada verso Quantum</title>
		<link>https://caccio.bimodeler.com/la-mia-strada-verso-quantum/</link>
					<comments>https://caccio.bimodeler.com/la-mia-strada-verso-quantum/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Sun, 03 Jan 2021 21:55:01 +0000</pubDate>
				<category><![CDATA[Quantum Computing]]></category>
		<category><![CDATA[Q#]]></category>
		<category><![CDATA[QISKIT]]></category>
		<guid isPermaLink="false">https://caccio.bimodeler.com/?p=620</guid>

					<description><![CDATA[<p>In questo post è riassunto il percorso  fatto per approfondire alcuni aspetti della computazione quantistica indicando libri, articoli e corsi che hanno maggiormente contribuito alla realizzazione di un modello di machine learning quantistico.</p>
The post <a href="https://caccio.bimodeler.com/la-mia-strada-verso-quantum/">La mia strada verso Quantum</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">
<p>Mi sono laureato in Ingegneria Informatica nel 2001 alla Sapienza. In quegli anni ai computer quantistici venivano dedicati giusto pochi cenni nel corso di informatica teorica. Erano considerati un po&#8217; come una chimera, un prodigio in grado di rendere trattabili problemi altrimenti intrattabili. Più simili ad una speculazione filosofica che ad un prodotto della tecnica. Così sono rimasti per me per molti anni, mentre mi interessavo a tematiche diverse legate al mondo dei dati e del valore delle informazioni.</p>



<p>Fra il 2016 e il 2018 il tema della disponibilità di processori quantistici comincia a rimbalzare fra la stampa specialistica e quella generalista; vengono anche resi disponibili in cloud i primi servizi di calcolo quantistico ad uso di enti di ricerca o semplici curiosi. Solo nei primi giorni del 2019, con l&#8217;annuncio di IBM al CES del primo computer quantistico universale per uso commerciale (IBM System Q One), mi rendo veramente conto che si tratta di una innovazione che avrà un impatto dirompente già sulla mia generazione (e che non riuscirò ad andare in pensione senza esserne coinvolto).</p>



<p>Nell&#8217;estate del 2019, complice il tempo libero della pausa estiva, comincio a studiare i primi rudimenti di computazione quantistica nella splendida cornice del mare di Mallorca. Mi procuro la versione per Kindle di un testo introduttivo (<a href="https://mitpress.mit.edu/books/quantum-computing-everyone"><em>Quantum Computing for Everyone</em></a> di Chris Bernhardt pubblicato dalla MIT Press) la cui chiarezza e semplicità della trattazione mi aiutano indubbiamente ad appassionarmi alla materia. Le reminiscenze dei corsi universitari di algebra e qualche supporto di Wikipedia &amp; co. mi consentono di andare spedito fra Bell, Deutsch–Jozsa e Grover.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" loading="lazy" width="726" height="328" src="https://caccio.bimodeler.com/wp-content/uploads/2020/12/libri-qc.png" alt="" class="wp-image-641" srcset="https://caccio.bimodeler.com/wp-content/uploads/2020/12/libri-qc.png 726w, https://caccio.bimodeler.com/wp-content/uploads/2020/12/libri-qc-300x136.png 300w" sizes="(max-width: 726px) 100vw, 726px" /></figure></div>



<p>Il primo testo aveva alimentato la curiosità e l&#8217;urgenza di mettere in pratica l&#8217;elegante impostazione teorica dell&#8217;interpretazione di Copenaghen. Così il secondo testo (sempre divorato durante le ferie) lo scelgo con un taglio più vicino alla mia anima da sviluppatore: <a href="https://www.oreilly.com/library/view/programming-quantum-computers/9781492039679/"><em>Programming Quantum Computers &#8211; Essential Algorithms and Code Samples</em></a> della O&#8217;Reilly. Il libro cavalca il modello di un&#8217;architettura di calcolo tradizionale dotata di un&#8217;unità di calcolo quantistico (QPU), in analogia a quanto viene fatto con le GPU (co-processore grafico) per accelerare le prestazioni grafiche di PC e smartphone. In questo scenario la QPU abilita un modello di computazione ibrida in cui alcune parti dell&#8217;algoritmo sono eseguite con un modello classico e altre sfruttando le potenzialità del calcolo quantistico. Oggi un processore quantistico richiede strutture grandi come una stanza per funzionare, ma il modello di computazione ibrida può essere adattato sostituendo la QPU con servizi di computazione quantistica disponibili in cloud.</p>



<p>Tornato dalle ferie, nei ritagli di tempo libero, comincio a studiare il linguaggio ideato da Microsoft specificamente per la programmazione quantistica (Q#) e affianco alla scrittura di codice la simulazione matematica degli stessi algoritmi con Octave e Maxima (versioni open-source alternative a tool come Matlab e Mathematica) per mantenere il parallelismo fra la componente teorica e lo sviluppo di codice che ha caratterizzato le letture estive.</p>



<p>Comincio anche a leggere articoli scientifici reperibili principalmente in forma integrale su <a href="https://arxiv.org/">arXiv</a>&nbsp;e a fruire di alcuni corsi su piattaforme MOOC come EDX e Coursera, fra cui il corso di <a href="https://www.coursera.org/learn/quantum-computing-algorithms"><em>Introduction to Quantum Computing</em></a> organizzato dalla Saint Petersburg State University. In questo periodo l&#8217;attenzione è rivolta a colmare il gap fra i fondamenti della computazione quantistica e le applicazioni a problemi del mondo reale. Ad oggi i tre filoni più evidenti di applicazione sono legati allo studio della materia (quindi con applicazioni dirette al campo della chimica e della scienza dei materiali), ai problemi di ottimizzazione e al machine learning. Il background di competenze acquisite negli anni precedenti mi ha naturalmente spinto verso quest&#8217;ultimo ambito di applicazione.</p>



<p>Indirizzato da diversi articoli scientifici sul tema fra cui <a href="https://arxiv.org/abs/1804.00633"><em>Circuit-centric quantum classifiers</em></a>, <a href="https://arxiv.org/abs/1701.01450"><em>Practical optimization for hybrid quantum-classical algorithms </em></a>e <a href="https://arxiv.org/abs/1804.03680"><em>Hierarchical quantum classifiers</em></a>, ho selezionato il terzo libro (sempre da consumare nella pausa estiva) che mi sento di consigliare: <a href="https://www.springer.com/gp/book/9783319964232"><em>Supervised Learning with Quantum Computers</em></a> di Maria Schuld e altri pubblicato da Springer. Gli articoli citati e alcuni capitoli del libro descrivono diversi approcci per realizzare dei <a href="https://en.wikipedia.org/wiki/Statistical_classification">classificatori</a> (modelli di classificazione automatica addestrati attraverso degli esempi) ottenuti combinando algoritmi di tipo classico come la discesa del gradiente con il calcolo di modelli predittivi e derivate parziali eseguito con circuiti quantistici.</p>



<p>A questo punto l&#8217;attenzione torna sulla componente sperimentale del percorso, così realizzo la mia versione di un <em>Variational Quantum Classifier</em> implementato in Python sfruttando tre &#8220;motori&#8221; di calcolo interscambiabili: un simulatore numerico basato su routine di algebra lineare, uno basato sul linguaggio Q# di Microsoft e uno su QISKIT, il SDK curato da IBM per accedere ai servizi di Quantum Computing in Cloud. Il progetto ha il duplice scopo di:</p>



<ul><li>Provare sul campo (intendo su dati reali) un modello di machine learning realizzato con circuiti quantistici (utilizzando uno specifico unitary gate diverso da quelli proposti in letteratura, che riduce complessità e effort computazionale)</li><li>Consentire il confronto in termini di accuratezza e prestazioni fra diversi modelli di simulazione numerica e servizi basati su implementazioni fisiche di processori quantistici (come quelli resi di disponibili da IBM e Microsoft)</li></ul>



<p>Per chi fosse interessato, ho pubblicato il codice sorgente su GitHub: <a href="https://github.com/caccio/CrossQuantumClassifier">caccio/CrossQuantumClassifier</a>.</p>




</div>The post <a href="https://caccio.bimodeler.com/la-mia-strada-verso-quantum/">La mia strada verso Quantum</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/la-mia-strada-verso-quantum/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cross Quantum Classifier</title>
		<link>https://caccio.bimodeler.com/cross-quantum-classifier/</link>
					<comments>https://caccio.bimodeler.com/cross-quantum-classifier/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Sat, 02 Jan 2021 14:30:45 +0000</pubDate>
				<category><![CDATA[Quantum Computing]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Q#]]></category>
		<category><![CDATA[QISKIT]]></category>
		<category><![CDATA[Variational Classifier]]></category>
		<guid isPermaLink="false">https://caccio.bimodeler.com/?p=633</guid>

					<description><![CDATA[<p>E' disponibile il repository Git con la mia versione di un Quantum Variational Classifier che può essere eseguito con diversi simulatori e su physical quantum processors disponibili in cloud come servizi computazionali.</p>
The post <a href="https://caccio.bimodeler.com/cross-quantum-classifier/">Cross Quantum Classifier</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">
<p>Ho reso pubblico il repository Git con la mia versione di un Quantum Variational Classifier che può essere eseguito con diversi simulatori e su physical quantum processors disponibili in cloud come servizi computazionali.</p>



<p>Riporto di seguito la descrizione del progetto presente nel Readme file del repository raggiungibile al seguente link: <a href="https://github.com/caccio/CrossQuantumClassifier" target="_blank" rel="noreferrer noopener" title="caccio/CrossQuantumClassifier">caccio/CrossQuantumClassifier</a></p>



<h2 class="quotation wp-block-heading">Variational Quantum Classifier</h2>



<p class="quotation">This project implements a Variational Quantum Classifier inspired by the&nbsp;<a href="https://arxiv.org/abs/1804.00633">&#8220;circuit-centric quantum classifier&#8221;</a>&nbsp;paper and other related works.</p>



<p class="quotation">The circuit model is a network of 2-qubit rotation blocks that can be arranged in different configurations; any block has two settings: the rotation axis and the rotation angle. The set of rotation angles of the network represents the vector of the model parameters.</p>



<p class="quotation">The training algorithm relies on the classical gradient descent optimization method (with momentum and a simple learning rate annealing schedule) to fit the vector of the model parameters to the training dataset. Both the classification function and the partial derivatives of the loss function for the gradient descent are calculated by quantum circuits.</p>



<h2 class="quotation wp-block-heading"><a href="https://github.com/caccio/CrossQuantumClassifier#cross-platform-implementations-of-quantum-circuits"></a>Cross-platform implementations of quantum circuits</h2>



<p class="quotation">All quantum circuits have been implemented using three different computation engines:</p>



<ol class="quotation"><li><strong>BLAS</strong>&nbsp;&#8211; a numeric simulation of quantum circuits based on basic linear algebra primitives (essentially matrix multiplications and tensor products) implemented in the&nbsp;<em>numpy</em>&nbsp;python package.</li><li><strong>QDK</strong>&nbsp;&#8211; the&nbsp;<strong>Microsoft Quantum Developmnet Kit</strong>&nbsp;that provides either a local quantum simulator and the possibility to run quantum circuits on different Phisical Quantum Computers available as-a-service in Azure.</li><li><strong>QISKIT</strong>&nbsp;&#8211; the&nbsp;<strong>IBM Quantum Development Kit</strong>&nbsp;that includes local quantum simulators and the native interface for the&nbsp;<strong>IBM Q Experience</strong>&nbsp;&#8211; an online platform that gives users public access to a set of IBM&#8217;s quantum processors via the Cloud.</li></ol>



<p class="quotation">This makes it easier to compare results accuracy and performaces obtained by the usage of different versions of quantum simulators or physical quantum computers available as-a-service from different providers.</p>
</div>The post <a href="https://caccio.bimodeler.com/cross-quantum-classifier/">Cross Quantum Classifier</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/cross-quantum-classifier/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ritorno al blog</title>
		<link>https://caccio.bimodeler.com/ritorno-al-blog/</link>
					<comments>https://caccio.bimodeler.com/ritorno-al-blog/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Fri, 01 Jan 2021 14:37:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://caccio.bimodeler.com/?p=629</guid>

					<description><![CDATA[<p>Sono diversi anni che non scrivo, ma quest'anno appena concluso con i vari lockdown e l’isolamento forzato hanno fatto rivivere la necessità di condividere e comunicare idee e riflessioni.<br />
In questo ultimo periodo mi sto interessando alla computazione quantistica, quindi questo è uno dei primi argomenti su cui ho ripreso a scrivere.</p>
The post <a href="https://caccio.bimodeler.com/ritorno-al-blog/">Ritorno al blog</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">
<p>Sono diversi anni che non scrivo, e francamente non so neanche perché ho lasciato aperto il BLOG. Praticamente la totalità degli altri blog presenti nel blogroll o citati nei vari post non esistono più. Penso di aver tenuto aperto il blog come <em>memoria</em> di quanto scritto negli anni.</p>



<p>Il primo <em>lockdown</em> a marzo è stato stressante: non ha lasciato molto tempo libero per attività extra-lavorative e ha inibito anche la convivialità ordinaria che consente di scambiare idee ed esperienze con amici e colleghi.</p>



<p>Il secondo è arrivato a ridosso delle feste natalizie, portando con se il presagio di ulteriori limitazioni anche per il nuovo anno. Stavolta però ha trovato la consapevolezza degli effetti nefasti dell&#8217;isolamento e un maggior tempo libero per incanalare le energie verso un canale di comunicazione in cui raccogliere idee da mettere alla prova (prima di tutto a quella di una loro espressione compiuta che è il primo test per discernere fra contenuti ben posti e autosuggestione).</p>



<p>In quest&#8217;ultimo periodo mi sto interessando, fra le altre cose, di computazione quantistica e quindi ho aggiunto una nuova sezione del blog dedicata a questo argomento. Stavo valutando anche l&#8217;apertura di un nuovo spazio dedicato (magari su medium, magari in lingua inglese) da dedicare all&#8217;argomento, ma al momento sono più interessato a raccogliere qui appunti e riflessioni che magari rielaborerò in seguito. Intanto ho adottato un nuovo tema, più minimalista e focalizzato sui contenuti.&nbsp;</p>



<p>Buona lettura e buon anno!</p>
</div>The post <a href="https://caccio.bimodeler.com/ritorno-al-blog/">Ritorno al blog</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/ritorno-al-blog/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deep learning, what&#8217;s next?</title>
		<link>https://caccio.bimodeler.com/deep-learning-whats-next/</link>
					<comments>https://caccio.bimodeler.com/deep-learning-whats-next/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Wed, 03 Aug 2016 00:08:01 +0000</pubDate>
				<category><![CDATA[Advanced Analytics]]></category>
		<category><![CDATA[Cognitive Computng]]></category>
		<category><![CDATA[Deep Learning]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[Neuromorphic Computing]]></category>
		<category><![CDATA[Topological Data Analysis]]></category>
		<guid isPermaLink="false">http://caccio.blogdns.net/?p=589</guid>

					<description><![CDATA[<p>Quale sarà lo step evolutivo successivo al deep learning nella roadmap evolutiva delle tecniche di data analytics?</p>
The post <a href="https://caccio.bimodeler.com/deep-learning-whats-next/">Deep learning, what’s next?</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">Quale sarà lo step evolutivo successivo al <em>deep learning</em> nella roadmap evolutiva delle tecniche di <em>data analytics</em>?</p>
<p>Con l&#8217;affermarsi in ambito industriale/commerciale delle tecniche di gestione ed analisi dei Big Data, i sistemi di <em>apprendimento automatico di tipo cognitivo</em> rappresentano la frontiera dell&#8217;innovazione e della ricerca applicata. Gli algoritmi e le tecnologie di <strong>deep learning</strong> rappresentano lo strumento attraverso cui tale ricerca viene condotta, con diverse applicazioni in contesti reali di business (e non solo) di oggi e di domani.</p>
<p>Ma i centri di ricerca più avanzati in tutto il mondo stanno già lavorando allo step evolutivo successivo, come ha avuto modo di ilustrare <a href='https://twitter.com/riccardoprodam'>Riccardo Prodam</a> durante  l'<a href='http://www.picampus.it/pi-networking-singularityu-rome-launching-event/'>evento di lancio</a> del chapter romano di <strong>SingularityU</strong> tenutosi mercoledì scorso a Roma.</p>
<p style='text-align:center;'><img src='http://caccio.bimodeler.com/wp-content/uploads/2016/08/prodam-singularityu.png' title='Riccardo Prodam @ SingularityU Rome' alt='Riccardo Prodam @ SingularityU Rome'/></p>
<p><span id="more-589"></span></p>
<p>Nell&#8217;arco di 10 anni la <strong>legge di Moore</strong>, basata sostanzialmente sulla crescente capacità di miniaturizzare i circuiti di silicio, sarà &#8220;annichilita&#8221; dai limiti della fisica classica. La potenza di calcolo dei nuovi processori (CPU, GPU, etc) non raddopierà più ogni 18 mesi perché si sta raggiungendo il limite fisico entro il quale le giunzioni di silicio drogato si comportano ancora in modo deterministico.<br />
La crescita esponenziale dei volumi di dati generati da applicazioni social e IoT, prevista per i prossimi decenni, non sarà quindi accompagnata da una equivalente crescita nella capacità di elaborazione di tali moli di dati. </p>
<p>Ad esempio Riccardo ricordava come, per realizzare una <em>self-driving car</em> che presenti i requisiti di sicurezza tali da consentirne la commercializzazione su ampia scala, essa debba essere in grado di elaborare autonomamente 3 petabyte di dati al giorno.</p>
<p>La sfida si è quindi spostata dalla capacità di progettare CPU sempre più potenti, all&#8217;ideazione di modelli di calcolo e architetture differenti da quelli di Touring e von-Neumann.</p>
<p>In tale contesto sono stati portati avanti, con sempre maggiore interesse anche da parte di  player industriali come IBM o Hewlett-Packard, programmi di ricerca e protipizzazione  fondati sulla <strong>Neuromorphic Engineering</strong>: la riproduzione, mediante circuiti elettronici, degli stessi meccanismi di funzionamento del sistema nervoso centrale. L&#8217;architettura di riferimento si sposta quindi da una pura astrazione matematica (macchina di Touring) al modello neuro-biologico del cervello animale.</p>
<p>Di tale modello si intende imitare proprio la grande capacità di analisi parallela delle informazioni derivante dalla struttura topologica delle innumerevoli interconnessoni possibili fra le diverse cellule nervose.</p>
<p>Fra i principali driver di progetti come <a href='http://mil-embedded.com/news/darpa-synapse-program-develops-low-power-brain-like-chip/'>SyNAPSE</a>, citato da Riccardo, c&#8217;è proprio l&#8217;esigenza di realizzare sistemi di controllo (cervelli?) per robot di nuova generazione in grado di apprendere e mutuare i propri comportamenti analizzando in real-time gli stream di dati provenineti dai propri sensori.</p>
<p>Tali capacità analitiche potranno rappresentare una risorsa fondamentale per l&#8217;applicazione di tecniche avanzate di data analytics (come la <strong>Topological Data Analysis</strong> &#8211; TDA) atte a scandagliare dataset non trattabili, per volumi e natura, con tecnologie e metodi più tradizionali (sistemi HPC, machine learning o deep learning).</p>
<p style='text-align:center;'><img src='http://caccio.bimodeler.com/wp-content/uploads/2016/08/Ayasdi.png' title='Ayasdi TDA visualization' alt='Ayasdi TDA visualization'/></p>
<p>In fondo la <strong>TDA</strong> si basa proprio sulla capacità di <em>riconoscere e attribuire un valore alle forme</em> in cui sono organizzate grandi <em>nuvole di punti</em> (dataset fortemente multi-dimensionali con elevati livelli di sparsità, incompletezza, rumore, etc.): attività questa per cui la struttura neuro-biologica del cervello rappresenta una soluzione con eccezionali livelli di efficacia ed efficienza.</p>
<p>Algoritmi di analisi topologica dei dati vengono già applicati nel campo della ricerca clinica, della finanza o delle scienze sociali anche attraverso l&#8217;uso di tecnologie di calcolo più tradizionali. </p>
<p><strong>Ayasdi</strong>, start-up nata dallo spin-off di un progetto di ricerca dell'<strong>Unviersità di Stanford</strong> per opera di chi per primo ha ideato la teoria matematica sottostante, già applica tali tecniche algoritmiche all&#8217;interno della propria piattaforma di machine learning con la promessa di riuscire a scovare informazioni nascoste in grandi moli di dati anche dove gli approcci analitici più tradizionali falliscono. </p>
<p>Esistono naturalmente anche implementazioni <strong>open source</strong> di molti algoritmi di analisi topologica, fra cui un <a href='https://cran.r-project.org/web/packages/TDA/index.html'>package per R</a> dedicato proprio alla TDA.</div>The post <a href="https://caccio.bimodeler.com/deep-learning-whats-next/">Deep learning, what’s next?</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/deep-learning-whats-next/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>R vs Knime vs Azure Machine Learning</title>
		<link>https://caccio.bimodeler.com/r-vs-knime-vs-azure-machine-learning/</link>
					<comments>https://caccio.bimodeler.com/r-vs-knime-vs-azure-machine-learning/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Mon, 16 May 2016 05:15:18 +0000</pubDate>
				<category><![CDATA[Advanced Analytics]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Analisi dati]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Knime]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[R]]></category>
		<guid isPermaLink="false">http://caccio.blogdns.net/?p=584</guid>

					<description><![CDATA[<p>I processi di digital transformation in atto in molti (tutti) settori di mercato stanno facendo crescere la febbre per il così detto “new oil”: i big data. Nell’ambito di tali&#8230;</p>
The post <a href="https://caccio.bimodeler.com/r-vs-knime-vs-azure-machine-learning/">R vs Knime vs Azure Machine Learning</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">I processi di <strong>digital transformation</strong> in atto in molti (tutti) settori di mercato stanno facendo crescere la febbre per il così detto “new oil”: i big data. Nell’ambito di tali processi di digitalizzazione svolge un ruolo sempre più centrale l&#8217;adozione di tecniche e tecnologie di <strong>machine learning</strong> per trasformare in <em>business value</em> la sempre crescente molte di dati a disposizione di imprese e istituzioni (argomento che merita maggiori approfondimenti; in tanto può valere la pena leggere questo <a href='http://www.exponentialorgs.com/'>best seller</a>).</p>
<p>Prova ne è il proliferare di soluzioni di machine learning (molte offerte in modalità PaaS) che contribuiscono a “democratizzare” l&#8217;uso di tali tecnologie, ampliando la platea degli addetti ai lavori e aspiranti data scientist.</p>
<p>È quindi interessante mettere a confronto approcci tradizionali basati sull’utilizzo di ambienti di programmazione statistica come <strong>R</strong> (che richiede skill tecnici di tipo specialistico) con soluzioni di più immediato utilizzo, come <strong>Knime</strong> o <strong>Azure Machine Learning</strong> (la piattaforma cloud di ML targata Microsoft), che presentano una barriera all’ingresso decisamente inferiore (non fosse altro per gli ambienti visuali con cui si opera).</p>
<p style='text-align:center;'><strong>R Studio</strong></p>
</p>
<p style='text-align:center;'><img src='http://caccio.bimodeler.com/wp-content/uploads/2016/05/RStudio.png' title='R Studio' alt='R Studio'/></p>
</p>
<p style='text-align:center;'><strong>Knime</strong></p>
</p>
<p style='text-align:center;'><img src='http://caccio.bimodeler.com/wp-content/uploads/2016/05/Knime.png' title='Knime' alt='Knime'/></p>
</p>
<p style='text-align:center;'><strong>Azure Machine Learning Studio</strong></p>
</p>
<p style='text-align:center;'><img src='http://caccio.bimodeler.com/wp-content/uploads/2016/05/AzureML.png' title='Azure ML Studio' alt='Azure ML Studio'/></p>
<p><span id="more-584"></span></p>
<p>Per mettere alla prova le tre soluzioni, ho identificato un caso di studio basato su un data set reale preso in prestito da uno dei tanti contest proposti da Kaggle. Nella fattispecie l’obbieittivo era quello di addestrare un classificatore binario a partire da un training set di circa 144.000 occorrenze, ciascuna caratterizzata da 131 features (prevalentemente numeriche), con una certa abbondanza di valori nulli.</p>
<p>Il confronto invece è stato focalizzato sull’accuratezza dei modelli che è stato possibile addestrare utilizzando degli algoritmi disponibili per le diverse piattaforme in modalità <em>out-of-the-box</em>, ossia senza operare particolari configurazioni o attività di data preparation o feature engignering. In pratica si è trattato di verificare l’efficacia degli algoritmi disponibili sule diverse piattaforme (misurati con la medesima metrica &#8211; <a href='https://www.kaggle.com/c/bnp-paribas-cardif-claims-management/details/evaluation'>Log Loss</a> &#8211; proposta dal contest) applicandoli ai dati con un processo elementare che non richiedesse particolari effort preparatori o conoscenze specialistiche. </p>
<p>La tabella seguente riassume i risultati dello studio di caso.</p>
<p><div class="table-responsive"><table  style="width:100%;  margin-left:auto;margin-right:auto"  class="easy-table easy-table-default " border="1">
<thead>
<tr><th >Piattaforma</th>
<th >Algoritmo</th>
<th >Log Loss</th>
</tr>
</thead>
<tbody>
<tr><td >R</td>
<td >Gradient boosting (xgbost library)</td>
<td >0.46815</td>
</tr>

<tr><td >Azure ML</td>
<td >Two-class boosted decision tree + hyperparameter tuning</td>
<td >0.46769</td>
</tr>

<tr><td >Azure ML</td>
<td >Two-class boosted decision tree</td>
<td >0.51372</td>
</tr>

<tr><td >Knime</td>
<td >Random forest</td>
<td >0.53182</td>
</tr>

<tr><td colspan=2>Benchmark &#8211; Primo classificato al contest Kaggle</td>
<td >0.42233</td>
</tr>
</tbody></table></div></p>
<p>I risultati mostrati non vogliono fornire una valutazione di qualità delle piattaforme, quanto piuttosto rappresentare come (o meglio quanto) soluzioni out-of-the-box possano fornire risultati analoghi ad alternative tecnicamente più complesse.</p>
<p>Resta da dire che il vincitore del contest ha ottenuto risultati decisamente superiori e che tali risultati sono stati conseguiti utilizzando R e in particolare la medesima libreria usata nello studio di caso. Va anche sottolineato come il <a href='https://www.kaggle.com/c/bnp-paribas-cardif-claims-management/forums/t/20247/1-dexter-s-lab-winning-solution'>principale elemento distintivo</a> della soluzione vincente sia stato proprio un approfondito lavoro preliminare di feature engineering e data discovery. Ciò a testimonianza del fatto che <strong>la prima differenza sostanziale nel determinare la qualità di un modello previsionale la fa proprio il processo (e le competenze necessarie ad attuarlo)</strong>.</p>
</div>The post <a href="https://caccio.bimodeler.com/r-vs-knime-vs-azure-machine-learning/">R vs Knime vs Azure Machine Learning</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/r-vs-knime-vs-azure-machine-learning/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>BI Academy Conference 2016 &#8211; DFM &#038; SAP HANA</title>
		<link>https://caccio.bimodeler.com/bi-academy-conference-2016-dfm-sap-hana/</link>
					<comments>https://caccio.bimodeler.com/bi-academy-conference-2016-dfm-sap-hana/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Mon, 21 Mar 2016 06:00:13 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[BI Academy]]></category>
		<category><![CDATA[BI Modeler]]></category>
		<category><![CDATA[Dimensional Fact Model]]></category>
		<guid isPermaLink="false">http://caccio.blogdns.net/?p=578</guid>

					<description><![CDATA[<p>Quest&#8217;anno la conferenza annuale dedicata alla BI Academy del Prof. Dr. Peter Lehmann era veramente gremita e ricca di interventi interessanti. Di seguito trovate le slide del mio intervento, tenuto&#8230;</p>
The post <a href="https://caccio.bimodeler.com/bi-academy-conference-2016-dfm-sap-hana/">BI Academy Conference 2016 – DFM & SAP HANA</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">Quest&#8217;anno la conferenza annuale dedicata alla <a href='http://www.bi-academy.eu/?p=3316'>BI Academy</a> del Prof. Dr. Peter Lehmann era veramente gremita e ricca di interventi interessanti.</p>
<p>Di seguito trovate le slide del mio intervento, tenuto nella giornata del 9/3, che si è concluso con una DEMO live dell&#8217;ultima release di <a href='http://www.bimodeler.com/'>BI Modeler</a> in cui ho mostrato come fosse possibile, in soli 10 minuti, creare un data mart su un ambiente <strong>SAP HANA</strong> in cloud, partendo dalla modellazione concettuale mediante DFM di un semplice requisito utente.</p>
<p><iframe loading="lazy" src="//www.slideshare.net/slideshow/embed_code/key/9rrCJM1rNO3Ey7" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> </p>
<p style='text-align:center;'><img src='http://caccio.bimodeler.com/wp-content/uploads/2016/03/SAP-HANA-Data-Mart.png' title='SAP HANA Data Mart' alt='SAP HANA Data Mart'/></p>
</div>The post <a href="https://caccio.bimodeler.com/bi-academy-conference-2016-dfm-sap-hana/">BI Academy Conference 2016 – DFM & SAP HANA</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/bi-academy-conference-2016-dfm-sap-hana/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Databox: piattaforma cloud per la BI su Mobile</title>
		<link>https://caccio.bimodeler.com/databox-piattaforma-cloud-per-la-bi-su-mobile/</link>
					<comments>https://caccio.bimodeler.com/databox-piattaforma-cloud-per-la-bi-su-mobile/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Mon, 19 Jan 2015 07:00:29 +0000</pubDate>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Mob 2.0]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[databox]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[node.js]]></category>
		<guid isPermaLink="false">http://caccio.blogdns.net/?p=565</guid>

					<description><![CDATA[<p>L&#8217;affermazione dei tre hype, Mobile, Big Data e Cloud Computing, sta creando nuovi spazi di innovazione anche nel settore delle piattaforme di Business Intelligence; spazi che i player storici coprono&#8230;</p>
The post <a href="https://caccio.bimodeler.com/databox-piattaforma-cloud-per-la-bi-su-mobile/">Databox: piattaforma cloud per la BI su Mobile</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">L&#8217;affermazione dei tre <em>hype</em>, <strong>Mobile</strong>, <strong>Big Data</strong> e <strong>Cloud Computing</strong>, sta creando <strong>nuovi spazi di innovazione</strong> anche nel settore delle piattaforme di Business Intelligence; spazi che i player storici coprono con difficoltà a vantaggio di nuove realtà che emergono dal mondo delle <strong>start-up</strong>.</p>
<p>Queste soluzioni non hanno la completezza e la versatilità delle piattaforme tradizionali (Business Objects, Cognos, Microstrategy, ecc.), però offrono servizi specializzati anche molto efficaci (sopratutto sul piano della User eXperience). Spesso sono basate su modelli architetturali e modalità di interazione propri degli ambienti Cloud e Mobile e in questo senso sono <strong>soluzioni &#8220;native&#8221;</strong> che sfruttano appieno questi driver di innovazione, avendo il vantaggio di partire da zero (cosa che i big player non si possono permettere).</p>
<p>Fra le soluzioni che sto testando c&#8217;è <a href='http://databox.com'>databox</a>: una <strong>piattaforma Cloud di BI</strong> che consente la realizzazione di semplici cruscotti direzionali fruibili su <strong>dispositivi mobili iOS e Android</strong>. I cruscotti sono costruiti a partire da dati importati nella piattaforma Cloud da diverse fonti informative e consentono una rapida ed efficace visualizzazione di KPI in diversi formati.</p>
<p style='text-align:center;'><img src='/wp-content/uploads/2015/01/widgets.jpg' title='databox widgets' alt='databox widgets'/></p>
<p><span id="more-565"></span></p>
<p>Al momento sono disponibili due tipologie di fonti dati: <strong>piattaforme cloud esistenti</strong> (fra cui Twitter, Salesforce, Magento, PayPal) e <strong>sorgenti custom</strong> che consentono di alimentare la piattaforma con i propri dati di interesse. Per ogni sorgente è possibile assemblare dei cruscotti con componenti standard di diverse tipologie (Line e Bar Chart, Pipeline, Funnel, Progress bar, ecc.). </p>
<p>Per <em>provare su strada</em> Databox ho integrato nella piattaforma una <strong>fonte dati custom</strong> che raccogliesse i dati di utilizzo del tool <a href='http://bimodeler.com'>BI Modeler</a>: numero stimato di esecuzioni e numero di nuove installazioni. Tali dati, registrati su due diversi website (questo blog e il sito dedicato <a href='http://bimodeler.com'>bimodeler.com</a>), sono accessibili mediante dei servizi <strong>REST</strong> che restituiscono un <strong>JSON</strong> con i dati giornalieri di utilizzo. </p>
<p style='text-align:center;'><img src='/wp-content/uploads/2015/01/databox.jpg' title='databox custom integration' alt='databox custom integration'/></p>
<p>La piattaforma databox prevede l&#8217;alimentazione da fonti custom in <strong>modalità PUSH</strong> mediate delle <a href='https://developers.databox.com/push/v1/'>API</a> accessibili anche mediante <a href='https://developers.databox.com/libraries/'>libraries</a> per diversi ambienti di programmazione (fra cui Java, node.js, PHP). </p>
<p>Per caricare i dati ho pertanto predisposto uno script <strong>node.js</strong> che interrogasse i servizi REST, integrasse i dati dei due website e aggiornasse i risultati sulla piattaforma. Schedulando lo script per essere eseguito più volte al giorno, i dati vengono aggiornati costantemente, consentendo di monitorarne l&#8217;evoluzione nell&#8217;arco della giornata e valutare i trend settimanali (anche a confronto con la settimana precedente).</p>
<p>La composizione dei cruscotti di visualizzazione viene fatta configurando e assemblando diversi <strong>widget</strong> (alcuni esempi sono quelli presenti nella prima figura in alto) attraverso una semplice interfaccia web-based. Oltre alla predisposizione dei cruscotti, è possibile definire degli &#8220;<strong>allarmi</strong>&#8221; e dei semplici &#8220;<strong>report</strong>&#8221; che, rispettivamente, notifichino all&#8217;utente il verificarsi di condizioni particolari (scostamenti significativi dei KPI da valori di soglia, ecc.) e fotografino una sintesi degli indicatori con cadenza periodica.</p>
<p style='text-align:center;'><img src='http://caccio.blogdns.net/wp-content/uploads/2015/01/develop.png' title='databox widget' alt='databox widget'/></p>
</div>The post <a href="https://caccio.bimodeler.com/databox-piattaforma-cloud-per-la-bi-su-mobile/">Databox: piattaforma cloud per la BI su Mobile</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/databox-piattaforma-cloud-per-la-bi-su-mobile/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Customer profiling e digitalizzazione dei settori analogici</title>
		<link>https://caccio.bimodeler.com/customer-profiling-e-digitalizzazione-dei-settori-analogici/</link>
					<comments>https://caccio.bimodeler.com/customer-profiling-e-digitalizzazione-dei-settori-analogici/#respond</comments>
		
		<dc:creator><![CDATA[Stefano Cazzella]]></dc:creator>
		<pubDate>Mon, 12 Jan 2015 07:00:55 +0000</pubDate>
				<category><![CDATA[Advanced Analytics]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[TV 2.0]]></category>
		<category><![CDATA[Customer experience]]></category>
		<guid isPermaLink="false">http://caccio.blogdns.net/?p=569</guid>

					<description><![CDATA[<p>La profilazione dei clienti, basata sulle scelte di consumo da essi effettuate, è ampiamente praticata da oltre un decennio in molteplici settori; lì dove è stato semplice associare i diversi&#8230;</p>
The post <a href="https://caccio.bimodeler.com/customer-profiling-e-digitalizzazione-dei-settori-analogici/">Customer profiling e digitalizzazione dei settori analogici</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></description>
										<content:encoded><![CDATA[<div class="rich_content">La <strong>profilazione dei clienti, basata sulle scelte di consumo</strong> da essi effettuate, è ampiamente praticata da oltre un decennio in molteplici settori; lì dove è stato semplice associare i diversi eventi di consumo che si susseguono nel tempo ad un unico soggetto, è stato possibile ricostruire dei modelli di consumo che consentissero di ottimizzare ed innovare le strategie di business e le azioni di marketing. </p>
<p>Nel <strong>settore telefonico</strong>, ad esempio, l&#8217;identità dell&#8217;utente (il suo numero di telefono) è parte integrante del modello di business e tutte le compagnie tracciano le telefonate effettuate da ciascun utenza (se non fosse altro ai fini della fatturazione). Attraverso tali informazioni è possibile ricostruire un modello di consumo per ciascun utente che descriva il suo comportamento in maniera più precisa di quanto egli stesso sarebbe in grado di fare. Tali modelli vengono utilizzati  (unitamente ad altre informazioni che descrivono il contesto del mercato) per progettare nuove offerte tariffarie, campagne di marketing e molto altro.</p>
<p>Un&#8217;altro settore in cui la profilazione dei consumi è stata applicata è quello della <strong>grande distribuzione</strong>. In questo caso per poter associare gli eventi di consumo ad un &#8220;utenza&#8221; sono state introdotte le &#8220;tessere fedeltà&#8221; (loyalty cards). Il meccanismo di accumulo di punti per ottenere sconti e/o premi ha reso abituale l&#8217;uso di tali cards attraverso cui è possibile mantenere la storia dei consumi di un nucleo familiare nel tempo. Tali informazioni vengono utilizzate per le previsioni di vendita dei diversi prodotti, l&#8217;ottimizzazione della loro disposizione nei diversi scaffali dello store e molto altro.</p>
<p>Vi sono settori in cui questi meccanismi non sono stati fino ad ora applicati/applicabili, sia per limiti tecnologici, sia per la difficoltà nell&#8217;individuare una personalizzazione del servizio offerto e probabilmente per altri motivi. Alcuni esempi sono rappresentati dal <strong>settore televisivo</strong> (dove l&#8217;Auditel, sotto questo aspetto, è assimilabile ad un sondaggio), dalla <strong>vendita al dettaglio</strong> (dove l&#8217;esperienza delle loyalty cards non è facilmente replicabile), dalla <strong>guida di autoveicoli</strong>.</p>
<p>Proprio in questi settori, la <strong>progressiva digitalizzazione del mercato</strong> sta ridisegnando i modelli di business anche intorno alla possibilità di profilare i consumatori al fine di offrire servizi/prodotti personalizzati, modelli di pricing competitivi, ottimizzare i processi di produzione, ecc.</p>
<p><span id="more-569"></span></p>
<p>L&#8217;esempio più eclatante è rappresentato da <a href='http://en.wikipedia.org/wiki/Netflix'>Netflix</a> e magistralmente esposto da Kevin Spacey nel <a href='http://youtu.be/oheDqofa5NM'>celebre discorso</a> in cui racconta come sia stata presa la decision di &#8220;acquistare&#8221; la serie <a href='http://en.wikipedia.org/wiki/House_of_Cards_(U.S._TV_series)'>House of Cards</a> senza che fosse stato prodotto neanche un episodio &#8220;pilota&#8221; per testarne l&#8217;interesse da parte del pubblico.</p>
<p><iframe loading="lazy" width="560" height="315" src="//www.youtube.com/embed/P0ukYf_xvgc" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Netflix</strong> è una delle più affermate piattaforme di distribuzione di contenuti video di tipo on-demand presente in oltre 40 paesi fra America e Europa (ma non ancora in Italia). La natura stessa del servizio le consente di registrare ogni scelta di consumo da parte dei propri utenti (analogamente a quanto fatto da una compagnia telefonica con le telefonate). Con tali informazioni ha potuto analizzare i &#8220;gusti televisivi&#8221; dei propri utenti e formulare dei modelli predittivi in grado di valutare il successo della serie televisiva senza dover mandare in onda un episodio &#8220;pilota&#8221; (un numero 0, un prototipo), cosa che era stata richiesta da tutti gli altri network televisivi sprovvisti di una conoscenza diretta dei propri telespettatori. Modelli previsionali di questo tipo offrono vantaggi competitivi nell&#8217;ottimizzazione dei costi (vedi testimonianza diretta di Kevin Spacey), ma possono essere utilizzati anche per costruire modelli di offerta innovativi e personalizzati (ad esempio sistemi di recommandation). </p>
<p>Un&#8217;altro esempio di come il processo di digitalizzazione offra nuove opportunità è offerto dal settore della <strong>vendita al dettaglio</strong>. Le strategie di tracciatura dei comportamenti della clientela adottate dalla grande distribuzione (loyalty cards) non è replicabile nei negozi o nelle boutique per diverse ragioni, pertanto, per poter tracciare il comportamento dei clienti, è necessario individuare un differente metodo di identificazione e aggregazione dei singoli eventi di interesse. La consuetudine di non uscire mai senza avere con se almeno un cellulare (meglio ancora uno smatphone) offre proprio tale opportunità. </p>
<p>Ogni cellulare presenta diversi codici univoci di indentificazione che, nella maggior parte dei casi, <strong>possono essere tracciati</strong>: il MAC address della scheda WiFi (che usualmente viene tenuta sempre attiva) o l&#8217;equivalente ID di un dispositivo bluetooth sono due fra i metodi più usati allo scopo. In questo modo è possibile registrare quanti smartphone (e quindi quanti clienti) passano davanti ad una vetrina, quanti entrano nel negozio, quanti visitano le diverse aree espositive. Registrando le visite effettuate è inoltre possibile verificare quanti sono già stati nel negozio nei giorni precedenti e quanti vi sono entrati per la prima volta. </p>
<p>Queste tecniche possono portare <strong>vantaggi competitivi</strong> analoghi a quelli offerti dalle tecniche di <em>click-stream-analysis</em> (analisi dei <a href='http://en.wikipedia.org/wiki/Clickstream'>flussi di navigazione</a> degli utenti di un sito web) legati all&#8217;organizzazione del negozio (dagli orari di apertura, ai turni dei commessi, alla disposizione degli articoli, ecc.). Aziende come <a href='http://www.shoppertrak.com/'>ShopperTrack</a> o <a href='http://euclidanalytics.com/'>Euclid Analytics</a> già offrono servizi di questo tipo. La capacità di integrare tali informazioni con un profilo più completo dei clienti, incrociandoli, ad esempio, con i dati dei sistemi di pagamento elettronico o dei social media, rappresenta un ulteriore passo per personalizzare il servizio all&#8217;interno di un esercizio commerciale e ideare nuovi modelli di e-business.</p>
<p>Come ulteriore esempio di digitalizzazione c&#8217;è il <strong>settore automotive</strong>. Senza aspettare le google car che <a href='Google_driverless_car'>guidano da sole</a>, già le auto in circolazione sono &#8220;piene di elettronica&#8221;: vi sono sensori che misurano la velocità di rotazione delle ruote, la pressione sull&#8217;acceleratore e il freno, la rotazione dello sterzo, le accelerazioni, la pressione delle gomme, ecc. Tutti i dati vengono registrati ed utilizzati dai produttori per monitorare i loro prodotti, progettare i nuovi modelli, ecc. Ad eccezione degli interventi diagnostici in occasione di interventi di manutenzione, i dati vengono utilizzati in forma aggregata e analizzati su basi statistiche.</p>
<p>Tali informazioni però possono essere di un certo interesse anche <strong>in relazione alla singola vettura</strong>, o meglio, al singolo guidatore. Infatti essi possono essere utilizzati per <strong>analizzare lo stile di guida</strong> del proprietario e, ad esempio, per modulare un&#8217;offerta assicurativa per la RCA il cui costo tenga conto della &#8220;pericolosità&#8221; del comportamento su strada. Se è vero che lo stile di guida dice molto del carattere e sopratutto dello stato d&#8217;animo di ognuno, è possibile pensare a molti altri utilizzi per tali informazioni come, ad esempio, la selezione automatica di una playlist musicale da proporre per attenuare lo stress legato al traffico o ad una dura giornata lavorativa.</p>
<p><a href='http://www.octotelematics.com/'>Octo Telematics</a> attraverso i dispositivi installati a bordo di una vettura (collegati con la centralina elettronica della stessa) sono in grado di offrire servizi di analisi dello stile di guida adottato sul singolo veicolo. Analoga capacità di profilazione è accessibile ai servizi di car sharing come <a href='https://www.car2go.com'>Car2Go</a> o <a href='https://enjoy.eni.com'>EnJoy</a> in cui ogni sessione di guida è associata univocamente ad un utente. </p>
<p>Questi sono alcuni esempi di come la progressiva digitalizzazione di ogni settore di mercato porti con se maggiori possibilità di conoscere individualmente i propri consumatori e, attraverso questa conoscenza, ideare offerte e strategie di business che passino dal modello del <em>target market</em> a quello del <em>one-to-one</em>.</div>The post <a href="https://caccio.bimodeler.com/customer-profiling-e-digitalizzazione-dei-settori-analogici/">Customer profiling e digitalizzazione dei settori analogici</a> first appeared on <a href="https://caccio.bimodeler.com">caccio's blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://caccio.bimodeler.com/customer-profiling-e-digitalizzazione-dei-settori-analogici/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
