
Benvenuti al corso KNIME Analytics Platform per Data Scientists, corso intermedio.
In questo corso, verranno trattati i seguenti argomenti:
Flow Variables
Gestione di Date & Time
Controllo del flusso di un Workflow
Manipolare i dati in un database
Machine Learning, aspetti avanzati
Component
Visualizzazione dei dati
Esportare i dati
Si presuppone abbiate seguito il corso KNIME Analytics Platform per data scientists, corso base, oppure che conosciate KNIME, perché è necessaria una conoscenza base dell'ambiente e delle sue caratteristiche.
P.S. l'immagine copertina di questo corso è stata ideata da DALL.E 2, con il prompt:
"an impressionist paint that raffigure a data analyst"
l'AI ha generato una figura con sembianze femminili, almeno così a me e parso. L'ho scelta perché conosco diverse donne che lavorano con la data science e, questo corso, è dedicato a loro.
Cosa fare se è necessario produrre un report che permette di mettere in evidenza i prodotti più venduti o più popolari?
Si può fare in modo di ottenere questo senza modificare ogni volta il workflow?
Per risolvere esigenze come questa si utilizza una prerogativa di KNIME che sono le Flow Variables, cioè le variabili del flusso.
Impareremo a creare variabili da una tabella usando il nodo Table Row to Variable, oppure utilizzando il nodo Variable Creator e ad utilizzarle all'interno di un altro nodo.
Possiamo automatizzare un workflow, in modo che acceda ad una risorsa, locale o su Internet, utilizzando le flow variables?
Analizzeremo nel dettaglio i vari types di path disponibili (local files system, relative to, mountpoint, Custom/KNIME URL) e vedremo come adoperarli all'interno del nodo Create File/Folder variables.
Possiamo generare una flow variable tramite il nodo Value Selection Configuration, che ci dà la possibilità, integrando il nodo in un Component, di creare, ad esempio, un nodo che consenta di selezionare una voce da applicare ad un Row Filter con un form apposito.
In questa lezione, vedremo come fare.
Il nodo multiple selection é un nodo che permette di selezionare un set di valori da una tabella e di creare un filtro da applicare alla visualizzazione di un dataset.
In questa lezione imparerete come salvare un file con un nome che contenga la data di esecuzione di un workflow.
Verranno utilizzati i nodi:
Date&Time Configuration
String Manipulation (Variable)
String to path (Variable)
e si farà un uso intensivo delle flow variables!
In questa lezione e nelle due seguenti, vedremo in dettaglio un buon numero di nodi di tipo configuration, presenti, nel node repository, nella sezione Workflow Abstraction.
Questi nodi, inseriti nei Component, migliorano l'esperienza dell'utente nell'interazione con il Workflow.
Seconda lezione dedicata ai Configuration Nodes for Variable Creation
Ultima lezione dedicata ai Configuration Nodes for Variable Creation
Il tipo Data e Ora è così importante in KNIME che è stato completamente riscritto a partire dalla versione 3.4.
In questa sezione del corso imparerete a conoscere e utilizzare i vari tipi disponibili, ad eseguire diverse manipolazioni e trasformazioni, ad estrarre alcuni campi per eseguire dei raggruppamenti o delle pivot che richiedano un campo data/ora.
In questa lezione imparerete a convertire campi in formato stringa che rappresentano data e ora, in un campo Date&Time, utilizzando il nodo String to Data&Time
Seconda parte della lezione String to Date&Time Node.
In questa lezione imparerete come modificare il parametro time zone (fuso orario), nelle date che lo includono, utilizzando il nodo Modify Time Zone.
Questo vi permette di:
impostare un valore del parametro time zone in una data
spostare il valore di time zone ad un altro fuso adattando il valore di date&time
rimuovere il parametro time zone in una data
In questa lezione imparerete a calcolare la differenza tra due campi date&time utilizzando il nodo Date&Time Difference.
Il risultato può essere espresso in una granularità selezionata (anni, mesi, giorni, etc.), o usando la notazione ISO-8601.
Il secondo valore di date&time può essere scelto tra il valore contenuto in una colonna, la data/ora di esecuzione, una data/ora fissa, o il valore di date&time della riga precedente.
In questa lezione imparerete a filtrare delle osservazioni che contengono una colonna con un campo data, utilizzando il nodo Date&Time-based Row Filter.
Questo vi permetterà diversi tipi di filtro basati su:
intervallo chiuso
intervallo aperto
durata a partire da una data, espressa utilizzando i segnaposto di data/ora
durata a partire da una data, espressa utilizzando una granularità, espressa in un'unità temporale
In questa lezione imparerete ad usare il nodo String to Duration per convertire la rappresentazione di una durata, dal formato stringa nella notazione ISO 8601, al formato durata.
Vedrete anche come effettuare la conversione inversa (da durata a ISO 8601) e come estrarre i campi della durata in singole stringhe che li rappresentano.
In questa lezione imparerete ad effettuare degli spostamenti in avanti o indietro di valori di date e ora, utilizzando il nodo Date&Time Shift.
Lo spostamento può essere effettuato indicando una durata (espressa in formato ISO 8601) o un numero e una granularità selezionata (anno, mese, giorno, etc.).
Se lo spostamento è positivo verrà aggiunto, sottratto se negativo.
In questa lezione imparerete a modificare un valore date&time utilizzando il nodo Modify Date.
Questo nodo permette di effettuare le seguenti modifiche:
rimpiazzare i valori di Date presenti con un valore fisso
rimuovere i valori di Date presenti
aggiungere un valore date fissato ad un valore Time
In questa lezione imparerete a modificare un valore date&time utilizzando il nodo Modify Time.
Questo nodo permette di effettuare le seguenti modifiche:
rimpiazzare i valori di time presenti con un valore fisso
rimuovere i valori di time presenti
aggiungere un valore time fissato ad una date
In questa lezione imparerete come estrarre i campi che compongono un valore di date&time utilizzando il nodo Extract Date&Time Fields.
Questo nodo permette di estrarre i campi anno, mese, giorno, week, etc., etc., restituendoli col formato string o int.
Può essere utile se si ha la necessità di effettuare dei raggruppamenti delle osservazioni su base data (anno, mese, etc.) o ora.
In questa lezione imparerete ad effettuare la media mobile sui valori di una seria temporale utilizzando una finestra a scelta. Per fare questo vedremo un esempio di utilizzo del nodo Moving Average.
La media mobile, una volta definita la finestra, può essere calcolata scorrendo i valori in avanti (forward), indietro (backward) o centralmente (central), utilizzando una finestra con un numero pari.
In questa lezione imparerete ad effettuare una aggregazione mobile sui valori di una serie temporale. Per fare questo vedremo un esempio di utilizzo del nodo Moving Aggregation.
Questo nodo è simile al GroupBy e consente di eseguire aggregazioni, applicando le funzioni disponibili per questo nodo, su una finestra temporale o sui dati cumulati.
In questa sezione del corso imparerete come si realizzano dei Loops in KNIME, cosa sono e come utilizzare gli Switches e come introdurre una try-catch in un punto del workflow per gestire gli errori di esecuzione.
In questa lezione imparerete cos'è un loop e i vari tipi di loops disponibili in KNIME
In questa lezione imparerete cos'è e come adoperare un nodo Group Loop Start con un esempio in cui verranno creati degli sheets all'interno di un foglio excel, con le osservazioni inerenti una colonna presente nei dati che servirà anche per rinominare gli sheets.
In questa lezione imparerete ad usare il nodo Table Row to Variable Loop Start, che è il gemello dell'omonimo nodo che avete conosciuto in un'altra sezione del corso. Per mezzo di questo nodo potremo leggere il contenuto degli sheet presenti in un file excel e creare un nuovo file con tutte le osservazioni presenti.
Il nodo Chunk Loop Start permette di eseguire un ciclo sulla base del numero elementi del dataset che si vogliono raggruppare o del numero di chunk in cui si vuole suddividere il dataset.
A seconda del metodo adoperato, le osservazioni verranno prelevate a gruppi (chunk) di elementi, fino all'estrazione dell'ultima osservazione (che può essere in numero inferiore rispetto al numero di elementi raggruppati inizialmente)
Il nodo List Files, folder permette di esplorare gli elementi presenti in una directory e le sotto directory del proprio file sistem e di calcolarne la dimensione, il tipo, i permessi e i proprietari.
In questa lezione imparerete ad usare il nodo IF Switch per fare in modo che venga eseguito un branching o un altro di un workflow, sulla base della selezione utente.
In questa lezione imparerete ad usare i nodi Case Switch Start Node e Case Switch End Node.
Questi nodi permettono di selezionare più alternative di esecuzione e, assieme, ampliano le possibilità offerte dal nodo IF Switch.
Nell'esempio della lezione l'utente deciderà tra tre operazioni quella che vuole eseguire e il nodo Case Switch Start si occuperà di selezionare il branching necessario, mentre il nodo Case Switch End, di raccogliere i risultati, quale che sia stato il branching selezionato.
In questa lezione vedremo come utilizzare il nodo End If per inserire delle varianti sull'esecuzione in base alle scelte operate in un certo punto del workflow.
I nodi End If permettono di introdurre la tecnica degli IF annidati, all'interno di KNIME.
I nodi Try e Catch permettono di intercettare gli errori, in un workflow, rimediando a situazioni inattese che potrebbero causare il fallimento dell'esecuzione di un nodo (e quindi del workflow).
In questa lezione imparerete come usare entrambi i nodi per gestire il fault causato dall'impossibilità di raggiungere una risorsa, rimediando con dei dati di backup. Apprenderete anche sul nodo GET Request, e Active Branch Inverter e su come utilizzarli.
Potrebbe essere necessario interrompere l'esecuzione di un Workflow, ad esempio all'interno di un loop, perché si è verificata una certa condizione. A tale scopo, KNIME mette a disposizione un nodo che fa proprio questo e il suo nome è Breakpoint. Vedremo un suo utilizzo in questa lezione.
KNIME esegue le elaborazioni un nodo per volta. Quando un nodo ha terminato l'elaborazione, inoltra i dati al nodo seguente.
Possiamo modificare questo comportamento utilizzando una caratteristica di KNIME che è lo streaming, che consente l'esecuzione parallela di più nodi, purché supportino questa opzione.
In questa lezione imparerete cos'è lo streaming, perché dovremmo usarlo e come possiamo attivarlo nei nostri Workflow.
KNIME supporta numerosi DBMS, con nodi di connessione specifici o che sono compatibili con il driver JDBC.
In questa sezione del corso imparerete ad usare i connettori più diffusi e ad eseguire operazioni su una base di dati caricata su un DBMS.
In questa lezione verranno elencati alcuni nodi disponibili su KNIME per la manipolazione dei dati su un DBMS.
Per le esercitazioni che seguiranno utilizzeremo il connettore SQlite.
SQlite è un DBMS molto semplice da implementare perché non è necessario un server per eseguirlo, anzi si può installare sulla propria macchina senza particolari problemi.
Supporta i nodi DB di KNIME e i comandi SQL, ed è una valida alternativa se si ha la necessità di creare una base di dati che non abbia accessi remoti.
Il nodo DB Writer, come dice il nome, permette di scrivere delle righe in una tabella in un DBMS e di creare una tabella, con le informazioni, se questa non è presente nel DBMS.
In questa lezione imparerete come utilizzarlo.
Il nodo DB Table Selector, permette di selezionare una tabella nel DBMS e di eseguire una query in SQL per poter verificarne la struttura o i dati contenuti.
In questa lezione, vedremo un esempio di utilizzo.
Il nodo DB Reader permette di leggere righe da una tabella in un DBMS e di renderle disponibili per un nodo di KNIME seguente.
In questa lezione e in quella seguente, vedremo i nodi DB Connectors presenti in KNIME e ci soffermeremo, in particolare sui connettori per Microsoft Access, PostgreSQL e MySQL (MariaDB).
In questa lezione vedremo come installare sulla propria macchina un'istanza di PostgreSQL e di MariaDB, utilizzando la distribuzione devilbox e Container Desktop.
Questo ci permetterà di dare un'occhiata alla struttura di un database e di esplorare le tabelle con KNIME tramite il nodo DB Selector e i DB Connector appropriati.
Quando ci si debba collegare ad un DBMS ma non è presente un DB Connector in KNIME, si può registrare il driver, che deve essere comunque disponibile per il DBMS, in modo da collegarsi tramite JDBC che è un protocollo supportato dalla maggior parte dei DBMS.
In questa lezioni daremo indicazioni su come registrare questo driver.
Il nodo DB GroupBy è analogo al corrispondente nodo GroupBy ma opera sul DBMS, quindi esegue le stesse operazioni utilizzandone il motore.
In questa lezione imparerete ad usarlo applicandolo ad una tabella.
Il DB Joiner è analogo al corrispondente nodo Join ma opera sul DBMS, quindi esegue le stesse operazioni utilizzandone il motore.
In questa lezione imparerete ad usare il join per collegare le informazioni di due tabelle.
Anche il nodo DB Row Filter è analogo al Row Filter, ma opera sul DBMS. Rispetto a quest'ultimo consente di applicare più condizioni di filtro utilizzando i connettori logici OR e AND.
In questa lezione vedremo come utilizzarlo.
Il DB Sorter ha le stesse funzioni del nodo Sorter ma opera sul DBMS.
In questa lezione vedremo come utilizzarlo.
Il nodo DB Query è molto potente perché consente di operare direttamente sui dati del DBMS scrivendo degli SQL Statement. Occorre prestare attenzione, però, perché alcune volte conviene utilizzare il nodo DB Table Selector nel caso in cui si voglia salvare la vista che si ottiene dall'esecuzione degli statement.
Nella lezione capirete perché.
Il nodo DB Connection Table Writer consente di salvare una vista creata all'interno di KNIME in una nuova tabella.
In questa lezione vedremo un esempio di utilizzo.
Il nodo DB Update consente di aggiornare uno o più campi di una tabella partendo dal contenuto di un file che contiene i campi e i valori da modificare e il riferimento alle righe che dovranno essere modificate.
In questa lezione vedremo un esempio di utilizzo.
Il nodo DB Insert permette di aggiungere record ad una tabella esistente.
In questa lezione vedremo come utilizzarlo.
Il nodo DB Delete (filter) utilizza un meccanismo simili al DB Row filter allo scopo di determinare le righe che corrispondono ad una o più condizioni che ne determinano la cancellazione.
In questa lezione vedremo un esempio di utilizzo.
Il nodo DB delete (table) rispetto al DB delete (filter), cancella le righe di una tabella sulla base di un file in ingresso.
In questa lezione vedremo un esempio.
Il nodo DB SQL Executor permette l'esecuzione di SQL Statement a livello DDL (Data Definition Language), cioè capaci di modificare la struttura delle tabelle o del database.
In questo caso è richiesta una conoscenza avanzata di SQL, quindi va usato con cautela.
Il nodo DB Query Extractor, permette di estrapolare l'SQL Statement adoperato in un nodo DB per salvarlo in una variabile o un campo di tipo stringa per poterlo utilizzare in altri nodo di tipo DB.
In questa lezione vedremo un esempio.
In questa sezione molto densa del corso imparerete cosa sono metodi bagging e boosting e come utilizzarli in KNIME.
Imparerete anche come si possono utilizzare le librerie Keras e Tensorflow, per riconoscere le immagini, e vedremo nel dettaglio tutta la teoria che sta dietro questa affascinante attività.
Ovviamente per tutto questo utilizzeremo KNIME e le estensioni che ci mette a disposizione.
In questa lezione vedremo una panoramica sui metodi ensemble, in particolare il bagging e il boosting.
Questa lezione si potrebbe intitolare: più modelli di machine learning, sono meglio di uno!
In effetti è il principio su cui si basano i metodi di Ensemble.
In questa lezione vedremo il principio di funzionamento dei metodi Ensemble.
Il Bagging è una tecnica che divide il dataset in samples che vengono utilizzati per addestrare diversi modelli.
Il risultato di predizione sul sample viene determinato utilizzando una delle seguenti tecniche:
soft voting: viene calcolata la media di tutte le predizioni (in caso di regressione)
hard voting: viene utilizzato il risultato che è stato predetto dal maggior numero di modelli (in caso di classificazione)
Un vantaggio di adoperare questa tecnica è che le elaborazioni possono essere eseguite in parallelo.
Il Bootstrap consiste nell'estrarre in maniera casuale e con reinserimento osservazioni o features del dataset iniziale che verranno poi utilizzate dai learners per l'addestramento.
Viene utilizzato, ad esempio, nel Random Forest che vedremo più avanti.
Il Boosting è un procedimento che esegue N addestramenti sui dati del modello con l'obiettivo di ridurre l'errore complessivo nelle predizioni.
I modelli generati in tutti gli addestramenti vengono combinati per predire il risultato finale sulle osservazioni.
Ha lo svantaggio di dover essere eseguito sequenzialmente.
È uno degli algoritmi di classificazione (e regressione) più noto e utilizzato.
Il suo funzionamento è abbastanza semplice: esso cerca di determinare, per ogni osservazione, l'appartenenza ad una classe target, sulla base della valutazione di alcune feature, cercando di ridurre l'impurezza del basket cui verranno associate le osservazioni (ad esempio, utilizzando il Coefficiente di Gini).
È molto efficiente ed è implementato in tutti i linguaggi di machine learning.
Rispetto a molti altri algoritmi, è possibile dedurre il percorso logico che ha determinato, per un'osservazione, l'attribuzione ad una classe invece che ad un'altra, quindi si dice che è un algoritmo di machine learning che si presta a 'spiegare' il perché delle sue valutazioni.
I metodi Ensemble introducono uno strumento di validazione dei dati che si chiama Out of Bag error.
Applicando i metodi di Bagging e Boosting, infatti, possiamo notare che alcune features o osservazioni non verranno utilizzate durante l'addestramento in tutti i modelli, quindi è possibile validare gli stessi passandogli i set di dati, features o osservazioni, non utilizzati, per la loro validazione.
L'errore calcolato in questa fase della validazione è proprio l'Out of Bag Error.
Il Random Forest, o foresta casuale, è un'applicazione delle tecniche di Bagging e Boosting al Decision Tree.
L'associazione di queste tecniche col Decision Tree migliora sensibilmente la qualità delle predizioni, riuscendo anche a mitigare l'overfitting, che è un difetto proprio di questo modello.
Per ottenere i migliori risultati, il numero di modelli che devono essere addestrati deve essere molto alto, in genere compreso tra 50 e 100, o anche più.
Per la validazione dei modelli, si utilizza la tecnica OOB (Out of Bag Error).
In questa lezione cominceremo a vedere come utilizzare nella pratica i modelli di Ensemble in KNIME, cominciando dal Random Forest.
In questa lezione vedremo il funzionamento dei nodi Random Forest Learner e Predictor e analizzeremo le predizioni con il nodo Scorer.
Imparerete cosa sono la Precision, il Recall e l'F-measure e il Cohen's Kappa per poter valutare le performance del modello elaborato.
In questa lezione confronteremo le performance del singolo modello di Decision Tree, con quello del Random Forest e inoltre vedremo più nel dettaglio l'output del nodo Random Forest Predictor, gli Error Out of Bag e le statistiche di utilizzo delle features che sono disponibili nel nodo Random Forest Learner.
I nodi Tree Ensemble Learner e Predictor consentono di utilizzare il Bagging e il Bootstrap al metodo di Decision Tree.
Possiamo dire che che si tratta di un Random Forest con la possibilità di effettuare una migliore tuning dei parametri di configurazione.
In questa lezione vedremo come si configurano entrambi i nodi.
I nodi Gradient Boosted Learner e Predictor si basano sulla tecnica di Boosting.
Anche questi nodi utilizzando l'algoritmo Decision Tree, ma in modalità Lazy, cioé senza particolari ottimizzazioni.
In questa lezione imparerete come utilizzarli.
In questa seconda parte della lezione Gradient Boosted Trees vedremo il comportamento del nodo Gradient Booester Learner e Predictor, impostando diversi valori di learning rate, tra 0,01-0,1-1.
Questo serve a comprendere come il fine tuning dei modelli sia un'operazione quasi artigianale, che richiede molto tempo e tentativi a meno che non si utilizzino delle tecniche appropriate (che KNIME implementa, lo vedremo più avanti in questa sezione).
In questa lezione confronteremo le performance di tutti i modelli per verificare quale abbia ottenuto le performance migliori.
In questa lezione imparerete ad usare i nodi di Parameter Optimization che, come dice il nome, consentono attraverso una procedura iterativa, di determinare la parametrizzazione ottimale del nodo di Learner inserito all'interno del Loop di determinazione dei best parameters.
In seconda parte della lezione Parameter Optimization, continueremo l'analisi utilizzando le altre strategie disponibili nel nodo Parameter Optimization Loop Start per verificare le differenze sui best parameters ricavati.
La Cross Validation consente di utilizzare l'intero dataset suddividendolo in partizioni e adoperando, di volta in volta, alcune partizioni per l'addestramento e altre per la validazione.
In questa lezione vedremo il principio su cui si basa questa tecnica.
In questa lezione imparerete ad usare la Cross Validation in un workflow di classificazione e a valutare i risultati.
I nodi che permettono di implementare questa tecnica sono X-Partitioner e X-Aggregator che a tutti gli effetti costituiscono un ciclo di loop entro cui possiamo inserire la coppia di learner/predictor desiderata.
Il nodo Binary Classification Inspector, ci permette di confrontare diversi modelli per stabilire quello che ha dato i migliori risultati a parità di dataset.
Utilizza le classi predette per ogni osservazione e la probabilità (confidenza), quindi è necessario abilitare le voci relative nei nodi di predictor dei vari classificatori.
In questa lezione e nella successiva, imparerete ad integrarlo in un workflow.
Seconda parte delle lezione Binary Classification Inspector Node.
Terza e ultima parte delle lezione Binary Classification Inspector Node.
In questa lezione e nelle successive vedremo l'integrazione tra H2O.ai e KNIME, che consente di utilizzare dei modelli pre-addestrati con questa piattaforma e di utilizzare in H20, modelli sviluppati con KNIME.
In questa seconda parte delle lezione H2O Integration in KNIME, vedremo come creare in H2O Contest nella nostra macchina e utilizzare i nodi H2O di KNIME all'interno dei nostri workflow.
Realizzeremo un workflow per la classificazione del dataset Iris adoperano solo nodi H2O.
In questa lezione e in quelle che seguiranno si vedrà come utilizzare una rete neurale all'interno di KNIME.
La trattazione inizierà con alcuni cenni sulle reti neurali per poi proseguire in un approfondimento che riguarderà le reti neurali profonde, iniziando dalle reti FFNN, per proseguire con le CNN e gli algoritmi utilizzati nel riconoscimento delle immagini e le estensioni Keras e Tensorflow che permettono di utilizzare le reti neurali in KNIME. Infine vedremo come utilizzare una rete RNN nel riconoscimento del sentiment.
Seconda parte della lezione KNIME e Deep Learning, in cui vedremo alcuni aspetti di progettazione delle reti neurali, come la scelta della funzione di attivazione e delle funzioni di perdita e la determinazione del numero di neuroni nello strato di uscita.
Introdurremo Keras e Tensorflow e le Reti Neurali Convoluzionali (RNN)
In questa terza parte della lezione KNIME e Deep Learning, vedremo come sono rappresentate le immagini in un computer e come funzionano le reti neurali convoluzionali.
In questa quarta parte della lezione KNIME e Deep Learning, cominceremo a vedere il workflow che realizza il riconoscimento delle immagini sul dataset MINST.
In questa quinta parte della lezione KNIME e Deep Learning, continueremo a vedere il workflow che realizza il riconoscimento delle immagini sul dataset MINST.
In questa sesta parte della lezione KNIME e Deep Learning, configureremo il Keras Network Learner e proveremo l'arresto automatico dell'addestramento. Il modello generato verrà utilizzato dal nodo Keras Network Executor, che vedremo nell'ultima parte di questa lezione.
Con questa parte completeremo lo studio di come si implementa una rete neurale convoluzionale in KNIME e valuteremo i risultati.
In questa lezione e in quelle seguenti, analizzeremo un altro utilizzo delle reti neurali, in particolare della RNN, per il riconoscimento del sentiment di una frase, utilizzando un dataset prelevato da Kaggle relativo ai giudizi, lasciati su twitter, dei servizi offerti da una compagnia aerea americana su Twitter, nel primo quarto del 2008.
Vedremo come costruire la rete neurale e il workflow per realizzare tutto ciò.
Seconda parte della lezione Sentiment analysis con Keras.
Quarta parte della lezione Sentiment analysis con Keras.
In questa lezione utilizzeremo l'ambiente Conda installato utilizzando Anaconda potendo così sfruttare la GPU presente sulla mia installazione. Ripeteremo il workflow relativo alla Sentiment Analysis con Keras e vedremo che l'elaborazione prenderà una mossa a dir poco incredibile!
In quest'ultima lezione vedremo come effettuare il deploy del modello di machine learning per la sentiment analysis, sviluppato con Keras in un ambiente di produzione.
Anche se non potremo vederlo in azione, a causa dell'indisponibilità di accesso alle API di Twitter, comprenderemo come strutturare un workflow a questo scopo.
Cos'è un Components? Perché è utile?
In questa sezione del corso imparerete cosa sono i Components, come crearli e come usarli.
I Components sono paragonabili a nodi che esplicano una particolare funzionalità e che possono essere condivisi, inoltre, utilizzando i Configuration Node e i Widget Node, danno agli utilizzatori la possibilità di interagire con un Workflow, modificando i parametri in ingresso o il flusso.
Sono anche gli elementi fondanti delle WebPortal Pages, che sono pagine dinamiche su KNIME Server, che costituiscono l'interfaccia grafica di un Workflow, nascondendone la complessità.
In questa lezione imparerete ad creare un Component, partendo da un workflow un cui sia presente un branch che riteniamo svolga una funzione autonoma e riutilizzabile.
In questa lezione imparerete a modificare alcune impostazioni di un Component.
È possibile aggiungere, rimuovere o modificare il numero e il tipo di porte di un Component.
In questa lezione imparerete come fare.
La peculiarità maggiore di un Component è quella di poter essere condiviso.
La condivisione può essere eseguita in un mountpoint locale o remoto, ad esempio KNIME Hub o Server.
In questa lezione imparerete come condividere un Component e come tenerlo aggiornato con la copia condivisa, che può essere modificata e migliorata. È possibile godere di queste modifiche, nel proprio workflow, mantenendo il link tra il Component locale e quello condiviso, oppure disconnettere questo cordone ombelicale e continuare lo sviluppo del Component localmente.
Seconda parte della lezione sulla condivisione di un Component.
Terza e ultima parte della lezione sulla condivisione di un Component.
Le Flow Variables in un Component hanno una visibilità locale.
Se è necessario esportarle all'esterno per utilizzarle nel resto del Workflow è necessario dichiararlo in maniera esplicita.
In questa lezione imparerete come farlo.
In questa lezione imparerete come utilizzare un Component condiviso all'interno dei vostri workflow.
I Component possono integrare dei controlli per l'input o dei nodi che producano una qualsiasi output e possono mostrarne il contenuto attraverso una finestra.
La posizione di questi elementi può essere organizzata tramite una finestra di dialogo che si chiama Configuration Dialog Layout e che si usa anche per predisporre i contenuti da pubblicare nelle WebPortal Pages su KNIME Server.
In questa lezione imparerete a comporre un Component di questo tipo e a organizzare le finestre di input e di output utilizzando la Configuration Dialod Layout.
Una volta creato il Component e definito il layout dei suoi controlli e degli output, pubblicare un workflow è un gioco da ragazzi!
In questa lezione imparerete come pubblicare un workflow su KNIME Server e farete conoscenza delle WebPortal Page.
Nota: KNIME Server è una funzionalità a pagamento di KNIME AG.
In questa lezione imparerete cos'è un widget e come utilizzarlo per creare WebPortal Page interattive o per migliorare l'interazione con l'utente. Imparerete anche in cosa differiscono rispetto di nodi di Configuration.
In questa sezione del corso analizzeremo vari nodi per la visualizzazione dei dati.
KNIME ne supporta di diversi tipi, da quelli più vecchi che utilizzano la libreria JFreeChart e quelli più recenti che si basano su Javascript.
Negli esempi che vedremo utilizzeremo prevalentemente i nodi KNIME Views (Labs), che sono i più recenti e hanno una grafica molto gradevole oltre ad essere configurabili interattivamente. In qualche esempio vedremo invece i nodi Javascript che sono più numerosi.
In questa lezione vedremo la configurazione del nodo Scatter Plot JavaScript e un esempio di utilizzo.
In questa lezione vedremo il primo nodo della famiglia KNIME View (Labs): lo Scatter Plot.
In questa parte della lezione Scatter Plot con KNIME View Labs, vedremo altre caratteristiche del nodo.
In questa lezione analizzeremo il funzionamento del nodo Stacked Area Chart (Labs) della famiglia KNIME Views Labs, con un esempio.
Vedremo anche come costruire la grafica annessa alla visualizzazione tramite l'ambiente Composite View Layout.
Continuazione della lezione Stacked Area Chart (Labs)
In questa lezione analizzeremo il funzionamento del nodo Histogram (Labs) della famiglia KNIME Views Labs, con un esempio.
In questa lezione vedremo in più classico dei visualizzatori, il nodo Line Plot (Labs).
Ne vedremo un esempio di utilizzo.
In questa lezione vedremo l'utilizzo del nodo Heatmap, che consente di rappresentare informazioni su più livelli e anche di applicare dei filtri, sulla visualizzazione, che mostrino i dati di interesse.
In questa lezione vedremo l'utilizzo del nodo Column Resorter, che permette di ordinare le colonne di una tabella per mostrarle adeguatamente all'interno
In questa lezione vedremo come collegare un nodo Scatter Plot Javascript ad un nodo Table View e ad aggiornare automaticamente le osservazioni visualizzate alla selezione di alcuni punti sulla chart Scatter Plot.
Rivedremo una chart interattiva che era stata mostrata nel corso base, stavolta con gli approfondimenti che ci consente l'avere seguito questo corso !
In questa lezione parleremo della possibilità di integrare dei modelli LLM, remoti e locali, all'interno di un Workflow di KNIME. Ragioneremo sul perché dovremmo preferire un LLM locale, invece di chatGPT e altri strumenti similati.
Alla fine della sezione imparerete cosa è il RAG, l'Embedding, come utilizzare un LLM locale o remoto per costruire una soluzione locale RAG che permetta di interrogare un LLM sui propri documenti, tutto senza utilizzare codice.
In questa lezione introdurremo le reti neurali che vengono utilizzate nella AI generativa, cioè le RNN, le LSTM e infine i Transformer.
I concetti relativi a queste reti, verranno meglio chiariti nelle lezioni successive.
Verranno descritte le reti neurali di tipo RNN (Recurrent Neural Network) e il loro principale problema, detto Vanishing Gradient (scomparsa del gradiente), che ne limita l'utilizzo negli LLM.
In questa lezione verranno descritte le reti LSTM, che risolvono il problema delle reti neurali delle reti RNN, ma dimostrano ancora dei limiti quando si aumenta, progressivamente, il numero di parametri e di layer.
In questa lezione verranno introdotte le reti neurali Transformer, che permettono di operare sui testi in maniera più efficiente rispetto alle reti RNN ed LSTM.
In questa lezione verrà fornita una panoramica sui LLM, partendo dalle prime implementazioni e fino ai giorni nostri. Si vedrà come, oltre ad OpenAI, siano presenti diversi player sulla scena mondiale, che si contendono il titolo di migliore LLM, incluse alcune iniziative free to use e con codice aperto.
Cos'è un LLM? Quali sono le sue peculiarità? In questa lezione, verranno fornite alcune risposte.
In questa lezione vedremo, in parole semplici, come funziona un LLM, perché riesca a produrre testo verosimile dato un innesco (una frase) iniziale. Come lo ha definito qualcuno: "Un LLM è un pappagallo stocastisco..."
I LM sono addestrati utilizzando due tecniche:
supervised learning
self-supervised learning
durante l'addestramento il LM impara l'utilizzo delle parole da come queste vengono utilizzate, dal loro contesto, senza conoscere la grammatica. Sembra magia, invece è statistica!
In questa lezione faremo conoscenza di ChatGPT, il primo LLM che è approdato al grande pubblico, grazie all'eco dei prodigi, che prometteva.
Vedremo anche perché stato necessario applicare la tecnica RLHF (Reinforcement Learning for Human Feedback) per poter inserire dei filtri rispetto a quello che chatGPT aveva imparato da Internet, e che magari non era il caso di dire...
In questa lezione vedremo alcuni pro e alcuni contro rispetto all'utilizzo di ChatGPT.
Questo introdurrà le lezioni successive dove capiremo perché, in alcuni contesti, sia preferibile una soluzione LLM locale come quelle che verranno proposte nel seguito.
In questa lezione, comprenderemo cosa significhi, per un LLM, essere costituito da miliardi di parametri e come questa caratteristica permetta allo stesso di acquisire nuove competenza al superamento di una soglia, detta, critica.
Quello che oggi non sappiamo è quale soglia inneschi una certa competenza: sappiamo che questa verrà ma non sappiamo quando.
Alcune caratteristiche di ChatGPT e soluzioni similari, hanno alcuni difetti che ne sconsigliano l'utilizzo all'interno di aziende o istituzioni; questi sono:
la non gestione della privacy e del copyright dei dati
il modello pay per use
le non corrispondenza con la policy della propria organizzazione
A tal proposito, esistono delle soluzioni LLM locali che possiamo utilizzare in computer commerciali, per poter svolgere delle attività tipiche dei LLM, senza connessione ad Internet e, il più delle volte, non pagando nulla.
In questa lezione vedremo nel dettaglio tutti questi aspetti.
In questa lezione faremo conoscenza della soluzione di nomic.ai denominata GPT4ALL che ci permette di installare, nel nostro computer, una soluzione completa di LLM con la possibilità di fare usare anche la RAG (Retrieval Augmented Generation), cioè di interrogare un LLM su documenti che gli abbiamo messo a disposizione.
Il progetto GPT4ALL è disponibile in forma di diversi nodi per KNIME ed è un riferimento, come repository di vari LLM, che possono essere scaricati dal sito gpt4all.io, ma è anche un programma, multipiattaforma, che si può installare sul proprio computer per utilizzarlo come ChatGPT, perché ha un'interfaccia utente, simile.
In questa lezione vedremo, brevemente, come installarlo.
In questa lezione vedremo, brevemente, come si presenta e come funziona l'interfaccia utente di GPT4ALL.
In questa lezione verrà spiegato come accedere ai LLM presenti su gpt4all.io e a riconoscerne le caratteristiche per scegliere quello più adatto alle proprie necessità e alle caratteristiche del proprio computer.
Hugging Face, negli ultimi anni, è diventato molto popolare tra i siti dove è possibile recuperare informazioni e quant'altro su LLM, anche di ultima generazione (ad esempio, vi si trova il recentissimo Llama3).
Utilizzare gli LLM di Hugging Face, non è una soluzione di LLM locale (somiglia più ad utilizzare ChatGPT, anche se al momento l'utilizzo è gratuito), ma è, comunque, importante conoscere questa piattaforma perché è qui che vengono rilasciati gli ultimi LLM e vi si trovano anche altre soluzioni di AI Generativa in ambito audio, video e immagini.
Ci si può collegare ad Hugging Face e utilizzare alcuni LLM, remotamente, tramite dei nodi presenti su KNIME.
Anche se non si tratta di una soluzione LLM locale, ha ottime prestazioni e al momento il suo utilizzo è gratuito, quindi perché non provarlo?
Nella lezione viene spiegato come attivare un token e come selezionare una LLM.
Per i dettagli sui nodi di KNIME relativi ad HF si rimanda ai link associati alla lezione.
Anche i LLM locali non sono esenti da difetti, anche se non mancano alcuni pregi rispetto alle soluzioni in stile ChatGPT.
In questa lezione si analizzeranno i pro e i contro di questo tipo di soluzione in ambito NLP, ponendo l'accento sulla scarsa velocità di esecuzione (dipendente dal computer dove vengono fatti girare) e sul bias, che comunque li accomuna a tutti i tipi di LLM ad oggi disponibili.
In questa lezione si vedrà, nel dettaglio, in che cosa consiste l'embedding e come questo governi il funzionamento dei LLM, oltre che essere centrale nel processo di RAG.
Nei LLM le parole hanno delle caratteristiche (features), che derivano dalla fase di embedding, che il modello ha associato ad ognuna durante l'addestramento.
Rappresentando queste features in uno spazio multidimensionale, si può vedere come termini che hanno significati simili si trovino vicini, adiacenti o in posizioni opposte a seconda del loro significato o delle dipendenze.
La fase di embedding è cruciale nel processo di RAG perché ci permette di collocare i termini e i paragrafi che costituiscono i nostri documenti, in uno spazio vettoriale, costituito da un DB Vector, dove è poi possibile effettuare delle ricerche, semplicemente inserendo la giusta domanda.
Questo e altro saranno l'oggetto di questa lezione.
In questa lezione imparerete a costruire un Workflow in KNIME che permetta di effettuare l'embedding di uno o più documenti.
Ciò sarà possibile, principalmente, attraverso l'uso di un nodo e un modello di LLM di embedding che è disponibile per tutti i nodi di AI generativa di testo, presenti in KNIME (ChatGPT, Azure, GPT4ALL, HF).
Queste nozioni vi serviranno quando vi cimenterete nella creazione di una vostra soluzione di RAG!
In questa lezione verranno spiegati i meccanismi di recupero dei termini/paragrafi in un Database Vettoriale (DB Vector), utilizzando una query di ricerca che è scritta in linguaggio naturale.
Questo permetterà di recuperare i contesti, cioè i paragrafi che sono più pertinenti rispetto alla domanda, che verranno utilizzati dal LLM per formulare la risposta più coerente col contenuto dei nostri documenti.
In questa lezione, al culmine del nostro percorso nel mondo dei LLM, vedremo finalmente in che cosa consiste la tecnica RAG (Retrieval Augmented Generation).
Lo schema che verrà presentato nella lezione è generico, ma, vedremo, ci permetterà di identificare le funzioni e i nodi in KNIME che utilizzeremo per costruire la nostra soluzione di RAG con KNIME!
Anzi, dovrete provare a costruirla voi, prima di vedere quella che presenterò, in dettaglio nelle ultime lezioni di questa sezione, quindi, in bocca al lupo ;)
In questa lezione verrà presentato l'estensione KNIME AI extension(labs), che è stata resa disponibile dalla versione 5.x di KNIME.
Questa ci permette di accedere a tutti i nodi per la AI generativa, di tipo NLP e ci permetterà di costruire la nostra soluzione di RAG locale.
In questa lezione imparerete cos'è il prompt engineering, come usarlo nella soluzione RAG che costruirete tra un poco.
Per maggiori informazioni, fate riferimento al link associato a questa lezione, dove OpenAI spiega le 6 strategie che dovete assolutamente sapere (e usare) per avere la migliore risposta da ChatGPT
In questa lezione vedremo come costruire un Workflow che realizzi la funzionalità di Embedder dei nostri documenti e la collocazione dei paragrafi e dei termini all'interno di un DB Vector.
Questo Workflow ci servirà per realizzare la nostra soluzione di RAG locale.
In questa lezione vedremo come deve essere composto il prompt per poter attivare correttamente il LLM ad espletare l'operazione di elaborazione della domanda e dei contesti per formulare la risposta più pertinente.
Se ben impostato, il prompt, costituisce la metà della soluzione...
In questa lezione vedremo come costruire il Workflow che caricherà il modello, creato nella fase di Embedding con i nostri documenti, che si occuperà di cercare i contesti, sulla base delle domande fornite, per poi confezionare il giusto prompt, con le tecniche apprese prima, per poter attivare il LLM (rigorosamente locale) a confezionare la risposta più pertinente.
Per generare la nostra soluzione di RAG con KNIME, istruiremo il LLM a rispondere a domande che riguardano il libro "The Cathedral and the Bazaar".
Il libro è open source e vale la pena leggerlo...
P.S. allegato a questa lezione, c'è una bozza del Workflow che puoi provare a completare con le nozioni apprese finora. Nei riquadri di ogni sezione sono presenti della istruzioni dettagliate, con indicato anche il nome dei nodi che dovrai utilizzare (puoi cercarli sull'hub di KNIME, nel caso non li avessi disponibili).
Non ti preoccupare se non ci riuscirai, più avanti ti spiegherò la soluzione che ho creato per questa sezione del corso: troverai il Workflow completo, come allegato nell'ultima lezione di questa sezione.
In questa lezione cominceremo a vedere come è stato sviluppato il Workflow che permette di implementare una soluzione RAG con un LLM locale e con KNIME. In particolare, vedremo la porzione di Workflow che si occupa dell'embedding del/i documento/i in pdf.
In questa lezione vedremo la demo che utilizzerà GPT4ALL e la funzionalità di RAG, per permettere di porre alcune domande al LLM locale, sul libro "La Cattedrale e il Bazaar", di E. Raymond.
Il Workflow si può adeguare con qualsiasi documento/i in pdf, cambiando, ovviamente, le domande.
Anche se con qualche limite (richiede parecchio tempo per terminare l'analisi), funziona!!!
Seconda e ultima parte che descrive la demo di una soluzione di RAG utilizzando un LLM locale e KNIME.
Allegato a questa lezione, troverai il Workflow completo che è stato mostrato nelle ultime lezioni.
Ti consiglio di scaricarlo e di provare a modificarlo, inserendo ad esempio, tuoi documenti e provando a porre domande sugli stessi al LLM. Puoi anche modificare il LLM utilizzato e se il tuo computer lo consente, provare qualche altro LLM con un numero maggiore di parametri.
Buona sperimentazione e grazie per avere fruito di questa sezione del corso.
Questo corso di rivolge alle persone che manipolano i dati per la loro attività (studenti, professionisti) e vorrebbero utilizzare gli algoritmi di machine learning per il data mining ma non hanno voglia o tempo di imparare un linguaggio di programmazione, come R o Python.
Fortunatamente ci sono strumenti che permettono di raggiungere gli stessi obiettivi, senza utilizzare una riga di codice (a meno che non si voglia proprio farlo).
Tra questi, sicuramente, KNIME Analytics Platform, o più semplicemente KNIME® è il più conosciuto e utilizzato in questo ambito.
KNIME® è un ambiente completo e Open Source per l'analisi dei dati e il machine learning, che permette l'uso degli algoritmi di data mining più diffusi all'interno di un Workbench visuale, grazie all'utilizzo di componenti software, detti nodi, che combinati in maniera opportuna, permettono di elaborare qualsiasi base di dati.
Il corso, di livello intermedio, copre aspetti avanzati di KNIME, che consentono di migliorare l'esperienza di uso e di utilizzo e si compone di 10 sezioni:
Flow variables: consentono di rendere dinamica l'esecuzione di un workflow sulla base di come evolvono certe informazioni al suo interno
Gestione di Date & Time: verranno trattati i nodi che permettono la manipolazione di data e ora, il calcolo di durate, la gestione dei dati su medie mobili
Controllo del flusso: Loop, If, Case, Break, gestione degli errori.
Gestire i dati in un DBMS: collegarsi ad un DBMS, creare o modificare tabelle, inserire, modificare, cancellare righe su una tabella tutto senza conoscere l'SQL (ma anche conoscendolo)
Aspetti avanzati di Machine Learning: Ensemble (Bagging, Bootstrap, Boosting), Cross Validation), Reti Neurali FFNN, CNN, RNN
Component: creare ed adoperare un Component all'interno di KNIME Server
Visualizzazione dei dati: utilizzare i nodi di visualizzazione Plotly e KNIME views (Labs)
Esportare i dati: inviare i dati di un'elaborazione da KNIME a Power BI®
Implementare una soluzione RAG (Retrieval Augmented Generation), con un LLM (Large Language Model) locale, all'interno di KNIME
KNIME Community Hub, lo spazio dove diversi utenti di KNIME possono collaborare ad un progetto di data analysis, eseguire i propri workflow e pubblicare i risultati
In tutte le sezioni si utilizzerà prevalentemente KNIME®, mostrando alcune implementazioni di data mining con dati pubblici e fornendo numerosi esempi tratti dal sito Hub di KNIME.
NOTE dell'autore:
KNIME® è un marchio registrato e il logo e il marchio OPEN FOR INNOVATION® sono utilizzati da KNIME AG su licenza di KNIME GmbH e sono registrati negli Stati Uniti. KNIME® è anche registrato in Germania.
L'autore non é collegato in alcun modo all'azienda.
Il corso è stato sviluppato sulle tracce dei corsi self paced [L2-DS] KNIME Analytics Platform for Data Scientists: Advanced e [L2-DW] KNIME Analytics Platform for Data Wranglers: Advanced, disponibili, in lingua inglese, sul sito di KNIME.
Gli esempi mostrati durante le lezioni sono per lo più disponibili sul sito KNIME Hub, cui si rimanda nelle risorse presenti alla fine di ogni lezione del corso.
La main version di KNIME utilizzata negli esempi è la 4.6 o 4.7 , le lezioni della sezione che spiega come implementare soluzioni che utilizzano i LLM, in KNIME, sono state create utilizzando la versione 5.2.3, che implementa i nodi per l'AI generativa. La versione di KNIME Community Hub utilizzata nella sezione relativa è la 1.12.
Gli esempi che utilizzano KNIME Server sono stati creati con la versione 4.5