Risultati Ricerca Intelligenza Artificiale Italia
484 risultati trovati con una ricerca vuota
- Come Utilizzare il Machine learning per il Rilevamento delle Anomalie
Caso d'uso concreto per l'apprendimento automatico e l'analisi statistica nel settore del rilevamento di anomali industriale. In questo articolo, introdurremo un paio di diverse tecniche e applicazioni dell'apprendimento automatico e dell'analisi statistica, quindi mostreremo come applicare questi approcci per risolvere un caso d'uso specifico per il rilevamento di anomalie e il monitoraggio delle condizioni. Data Science, digitalizzazione, Industria 4.0, ecc…. Questi sono tutti termini che probabilmente hai sentito o letto prima. Tuttavia, dietro tutte queste parole d'ordine, l'obiettivo principale è l'uso della tecnologia e dei dati per aumentare la produttività e l'efficienza. La connettività e il flusso di informazioni e dati tra dispositivi e sensori consente un'abbondanza di dati disponibili. Il fattore chiave è quindi essere in grado di utilizzare queste enormi quantità di dati disponibili ed estrarre effettivamente informazioni utili, consentendo di ridurre i costi, ottimizzare la capacità e ridurre al minimo i tempi di fermo. È qui che entra in gioco il recente ronzio intorno all'apprendimento automatico e all'analisi dei dati. Rilevamento di anomalie con Machine Learning Il rilevamento delle anomalie (o rilevamento dei valori anomali) è l'identificazione di elementi, eventi o osservazioni rari che sollevano sospetti differendo in modo significativo dalla maggior parte dei dati. Tipicamente, i dati anomali possono essere collegati a qualche tipo di problema o evento raro come ad esempio frode bancaria, problemi medici, difetti strutturali, malfunzionamento delle apparecchiature ecc. Questa connessione rende molto interessante poter individuare quali punti dati possono essere considerati anomalie , poiché l'identificazione di questi eventi è in genere molto interessante dal punto di vista aziendale. Questo ci porta a uno degli obiettivi chiave: come possiamo identificare se i punti dati sono normali o anomali? In alcuni casi semplici, come nella figura di esempio qui sotto, la visualizzazione dei dati può fornirci informazioni importanti. In questo caso di dati bidimensionali ( X e Y ), diventa abbastanza facile identificare visivamente le anomalie attraverso punti dati situati al di fuori della distribuzione tipica . Tuttavia, guardando le figure a destra, non è possibile identificare il valore anomalo direttamente dall'indagine di una variabile alla volta: è la combinazione delle variabili X e Y che ci consente di identificare facilmente l'anomalia. Ciò complica sostanzialmente la questione quando si passa da due variabili a 10-100 di variabili, come spesso accade nelle applicazioni pratiche del rilevamento delle anomalie. Monitoraggio anomalie con il Machine Learning Qualsiasi macchina, sia essa rotante (pompa, compressore, turbina a gas o vapore, ecc.) o non rotante (scambiatore di calore, colonna di distillazione, valvola, ecc.) finirà per raggiungere un punto di cattive condizioni di salute. Quel punto potrebbe non essere quello di un guasto o di un arresto effettivo, ma quello in cui l'apparecchiatura non funziona più nel suo stato ottimale. Ciò segnala che potrebbe essere necessaria qualche attività di manutenzione per ripristinare il pieno potenziale operativo. In parole povere, l'identificazione dello “stato di salute” delle nostre apparecchiature è il dominio del condition monitoring . Il modo più comune per eseguire il monitoraggio delle condizioni è guardare ogni misurazione del sensore dalla macchina e imporre un limite di valore minimo e massimo su di essa. Se il valore corrente rientra nei limiti, la macchina è integra. Se il valore corrente è fuori dai limiti, la macchina non è integra e viene inviato un allarme. È noto che questa procedura di imposizione di limiti di allarme codificati invia un gran numero di falsi allarmi, ovvero allarmi per situazioni che sono effettivamente stati di salute della macchina. Ci sono anche gli allarmi mancanti, cioè situazioni problematiche ma non allarmate. Il primo problema non è solo la perdita di tempo e fatica, ma anche la disponibilità dell'attrezzatura. Il secondo problema è più cruciale in quanto porta a danni reali con costi di riparazione associati e perdita di produzione. Entrambi i problemi derivano dalla stessa causa: lo stato di salute di un'apparecchiatura complessa non può essere giudicato in modo affidabile sulla base dell'analisi di ciascuna misurazione da sola (come illustrato anche nella figura 1 nella sezione precedente sul rilevamento delle anomalie). Dobbiamo piuttosto considerare una combinazione delle varie misurazioni per avere un'indicazione veritiera della situazione Sezione tecnica rilevamento Anomalie e M.L. È difficile trattare gli argomenti dell'apprendimento automatico e dell'analisi statistica per il rilevamento delle anomalie senza entrare anche negli aspetti più tecnici. Eviterò comunque di approfondire il background teorico (ma fornirò alcuni collegamenti a descrizioni più dettagliate). Se sei più interessato alle applicazioni pratiche dell'apprendimento automatico e dell'analisi statistica quando si tratta, ad esempio, del monitoraggio delle condizioni, non esitare a passare alla sezione "Caso d'uso del monitoraggio delle condizioni". Approccio 1: Analisi statistica multivariata per il rilevamento delle anomalie con il M.L. Riduzione dimensionale mediante analisi delle componenti principali Poiché la gestione di dati ad alta dimensionalità è spesso difficile, esistono diverse tecniche per ridurre il numero di variabili ( riduzione della dimensionalità ). Una delle tecniche principali è l'analisi delle componenti principali (PCA), che esegue una mappatura lineare dei dati in uno spazio a dimensione inferiore in modo tale da massimizzare la varianza dei dati nella rappresentazione a dimensione ridotta. In pratica si costruisce la matrice di covarianza dei dati e gli autovettori di questa matrice sono calcolati. Gli autovettori che corrispondono agli autovalori maggiori (le componenti principali) possono ora essere utilizzati per ricostruire una grande frazione della varianza dei dati originali. Lo spazio delle caratteristiche originali è stato ora ridotto (con una certa perdita di dati, ma si spera mantenendo la varianza più importante) allo spazio coperto da alcuni autovettori. Rilevamento multivariato di anomalie con il M.L. Come abbiamo notato sopra, per identificare le anomalie quando si tratta di una o due variabili, la visualizzazione dei dati può spesso essere un buon punto di partenza. Tuttavia, quando si scala questo verso dati ad alta dimensione (come spesso accade nelle applicazioni pratiche), questo approccio diventa sempre più difficile. Questo è fortunatamente il punto in cui le statistiche multivariate vengono in aiuto. Quando si ha a che fare con una raccolta di punti dati, avranno in genere una certa distribuzione (ad es Distribuzione gaussiana). Per rilevare le anomalie in modo più quantitativo, calcoliamo prima la distribuzione di probabilità P(x) dai punti dati. Poi quando un nuovo esempio,X,entra, confrontiamoP(x) con una sogliaR. SeP(x)<R, è considerata un'anomalia. Questo perché gli esempi normali tendono ad avere un grandeP(x) mentre gli esempi anomali tendono ad avere un piccoloP(X) Nel contesto del monitoraggio delle condizioni, questo è interessante perché le anomalie possono dirci qualcosa sullo "stato di salute" dell'apparecchiatura monitorata: i dati generati quando l'apparecchiatura si avvicina a un guasto, o un'operazione non ottimale, hanno in genere una distribuzione diversa rispetto ai dati da attrezzatura “sana”. La distanza di Mahalanobis Si consideri il problema della stima della probabilità che un punto dati appartenga a una distribuzione, come descritto sopra. Il nostro primo passo sarebbe trovare il baricentro o il centro di massa dei punti di campionamento. Intuitivamente, più il punto in questione è vicino a questo centro di massa, più è probabile che appartenga all'insieme. Tuttavia, dobbiamo anche sapere se l'insieme è distribuito su una vasta o una piccola gamma, in modo da poter decidere se una determinata distanza dal centro è degna di nota o meno. L'approccio semplicistico consiste nel stimare la deviazione standard delle distanze dei punti di campionamento dal centro di massa. Inserendo questo nella distribuzione normale possiamo derivare la probabilità che il punto dati appartenga alla stessa distribuzione. Lo svantaggio dell'approccio di cui sopra era che si presumeva che i punti di campionamento fossero distribuiti attorno al centro di massa in modo sferico. Se la distribuzione fosse decisamente non sferica, ad esempio ellissoidale, allora ci aspetteremmo che la probabilità che il punto di prova appartenente all'insieme dipenda non solo dalla distanza dal centro di massa, ma anche dalla direzione. In quelle direzioni in cui l'ellissoide ha un asse corto il punto di prova deve essere più vicino, mentre in quelle in cui l'asse è lungo il punto di prova può essere più lontano dal centro. Mettendo questo su una base matematica, l'ellissoide che meglio rappresenta la distribuzione di probabilità dell'insieme può essere stimato calcolando la matrice di covarianza dei campioni. La distanza di Mahalanobis (MD) è la distanza del punto di prova dal centro di massa divisa per la larghezza dell'ellissoide nella direzione del punto di prova. Per poter utilizzare la MD per classificare un test point come appartenente a una delle N classi, si stima prima la matrice di covarianza di ciascuna classe, solitamente basata su campioni noti per appartenere a ciascuna classe. Nel nostro caso, poiché siamo interessati solo a classificare "normale" e "anomalia", utilizziamo dati di allenamento che contengono solo condizioni operative normali per calcolare la matrice di covarianza. Quindi, dato un campione di prova, calcoliamo la MD nella classe "normale" e classifichiamo il punto di prova come "anomalia" se la distanza è superiore a una certa soglia. Nota di cautela: l'uso della MD implica che l'inferenza può essere eseguita attraverso la matrice media e covarianza - e questa è una proprietà della sola distribuzione normale. Questo criterio non è necessariamente soddisfatto nel nostro caso, poiché le variabili di input potrebbero non essere distribuite normalmente. Tuttavia, proviamo comunque e vediamo come funziona! Approccio 2: Rete neurale artificiale per rilevare le anomalie Reti di codifica automatica Il secondo approccio si basa sull'utilizzo di reti neurali autoencoder . Si basa su principi simili a quelli dell'analisi statistica di cui sopra, ma con alcune lievi differenze. Un autoencoder è un tipo di rete neurale artificiale utilizzata per apprendere codifiche di dati efficienti senza supervisione . Lo scopo di un autoencoder è quello di apprendere una rappresentazione (codifica) per un insieme di dati, tipicamente per la riduzione della dimensionalità . Insieme al lato di riduzione, viene appreso un lato di ricostruzione, in cui l'autocodificatore cerca di generare dalla codifica ridotta una rappresentazione il più vicino possibile al suo input originale. Architettonicamente, la forma più semplice di un autoencoder è una rete neurale feedforward , non ricorrente , molto simile ai molti perceptron a strato singolo che crea un perceptron multistrato (MLP), con uno strato di input, uno strato di output e uno o più strati nascosti che li collegano — ma con il livello di output avente lo stesso numero di nodi del livello di input e allo scopo di ricostruire i propri input. Nel contesto del rilevamento delle anomalie e del monitoraggio delle condizioni, l'idea di base è quella di utilizzare la rete di autoencoder per "comprimere" le letture dei sensori in una rappresentazione a dimensioni inferiori, che catturi le correlazioni e le interazioni tra le varie variabili. (Essenzialmente lo stesso principio del modello PCA, ma qui consentiamo anche interazioni non lineari tra le variabili). La rete di autoencoder viene quindi addestrata sui dati che rappresentano lo stato operativo “normale”, con l'obiettivo di comprimere prima e poi ricostruire le variabili di input. Durante la riduzione della dimensionalità, la rete apprende le interazioni tra le varie variabili e dovrebbe essere in grado di ricostruirle alle variabili originali in uscita. L'idea principale è che il degrado dell'apparecchiatura monitorata dovrebbe influire sull'interazione tra le variabili (es. variazioni di temperatura, pressioni, vibrazioni, ecc.). Quando ciò accade, si comincerà a vedere un errore maggiore nella ricostruzione delle reti delle variabili di input. Monitorando l'errore di ricostruzione, si può così ottenere un'indicazione dello “stato di salute” dell'apparecchiatura monitorata, poiché tale errore aumenterà con il degrado dell'apparecchiatura.Mahalanobis distance , qui utilizziamo la distribuzione di probabilità dell'errore di ricostruzione per identificare se un punto dati è normale o anomalo. Caso d'uso del monitoraggio delle condizioni: guasto al cuscinetto dell'ingranaggio In questa sezione, analizzerò un caso d'uso pratico per il monitoraggio delle condizioni utilizzando i due diversi approcci descritti sopra. Per questo caso d'uso, l'obiettivo è rilevare il degrado dei cuscinetti degli ingranaggi su un motore e fornire un avviso che consenta di adottare misure predittive per evitare un guasto agli ingranaggi (che potrebbe ad esempio essere una manutenzione/riparazione pianificata dell'attrezzatura) . Dettagli sperimentali e preparazione dei dati Tre serie di dati, ciascuna composta da quattro cuscinetti, sono state eseguite fino al cedimento in condizioni di carico e funzionamento costanti. I segnali di misurazione delle vibrazioni vengono forniti per i set di dati per tutta la durata dei cuscinetti fino al guasto. Il fallimento si è verificato dopo 100 milioni di cicli con una crepa nella razza esterna (vedere il documento readme dalla pagina di download per ulteriori informazioni sugli esperimenti). Poiché l'attrezzatura è stata utilizzata fino al guasto, i dati dei primi due giorni di funzionamento sono stati utilizzati come dati di addestramento per rappresentare l'attrezzatura normale e "sana". La parte rimanente dei set di dati per il periodo precedente al cedimento del cuscinetto è stata quindi utilizzata come dati di test, per valutare se i diversi metodi potessero rilevare il degrado del cuscinetto prima del cedimento. Approccio 1 : PCA + distanza Mahalanobis Come spiegato più dettagliatamente nella "Sezione tecnica" di questo articolo, il primo approccio consisteva nell'eseguire prima un'analisi dei componenti principali , quindi calcolare la distanza di Mahalanobis (MD) per identificare i punti dati come normali o anomali (segno di degrado dell'attrezzatura) . La distribuzione del DM per i dati di allenamento che rappresentano attrezzature “sane” è illustrata nella figura seguente. Distribuzione della distanza di Mahalanobis per attrezzature "sane" Utilizzando la distribuzione di MD per apparecchiature “sane”, possiamo definire un valore di soglia per cosa considerare un'anomalia. Dalla distribuzione sopra, possiamo ad esempio definire un MD > 3 come anomalia. La valutazione di questo metodo per rilevare il degrado delle apparecchiature ora consiste nel calcolare il MD per tutti i punti dati nel set di test e confrontarlo con il valore di soglia definito per contrassegnarlo come anomalia. Valutazione del modello sui dati del test per il Rilevamento delle anomalie Utilizzando l'approccio di cui sopra, abbiamo calcolato la MD per i dati di prova nel periodo di tempo che ha preceduto il cedimento del cuscinetto, come illustrato nella figura seguente. Previsione del guasto del cuscinetto utilizzando l'approccio 1 Nella figura sopra, i punti verdi corrispondono al MD calcolato, mentre la linea rossa rappresenta il valore di soglia definito per segnalare un'anomalia. Il guasto del cuscinetto si verifica alla fine del set di dati, indicato dalla linea tratteggiata nera. Ciò dimostra che il primo approccio di modellazione è stato in grado di rilevare il guasto imminente dell'apparecchiatura circa 3 giorni prima del guasto effettivo (dove il MD supera il valore di soglia). Possiamo ora svolgere un esercizio simile utilizzando il secondo approccio di modellazione, al fine di valutare quale dei metodi funziona meglio dell'altro. Approccio 2: Rete neurale artificiale Come spiegato più dettagliatamente nella "Sezione tecnica" del documento, il secondo approccio consisteva nell'utilizzare una rete neurale di autoencoder per cercare anomalie (identificate attraverso una maggiore perdita di ricostruzione dalla rete). Analogamente al primo approccio, anche qui utilizziamo la distribuzione dell'output del modello per i dati di addestramento che rappresentano apparecchiature "sane" per rilevare le anomalie. La distribuzione della perdita di ricostruzione (errore medio assoluto) per i dati di addestramento è mostrata nella figura seguente: Distribuzione della perdita di ricostruzione per apparecchiature "sane". Utilizzando la distribuzione della perdita da ricostruzione per apparecchiature “sane”, possiamo ora definire un valore soglia per cosa considerare un'anomalia. Dalla distribuzione sopra, possiamo ad esempio definire una perdita> 0,25 come un'anomalia. La valutazione del metodo per rilevare il degrado delle apparecchiature ora consiste nel calcolare la perdita di ricostruzione per tutti i punti dati nel set di test e nel confrontare la perdita con il valore di soglia definito per contrassegnarlo come anomalia. Valutazione del modello sui dati del test Utilizzando l'approccio di cui sopra, calcoliamo la perdita di ricostruzione per i dati di prova nel periodo di tempo che precede il cedimento del cuscinetto, come illustrato nella figura seguente. Previsione del guasto del cuscinetto utilizzando l'approccio 2 Nella figura sopra, i punti blu corrispondono alla perdita di ricostruzione, mentre la linea rossa rappresenta il valore soglia definito per segnalare un'anomalia. Il guasto del cuscinetto si verifica alla fine del set di dati, indicato dalla linea tratteggiata nera. Ciò dimostra che anche questo approccio di modellizzazione è stato in grado di rilevare il guasto imminente dell'apparecchiatura circa 3 giorni prima del guasto effettivo (dove la perdita di ricostruzione supera il valore di soglia). Riepilogo risultati Come visto nelle sezioni precedenti sui due diversi approcci per il rilevamento delle anomalie, entrambi i metodi sono in grado di rilevare con successo l'imminente guasto dell'apparecchiatura diversi giorni prima del guasto effettivo. In uno scenario reale ciò consentirebbe di adottare misure predittive (manutenzione/riparazione) prima del guasto, il che significa sia risparmi sui costi sia la potenziale importanza per gli aspetti HSE dei guasti alle apparecchiature. Con il costo ridotto dell'acquisizione dei dati attraverso i sensori, nonché la maggiore connettività tra i dispositivi, la possibilità di estrarre informazioni preziose dai dati sta diventando sempre più importante. Trovare modelli in grandi quantità di dati è il regno dell'apprendimento automatico e della statistica e, a mio avviso, ci sono enormi possibilità di sfruttare le informazioni nascoste in questi dati per migliorare le prestazioni in diversi domini. Il rilevamento delle anomalie e il monitoraggio delle condizioni, come illustrato in questo articolo, sono solo una delle tante possibilità. In futuro, crediamo che l'apprendimento automatico sarà utilizzato in molti più modi di quanto siamo in grado di immaginare oggi. Che impatto pensi che avrà sui vari settori? Ci piacerebbe sentire i tuoi pensieri nei commenti qui sotto.
- Apprendimento non Supervisionato con Python
L'apprendimento non supervisionato è una classe di tecniche di apprendimento automatico (ML) utilizzate per trovare modelli nei dati. I dati forniti agli algoritmi non supervisionati non sono etichettati, il che significa che vengono fornite solo le variabili di input ( x ) senza variabili di output corrispondenti. Nell'apprendimento non supervisionato, gli algoritmi sono lasciati soli a scoprire strutture interessanti nei dati. Yan Lecun, vicepresidente e scienziato capo dell'intelligenza artificiale di Facebook, ha affermato che l'apprendimento non supervisionato - insegnare alle macchine ad apprendere da sole senza la necessità che gli venga detto esplicitamente se tutto ciò che fanno è giusto o sbagliato - è la chiave della "vera IA". Prerequisiti : Se non sai cosa è il Machine Learning, clicca qui Se non conosci le principali applicazioni Machine Learning, clicca qui Se non conosci i diversi modelli di apprendimento del M.L. , clicca qui Apprendimento supervisionato vs non supervisionato Nell'apprendimento supervisionato , il sistema cerca di imparare dagli esempi precedenti forniti. Nell'apprendimento non supervisionato, il sistema tenta di trovare i modelli direttamente dall'esempio fornito. Quindi, se il set di dati è etichettato, si tratta di un problema supervisionato e se il set di dati non è etichettato, allora è un problema non supervisionato. APPRENDIMENTO SENZA SUPERVISIONE L'apprendimento non supervisionato è un algoritmo di apprendimento automatico che ricerca modelli precedentemente sconosciuti all'interno di un set di dati che non contiene risposte etichettate e senza interazione umana. I metodi più importanti di apprendimento non supervisionato sono l'analisi dei cluster e l'analisi delle componenti principali. Di seguito è riportata una semplice rappresentazione grafica di come è possibile visualizzare l'apprendimento supervisionato e non supervisionato. L'immagine a destra è un esempio di apprendimento supervisionato (usiamo tecniche di regressione per trovare la linea di adattamento migliore tra le caratteristiche). Nell'apprendimento non supervisionato gli input sono separati in base alle caratteristiche e la previsione si basa sul cluster a cui apparteneva. Terminologia importante nel Machine Learning Caratteristica : una variabile di input utilizzata per fare previsioni. Previsioni: l'output di un modello quando viene fornito un esempio di input. Esempio : una riga di un set di dati. Un esempio contiene una o più funzioni ed eventualmente un'etichetta. Etichetta: Risultato della funzione. Preparazione dei dati per l'apprendimento non supervisionato con python Per il nostro esempio, utilizzeremo il set di dati Iris per fare previsioni. Il set di dati contiene un set di 150 record con quattro attributi: lunghezza del petalo, larghezza del petalo, lunghezza del sepalo, larghezza del sepalo e tre classi di iris: setosa, virginica e versicolor. Daremo in pasto le quattro caratteristiche del nostro fiore all'algoritmo non supervisionato e predirà a quale classe appartiene l'iride. Usiamo la libreria scikit-learn in Python per caricare il set di dati Iris e matplotlib per la visualizzazione dei dati. Di seguito è riportato il frammento di codice per esplorare il set di dati. #Importiamo i moduli from sklearn import datasets import matplotlib.pyplot as plt # Carchiamo il dataset iris_df = datasets.load_iris() # Metodi disponibili print(dir(iris_df)) # Caratteristiche print(iris_df.feature_names) # Targets print(iris_df.target) # Etichette print(iris_df.target_names) label = {0: 'red', 1: 'blue', 2: 'green'} # Separiamo il dataset x_axis = iris_df.data[:, 0] y_axis = iris_df.data[:, 2] # Grafici plt.scatter(x_axis, y_axis, c=iris_df.target) plt.show() Clustering e Apprendimento non supervisionato con python Nel clustering, i dati sono divisi in diversi gruppi con caratteristiche simili. Nell'immagine sopra, la sinistra è costituita da dati grezzi senza classificazione, mentre la destra è raggruppata in base alle sue caratteristiche. Quando viene fornito un input che deve essere previsto, controlla nel cluster a cui appartiene in base alle sue caratteristiche e viene effettuata la previsione. K-MEANS CLUSTERING IN PYTHON Il clustering K-means è un algoritmo di clustering iterativo che mira a trovare i massimi locali in ogni iterazione. Inizialmente, viene scelto il numero desiderato di cluster. Nel nostro esempio, sappiamo che sono coinvolte tre classi, quindi programmiamo l'algoritmo per raggruppare i dati in tre classi passando il parametro "n_clusters" nel nostro modello k-means. Casualmente, tre punti (input) vengono assegnati in tre cluster. Sulla base della distanza del centroide tra ciascun punto, i successivi input dati vengono segregati in cluster rispettati e i centroidi vengono ricalcolati per tutti i cluster. Ciascun centroide di un cluster è una raccolta di valori di funzionalità che definiscono i gruppi risultanti. L'esame dei pesi delle caratteristiche del centroide può essere utilizzato per interpretare qualitativamente il tipo di gruppo rappresentato da ciascun cluster. Importiamo il modello k-means dalla libreria scikit-learn, allestiamo funzionalità e prevediamo. #Importiamo le librerie from sklearn import datasets from sklearn.cluster import KMeans # Carichiamo il dataset iris_df = datasets.load_iris() # Dichiariamo il Modello model = KMeans(n_clusters=3) # Alleniamo il Modello model.fit(iris_df.data) # Prediciamo il singolo input predicted_label = model.predict([[7.2, 3.5, 0.8, 1.6]]) # Previsioni all_predictions = model.predict(iris_df.data) # Stampiamo le previsioni print(predicted_label) print(all_predictions) Copia il codice e incollalo nel nostro editor online per provarlo, senza dover installare nulla CLUSTERING GERARCHICO IN PYTHON Come suggerisce il nome, il clustering gerarchico è un algoritmo che costruisce una gerarchia di cluster. Questo algoritmo inizia con tutti i dati assegnati a un cluster, quindi i due cluster più vicini vengono uniti nello stesso cluster. L'algoritmo termina quando rimane un solo cluster. Il completamento del clustering gerarchico può essere mostrato usando il dendrogramma. Ora diamo un'occhiata a un esempio di clustering gerarchico che utilizza i dati granulari. # Importing Modules from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt import pandas as pd # Dataset seeds_df = pd.read_csv("DatasetToy.csv") varieties = list(seeds_df.pop('grain_variety')) samples = seeds_df.values mergings = linkage(samples, method='complete') dendrogram(mergings, labels=varieties, leaf_rotation=90, leaf_font_size=6, ) plt.show() Copia il codice e incollalo nel nostro editor online per provarlo, senza dover installare nulla DIFFERENZA TRA K-MEANS E CLUSTERING GERARCHICO Il clustering gerarchico non è in grado di gestire i big data molto bene, ma il clustering k-mean sì. Questo perché la complessità temporale di k-medie è lineare, cioè O(n) mentre quella del clustering gerarchico è quadratica, cioè O(n2). Il clustering K-means inizia con una scelta arbitraria di cluster e i risultati generati eseguendo l'algoritmo più volte potrebbero differire. I risultati sono riproducibili nel clustering gerarchico. K-mean funziona bene quando la forma degli ammassi è ipersferica (come un cerchio in 2D o una sfera in 3D). K-means non consente dati rumorosi, mentre il clustering gerarchico può utilizzare direttamente il set di dati rumoroso per il clustering. CLUSTERING T-SNE IN PYTHON Uno dei metodi di apprendimento non supervisionato per la visualizzazione è l'incorporamento stocastico del vicino distribuito t, o t-SNE. Mappa lo spazio ad alta dimensione in uno spazio bidimensionale o tridimensionale che può quindi essere visualizzato. In particolare, modella ogni oggetto ad alta dimensione da un punto bi o tridimensionale in modo tale che oggetti simili siano modellati da punti vicini e oggetti dissimili siano modellati da punti distanti con alta probabilità. # Importiamo le librerie from sklearn import datasets from sklearn.manifold import TSNE import matplotlib.pyplot as plt # dataset iris_df = datasets.load_iris() # Model model = TSNE(learning_rate=100) # Fitting transformed = model.fit_transform(iris_df.data) # Grafico 2d t-Sne x_axis = transformed[:, 0] y_axis = transformed[:, 1] plt.scatter(x_axis, y_axis, c=iris_df.target) plt.show() Copia il codice e incollalo nel nostro editor online per provarlo, senza dover installare nulla Qui, il set di dati Iris ha quattro caratteristiche (4d) e viene trasformato e rappresentato nella figura bidimensionale. Allo stesso modo, il modello t-SNE può essere applicato a un set di dati che ha n-caratteristiche. CLUSTERING DBSCAN IN PYTHON Il clustering spaziale basato sulla densità di applicazioni con rumore, o DBSCAN, è un popolare algoritmo di clustering utilizzato in sostituzione di k-mean nell'analisi predittiva. Per eseguirlo non richiede un input per il numero di cluster ma è necessario regolare altri due parametri. L'implementazione di scikit-learn fornisce un'impostazione predefinita per i parametri eps e min_samples, ma in genere ci si aspetta che tu li metta a punto. Il parametro eps è la distanza massima tra due punti dati da considerare nello stesso vicinato. Il parametro min_samples è la quantità minima di punti dati in un quartiere per essere considerato un cluster. # Importiamo le librerie from sklearn.datasets import load_iris import matplotlib.pyplot as plt from sklearn.cluster import DBSCAN from sklearn.decomposition import PCA # Dataset iris = load_iris() # Model dbscan = DBSCAN() # Fitting dbscan.fit(iris.data) # PCA pca = PCA(n_components=2).fit(iris.data) pca_2d = pca.transform(iris.data) # Grafico for i in range(0, pca_2d.shape[0]): if dbscan.labels_[i] == 0: c1 = plt.scatter(pca_2d[i, 0], pca_2d[i, 1], c='r', marker='+') elif dbscan.labels_[i] == 1: c2 = plt.scatter(pca_2d[i, 0], pca_2d[i, 1], c='g', marker='o') elif dbscan.labels_[i] == -1: c3 = plt.scatter(pca_2d[i, 0], pca_2d[i, 1], c='b', marker='*') plt.legend([c1, c2, c3], ['Cluster 1', 'Cluster 2', 'Noise']) plt.title('DBSCAN finds 2 clusters and Noise') plt.show() Copia il codice e incollalo nel nostro editor online per provarlo, senza dover installare nulla Applicazioni dell'apprendimento senza supervisione Analisi delle componenti principali ( PCA ) Rilevamento di anomalie Autoencoders Reti di credenze profonde (DBN) Generative adversarial networks (GAN) Mappe auto-organizzanti Letture consigliate su " Apprendimento non Supervisionato con Python " : Intelligenza Artificiale (IA) e Python Come si Relazionano? Filtro collaborativo cos'è e come implementarlo con python Come creare un Chatbot in Python passo dopo passo Riconoscimento facciale con Python, in meno di 25 righe di codice Come preparare i dati per il Machine Learning o apprendimento automatico Strumenti interattivi per imparare l'apprendimento automatico Case study sull'apprendimento automatico 200 Domande e Risposte al Colloqui Per Data Scientist e Data Engineer Reti Neurali con python tutorial completo
- Come creare un Chatbot in Python passo dopo passo , la Guida per creare Chat Bot con Python
In questo articolo programmeremo con python un chat bot intelligente, che potrai facilmente estendere per i tuoi progetti. Prima di iniziare rispondiamo a tre domande che ci vengono spesso fatte nella chat del sito. Di quali competenze ho bisogno per creare un chatbot? Gli sviluppatori di chatbot devono possedere una vasta gamma di abilità. Devono avere una conoscenza approfondita delle piattaforme e dei linguaggi di programmazione per lavorare in modo efficiente sullo sviluppo di Chatbot. Gli sviluppatori di chatbot dovrebbero essere esperti in algoritmi di apprendimento, intelligenza artificiale ed elaborazione del linguaggio naturale. Background multilingue con esperienza di programmazione in linguaggi come Java, PHP, Python, Ruby e altri. I programmatori devono avere dimestichezza con le piattaforme per migliorare la qualità del chatbot. Però non preoccuparti perchè da oggi dopo questo tutorial potrai dedicarti allo studio dei chatbot con una base in più. Che cos'è un chatbot basato su regole? Invece di utilizzare l'intelligenza artificiale, un bot basato su regole utilizza un flusso ad albero per assistere gli ospiti con le loro domande. Ciò indica che il bot guiderà l'ospite attraverso una serie di domande di follow-up per arrivare alla soluzione corretta. Hai il controllo completo sul dialogo perché le strutture e le risposte sono tutte predefinite. Quindi, perché dovresti usare un chatbot con regole? Numeri più piccoli e richieste semplici, come prenotare un tavolo in un ristorante o chiedere informazioni sugli orari di apertura, sono l'ideale per i chatbot basati su regole. Esistono Chatbot senza I.A.? Assolutamente si, sono molto semplici e non molto utili perchè sono basati per la maggior parte su dei semplici if. ora iniziamo Cos'è un Chatbot? Un chatbot è un software basato sull'intelligenza artificiale progettato per interagire con gli esseri umani nel loro linguaggio naturale. Questi chatbot di solito conversano tramite metodi uditivi o testuali e possono imitare senza sforzo i linguaggi umani per comunicare con gli esseri umani in modo simile a quello umano. Un chatbot è probabilmente una delle migliori applicazioni di elaborazione del linguaggio naturale. I chatbot possono essere classificati in due varianti principali: basati su regole e basato sull'apprendimento automatico. L'approccio basato su regole addestra un chatbot a rispondere alle domande sulla base di una serie di regole predeterminate su cui è stato inizialmente addestrato. Queste regole stabilite possono essere molto semplici o molto complesse. Sebbene i chatbot basati su regole possano gestire abbastanza bene query semplici, di solito non riescono a elaborare query/richieste più complicate. Come suggerisce il nome, i robot di autoapprendimento sono chatbot che possono imparare da soli. Questi sfruttano tecnologie avanzate come l'intelligenza artificiale e l'apprendimento automatico per allenarsi da istanze e comportamenti. Naturalmente, questi chatbot sono molto più intelligenti dei robot basati su regole. I robot di autoapprendimento possono essere ulteriormente suddivisi in due categorie: 1. Chatbot basati sul recupero [Retrieval-based Chatbots] Un chatbot basato sul recupero funziona su modelli di input predefiniti e imposta le risposte. Una volta inserita la domanda/modello, il chatbot utilizza un approccio euristico per fornire la risposta appropriata. Il modello basato sul recupero è ampiamente utilizzato per progettare chatbot orientati agli obiettivi con funzionalità personalizzate come il flusso e il tono del bot per migliorare l'esperienza del cliente. 2. Chatbot generativi [Generative Chatbots] A differenza dei chatbot basati sul recupero, i chatbot generativi non si basano su risposte predefinite: sfruttano le reti neurali seq2seq. Questo si basa sul concetto di traduzione automatica in cui il codice sorgente viene tradotto da una lingua a un'altra lingua. Nell'approccio seq2seq, l'input viene trasformato in un output. Il primo chatbot risale al 1966 quando Joseph Weizenbaum creò ELIZA che poteva imitare il linguaggio di uno psicoterapeuta in sole 200 righe di codice. Tuttavia, grazie al rapido avanzamento della tecnologia, oggi abbiamo fatto molta strada dai chatbot con script ai chatbot in Python. Chatbot nella generazione di oggi Oggi disponiamo di chatbot intelligenti basati sull'intelligenza artificiale che utilizzano l'elaborazione del linguaggio naturale (NLP) per comprendere i comandi umani (testo e voce) e imparare dall'esperienza. I chatbot sono diventati uno strumento fondamentale di interazione con i clienti per aziende e marchi che hanno una presenza online attiva (sito web e piattaforme di social network). I chatbot che utilizzano Python sono uno strumento ingegnoso poiché facilitano la messaggistica istantanea tra il marchio e il cliente. Pensa a Siri di Apple, Alexa di Amazon e Cortana di Microsoft. Non sono semplicemente meravigliosi? Non sei già curioso di imparare come creare un chatbot in Python? In sostanza, i chatbot che utilizzano Python sono programmati per acquisire le informazioni che gli fornisci e quindi analizzarle con l'aiuto di complessi algoritmi di intelligenza artificiale e fornirti una risposta scritta o verbale. Poiché questi robot possono imparare dal comportamento e dalle esperienze, possono rispondere a un'ampia gamma di query e comandi. Sebbene i chatbot in Python abbiano già iniziato a dominare la scena tecnologica al momento, Gartner prevede che entro il 2020 i chatbot gestiranno quasi l'85% delle interazioni cliente-marca . Alla luce della crescente popolarità e adozione dei chatbot nel settore, puoi aumentare il tuo valore di mercato imparando a creare un chatbot in Python, uno dei linguaggi di programmazione più utilizzati al mondo. Oggi ti insegneremo come creare un semplice chatbot in Python usando la libreria ChatterBot Python. Quindi iniziamo! Libreria ChatterBot per svilupare chatbot ChatterBot è una libreria Python progettata per fornire risposte automatizzate agli input degli utenti. Fa uso di una combinazione di algoritmi ML per generare molti tipi diversi di risposte. Questa funzione consente agli sviluppatori di creare chatbot utilizzando Python in grado di conversare con gli esseri umani e fornire risposte appropriate e pertinenti. Non solo, gli algoritmi ML aiutano il bot a migliorare le sue prestazioni con l'esperienza. Un'altra caratteristica eccellente di ChatterBot è la sua indipendenza dalla lingua. La libreria è progettata in modo da rendere possibile addestrare il tuo bot in più linguaggi di programmazione. Come funziona ChatterBot? Quando un utente inserisce un input specifico nel chatbot (sviluppato su ChatterBot), il bot salva l'input insieme alla risposta, per un uso futuro. Questi dati (delle esperienze raccolte) consentono al chatbot di generare risposte automatiche ogni volta che viene immesso un nuovo input. Il programma sceglie la risposta più adatta dall'istruzione più vicina che corrisponde all'input, quindi fornisce una risposta dalla selezione già nota di affermazioni e risposte. Nel tempo, man mano che il chatbot si impegna in più interazioni, l'accuratezza della risposta migliora. Come creare un chatbot in Python? Adotteremo un approccio passo dopo passo e analizzeremo il processo di creazione di un chatbot Python. Prerequisiti : Se non sai cosa è il Machine Learning, clicca qui Se non sai cosa è il Deep Learning, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Se non sai dove e come scrivere codice, clicca qui Per costruire un chatbot in Python, devi importare tutti i pacchetti necessari e inizializzare le variabili che vuoi usare nel tuo progetto chatbot. Inoltre, ricorda che quando lavori con dati di testo, devi eseguire la preelaborazione dei dati sul tuo set di dati prima di progettare un modello ML. È qui che la tokenizzazione aiuta con i dati di testo: aiuta a frammentare il set di dati di testo di grandi dimensioni in blocchi più piccoli e leggibili (come le parole). Una volta fatto, puoi anche optare per la lemmatizzazione che trasforma una parola nella sua forma lemma. Quindi crea un file pickle per archiviare gli oggetti Python utilizzati per prevedere le risposte del bot. Un'altra parte vitale del processo di sviluppo del chatbot è la creazione dei set di dati di addestramento e test. Ora che abbiamo coperto le basi dello sviluppo di chatbot in Python, approfondiamo il processo vero e proprio! Step 1. Installare le Librerie Il primo passo per creare un chatbot in Python con la libreria ChatterBot è installare la libreria nel tuo sistema. È meglio creare e utilizzare un nuovo ambiente virtuale Python per l'installazione. Per farlo, devi scrivere ed eseguire questo comando nel tuo terminale Python: pip install chatterbot pip install chatterbot_corpus #se hai python3 pip3 install chatterbot pip3 install chatterbot_corpus Se stai utilizzando google Colab invece !pip install chatterbot !pip install chatterbot_corpus Step 2. Importiamo le Librerie L'importazione delle librerie è il secondo passaggio nel processo di creazione del chatbot Python. Tutto quello che devi fare è importare due classi: ChatBot da chatterbot e ListTrainer da chatterbot.trainers. Per fare ciò, crea un nuovo file python o un nuovo file .ipynb e incolla: from chatterbot import ChatBot from chatterbot.trainers import ListTrainer Step 3. Crea e addestra il chatbot Questo è il terzo passaggio per creare chatbot in Python. Il chatbot che stai creando sarà un'istanza della classe "ChatBot". Dopo aver creato una nuova istanza ChatterBot, puoi addestrare il bot a migliorarne le prestazioni. La formazione garantisce che il bot disponga di conoscenze sufficienti per iniziare con risposte specifiche a input specifici. Ora devi eseguire il seguente comando: my_bot = ChatBot(name='Il_NostroPrimo_BOT', read_only=True, logic_adapters=['chatterbot.logic.MathematicalEvaluation', 'chatterbot.logic.BestMatch']) Qui, l'argomento (che corrisponde al nome del parametro) rappresenta il nome del tuo chatbot Python. Se desideri disabilitare la capacità del bot di apprendere dopo l'addestramento, puoi includere il comando "read_only=True". Il comando "logic_adapters" indica l'elenco degli adattatori utilizzati per addestrare il chatbot. Mentre "chatterbot.logic.MathematicalEvaluation" aiuta il bot a risolvere problemi di matematica, "chatterbot.logic.BestMatch" lo aiuta a scegliere la corrispondenza migliore dall'elenco di risposte già fornite. Dato che devi fornire un elenco di risposte, puoi farlo specificando gli elenchi di stringhe che possono essere utilizzati in seguito per addestrare il tuo chatbot Python e trovare la corrispondenza migliore per ogni query. Ecco un esempio di risposte che puoi addestrare al tuo chatbot usando Python per imparare: small_talk = ['Ciao!', 'Ciao Umano!', 'Come stai?', 'Come va?', 'Sono un robot sto benissimo.', 'Meglio di un robot chi può stare, tu come stai?', 'sto bene', 'felice di sentirlo.', 'mi sento benissimo', 'eccellente, felice di sentirlo.', 'non così bene', 'mi dispiace sentirlo.', 'come ti chiami?', 'Sono pybot. fammi una domanda di matematica, per favore.'] math_talk_1 = ['teorema di pitagora', 'a al quadrato più b al quadrato uguale a c al quadrato.'] math_talk_2 = ['legge dei coseni', 'c**2 = a**2 + b**2 - 2 * a * b * cos(gamma)'] Puoi creare e addestrare il bot scrivendo un'istanza di "ListTrainer" in questo modo: list_trainer = ListTrainer(my_bot) for item in (small_talk, math_talk_1, math_talk_2): list_trainer.train(item) Ora il tuo chatbot Python è pronto per comunicare. Step 4. Comunica con Python Chatbot Per interagire con il tuo chatbot Python, puoi usare la funzione .get_response(). Ecco come dovrebbe apparire durante la comunicazione: a = input() while a != "esci": print(my_bot.get_response(a)) a = input() Tuttavia, è essenziale capire che il chatbot che utilizza Python potrebbe non sapere come rispondere a tutte le tue domande. Poiché le sue conoscenze e la sua formazione sono ancora molto limitate, devi dargli tempo e fornire più dati di formazione per addestrarlo ulteriormente. Step 5. Addestra il tuo chatbot Python con un corpus di dati In quest'ultimo passaggio di come creare un chatbot in Python, per addestrare ulteriormente il tuo chatbot python, puoi utilizzare un corpus di dati esistente. Ecco un esempio di come addestrare il tuo chatbot Python con un corpus di dati fornito dal bot stesso: from chatterbot.trainers import ChatterBotCorpusTrainer corpus_trainer = ChatterBotCorpusTrainer(my_bot) corpus_trainer.train('chatterbot.corpus.italian') La cosa buona è che ChatterBot offre questa funzionalità in molte lingue diverse. Quindi, puoi anche specificare un sottoinsieme di un corpus nella lingua che preferisci. È così che creiamo chatbot in Python. Conclusione Quello che abbiamo illustrato qui è solo uno dei tanti modi per creare un chatbot in Python. Puoi anche usare NLTK, un'altra ricca libreria Python per creare un chatbot Python. E anche se quello che hai imparato qui è un chatbot molto semplice in Python che non ha quasi nessuna capacità cognitiva, dovrebbe essere sufficiente per aiutarti a capire l'anatomia dei chatbot. Una volta compreso perfettamente il design di un chatbot utilizzando Python , puoi sperimentarlo utilizzando diversi strumenti e comandi per renderlo ancora più intelligente. Letture consigliate : Chatbot una Guida Completa, che cosa sono, come funzionano e come creare il tuo Le migliori piattaforme per creare chatbot gratis e non aggiornate al 2022 Come applicare l' IA al tuo ristorante Cosa è Il Natural Language Processing o Elaborazione del linguaggio naturale Spiegazione ed Esempi
- Intelligenza Artificiale nella Guerra
Intelligenza Artificiale nella Guerra introduzione La guerra nella storia, così come l’uomo, è stata soggetta a un’evoluzione durante la quale ha mantenuto inalterata la sua intrinseca caratteristica di morte e distruzione. Alcune delle più grandi innovazioni tecnologiche sono state realizzate in periodo bellico o in quello immediatamente precedente l’arrivo di questo fardello che segna tutt’oggi l’esistenza dell’essere umano. in rosso sono indicati i conflitti attualmente in corso Intelligenza Artificiale la Tecnologia rivoluzionaria nella Guerra Più di ogni altra tecnologia sviluppata nella storia moderna, l’intelligenza artificiale potrebbe rimodellare le caratteristiche della guerra. Così come l’elettricità nel Ventesimo secolo, l’intelligenza artificiale possiede la capacità di animare oggetti apparentemente banali, permettendogli non solo di valutare attivamente il proprio ambiente circostante, ma anche di imparare da esso rendendoli così in grado di compiere degli upgrades (hardware e/o software) autonomi, per adattarsi al continuo mutamento della realtà in cui si trovano. In altre parole, l’intelligenza artificiale, conosciuta anche con l’acronimo “A.I.”, è in grado di dotare ogni sistema inanimato, dal più semplice al più complesso, della capacità di interagire con altri sistemi che siano inanimati o animati. Interesse dei governi per le applicazioni dell'Intelligenza Artificiale in Guerra Senza dubbio l’A.I. sta rivoluzionando le dinamiche fondamentali della guerra e nel futuro rappresenterà ancor di più una vera e propria rivoluzione in ogni aspetto delle interazioni tra gli uomini e le macchine. Ciò che sicuramente favorisce l’evoluzione di questa tecnologia, è la quantità di dati che costantemente vengono raccolti su di noi (i nostri interessi, gli spostamenti, i click su internet e tanto altro) che forniscono il “carburante” alle applicazioni di machine learning, che è l’applicazione software su cui si fonda l’A.I. Queste caratteristiche determinano il profondo interesse dei governi per le possibili applicazioni dell’A.I. nell’arte della guerra e del dominio territoriale strategico. Il settore della ricerca inerente questa tecnologia, che sta crescendo esponenzialmente, è invece nettamente contrario all’uso di essa in campo bellico, a tal punto che nel 2016 il “Future of Life Institute” – un’organizzazione non profit attiva nella prevenzione dei rischi esistenziali delle nuove tecnologie – ha promosso una petizione nel tentativo di sospendere le ricerche e le applicazioni sulle armi autonome di tipo offensivo. Iniziativa che ha trovato l’appoggio anche di Stephen Hawking, Elon Musk e Jack Dorsey, oltre che di tantissimi fra i più importanti ricercatori AI. Eppure, tali aspettative, sono state largamente disattese dai vari capi di stato. Evoluzione dei conflitti nella guerra con l'intelligenza Artificiale Questa evoluzione dei conflitti implicherà sempre più una partecipazione ridotta dei combattenti umani sostituiti da robot Dotati di A.I. definiti anche come “robot killer”. La loro applicazione però, fa sorgere domande e preoccupazioni sull’andamento della guerra a tal punto che, l’Associazione Italiana per l’Intelligenza Artificiale , facendo riferimento alla guerra in Ucraina, ha chiesto l’abolizione dell’ utilizzo dei “robot killer”. Tale preoccupazione nasce dal fatto che tali robot sono dei sistemi di arma in grado di selezionare obiettivi di attacco senza un significativo controllo umano; ciò comporta che la decisione di vita o di morte dell’obiettivo assegnato è delegata di fatto ad una macchina. Queste armi autonome sono anche definite LAWS- Lethal Autonomous Weapon Systems. Applicazione dell'Intelligenza Artificiale nella guerra tra Russia e Ucraina Purtroppo, solo due mesi prima dell’invasione russa in Ucraina, alle Nazioni Unite non si è riusciti a trovare l’accordo per regolamentare i LAWS poiché il confine tra armi autonome (come missili, mine ecc.) e armi con intelligenza artificiale è veramente sottile, rendendo così possibile l’utilizzo libero di questi strumenti di morte. Ma attenzione, non bisogna confondere i citati “robot killer” con ciò che vediamo nei film di fantascienza di guerra con umani-cyborg senza pietà (che fortunatamente sono al momento per l’appunto solo fantascienza). La preoccupazione del mondo scientifico nei riguardi di queste nuove armi è relativa solo alla rimozione del controllo umano dalle funzioni critiche di selezione e attacco degli obiettivi. Come, ad esempio, nei droni KUB-BLA che hanno a bordo un sistema AIVI (Artificial Intelligence Visual Identification); un sistema intelligente di rilevamento e riconoscimento di oggetti in tempo reale per l’identificazione simultanea di oltre mille oggetti statici e in movimento. Infatti, questa tecnologia consente al drone, sulla base di quanto identificato, di decidere con immediatezza (senza affidarsi a decisioni umane sicuramente più lente o a segnali radio che potrebbero interrompersi per varie ragioni) l’opzione di puntare su un obiettivo ed esplodere. Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin Le varie frontiere nella Guerra con l' I.A. Ma la guerra, come la storia insegna, non viene svolta solo nei campi di battaglia ma anche attraverso la manipolazione delle informazioni. Anche in questo caso, si può notare il ruolo di spiccata importanza che sta avendo l’intelligenza artificiale nella guerra tra Russia e Ucraina. Come, ad esempio, la possibilità di generare in maniera automatica migliaia di account social fittizi su cui pubblicare notizie costruite appositamente con lo scopo di creare disinformazione, oscurando così la voce della verità con il “rumore assordante” delle fake-news, in modo tale da influenzare a proprio favore l’opinione pubblica. Un altro importante utilizzo delle intelligenze artificiali in questa invasione russa è nella creazione di "Deepfakes". Questi sono file multimediali (video e/o audio) alterati per mostrare la vittima selezionata che compie azioni che nella realtà non sono mai state svolte. Tali video, vengono generati tramite un A.I. , usata per combinare e sovrapporre immagini e video artefatti con video o immagini originali, tramite una tecnica di apprendimento automatico, conosciuta come rete antagonista generativa, con un risultato così realistico da non consentire a un normale spettatore di comprendere l’inganno. I “Deepfakes” sono stati usati contro il presidente Ucraino Volodymyr Zelensky, a capo della resistenza ucraina contro l’invasione russa, dove lo stesso invitava alla resa e al “cessate il fuoco” le proprie truppe; video che è stato prontamente smentito dal vero Zelensky. Per evitare che ciò si ripetesse e per smentire e rilevare fake news riguardanti il conflitto, il governo ucraino si sta servendo di un’intelligenza artificiale di riconoscimento facciale fornito dall’azienda americana Clearview AI, la quale si basa sull’accesso ad un enorme database di volti, 10 miliardi in totale, di cui più di 2 miliardi di immagini provenienti dal social media russo VKontakte. Questo software starebbe aiutando gli ucraini non solo combattendo la diffusione di fake post sui social ma anche consentendo l’identificazione delle vittime del conflitto. Grazie ad esso è possibile riunire i rifugiati separati dalle famiglie, controllare le persone di interesse ai posti di blocco e di identificare gli agenti russi. Tali tecnologie stanno aiutando notevolmente la resistenza ucraina, a non cedere all’ invasione russa. Conclusione Ma quindi, quanto può migliorare o peggiorare la nostra vita con l’ausilio di intelligenze artificiali? Considerato quanto detto si può desumere che l’utilizzo delle AI nella quotidianità sia sempre più imminente, poiché il loro sviluppo sta avendo una crescita esponenziale in molti campi, dal settore industriale a quello medico. Ma il progresso di questa tecnologia sarà sempre affiancato dallo spettro della preoccupazione che possa essere utilizzato non a fin di bene. Preoccupazione giustificata dall’enorme potenziale che possiede questa innovazione che segnerà l’epoca futura e alimentata dalla presenza, tutt’oggi, di dittatori con manie di potere. Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin
- Come funzionano gli algoritmi di machine learning? La spiegazione Completa
Come funzionano gli algoritmi di apprendimento automatico? Una delle classiche domande che vengono fatte ai colloqui, quindi leggi attentamente tutto l'articolo Iniziamo, Su che principio sono basati gli algoritmi di Machine Learning? Esiste un principio comune alla base di tutti gli algoritmi di apprendimento automatico supervisionati per la modellazione predittiva. In questo post scoprirai come funzionano effettivamente gli algoritmi di machine learning comprendendo il principio comune che sta alla base di tutti gli algoritmi. La Base del Machine Learning: Gli algoritmi di apprendimento automatico sono descritti come l'apprendimento di una funzione target (f) che mappa al meglio le variabili di input (X) su una variabile di output (Y). Y = f(X) Questo è un compito di apprendimento generale in cui vorremmo fare previsioni in futuro (Y) dati nuovi esempi di variabili di input (X). Non sappiamo che aspetto abbia la funzione (f) o la sua forma. Se lo facessimo, lo useremmo direttamente e non avremmo bisogno di impararlo dai dati usando algoritmi di apprendimento automatico. È più difficile di quanto pensi. C'è anche l'errore (e) che è indipendente dai dati di input (X). Y = f(X) + e Questo errore potrebbe essere un errore come non avere abbastanza attributi per caratterizzare sufficientemente la migliore mappatura da X a Y. Questo errore è chiamato errore irriducibile perché non importa quanto siamo bravi a stimare la funzione target (f), non possiamo ridurre questo errore. Vale a dire che il problema dell'apprendimento di una funzione dai dati è un problema difficile e questo è il motivo per cui esistono il campo del machine learning e degli algoritmi di machine learning. Come funzionano gli algoritmi di Machine learning ? Il tipo più comune di machine learning consiste nell'apprendere la mappatura Y=f(X) per fare previsioni di Y per il nuovo X. Questo è chiamato modellazione predittiva o analisi predittiva e il nostro obiettivo è rendere le previsioni più accurate possibili. In quanto tale, non siamo realmente interessati alla forma e alla forma della funzione (f) che stiamo imparando, solo che fa previsioni accurate. Potremmo imparare la funzione di Y=f(X) per saperne di più sulla relazione nei dati e questo è chiamato inferenza statistica. Se questo fosse l'obiettivo, useremmo metodi più semplici e apprezzeremmo la comprensione del modello appreso e della forma di (f) sopra facendo previsioni accurate. Quando apprendiamo una funzione (f) ne stimiamo la forma dai dati che abbiamo a disposizione. In quanto tale, questa stima avrà un errore. Non sarà una stima perfetta per l'ipotetica migliore mappatura sottostante da Y data X. Molto tempo nell'apprendimento automatico applicato viene dedicato al tentativo di migliorare la stima della funzione sottostante e, a termine, migliorare le prestazioni delle previsioni fatte dal modello. Tecniche per l'apprendimento di una funzione Gli algoritmi di apprendimento automatico sono tecniche per stimare la funzione target (f) per prevedere la variabile di output (Y) date le variabili di input (X). Rappresentazioni diverse fanno ipotesi diverse sulla forma della funzione appresa, ad esempio se è lineare o non lineare. Diversi algoritmi di apprendimento automatico fanno ipotesi diverse sulla forma e la struttura della funzione e sul modo migliore per ottimizzare una rappresentazione per approssimarla. Questo è il motivo per cui è così importante provare una suite di algoritmi diversi su un problema di apprendimento automatico, perché non possiamo sapere in anticipo quale approccio sarà il migliore per stimare la struttura della funzione sottostante che stiamo cercando di approssimare. Conclusione In questo post hai scoperto il principio alla base che spiega l'obiettivo di tutti gli algoritmi di apprendimento automatico per la modellazione predittiva. Hai imparato che gli algoritmi di apprendimento automatico funzionano per stimare la funzione di mappatura (f) delle variabili di output (Y) date le variabili di input (X) o Y=f(X). Hai anche appreso che diversi algoritmi di apprendimento automatico fanno ipotesi diverse sulla forma della funzione sottostante. E che quando non sappiamo molto sulla forma della funzione target, dobbiamo provare una suite di algoritmi diversi per vedere cosa funziona meglio. Hai domande su come funzionano gli algoritmi di machine learning o su questo post? Lascia un commento e fai la tua domanda e faremo del nostro meglio per rispondere.
- Come Migliorare la precisione di un modello di M.L. con il PreProcessing o pre-elaborazione dei dati
In questo post scoprirai i passaggi di pre-elaborazione dei dati che puoi utilizzare per migliorare la capacità predittiva dei tuoi modelli. Cosa è la pre-elaborazione dei dati? È necessario pre-elaborare i dati grezzi prima di modellare il problema. La preparazione specifica può dipendere dai dati che hai a disposizione e dagli algoritmi di machine learning che desideri utilizzare. A volte, la pre-elaborazione dei dati può portare a miglioramenti imprevisti nell'accuratezza del modello. Ciò può essere dovuto al fatto che una relazione nei dati è stata semplificata o non oscurata. La preparazione dei dati è un passaggio importante e dovresti sperimentare i passaggi di pre-elaborazione dei dati appropriati per i tuoi dati per vedere se puoi ottenere l'incremento desiderabile nella precisione del modello. Esistono tre tipi di pre-elaborazione che puoi considerare per i tuoi dati: Aggiungi attributi ai tuoi dati Rimuovi gli attributi dai tuoi dati Trasforma gli attributi nei tuoi dati Analizzeremo ciascuno di questi tre tipi di pre-processo ed esamineremo alcuni esempi specifici di operazioni che è possibile eseguire. Come Migliorare la precisione di un modello di M.L. : 1) Aggiungere attributi di dati I modelli avanzati possono estrarre le relazioni da attributi complessi, sebbene alcuni modelli richiedano che tali relazioni siano esplicitate in modo chiaro. La derivazione di nuovi attributi dai dati di addestramento da includere nel processo di modellazione può darti un impulso nelle prestazioni del modello. Attributi fittizi : gli attributi categoriali possono essere convertiti in n attributi binari, dove n è il numero di categorie (o livelli) dell'attributo. Questi attributi denormalizzati o scomposti sono noti come attributi fittizi o variabili fittizie. Attributo trasformato : una variazione trasformata di un attributo può essere aggiunta al set di dati per consentire a un metodo lineare di sfruttare le possibili relazioni lineari e non lineari tra gli attributi. È possibile utilizzare trasformazioni semplici come log, quadrato e radice quadrata. Dati mancanti : gli attributi con dati mancanti possono avere i dati mancanti imputati utilizzando un metodo affidabile, ad esempio k-neiest neighbors. 2) Rimuovere gli attributi dei dati Alcuni metodi funzionano male con attributi ridondanti o duplicati. Puoi aumentare la precisione del modello rimuovendo gli attributi dai tuoi dati. Proiezione : i dati di addestramento possono essere proiettati in spazi dimensionali inferiori, ma caratterizzano comunque le relazioni intrinseche nei dati. Un approccio popolare è l'analisi dei componenti principali (PCA) in cui i componenti principali trovati dal metodo possono essere presi come un insieme ridotto di attributi di input. Segno spaziale : una proiezione del segno spaziale dei dati trasformerà i dati sulla superficie di una sfera multidimensionale. I risultati possono essere utilizzati per evidenziare l'esistenza di valori anomali che possono essere modificati o rimossi dai dati. Attributi correlati : alcuni algoritmi degradano di importanza con l'esistenza di attributi altamente correlati. È possibile identificare attributi a coppie con alta correlazione e rimuovere dai dati gli attributi più correlati. 3) Trasformare gli attributi dei dati Le trasformazioni dei dati di addestramento possono ridurre l'asimmetria dei dati e l'importanza dei valori anomali nei dati. Molti modelli prevedono che i dati vengano trasformati prima di poter applicare l'algoritmo. Centratura : trasforma i dati in modo che abbiano una media di zero e una deviazione standard di uno. Questo è in genere chiamato standardizzazione dei dati. Ridimensionamento : una trasformazione di ridimensionamento standard consiste nel mappare i dati dalla scala originale a una scala compresa tra zero e uno. Questo è in genere chiamato normalizzazione dei dati. Rimuovi outliers : i dati distorti sono dati che hanno una distribuzione che viene spostata da una parte o dall'altra (valori maggiori o minori) anziché essere normalmente distribuiti. Alcuni metodi presuppongono dati normalmente distribuiti e possono funzionare meglio se viene rimossa l'inclinazione. Prova a sostituire l'attributo con il log, la radice quadrata o l'inverso dei valori. Box-Cox : è possibile utilizzare una trasformata o una famiglia di trasformazioni Box-Cox per regolare in modo affidabile i dati per rimuovere l'inclinazione. Binning : i dati numerici possono essere resi discreti raggruppando i valori in bin. Questo è in genere chiamato discretizzazione dei dati. Questo processo può essere eseguito manualmente, sebbene sia più affidabile se eseguito in modo sistematico e automatico utilizzando un'euristica che abbia senso nel dominio. Letture consigliate per mettere in pratica ciò che hai letto : Manipolazione Dati con Python e Pandas Come preparare i dati per il Machine Learning o apprendimento automatico Una Guida Semplice e Completa per passare da Excel a Python Feature Engineering e Feature Selection per Principianti e non Introduzione a Scikit Learn con esempio pratico in Python Analisi esplorativa dati con Python Come rimuovere e gestire i valori anomali con python nel machine learning Trucchi Python per la data science Conclusione sul Come Migliorare la precisione di un modello di M.L. Il pre-processing dei dati è un passaggio importante che può essere richiesto per preparare i dati grezzi per la modellazione, per soddisfare le aspettative dei dati per algoritmi di apprendimento automatico specifici e può fornire miglioramenti imprevisti nell'accuratezza del modello. In questo post abbiamo scoperto tre gruppi di metodi di pre-elaborazione dei dati: Aggiunta di attributi Rimozione degli attributi Attributi di trasformazione La prossima volta che cercherai un aumento della precisione del modello, considera quali nuove prospettive puoi progettare sui tuoi dati affinché i tuoi modelli possano esplorare e sfruttare.
- Cos'è la Statistica e che Correlazione c'è con il Machine Learning ?
Le statistica è una raccolta di strumenti (Formule e teoremi) che puoi utilizzare per ottenere risposte a domande importanti basandoti sui dati. Puoi utilizzare metodi statistici descrittivi per trasformare le osservazioni grezze in informazioni che puoi comprendere e condividere. È possibile utilizzare metodi statistici inferenziali per ragionare da piccoli campioni di dati a interi domini. In questo post scoprirai chiaramente perché le statistiche sono importanti in generale e per l'apprendimento automatico e in generale i tipi di metodi disponibili. Dopo aver letto questo post, saprai: La statistica è generalmente considerata un prerequisito nel campo dell'apprendimento automatico applicato. Abbiamo bisogno di statistiche per trasformare le osservazioni in informazioni e per rispondere a domande su campioni di osservazioni. La statistica è una raccolta di strumenti sviluppati nel corso di centinaia di anni per riassumere i dati e quantificare le proprietà di un dominio in base a un campione di osservazioni. La statistica è un prerequisito obbligatorio per il Machine Learning! L'apprendimento automatico e la statistica sono due campi di studio strettamente correlati. Tanto che gli statistici si riferiscono all'apprendimento automatico come " statistica applicata " o " apprendimento statistico " piuttosto che come nome incentrato sull'informatica. L'apprendimento automatico è quasi universalmente presentato ai principianti presupponendo che il lettore abbia una certa esperienza in statistica. Possiamo renderlo concreto con alcuni esempi raccolti a ciliegia. Dai un'occhiata a questa citazione dall'inizio di un popolare libro di apprendimento automatico applicato intitolato " Modellazione predittiva applicata ": ... il lettore dovrebbe avere una certa conoscenza delle statistiche di base, tra cui varianza, correlazione, regressione lineare semplice e verifica di ipotesi di base (ad es. valori p e statistiche di test). Ecco un altro esempio tratto dal popolare libro " Introduzione all'apprendimento statistico ": Ci aspettiamo che il lettore abbia seguito almeno un corso elementare di statistica. Anche quando la statistica non è un prerequisito, è richiesta una conoscenza preliminare primitiva come si può vedere in questa citazione dal ampiamente letto " Programmazione dell'Intelligenza Collettiva ": … questo libro non presuppone che tu abbia alcuna conoscenza preliminare di […] o statistica. […] ma avere una certa conoscenza della trigonometria e della statistica di base ti aiuterà a capire gli algoritmi. Per essere in grado di comprendere l'apprendimento automatico, è necessaria una conoscenza di base delle statistiche. Per capire perché questo è il caso, dobbiamo prima capire perché abbiamo bisogno in primo luogo del campo della statistica. Perché imparare la Statistica? Le sole osservazioni grezze sono dati, ma non sono informazioni o conoscenza. I dati sollevano domande, come ad esempio: Qual è l'osservazione più comune o prevista? Quali sono i limiti alle osservazioni? Che aspetto hanno i dati? Sebbene appaiano semplici, è necessario rispondere a queste domande per trasformare le osservazioni grezze in informazioni che possiamo utilizzare e condividere. Oltre ai dati grezzi, possiamo progettare esperimenti per raccogliere osservazioni. Da questi risultati sperimentali potremmo avere domande più sofisticate, come ad esempio: Quali variabili sono più rilevanti? Qual è la differenza in un risultato tra due esperimenti? Le differenze sono reali o il risultato di rumore nei dati? Domande di questo tipo sono importanti. I risultati sono importanti per il progetto, per le parti interessate e per un processo decisionale efficace. I metodi statistici sono necessari per trovare risposte alle domande che abbiamo sui dati. Possiamo vedere che per comprendere i dati utilizzati per addestrare un modello di apprendimento automatico e per interpretare i risultati del test di diversi modelli di apprendimento automatico, sono necessari metodi statistici. Questa è solo la punta dell'iceberg poiché ogni fase di un progetto di modellazione predittiva richiederà l'uso di un metodo statistico. Che cos'è la statistica? La statistica è un sottocampo della matematica. Si riferisce a una raccolta di metodi per lavorare con i dati e utilizzare i dati per rispondere alle domande. La statistica è l'arte di fare congetture numeriche su domande sconcertanti. […] I metodi sono stati sviluppati nel corso di diverse centinaia di anni da persone che cercavano risposte alle loro domande. È perché il campo è composto da un sacco di metodi per lavorare con i dati che può sembrare grande e amorfo ai principianti. Può essere difficile vedere il confine tra metodi che appartengono alla statistica e metodi che appartengono ad altri campi di studio. Spesso una tecnica può essere sia un metodo classico di statistica sia un moderno algoritmo utilizzato per la selezione delle caratteristiche o la modellazione. Sebbene una conoscenza pratica della statistica non richieda una profonda conoscenza teorica, alcuni teoremi importanti e facili da digerire dal rapporto tra statistica e probabilità possono fornire una base preziosa. Due esempi includono la legge dei grandi numeri e il teorema del limite centrale; il primo aiuta a capire perché i campioni più grandi sono spesso migliori e il secondo fornisce una base su come confrontare i valori attesi tra i campioni (es. valori medi). Quando si tratta degli strumenti statistici che utilizziamo nella pratica, può essere utile dividere il campo della statistica in due grandi gruppi di metodi: statistica descrittiva per riassumere i dati e statistica inferenziale per trarre conclusioni da campioni di dati. Le statistiche consentono ai ricercatori di raccogliere informazioni, o dati, da un gran numero di persone e quindi riassumere la loro esperienza tipica. […] Le statistiche vengono utilizzate anche per trarre conclusioni sulle differenze generali tra i gruppi. […] Le statistiche possono essere utilizzate anche per vedere se i punteggi di due variabili sono correlati e per fare previsioni. Cosa è la Statistica descrittiva? Le statistiche descrittive si riferiscono a metodi per riassumere le osservazioni grezze in informazioni che possiamo comprendere e condividere. Comunemente si pensa alla statistica descrittiva come al calcolo di valori statistici su campioni di dati al fine di riassumere le proprietà del campione di dati, come il valore atteso comune (es. media o mediana) e la diffusione dei dati (es. varianza o deviazione standard). Le statistiche descrittive possono anche riguardare metodi grafici che possono essere utilizzati per visualizzare campioni di dati. Grafici e grafici possono fornire un'utile comprensione qualitativa sia della forma o della distribuzione delle osservazioni, sia di come le variabili possono essere correlate tra loro. Cosa è la Statistica inferenziale? La statistica inferenziale è un nome di fantasia per i metodi che aiutano a quantificare le proprietà del dominio o della popolazione da un insieme più piccolo di osservazioni ottenute chiamato campione. Comunemente, pensiamo alla statistica inferenziale come alla stima di quantità dalla distribuzione della popolazione, come il valore atteso o la quantità di spread. Strumenti di inferenza statistica più sofisticati possono essere utilizzati per quantificare la probabilità di osservare campioni di dati data un'ipotesi. Questi sono spesso indicati come strumenti per la verifica di ipotesi statistiche, in cui l'ipotesi di base di un test è chiamata ipotesi nulla. Esistono molti esempi di metodi statistici inferenziali data la gamma di ipotesi che possiamo assumere e i vincoli che possiamo imporre ai dati al fine di aumentare la potenza o la probabilità che il risultato del test sia corretto. Conclusione In questo post hai scoperto chiaramente perché le statistiche sono importanti in generale e per l'apprendimento automatico e in generale i tipi di metodi disponibili. Nello specifico hai imparato: La statistica è generalmente considerata un prerequisito nel campo dell'apprendimento automatico applicato. Abbiamo bisogno di statistiche per trasformare le osservazioni in informazioni e per rispondere a domande su campioni di osservazioni. La statistica è una raccolta di strumenti sviluppati nel corso di centinaia di anni per riassumere i dati e quantificare le proprietà di un dominio in base a un campione di osservazioni. Hai domande? Poni le tue domande nei commenti qui sotto e faremo del nostro meglio per rispondere.
- Cosa sono l'Overfitting e l'Underfitting? E come puoi limitarli nel Machine Learning
Questa è una domanda frequente nei colloqui per le posizioni di Data Scientist, Quindi leggi con attenzione questo articolo! La causa delle scarse prestazioni nell'apprendimento automatico è l'overfitting o l'underfitting dei dati. In questo post scoprirai il concetto di generalizzazione nell'apprendimento automatico e i problemi di overfitting e underfitting che lo accompagnano. Rendiamo semplice il machine Learning per un minuto L'apprendimento automatico supervisionato è meglio inteso come approssimazione di una funzione target (f) che mappa le variabili di input (X) su una variabile di output (Y). Y = f(X) Questa caratterizzazione descrive la gamma di problemi di classificazione e previsione e gli algoritmi della macchina che possono essere utilizzati per affrontarli. Una considerazione importante nell'apprendimento della funzione target dai dati di addestramento è la capacità di generalizzazione del modello ai nuovi dati. La generalizzazione è importante perché i dati che raccogliamo sono solo un campione, sono incompleti e rumorosi. Cos'è una Generalizzazione nel Machine Learning? In machine learning descriviamo l'apprendimento della funzione target dai dati di training come apprendimento induttivo. L'induzione si riferisce all'apprendimento di concetti generali da esempi specifici che è esattamente il problema che i problemi di apprendimento automatico supervisionati mirano a risolvere. Questo è diverso dalla deduzione che è il contrario e cerca di apprendere concetti specifici dalle regole generali. La generalizzazione si riferisce al modo in cui i concetti appresi da un modello di apprendimento automatico si applicano a esempi specifici non visti dal modello durante l'apprendimento. L'obiettivo di un buon modello di apprendimento automatico è generalizzare bene dai dati di addestramento a tutti i dati del dominio del problema. Questo ci permette di fare previsioni in futuro su dati che il modello non ha mai visto. Esiste una terminologia utilizzata nell'apprendimento automatico quando si parla di quanto bene un modello di apprendimento automatico apprenda e si generalizzi a nuovi dati, vale a dire overfitting e underfitting. Overfitting e underfitting sono le due principali cause di scarse prestazioni degli algoritmi di apprendimento automatico. Adattamento statistico nel Machine Learning Nelle statistiche, un adattamento si riferisce a quanto bene si approssima una funzione target. Questa è una buona terminologia da utilizzare nell'apprendimento automatico, perché gli algoritmi di apprendimento automatico supervisionati cercano di approssimare la funzione di mappatura sottostante sconosciuta per le variabili di output date le variabili di input. Le statistiche spesso descrivono la bontà dell'adattamento che si riferisce alle misure utilizzate per stimare quanto bene l'approssimazione della funzione corrisponde alla funzione target. Alcuni di questi metodi sono utili nell'apprendimento automatico (ad esempio il calcolo degli errori residui), ma alcune di queste tecniche presuppongono che conosciamo la forma della funzione target che stiamo approssimando, il che non è il caso dell'apprendimento automatico. Se conoscessimo la forma della funzione target, la useremmo direttamente per fare previsioni, invece di cercare di apprendere un'approssimazione da campioni di dati di addestramento rumorosi. Cos'è l'Overfitting nell'apprendimento automatico? L'overfitting si riferisce a un modello che modella troppo bene i dati di allenamento. L'overfitting si verifica quando un modello apprende i dettagli e il rumore nei dati di addestramento nella misura in cui influisce negativamente sulle prestazioni del modello sui nuovi dati. Ciò significa che il rumore o le fluttuazioni casuali nei dati di addestramento vengono rilevati e appresi come concetti dal modello. Il problema è che questi concetti non si applicano ai nuovi dati e influiscono negativamente sulla capacità dei modelli di generalizzare. L'overfitting è più probabile con modelli non parametrici e non lineari che hanno maggiore flessibilità durante l'apprendimento di una funzione target. Pertanto, molti algoritmi di apprendimento automatico non parametrici includono anche parametri o tecniche per limitare e vincolare la quantità di dettagli che il modello apprende. Ad esempio, gli alberi decisionali sono un algoritmo di apprendimento automatico non parametrico che è molto flessibile ed è soggetto a dati di training overfitting. Questo problema può essere affrontato potando un albero dopo che ha appreso per rimuovere alcuni dei dettagli che ha raccolto. Cos'è l'Underfitting nell'apprendimento automatico? Underfitting si riferisce a un modello che non può né modellare i dati di addestramento né generalizzare a nuovi dati. Un modello di apprendimento automatico non idoneo non è un modello adatto e sarà ovvio in quanto avrà scarse prestazioni sui dati di addestramento. L'underfitting spesso non viene discusso in quanto è facile da rilevare data una buona metrica delle prestazioni. Il rimedio è andare avanti e provare algoritmi alternativi di apprendimento automatico. Tuttavia, fornisce un buon contrasto con il problema dell'overfitting. Un buon adattamento all'apprendimento automatico Idealmente, si desidera selezionare un modello che sia una via di mezzo tra underfitting e overfitting. Questo è l'obiettivo, ma è molto difficile da realizzare in pratica. Per comprendere questo obiettivo, possiamo esaminare le prestazioni di un algoritmo di apprendimento automatico nel tempo mentre apprende i dati di addestramento. Possiamo tracciare sia l'abilità sui dati di addestramento che l'abilità su un set di dati di test che abbiamo trattenuto dal processo di addestramento. Nel tempo, man mano che l'algoritmo apprende, l'errore per il modello sui dati di addestramento diminuisce, così come l'errore nel set di dati di test. Se ci alleniamo troppo a lungo, le prestazioni sul set di dati di addestramento potrebbero continuare a diminuire perché il modello si adatta eccessivamente e apprende i dettagli irrilevanti e il rumore nel set di dati di addestramento. Allo stesso tempo, l'errore per il set di test inizia a salire di nuovo al diminuire della capacità del modello di generalizzare. Il punto debole è il punto appena prima che l'errore sul set di dati di test inizi ad aumentare in cui il modello ha buone capacità sia sul set di dati di addestramento che sul set di dati di test invisibile. Puoi eseguire questo esperimento con i tuoi algoritmi di apprendimento automatico preferiti. Questa tecnica spesso non è utile nella pratica, perché scegliendo il punto di arresto per l'allenamento utilizzando l'abilità sul set di dati del test significa che il set di test non è più "non visibile" o una misura oggettiva autonoma. Alcune conoscenze (molte conoscenze utili) su quei dati sono trapelate nella procedura di addestramento. Esistono due tecniche aggiuntive che puoi utilizzare per trovare il punto debole nella pratica: metodi di ricampionamento e un set di dati di convalida. Come limitare l'overfitting Sia l'overfitting che l'underfitting possono portare a scarse prestazioni del modello. Ma il problema di gran lunga più comune nell'apprendimento automatico applicato è l'overfitting. L'overfitting è un tale problema perché la valutazione degli algoritmi di apprendimento automatico sui dati di addestramento è diversa dalla valutazione a cui teniamo di più, ovvero quanto bene l'algoritmo si comporta su dati invisibili. Esistono due tecniche importanti che puoi utilizzare durante la valutazione degli algoritmi di apprendimento automatico per limitare l'overfitting: Utilizzare una tecnica di ricampionamento per stimare l'accuratezza del modello. Trattieni un set di dati di convalida. La tecnica di ricampionamento più popolare è la convalida incrociata k-fold. Ti consente di addestrare e testare il tuo modello k-volte su diversi sottoinsiemi di dati di addestramento e di creare una stima delle prestazioni di un modello di apprendimento automatico su dati invisibili. Un set di dati di convalida è semplicemente un sottoinsieme dei dati di addestramento che trattieni dagli algoritmi di apprendimento automatico fino alla fine del tuo progetto. Dopo aver selezionato e ottimizzato gli algoritmi di machine learning sul set di dati di addestramento, puoi valutare i modelli appresi sul set di dati di convalida per avere un'idea oggettiva finale di come i modelli potrebbero funzionare su dati invisibili. L'uso della convalida incrociata è un gold standard nell'apprendimento automatico applicato per la stima dell'accuratezza del modello su dati invisibili. Se si dispone dei dati, anche l'utilizzo di un set di dati di convalida è un'ottima pratica. Conclusione In questo post, hai scoperto che l'apprendimento automatico risolve i problemi con il metodo dell'induzione. Hai imparato che la generalizzazione è una descrizione di come i concetti appresi da un modello si applicano ai nuovi dati. Infine, hai appreso la terminologia della generalizzazione nell'apprendimento automatico di overfitting e underfitting: Overfitting : Buone prestazioni sui dati di allenamento, scarsa generalizzazione su altri dati. Underfitting : Scarse prestazioni sui dati di allenamento e scarsa generalizzazione ad altri dati Hai domande su overfitting, underfitting o questo post? Lascia un commento e fai la tua domanda e faremo del nostro meglio per rispondere.
- Come rimuovere e gestire i valori anomali con python nel machine learning
Durante la modellazione, è importante pulire il campione di dati per garantire che le osservazioni rappresentino al meglio il problema. A volte un set di dati può contenere valori estremi che sono al di fuori dell'intervallo di ciò che è previsto e diversi dagli altri dati. Questi sono chiamati valori anomali e spesso la modellazione dell'apprendimento automatico e l'abilità dei modelli in generale possono essere migliorati comprendendo e persino rimuovendo questi valori anomali. In questo tutorial scoprirai i valori anomali e come identificarli e rimuoverli dal tuo set di dati di machine learning. Dopo aver completato questo tutorial, saprai: Che un valore anomalo sia un'osservazione improbabile in un set di dati e possa avere una delle molte cause. Come utilizzare semplici statistiche univariate come la deviazione standard e l'intervallo interquartile per identificare e rimuovere valori anomali da un campione di dati. Come utilizzare un modello di rilevamento dei valori anomali per identificare e rimuovere righe da un set di dati di addestramento al fine di migliorare le prestazioni della modellazione predittiva. Panoramica sulla gestione dei valori anomali con python Questo tutorial è diviso in cinque parti : Cosa sono i valori anomali? Test set di dati Gestire i valori anomali con il Metodo di deviazione standard Gestire i valori anomali con il Metodo dell'intervallo interquartile Rilevamento automatico dei valori anomali Cosa sono i valori anomali? Un valore anomalo è un'osservazione che è diversa dalle altre osservazioni. È raro, o distinto, o non si adatta in qualche modo. Generalmente definiremo valori anomali come campioni eccezionalmente lontani dal mainstream dei dati. I valori anomali possono avere molte cause, come ad esempio: Errore di misurazione o input. Corruzione dei dati. Vera osservazione anomala (ad es. Michael Jordan nel basket). Non esiste un modo preciso per definire e identificare i valori anomali in generale a causa delle specificità di ciascun set di dati. Invece, tu o un esperto di dominio dovete interpretare le osservazioni grezze e decidere se un valore è un valore anomalo o meno. Anche con una comprensione approfondita dei dati, i valori anomali possono essere difficili da definire. […] Bisogna fare molta attenzione a non rimuovere o modificare frettolosamente i valori, soprattutto se la dimensione del campione è piccola. Tuttavia, possiamo utilizzare metodi statistici per identificare osservazioni che sembrano essere rare o improbabili dati i dati disponibili. L'identificazione di valori anomali e dati errati nel set di dati è probabilmente una delle parti più difficili della pulizia dei dati e richiede tempo per essere corretta. Anche se hai una profonda conoscenza delle statistiche e di come i valori anomali potrebbero influenzare i tuoi dati, è sempre un argomento da esplorare con cautela. Ciò non significa che i valori identificati siano valori anomali e debbano essere rimossi. Tuttavia, gli strumenti descritti in questo tutorial possono essere utili per far luce su eventi rari che potrebbero richiedere una seconda occhiata. Un buon consiglio è prendere in considerazione la possibilità di tracciare i valori anomali identificati, magari nel contesto di valori non anomali per vedere se esistono relazioni o schemi sistematici con i valori anomali. Se c'è, forse non sono valori anomali e possono essere spiegati, o forse gli stessi valori anomali possono essere identificati in modo più sistematico. Test set di dati Prima di esaminare i metodi di identificazione dei valori anomali, definiamo un set di dati che possiamo utilizzare per testare i metodi. Genereremo una popolazione di 10.000 numeri casuali estratti da una distribuzione gaussiana con una media di 50 e una deviazione standard di 5. I numeri estratti da una distribuzione gaussiana avranno valori anomali. Cioè, in virtù della distribuzione stessa, ci saranno alcuni valori che saranno molto lontani dai valori medi e rari che possiamo identificare come valori anomali. Useremo la funzione randn() per generare valori gaussiani casuali con una media di 0 e una deviazione standard di 1, quindi moltiplichiamo i risultati per la nostra deviazione standard e aggiungiamo la media per spostare i valori nell'intervallo preferito. Il generatore di numeri pseudocasuali viene seminato per garantire che otteniamo lo stesso campione di numeri ogni volta che viene eseguito il codice. # generiamo dei dati from numpy.random import seed from numpy.random import randn from numpy import mean from numpy import std # impostiamo il seed seed(1) # generiamo delle osservazioni data = 5 * randn(10000) + 50 # riassumiamo print('mean=%.3f stdv=%.3f' % (mean(data), std(data))) L'esecuzione dell'esempio genera il campione e quindi stampa la media e la deviazione standard. Come previsto, i valori sono molto vicini ai valori attesi. mean=50.049 stdv=4.994 Grstire gli outliers con il Metodo di deviazione standard Se sappiamo che la distribuzione dei valori nel campione è gaussiana o simile a quella gaussiana, possiamo utilizzare la deviazione standard del campione come cut-off per identificare i valori anomali. La distribuzione gaussiana ha la proprietà che la deviazione standard dalla media può essere utilizzata per riassumere in modo affidabile la percentuale di valori nel campione. Ad esempio, entro una deviazione standard della media coprirà il 68% dei dati. Quindi, se la media è 50 e la deviazione standard è 5, come nel set di dati del test sopra, tutti i dati nel campione tra 45 e 55 rappresenteranno circa il 68% del campione di dati. Possiamo coprire più del campione di dati se espandiamo l'intervallo come segue: 1 Deviazione standard dalla media: 68% 2 Deviazioni standard dalla media: 95% 3 deviazioni standard dalla media: 99,7% Un valore che non rientra in 3 deviazioni standard fa parte della distribuzione, ma è un evento raro o improbabile a circa 1 su 370 campioni. Tre deviazioni standard dalla media sono un limite comune in pratica per identificare i valori anomali in una distribuzione gaussiana o simile a quella gaussiana. Per campioni di dati più piccoli, può essere utilizzato forse un valore di 2 deviazioni standard (95%) e per campioni più grandi, può essere utilizzato forse un valore di 4 deviazioni standard (99,9%). I Dati mu e sigma, un modo semplice per identificare i valori anomali è calcolare uno z-score per ogni xi, che è definito come il numero di deviazioni standard da xi è dalla media […] Valori di dati che hanno uno z-score sigma maggiore di una soglia, ad esempio di tre, sono dichiarati valori anomali. Rendiamolo concreto con un esempio. A volte, i dati vengono prima standardizzati (ad es. su un punteggio Z con media zero e varianza unitaria) in modo che il rilevamento dei valori anomali possa essere eseguito utilizzando valori di cut-off del punteggio Z standard. Questa è una comodità e non è richiesta in generale, ed eseguiremo i calcoli nella scala originale dei dati qui per chiarire le cose. Possiamo calcolare la media e la deviazione standard di un dato campione, quindi calcolare il cut-off per identificare i valori anomali come più di 3 deviazioni standard dalla media. # calcoliamo le statistiche di base data_mean, data_std = mean(data), std(data) # identifichiamo gli outl cut_off = data_std * 3 lower, upper = data_mean - cut_off, data_mean + cut_off Possiamo quindi identificare i valori anomali come quegli esempi che cadono al di fuori dei limiti inferiore e superiore definiti. # identifichiamo gli outliers outliers = [x for x in data if x < lower or x > upper] In alternativa, possiamo filtrare dal campione quei valori che non rientrano nei limiti definiti. # rimuoviamo gli outliers outliers_removed = [x for x in data if x > lower and x < upper] Possiamo mettere tutto questo insieme al nostro set di dati di esempio preparato nella sezione precedente. L'esempio completo è elencato di seguito. from numpy.random import seed from numpy.random import randn from numpy import mean from numpy import std seed(1) data = 5 * randn(10000) + 50 data_mean, data_std = mean(data), std(data) cut_off = data_std * 3 lower, upper = data_mean - cut_off, data_mean + cut_off outliers = [x for x in data if x < lower or x > upper] print('Identified outliers: %d' % len(outliers)) outliers_removed = [x for x in data if x >= lower and x <= upper] print('Non-outlier observations: %d' % len(outliers_removed)) Copia e incolla il codice sul nostro editor Python online preconfigurato per il machine learning e data science L'esecuzione dell'esempio stamperà prima il numero di valori anomali identificati e quindi il numero di osservazioni che non sono valori anomali, dimostrando come identificare e filtrare rispettivamente i valori anomali. Identified outliers: 29 Non-outlier observations: 9971 Finora abbiamo parlato solo di dati univariati con una distribuzione gaussiana, ad esempio una singola variabile. È possibile utilizzare lo stesso approccio se si dispone di dati multivariati, ad esempio dati con più variabili, ciascuna con una distribuzione gaussiana diversa. Puoi immaginare limiti in due dimensioni che definirebbero un'ellisse se hai due variabili. Le osservazioni che non rientrano nell'ellisse sarebbero considerate valori anomali. In tre dimensioni, questo sarebbe un ellissoide e così via in dimensioni superiori. In alternativa, se si conosce meglio il dominio, è possibile che venga identificato un valore anomalo superando i limiti di una o di un sottoinsieme delle dimensioni dei dati. Metodo dell'intervallo interquartile Non tutti i dati sono normali o abbastanza normali da considerarli come tratti da una distribuzione gaussiana. Una buona statistica per riassumere un campione di dati con distribuzione non gaussiana è l'Interquartile Range, o IQR in breve. L'IQR viene calcolato come la differenza tra il 75° e il 25° percentile dei dati. Ricorda che i percentili possono essere calcolati ordinando le osservazioni e selezionando i valori in base a indici specifici. Il 50° percentile è il valore medio, o la media dei due valori medi per un numero pari di esempi. Se avessimo 10.000 campioni, il 50° percentile sarebbe la media dei valori 5000 e 5001. Ci riferiamo ai percentili come quartili (" quart " significa 4) perché i dati sono divisi in quattro gruppi tramite i valori 25, 50 e 75. L'IQR definisce il 50% centrale dei dati o il corpo dei dati. Le tecniche di rilevamento dei valori anomali basati su statistiche presuppongono che i punti dati normali appaiano nelle regioni ad alta probabilità di un modello stocastico, mentre i valori anomali si verificherebbero nelle regioni a bassa probabilità di un modello stocastico. L'IQR può essere utilizzato per identificare i valori anomali definendo limiti sui valori del campione che sono un fattore k dell'IQR al di sotto del 25° percentile o al di sopra del 75° percentile. Il valore comune per il fattore k è il valore 1,5. Un fattore k di 3 o più può essere utilizzato per identificare valori che sono valori anomali estremi o " lontani " . Questi limiti sono disegnati come recinzioni sui baffi (o sulle linee) che vengono tracciati dalla scatola. I valori che non rientrano in questi valori vengono disegnati come punti. Possiamo calcolare i percentili di un set di dati usando la funzione percentile() NumPy che prende il set di dati e la specifica del percentile desiderato. L'IQR può quindi essere calcolato come la differenza tra il 75° e il 25° percentile. # calcoliamo il rancge interquartile q25, q75 = percentile(data, 25), percentile(data, 75) iqr = q75 - q25 Possiamo quindi calcolare il limite per i valori anomali come 1,5 volte l'IQR e sottrarre questo limite dal 25° percentile e aggiungerlo al 75° percentile per fornire i limiti effettivi sui dati. # calcoliamo gli outlier cutoff cut_off = iqr * 1.5 lower, upper = q25 - cut_off, q75 + cut_off Possiamo quindi utilizzare questi limiti per identificare i valori anomali. # adesso identifichiamo gli outliers outliers outliers = [x for x in data if x < lower or x > upper] Possiamo anche utilizzare i limiti per filtrare i valori anomali dal set di dati. # rimuoviamo gli outliers outliers_removed = [x for x in data if x > lower and x < upper] Possiamo collegare tutto questo insieme e dimostrare la procedura sul set di dati di test. L'esempio completo è elencato di seguito. from numpy.random import seed from numpy.random import randn from numpy import percentile seed(1) data = 5 * randn(10000) + 50 q25, q75 = percentile(data, 25), percentile(data, 75) print('Percentiles: 25th=%.3f, 75th=%.3f, IQR=%.3f' % (q25, q75, iqr)) cut_off = iqr * 1.5 lower, upper = q25 - cut_off, q75 + cut_off outliers = [x for x in data if x < lower or x > upper] print('Identified outliers: %d' % len(outliers)) outliers_removed = [x for x in data if x >= lower and x <= upper] print('Non-outlier observations: %d' % len(outliers_removed)) Copia e incolla il codice sul nostro editor Python online preconfigurato per il machine learning e data science, senza dover perdere tempo per installare le librerie. L'esecuzione dell'esempio stampa prima il 25° e il 75° percentile identificato e l'IQR calcolato. Viene stampato il numero di outlier individuato seguito dal numero di osservazioni non outlier. Percentiles: 25th=46.685, 75th=53.359, IQR=6.674 Identified outliers: 81 Non-outlier observations: 9919 L'approccio può essere utilizzato per dati multivariati calcolando a turno i limiti di ciascuna variabile nel set di dati e prendendo i valori anomali come osservazioni che cadono al di fuori del rettangolo o dell'iper-rettangolo. Rilevamento automatico dei valori anomali Nell'apprendimento automatico, un approccio per affrontare il problema del rilevamento dei valori anomali è la classificazione a una classe . La classificazione di una classe, o OCC in breve, implica l'adattamento di un modello sui dati " normali " e la previsione se i nuovi dati sono normali o un'anomalia/anomalia. Un classificatore a una classe mira a catturare le caratteristiche delle istanze di formazione, in modo da essere in grado di distinguerle dai potenziali valori anomali che appaiono. Un classificatore a una classe è adatto a un set di dati di addestramento che contiene solo esempi della classe normale. Una volta preparato, il modello viene utilizzato per classificare nuovi esempi come normali o non normali, ovvero valori anomali o anomalie. Un approccio semplice per identificare i valori anomali consiste nell'individuare quegli esempi che sono lontani dagli altri esempi nello spazio delle caratteristiche. Questo può funzionare bene per gli spazi delle caratteristiche con una bassa dimensionalità (poche funzioni), sebbene possa diventare meno affidabile all'aumentare del numero di funzioni, indicato come la maledizione della dimensionalità. Il fattore anomalo locale, o LOF in breve, è una tecnica che tenta di sfruttare l'idea dei vicini più vicini per il rilevamento dei valori anomali. A ogni esempio viene assegnato un punteggio di quanto sia isolato o quanto sia probabile che siano valori anomali in base alle dimensioni del suo quartiere locale. È più probabile che gli esempi con il punteggio più alto siano valori anomali. Introduciamo un outlier locale (LOF) per ogni oggetto nel set di dati, indicando il suo grado di outlier-ness. La libreria scikit-learn fornisce un'implementazione di questo approccio nella classe LocalOutlierFactor . Possiamo dimostrare il metodo LocalOutlierFactor su un set di dati di modellazione predittiva. Useremo il problema della regressione immobiliare di Boston che ha 13 input e un target numerico e richiede l'apprendimento della relazione tra le caratteristiche dei sobborghi e i prezzi delle case. Puoi trovare qualsiasi dataset tu abbia in mente per provare qui Guardando nel set di dati, dovresti vedere che tutte le variabili sono numeriche. 0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98,24.00 0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14,21.60 0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03,34.70 0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94,33.40 0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33,36.20 ... Non è necessario scaricare il set di dati, lo scaricheremo automaticamente. Innanzitutto, possiamo caricare il set di dati come un array NumPy, separarlo in variabili di input e output e quindi dividerlo in set di dati di training e test. L'esempio completo è elencato di seguito. from pandas import read_csv from sklearn.model_selection import train_test_split url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv' df = read_csv(url, header=None) data = df.values X, y = data[:, :-1], data[:, -1] print(X.shape, y.shape) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape) L'esecuzione dell'esempio carica il set di dati e prima riporta il numero totale di righe e colonne nel set di dati, quindi il numero di dati degli esempi allocati al treno e ai set di dati di test. (506, 13) (506,) (339, 13) (167, 13) (339,) (167,) È un problema di modellazione predittiva di regressione, il che significa che prevediamo un valore numerico. Tutte le variabili di input sono anche numeriche. In questo caso, adatteremo un algoritmo di regressione lineare e valuteremo le prestazioni del modello addestrando il modello sul set di dati del test ed effettuando una previsione sui dati del test e valuteremo le previsioni utilizzando l'errore medio assoluto (MAE). L'esempio completo di valutazione di un modello di regressione lineare sul set di dati è elencato di seguito. from pandas import read_csv from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_absolute_error url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv' df = read_csv(url, header=None) data = df.values X, y = data[:, :-1], data[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) model = LinearRegression() model.fit(X_train, y_train) mae = mean_absolute_error(y_test, yhat) print('MAE: %.3f' % mae) L'esecuzione dell'esempio adatta e valuta il modello, quindi segnala il MAE. Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Esegui l'esempio alcune volte e confrontare il risultato medio. In questo caso, possiamo vedere che il modello ha raggiunto un MAE di circa 3.417. MAE: 3.417 Successivamente, possiamo provare a rimuovere i valori anomali dal set di dati di addestramento. L'aspettativa è che i valori anomali inducano il modello di regressione lineare ad apprendere un pregiudizio o una comprensione distorta del problema e che la rimozione di questi valori anomali dal set di addestramento consentirà di apprendere un modello più efficace. Possiamo raggiungere questo obiettivo definendo il modello LocalOutlierFactor e utilizzandolo per fare una previsione sul set di dati di addestramento, contrassegnando ogni riga nel set di dati di addestramento come normale (1) o un valore anomalo (-1). Utilizzeremo gli iperparametri predefiniti per il modello di rilevamento dei valori anomali, sebbene sia una buona idea ottimizzare la configurazione in base alle specifiche del set di dati. lof = LocalOutlierFactor() yhat = lof.fit_predict(X_train) Possiamo quindi utilizzare queste previsioni per rimuovere tutti i valori anomali dal set di dati di addestramento. # seleziona tutte le righe che non sono valori anomali mask = yhat != -1 X_train, y_train = X_train[mask, :], y_train[mask] Possiamo quindi adattare e valutare il modello come di consueto. L'esempio aggiornato di valutazione di un modello di regressione lineare con valori anomali eliminati dal set di dati di addestramento è elencato di seguito. from pandas import read_csv from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.neighbors import LocalOutlierFactor from sklearn.metrics import mean_absolute_error url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv' df = read_csv(url, header=None) data = df.values X, y = data[:, :-1], data[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) print(X_train.shape, y_train.shape) lof = LocalOutlierFactor() yhat = lof.fit_predict(X_train) mask = yhat != -1 X_train, y_train = X_train[mask, :], y_train[mask] print(X_train.shape, y_train.shape) model = LinearRegression() model.fit(X_train, y_train) yhat = model.predict(X_test) mae = mean_absolute_error(y_test, yhat) print('MAE: %.3f' % mae) L'esecuzione dell'esempio adatta e valuta il modello di regressione lineare con valori anomali eliminati dal set di dati di addestramento. Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considera di eseguire l'esempio alcune volte e confrontare il risultato medio. In primo luogo, possiamo vedere che il numero di esempi nel set di dati di addestramento è stato ridotto da 339 a 305, il che significa che sono state identificate ed eliminate 34 righe contenenti valori anomali. Possiamo anche vedere una riduzione del MAE da circa 3,417 da un adattamento del modello sull'intero set di dati di addestramento, a circa 3,356 su un adattamento del modello sul set di dati con i valori anomali rimossi. (339, 13) (339,) (305, 13) (305,) MAE: 3.356 La libreria Scikit-Learn fornisce altri algoritmi di rilevamento anomali che possono essere utilizzati allo stesso modo dell'algoritmo IsolationForest. Estensioni Questa sezione elenca alcune idee per estendere il tutorial che potresti voler esplorare. Sviluppa il tuo set di dati di test gaussiano e traccia i valori anomali e non anomali su un istogramma. Testare il metodo basato su IQR su un set di dati univariato generato con una distribuzione non gaussiana. Scegli un metodo e crea una funzione che filtrerà i valori anomali per un determinato set di dati con un numero arbitrario di dimensioni. Se esplori una di queste estensioni, ci piacerebbe saperlo nei commenti
- Previsione della manutenzione dei macchinari con Python e il Machine learning
Previsione della manutenzione dei macchinare con il Machine Learning. Sappiamo che l'apprendimento automatico è molto complicato per i principianti. Non sappiamo quali tipi di modelli dovremmo usare per analizzare i dati. In questo articolo, utilizzeremo il set di dati "Manutenzione predittiva" e lo analizzeremo utilizzando facilmente l'apprendimento automatico. Useremo Pycaret per costruire il nostro modello predittivo. Questo è il set di dati che useremo: Prima di iniziare, installa Pycaret sui tuoi ambienti notebook. pip install pycaret Importazione di librerie di importazione Successivamente, dobbiamo importare le librerie. Dopo averlo fatto, leggiamo il file di dati che analizzeremo. Il file è in formato .csv. import pandas as pd import seaborn as sns %matplotlib inline import matplotlib.pyplot as plt data = pd.read_csv("Manutenzione_macchinari.csv") Creiamo un grafico a torta usando Matplotlib per il tipo di errore. Abbiamo notato che nessun errore è del 96,5%. labels = data['Failure Type'].astype('category').cat.categories.tolist() counts = data['Failure Type'].value_counts() sizes = [counts[machine_name] for machine_name in labels] plt.figure(figsize=(8,10)) plt.pie(sizes, labels=labels, autopct='%1.1f%%',shadow=True) plt.title("Failure Type", fontsize=20) plt.show() Successivamente, utilizziamo la libreria "Seaborn" per creare un grafico a barre per la temperatura dell'aria e di processo. # Air Temperature # sns.set_style('whitegrid') sns.distplot(data['Air temperature [K]'].values, kde=True, rug=True) plt.title("Air temperature",fontsize = 15) plt.show() #Process Temperature # sns.distplot(data['Process temperature [K]'].values, kde=True, rug = True ) plt.title("Process temperature",fontsize=15) plt.show() Dopo averlo fatto, utilizziamo jointplot per disegnare un grafico dell'aria e della temperatura di processo con grafici bivariati e univariati. La libreria fornisce una comoda interfaccia per la classe JointCrid, con diversi tipi di grafici preconfezionati. Sembrano così. with sns.axes_style('white') : g = sns.jointplot(data=data,x='Air temperature [K]',y= 'Process temperature [K]', kind = "hex",joint_kws = dict(gridsize=15), marginal_kws={'color': 'gold'},color="#c9af44", height = 6.50) plt.setp(g.ax_marg_y.patches, color = "limegreen") Usiamo Seaborn per disegnare un grafico a linee per la velocità della coppia perché vogliamo conoscere la sua velocità di rotazione. plt.figure (figsize = (8,6)) sns.lineplot(x="Rotational speed [rpm]", y="Torque [Nm]",data=data) plt.title ("Speed of Torque ", fontsize = 15) In questo momento, utilizzeremo la libreria unica "PyCaret". È una libreria di machine learning open source in Python che consente agli utenti di passare dalla preparazione dei dati alla distribuzione del modello in pochi minuti negli ambienti notebook scelti. PyCaret Prima di utilizzare PyCaret, è necessario eliminare l'UDI e l'ID prodotto del set di dati. data = data.drop(['UDI','Product ID'],axis=1) Usiamo 'pycaret.classification' per impostare con set di dati, target e session_id originali. Dopo averlo fatto, confrontiamo tutti i modelli. Abbiamo notato che il modello Random Forest ha la massima precisione. Allora usiamolo. from pycaret.classification import * #Setup# pyrg = setup (data,target='Failure Type',session_id = 1) #Compare any models" rf = compare_models() Creiamo un modello con rf (Random Forest Classifier). Inoltre, dobbiamo migliorarlo con tune_model. È una funzione che sintonizza automaticamente il modello con gli iperparametri. Dopo averlo realizzato, creiamo grafici per l'analisi del modello. plot_model(rf) plot_model(estimator = rf, plot = 'feature') plot_model(rf, plot = 'confusion_matrix') Abbiamo quasi finito! Finalizziamo il modello e lo prevediamo con il set di dati originale. Leggiamo il dataset finale. Come possiamo vedere, ha aggiunto etichette e punteggi. rf_final = finalize_model(rf) predict_rf = predict_model(rf_final,data) predict_rf.head() Conclusione In questo articolo, abbiamo imparato come analizzare facilmente un set di dati utilizzando l'apprendimento automatico. È meglio usare questo metodo se non conosci gli algoritmi di machine learning.
- Cos'è la previsione delle serie temporali o Time Series Forecasting?
La previsione delle serie temporali è un'area importante dell'apprendimento automatico che viene spesso trascurata. È importante perché ci sono così tanti problemi di previsione che coinvolgono una componente temporale. Questi problemi vengono trascurati perché è questa componente temporale che rende i problemi delle serie temporali più difficili da gestire. In questo post scoprirai la previsione delle serie temporali. Dopo aver letto questo post, saprai: Definizioni standard di serie temporali, analisi di serie temporali e previsioni di serie temporali. Le componenti importanti da considerare nei dati delle serie temporali. Esempi di serie temporali per rendere concreta la tua comprensione. Cosa sono le Serie temporali? Un normale set di dati di apprendimento automatico è una raccolta di osservazioni. Per esempio: osservazione #1 osservazione #2 osservazione #3 Il tempo gioca un ruolo nei normali set di dati di apprendimento automatico. Vengono fatte previsioni per nuovi dati quando l'esito effettivo potrebbe non essere noto fino a una data futura. Il futuro viene previsto, ma tutte le osservazioni precedenti vengono quasi sempre trattate allo stesso modo. Un set di dati di serie temporali è diverso. Le serie temporali aggiungono un'esplicita dipendenza dall'ordine tra le osservazioni: una dimensione temporale. Questa dimensione aggiuntiva è sia un vincolo che una struttura che fornisce una fonte di informazioni aggiuntive. Una serie temporale è una sequenza di osservazioni prese in sequenza nel tempo. Per esempio: Tempo #1, osservazione Tempo #2, osservazione Tempo #3, osservazione Descrivere vs. prevedere Abbiamo obiettivi diversi a seconda che siamo interessati a comprendere un set di dati o fare previsioni. La comprensione di un set di dati, chiamato analisi delle serie temporali , può aiutare a fare previsioni migliori, ma non è necessario e può comportare un grande investimento tecnico in tempo e competenze non direttamente allineati con il risultato desiderato, ovvero prevedere il futuro. Nella modellazione descrittiva, o analisi delle serie temporali, una serie storica viene modellata per determinarne le componenti in termini di modelli stagionali, tendenze, relazioni con fattori esterni e simili. … Al contrario, la previsione delle serie temporali utilizza le informazioni in una serie temporale (magari con informazioni aggiuntive) per prevedere i valori futuri di quella serie Analisi delle serie temporali Quando si utilizza la statistica classica, la preoccupazione principale è l'analisi delle serie temporali. L'analisi delle serie temporali implica lo sviluppo di modelli che catturino o descrivano al meglio una serie temporale osservata al fine di comprendere le cause sottostanti. Questo campo di studio cerca il " perché " dietro un set di dati di serie temporali. Ciò comporta spesso l'elaborazione di ipotesi sulla forma dei dati e la scomposizione delle serie temporali in componenti costitutive. La qualità di un modello descrittivo è determinata da quanto bene descrive tutti i dati disponibili e dall'interpretazione che fornisce per informare meglio il dominio del problema. L'obiettivo principale dell'analisi delle serie temporali è sviluppare modelli matematici che forniscano descrizioni plausibili da dati campione Previsione di serie temporali Fare previsioni sul futuro è chiamato estrapolazione nella classica gestione statistica dei dati delle serie temporali. I campi più moderni si concentrano sull'argomento e si riferiscono ad esso come previsione di serie temporali. La previsione implica l'adattamento dei modelli ai dati storici e il loro utilizzo per prevedere le osservazioni future. I modelli descrittivi possono prendere in prestito per il futuro (ad esempio per attenuare o rimuovere il rumore), cercano solo di descrivere al meglio i dati. Una distinzione importante nella previsione è che il futuro è completamente indisponibile e deve essere stimato solo da ciò che è già accaduto. Lo scopo dell'analisi delle serie temporali è generalmente duplice: comprendere o modellare i meccanismi stocastici che danno origine a una serie osservata e prevedere o prevedere i valori futuri di una serie sulla base della storia di quella serie L'abilità di un modello di previsione delle serie temporali è determinata dalle sue prestazioni nel prevedere il futuro. Questo spesso va a scapito della possibilità di spiegare perché è stata fatta una previsione specifica, gli intervalli di confidenza e una comprensione ancora migliore delle cause alla base del problema. Componenti principali delle serie temporali L'analisi delle serie temporali fornisce un insieme di tecniche per comprendere meglio un set di dati. Forse il più utile di questi è la scomposizione di una serie temporale in 4 parti : Livello . Il valore della linea di base per la serie se fosse una linea retta. Tendenza . Il comportamento opzionale e spesso lineare in aumento o diminuzione delle serie nel tempo. Stagionalità . I modelli o cicli di comportamento ripetuti facoltativi nel tempo. Rumore . La variabilità opzionale nelle osservazioni che non può essere spiegata dal modello. Tutte le serie temporali hanno un livello, la maggior parte ha un rumore e l'andamento e la stagionalità sono facoltativi. Le caratteristiche principali di molte serie temporali sono le tendenze e le variazioni stagionali... un'altra caratteristica importante della maggior parte delle serie temporali è che le osservazioni ravvicinate nel tempo tendono ad essere correlate (dipendenti in serie) Si può pensare che questi componenti costitutivi si combinino in qualche modo per fornire le serie temporali osservate. Ad esempio, possono essere sommati per formare un modello come segue: y = livello + trend + stagionalità + rumore È possibile fare ipotesi su queste componenti sia nel comportamento che nel modo in cui sono combinate, il che consente di modellarle utilizzando metodi statistici tradizionali. Questi componenti possono anche essere il modo più efficace per fare previsioni sui valori futuri, ma non sempre. Nei casi in cui questi metodi classici non si traducono in prestazioni efficaci, questi componenti possono comunque essere concetti utili e persino input per metodi alternativi. Previsione nelle Serie Temporali di cosa preoccuparsi? Quando si effettuano previsioni, è importante capire il proprio obiettivo. Usa il metodo Socratico e fai molte domande per aiutarti a ingrandire le specifiche del tuo problema di modellazione predittiva . Per esempio: Quanti dati hai a disposizione e riesci a raccoglierli tutti insieme? Più dati sono spesso più utili, offrendo maggiori opportunità per l'analisi esplorativa dei dati, il test e l'ottimizzazione del modello e la fedeltà del modello. Qual è l'orizzonte temporale delle previsioni richiesto? A breve, medio o lungo termine? Orizzonti temporali più brevi sono spesso più facili da prevedere con maggiore sicurezza. Le previsioni possono essere aggiornate frequentemente nel tempo o devono essere fatte una volta e rimanere statiche? L'aggiornamento delle previsioni man mano che nuove informazioni diventano disponibili si traduce in previsioni più accurate. Con quale frequenza temporale sono richieste le previsioni? Spesso le previsioni possono essere fatte a frequenze più basse o più alte, consentendo di sfruttare il downsampling e l'upsampling dei dati, che a loro volta possono offrire vantaggi durante la modellazione. I dati delle serie temporali spesso richiedono pulizia, ridimensionamento e persino trasformazione. Per esempio: Frequenza . Forse i dati sono forniti a una frequenza troppo alta per essere modellati o sono distanziati in modo non uniforme nel tempo che richiede il ricampionamento per l'uso in alcuni modelli. Valori anomali . Forse ci sono valori anomali corrotti o estremi che devono essere identificati e gestiti. Mancante . Forse ci sono lacune o dati mancanti che devono essere interpolati o imputati. Spesso i problemi delle serie temporali sono in tempo reale e forniscono continuamente nuove opportunità di previsione. Ciò aggiunge un'onestà alla previsione delle serie temporali che elimina rapidamente le ipotesi sbagliate, gli errori nella modellazione e tutti gli altri modi in cui potremmo essere in grado di ingannare noi stessi. Esempi di previsione di serie temporali C'è un'offerta quasi infinita di problemi di previsione delle serie temporali. Di seguito sono riportati 10 esempi da una serie di settori per rendere più concrete le nozioni di analisi e previsione delle serie temporali. Prevedere se un tracciato EEG in secondi indica che un paziente sta avendo una crisi o meno. Previsione del prezzo di chiusura di un'azione ogni giorno. Previsione del tasso di natalità in tutti gli ospedali di una città ogni anno. Previsione delle vendite di prodotti in unità vendute ogni giorno per un negozio. Previsione del numero di passeggeri attraverso una stazione ferroviaria ogni giorno. Previsione della disoccupazione per uno stato ogni trimestre. Previsione della domanda di utilizzo su un server ogni ora. Previsione della dimensione della popolazione di conigli in uno stato ogni stagione riproduttiva. Previsione del prezzo medio della benzina in una città ogni giorno. Mi aspetto che sarai in grado di mettere in relazione uno o più di questi esempi con i tuoi problemi di previsione delle serie temporali che vorresti affrontare. Conclusione In questo post, hai scoperto la previsione delle serie temporali. Nello specifico hai imparato: Informazioni sui dati delle serie temporali e sulla differenza tra l'analisi delle serie temporali e la previsione delle serie temporali. I componenti costitutivi in cui una serie storica può essere scomposta durante l'esecuzione di un'analisi. Esempi di problemi di previsione di serie temporali per rendere concrete queste idee. Hai domande sulla previsione delle serie temporali o su questo post? Fai le tue domande nei commenti qui sotto.
- Migliori IDE Python per il machine learning e data science
Cos'è un IDE? Un IDE (Integrated Development Environment) viene utilizzato per lo sviluppo del software. Un IDE può avere un compilatore, un debugger e tutti gli altri requisiti necessari per lo sviluppo del software. Gli IDE aiutano a consolidare diversi aspetti di un programma per computer. IDE viene utilizzato anche per lo sviluppo in Data Science (DS) e Machine Learning (ML) grazie alle sue vaste librerie. Vari aspetti della scrittura del codice possono essere implementati tramite IDE come la compilazione, il debug, la creazione di eseguibili, la modifica del codice sorgente, ecc. Python è un linguaggio ampiamente utilizzato dai programmatori e gli IDE Python aiutano a codificare e compilare facilmente. Ci sono IDE che vengono usati molto al giorno d'oggi, vediamo alcuni dei migliori IDE Python per DS e ML sul mercato. Elenco dei migliori IDE Python per Machine Learning e Data Science 1. Il nostro 😎 è online, non dovrai installare nulla è già configurato per la DataScience e Machine Learning non serve altro 2. Spyder Scientific Python Development Environment (Spyder) è un IDE Python gratuito e open source. È leggero ed è un eccellente ide Python per data science e ML. Viene utilizzato da molti analisti di dati per l'analisi del codice in tempo reale. Spyder ha un modello interattivo di esecuzione del codice che ti dà la possibilità di compilare qualsiasi singola riga, una sezione del codice o l'intero codice in una volta sola. Puoi trovare le variabili ridondanti, gli errori, i problemi di sintassi nel tuo codice senza nemmeno compilarlo in Spyder tramite la funzione di analisi del codice statico. È anche integrato con molti pacchetti DS come NumPy, SciPy, Pandas, IPython, ecc. Per aiutarti nell'analisi dei dati. Puoi controllare il flusso di esecuzione del tuo codice sorgente dalla GUI (Graphical User Interface) di Spyder tramite il debugger di Spyder. La pagina del registro storico di Spyder registra tutti i comandi utilizzati nell'editor per ulteriori riferimenti. Puoi anche conoscere qualsiasi funzione, metodo, classe, ecc. incorporati in Spyder tramite il riquadro della guida di Spyder. È uno strumento eccellente per gli appassionati di scienza dei dati. 3. Thonny Thonny è un eccellente IDE Python che funzionerà su Windows, Linux e Mac. Il debugger di Thonny aiuta nel debug dei codici riga per riga, questo processo aiuta molto i principianti che stanno imparando a programmare. L'eccellente GUI di Thonny rende l'installazione di pacchetti di terze parti molto più semplice. Thonny completa automaticamente il codice in base alla sua previsione e controlla il codice per la mancata corrispondenza delle parentesi ed evidenzia l'errore che è un'ottima funzionalità per i principianti. È completamente gratuito da scaricare. Quando chiami una funzione in Thonny, verrà eseguita in una finestra separata che consente all'utente di comprendere meglio le variabili locali e lo stack di chiamate della funzione. Il gestore dei pacchetti di Thonny ti aiuta a scaricarli e ad aumentare le funzionalità di Python. 4. JupyterLab È un IDE Python basato sul Web per i professionisti di Machine Learning e DS. Puoi testare il tuo codice mentre scrivi tramite il sistema di output interattivo di JupyterLab. L'interfaccia di JupyterLab è abbastanza buona in quanto fornisce una vista simultanea del terminale, dell'editor di testo, della console e della directory dei file. Funzionalità come il completamento automatico del codice, la formattazione automatica, il salvataggio automatico, ecc. lo rendono uno dei migliori IDE Python gratuiti per i professionisti di ML e DS. C'è una modalità zen in JupyterLab che consente agli utenti di ridurre al minimo le distrazioni, le schermate non richieste e di concentrarsi sul progetto in elaborazione. I file creati in JupyterLab possono essere scaricati in vari formati come .py, pdf, ecc. Puoi anche scaricarli come diapositive, ad esempio '.png'. 5. PyCharm È un eccellente IDE Python che ha funzionalità come il completamento automatico del codice, il rientro automatico del codice, ecc. Ha un debugger intelligente che analizza il codice ed evidenzia gli errori. I professionisti di DS e ML che si occupano di sviluppo web preferiscono PyCharm anche per la sua facilità di navigazione. Puoi cercare qualsiasi simbolo particolare utilizzato nei codici lunghi tramite la funzione di navigazione in PyCharm. Anche l'interconnessione di più script è più semplice in PyCharm. È possibile ristrutturare facilmente il proprio codice tramite la funzione di refactoring di PyCharm in cui è possibile modificare la firma del metodo, rinominare il file, estrarre qualsiasi metodo nel codice. I professionisti del ML utilizzano unit test integrati per testare le loro pipeline ML. Aiuta a conoscere le prestazioni di un particolare modello ML. PyCharm viene fornito con unit test integrato e si possono vedere i risultati in un layout grafico. Ha anche un sistema di controllo della versione che aiuta a tenere traccia delle modifiche apportate a qualsiasi file/applicazione particolare. 6. Visual Code Visual Code è uno degli IDE Python più utilizzati dai professionisti di ML e DS. Funziona su sistemi operativi Windows, Mac e Linux. VS Code supporta molti linguaggi oltre a Python come C, C#, JavaScript, HTML, CSS, ecc. Visual Code è un IDE Python open source leggero che dispone di una versione gratuita e di una versione a pagamento per aziende/imprese. È anche una buona piattaforma per i principianti poiché riceverai suggerimenti nel codice VS ogni volta che crei funzioni o classi. Il completamento automatico del codice aiuta anche gli utenti a risparmiare tempo durante la codifica. VS Code è anche integrato con PyLint che controlla gli errori nel codice sorgente. Puoi eseguire facilmente unit test sui tuoi modelli ML o DS tramite VS Code. Il REPL (read-evaluate-print loop) aiuta a vedere risultati rapidi di qualsiasi piccolo codice Python in una finestra separata. Aiuta molto quando si sperimenta con qualsiasi nuova API o funzione. VS Code semplifica l'utilizzo di SQL, Unity, .NET, Node.js e molti altri strumenti. È possibile rinominare un file, estrarre metodi, aggiungere importazioni, ecc. Nel codice tramite il refactor VS Code. VS Code è un eccellente IDE per ML e DS per ottimizzare ed eseguire facilmente il debug dei codici. 6. Atom Atom è un eccellente IDE per professionisti di ML e DS che supporta molti altri linguaggi oltre a Python come C, C++, HTML, JavaScript, ecc. Puoi usarlo su Windows, Linux e Mac. Atom supporta MySQL, PostgreSQL, Microsoft SQL Server che ti aiuta a scrivere ed eseguire query/comandi SQL. Ci sono molti pacchetti utili in Atom come il pacchetto atom-beautify che abbellisce il tuo codice e lo rende più accurato. La funzione di visualizzazione struttura di Atom ti consente di vedere una vista ad albero del tuo codice e puoi controllare facilmente le tue classi, funzioni, ecc. Atom ti fornirà molti temi e modelli da GitHub tra cui scegliere. I professionisti di ML e DS preferiscono anche Atom per la sua capacità di editing multipiattaforma. È uno dei migliori IDE gratuiti open source da utilizzare attualmente. Conclusione Machine Learning e Data Science stanno cambiando il modo di lavorare nello sviluppo web e in altri processi automatizzati. Un buon IDE è richiesto dai professionisti di ML e DS per compilare, eseguire il debug, testare il proprio codice e renderlo privo di errori. Questi erano alcuni dei migliori IDE attualmente sul mercato.
- Trading algoritmico e apprendimento automatico con Python
Il commercio nel 21° secolo si è evoluto in modo esponenziale sin dal suo inizio. Sebbene, qualche decennio fa, fosse molto disorganizzato e lento a causa della funzionalità analogica. Nel frattempo, la moderna tecnologia informatica ha sviluppato sistemi di trading automatizzati più veloci, sostenibili e senza stress, orientando l'apprendimento automatico e l'intelligenza artificiale. Trading algoritmico e apprendimento automatico Ogni volta che si parla di machine learning e intelligenza artificiale nel trading, spesso si è obbligati anche a includere il linguaggio di programmazione Python nella discussione. Con l'apprendimento automatico in Python, i sistemi di trading algoritmico hanno iniziato a offrire opportunità di trading algoritmico più veloci e prive di esseri umani. Di conseguenza, i robot di trading sono diventati uno strumento di trading standard moderno. Quindi, il trading algoritmico sta guadagnando popolarità grazie alla funzionalità di trading più veloce e priva di errori umani. Questo articolo tratterà gli approcci per avviare approcci di trading algoritmico con l'apprendimento automatico in Python. Perché utilizzare l'apprendimento automatico nel trading algoritmico? L'apprendimento automatico facilita i trader più del tradizionale trading algoritmico. Ad esempio, gli algoritmi di apprendimento automatico possono trovare modelli valutando grandi volumi di dati, sebbene i metodi convenzionali possano elaborare meno quantità. Allo stesso modo, i trader rilevano le tendenze di trading utilizzando l'apprendimento automatico e prendono decisioni mettendo alla prova l'algoritmo sui dati storici. Inoltre, lo sviluppo degli attuali sistemi cloud ha aperto la strada a una nuova era nell'informatica sofisticata. Allo stesso modo, chiunque può utilizzare il computing all'avanguardia per testare e utilizzare i propri algoritmi di apprendimento automatico utilizzando sistemi cloud distribuiti come MQL5 Cloud Network . Quindi, l'apprendimento automatico in Python è diventato ancora più popolare grazie alla disponibilità di tecnologie di backtesting. In particolare, la richiesta di una potenza di calcolo inferiore ha un impatto sull'evoluzione più rapida di Python. Perché Python per il trading algoritmico? Python, C++, Java, C# e R sono i cinque linguaggi di programmazione più comuni disponibili per i potenziali trader. Ma Python offre alcune caratteristiche eccellenti che lo rendono la prima scelta. Il codice Python è facile da leggere e capire. Meno codifica rispetto ad altri linguaggi grazie alle librerie complete. Quindi, meno codifica, più trading. È un linguaggio interpretato che esegue le istruzioni di codice, costruendo un debug completo. Inoltre, l'esecuzione di un singolo errore velocizza l'intero processo di costruzione. Python ha un'incredibile potenza di calcolo per sovvenzionare il tuo portafoglio e la tua scalabilità. Inoltre, correggere un nuovo modulo in Python e renderlo esteso è più semplice di qualsiasi altro linguaggio. Ha un'ampia libreria di supporto composta dalle attività del linguaggio di programmazione più popolari al loro interno in un metodo semplicistico. Come integrare Python con il modulo di trading MetaTrader 5? MetaTrader 5 è una piattaforma di trading di terze parti che offre pacchetti progettati per un'elaborazione e comunicazione dei dati adeguata e veloce direttamente dal terminale MetaTrader 5. I dati ricevuti possono essere ulteriormente utilizzati per calcoli statistici e apprendimento automatico. Ha anche una comunità online chiamata MQL5 Community per la comunicazione di trader e sviluppatori e gli sviluppatori possono vendere diverse soluzioni di trading e fare carriera. Vediamo come integrare Python e MetaTrader 5: 1. Scarica l'ultima versione del linguaggio di programmazione Python. Inoltre, seleziona "Aggiungi Python 3.10.1 a PATH%" per eseguire gli script Python direttamente dalla riga di comando del PC. 2. Esegui la riga di comando ed esegui un comando per installare MetaTrader 5 con Python. pip install MetaTrader5 3. Installa le librerie Python pip install matplotlib pip install pandas 4. Avviare questo codice script per testare l'integrazione. from datetime import datetime import matplotlib.pyplot as plt import pandas as pd from pandas.plotting import register_matplotlib_converters register_matplotlib_converters() import MetaTrader5 as mt5 # connettiamoci a MetaTrader 5 if not mt5.initialize(): print("initialize() failed") mt5.shutdown() # stampiamo le info di connessione print(mt5.terminal_info()) # stampiamo la MetaTrader 5 version print(mt5.version()) # scarichiamo 1000 ticks da EURAUD euraud_ticks = mt5.copy_ticks_from("EURAUD", datetime(2020,1,28,13), 1000, mt5.COPY_TICKS_ALL) # scarichiamo ticks da AUDUSD da 2019.04.01 13:00 - 2019.04.02 13:00 audusd_ticks = mt5.copy_ticks_range("AUDUSD", datetime(2020,1,27,13), datetime(2020,1,28,13), mt5.COPY_TICKS_ALL) # altri esempi eurusd_rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, datetime(2020,1,28,13), 1000) eurgbp_rates = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000) eurcad_rates = mt5.copy_rates_range("EURCAD", mt5.TIMEFRAME_M1, datetime(2020,1,27,13), datetime(2020,1,28,13)) # spengiamo MetaTrader 5 mt5.shutdown() #DATI print('euraud_ticks(', len(euraud_ticks), ')') for val in euraud_ticks[:10]: print(val) print('audusd_ticks(', len(audusd_ticks), ')') for val in audusd_ticks[:10]: print(val) print('eurusd_rates(', len(eurusd_rates), ')') for val in eurusd_rates[:10]: print(val) print('eurgbp_rates(', len(eurgbp_rates), ')') for val in eurgbp_rates[:10]: print(val) print('eurcad_rates(', len(eurcad_rates), ')') for val in eurcad_rates[:10]: print(val) #GRAFICI # creiamo un DataFrame ticks_frame = pd.DataFrame(euraud_ticks) # convertiamo i secondi nel datetime format ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s') # grafico plt.plot(ticks_frame['time'], ticks_frame['ask'], 'r-', label='ask') plt.plot(ticks_frame['time'], ticks_frame['bid'], 'b-', label='bid') plt.legend(loc='upper left') plt.title('EURAUD ticks') plt.show() Usa il trading algoritmico con l'apprendimento automatico in Python L'idea del machine learning Python nel trading algoritmico è uno degli argomenti più estesi di questo tempo. Qui discuteremo brevemente alcuni dei metodi che puoi applicare all'apprendimento automatico di Python per la tua attività di trading algoritmico. Creazione e backtesting di una strategia di trading SMA (Simple Moving Average). La Simple Moving Average (SMA) è il prezzo medio per un determinato periodo di tempo. Funziona come un'indicazione tecnica ed è ampiamente utilizzato per creare strategie di trading. Di solito, vengono calcolati due SMA (Shorter e Longer) per costruire una strategia di trading. Costruiremo una semplice strategia di crossover per consentire al computer di eseguire un'operazione quando la SMA calcola per un breve periodo e incrocia al di sopra del periodo più lungo. Condizione dichiarata: SE SMA(BREVE PERIODO) > SMA(LUNGO PERIODO) => ACQUISTA SE SMA(LUNGO PERIODO) > SMA(BREVE PERIODO) => VENDI Utilizzeremo la libreria Python Panda per i frame di dati, Richieste di chiamate API, NumPy per gli array e Matplotlib per creare grafici. Estrai dati dal cloud Innanzitutto, è necessario estrarre i dati storici di Microsoft utilizzando l'API del cloud IEX. Puoi usare il cloud che desideri; può variare da utente a utente. def get_historic_data(symbol): ticker = symbol iex_api_key = 'Tsk_30a2677082**********675d84baf94b' api_url = f'https://sandbox.iexapis.com/stable/stock/{ticker}/chart/max?token={iex_api_key}' df = requests.get(api_url).json() date = [] open = [] high = [] low = [] close = [] for i in range(len(df)): date.append(df[i]['date']) open.append(df[i]['open']) high.append(df[i]['high']) low.append(df[i]['low']) close.append(df[i]['close']) date_df = pd.DataFrame(date).rename(columns = {0:'date'}) open_df = pd.DataFrame(open).rename(columns = {0:'open'}) high_df = pd.DataFrame(high).rename(columns = {0:'high'}) low_df = pd.DataFrame(low).rename(columns = {0:'low'}) close_df = pd.DataFrame(close).rename(columns = {0:'close'}) frames = [date_df, open_df, high_df, low_df, close_df] df = pd.concat(frames, axis = 1, join = 'inner') return df msft = get_historic_data('MSFT') msft = msft.set_index('date') msft = msft[msft.index >= '2020-01-01'] msft.index = pd.to_datetime(msft.index) msft.to_csv('msft.csv') msft = pd.read_csv('msft.csv').set_index('date') msft.index = pd.to_datetime(msft.index) Calcolo SMA Ora calcoleremo due valori SMA, SMA 20 e SMA 50 e utilizzeremo questi due valori nel dataframe. def sma(data, n): sma = data.rolling(window = n).mean() return pd.DataFrame(sma) n = [20, 50] for i in n: msft[f'sma_{i}' ] = sma(msft['close'], i) msft.tail() Produzione Inoltre, se vuoi saperne di più sull'uso di Python e degli algoritmi di apprendimento automatico nel trading, in tal caso, dovresti esaminare questa implementazione di Perceptron multistrato e algoritmo di backpropagation in Python da una prospettiva diversa. Conclusione trading, Machine Learning e Python L'inaugurazione del trading algoritmico ha portato enormi cambiamenti nel settore finanziario. E ora, con la benedizione dell'intelligenza artificiale e dell'apprendimento automatico, ha aperto le porte a opportunità illimitate. Sebbene Python sia molto più semplice e pratico di altri linguaggi di programmazione, la maggior parte delle società commerciali e dei trader si concentra sulla propria attività utilizzando l'apprendimento automatico in Python.
- Etica nella scienza dei dati e corretto uso dei dati
I dati possono essere utilizzati per prendere decisioni e avere una grande influenza sulle aziende. Tuttavia, questa preziosa risorsa non è priva di inconvenienti. In che modo le aziende possono acquisire, conservare e utilizzare i dati in modo etico? Quali sono i diritti che devono essere tutelati? Alcune pratiche etiche devono essere seguite dal personale aziendale che si occupa della gestione dei dati. I dati sono informazioni personali di qualcuno e deve esserci un modo corretto per utilizzare i dati e mantenere la privacy. Dopo aver ricevuto molte domande dai nostri utenti e da diverse aziende abbiamo deciso di dedicare un articolo a questo argomento. Cos'è l'etica? Il termine “etica” deriva dal greco antico ἦθος (êthos), cioè «carattere», «comportamento», o, meno probabilmente, da ἔθος cioè «costume», «consuetudine», «abitudine». L'etica ci istruisce su cosa è buono e cosa è sbagliato. I filosofi hanno riflettuto a lungo su questo argomento cruciale e hanno molto da dire al riguardo. La maggior parte delle persone associa l'etica alla moralità: un senso naturale di ciò che è "buono". Come esseri umani, viviamo in una società e la società ha regole e regolamenti. Dobbiamo essere in grado di decidere cosa è giusto e cosa è sbagliato. L'etica si occupa di sentimenti, leggi e norme sociali che determinano il bene dal male. I nostri stili di vita devono essere ragionevoli e all'altezza degli standard della società. Perché l'etica nella scienza dei dati è importante? Oggi, la scienza dei dati ha un impatto significativo sul modo in cui le aziende vengono condotte in discipline diverse come scienze mediche, città intelligenti e trasporti. Che si tratti della protezione dei dati di identificazione personale, del pregiudizio implicito nel processo decisionale automatizzato, dell'illusione della libera scelta nella psicografia, degli impatti sociali dell'automazione o dell'apparente divorzio tra verità e fiducia nella comunicazione virtuale, i pericoli della scienza dei dati senza l'etica le considerazioni sono chiare come sempre. La necessità di concentrarsi sull'etica della scienza dei dati va oltre un bilancio di questi potenziali problemi perché le pratiche della scienza dei dati sfidano la nostra comprensione di cosa significhi essere umani. Gli algoritmi, se implementati correttamente, offrono un enorme potenziale di bene nel mondo. Quando li impieghiamo per eseguire lavori che in precedenza richiedevano una persona, i vantaggi possono essere enormi: risparmi sui costi, scalabilità, velocità, precisione e coerenza, solo per citarne alcuni. E poiché il sistema è più preciso e affidabile di un essere umano, i risultati sono più equilibrati e meno inclini al pregiudizio sociale. Viviamo tutti in un mondo digitale, in cui la nostra vita quotidiana dipende dalle applicazioni, gestite da aziende tecnologiche. Dobbiamo prendere un taxi, chiamiamo un Uber. Abbiamo bisogno di ordinare cibo, usiamo justeat o glovo e così via. Queste aziende hanno i nostri dati personali. Il nostro ID e-mail, numeri di telefono, indirizzo, cronologia degli acquisti, ecc. E così via. La protezione dei dati personali è quindi un aspetto importante ai giorni nostri. Forse nessun aspetto dell'etica della scienza dei dati ha ricevuto maggiore attenzione negli ultimi anni rispetto alla salvaguardia dei dati personali. Le nostre relazioni , le reti sociali ed economiche hanno subito una rivoluzione digitale, rivelando chi siamo, cosa crediamo e cosa facciamo. Chi regola e possiede i nostri Dati? Nel codificare parametri etici come : il diritto all'informazione il diritto all'opposizione il diritto all'accesso il diritto alla rettifica il diritto all'oblio questi quadri giuridici tentano di riequilibrare i rapporti di potere e influenza tra organizzazioni e individui. Le divisioni tra pubblico e privato, individui e società, e le risorse ricche e povere di risorse vengono ridefinite mentre i dati diventano la nuova valuta dell'economia internazionale. Quali diritti possono essere assegnati con autorizzazione espressa o implicita e chi è il titolare dei dati personali? In che misura le istituzioni governative e commerciali dovrebbero essere autorizzate a raccogliere e controllare enormi database di interazione umana? Quanto dovrebbero essere ritenuti responsabili questi titolari del trattamento e responsabili del trattamento per la perdita o l'abuso delle nostre informazioni personali? Etica della scienza dei dati Analisti, data scientist e professionisti delle tecnologie dell'informazione devono preoccuparsi dell'etica della scienza dei dati. Chiunque lavori con i dati deve comprendere i fondamenti. Chiunque abbia a che fare con qualsiasi tipo di dati deve segnalare eventuali casi di furto di dati, raccolta, conservazione, utilizzo di dati non etici, ecc. Ad esempio, dalla prima volta che un consumatore inserisce il proprio indirizzo e-mail sul tuo sito web fino al momento in cui acquista i tuoi beni, la tua organizzazione può raccogliere e conservare dati sui loro viaggi. Le persone nel team di marketing potrebbero avere a che fare con i dati. I dati della persona devono essere conservati. I dati protetti sono stati resi pubblici su Internet in passato, causando danni alle persone le cui informazioni sono state rese disponibili. Database mal configurati, spyware, furto o pubblicazione su un forum pubblico possono causare fughe di dati. Gli individui e le organizzazioni devono utilizzare pratiche informatiche sicure, condurre frequenti controlli di sistema e adottare politiche per affrontare la sicurezza dei computer e dei dati. Le aziende devono adottare misure di sicurezza informatica adeguate per prevenire la fuga di dati e informazioni. Questo è più importante per le banche e gli istituti finanziari che si occupano del denaro dei clienti. Le protezioni devono essere mantenute anche quando le apparecchiature vengono trasferite o smaltite, secondo le politiche. Alcune pratiche etiche della data science Privacy e Riservatezza dei Dati: I data scientist sono continuamente coinvolti nella produzione, nello sviluppo e nella ricezione di informazioni. I dati relativi a clienti affiliati, clienti, lavoratori o altre parti con cui i clienti hanno un accordo di riservatezza sono spesso inclusi in questa categoria. Quindi, indipendentemente dal tipo di informazioni sensibili, è responsabilità del data scientist proteggerle. Anche se un consumatore acconsente che la tua organizzazione raccolga, memorizzi e analizzi le proprie informazioni di identificazione personale (PII), ciò non significa che voglia che siano rese pubbliche. Le informazioni personali identificabili includono: numero di telefono indirizzo nome completo numero di carta così via. Per preservare la privacy delle persone, assicurati di conservare le informazioni in un database sicuro in modo che non finiscano nelle mani sbagliate. La protezione tramite password con doppia autenticazione e la crittografia dei file sono due soluzioni per la sicurezza dei dati che aiutano a salvaguardare la privacy. Proprietà dei dati: Uno dei concetti importanti dell'etica nella scienza dei dati è che l'individuo ha la proprietà dei dati. La raccolta dei dati personali di qualcuno senza il loro consenso è illegale e immorale. Di conseguenza, per acquisire i dati di qualcuno è necessario il consenso. Accordi scritti firmati, politiche sulla privacy digitale che richiedono agli utenti di accettare i termini e le condizioni di un'azienda e pop-up con caselle di controllo che consentono ai siti Web di tracciare il comportamento online degli utenti utilizzando i cookie sono tutti approcci tipici per ottenere il consenso. Per prevenire problemi etici e legali, non dare mai per scontato che un consumatore acconsenta alla raccolta dei suoi dati da parte dell'utente; chiedere sempre il permesso. Avere buone intenzioni: Le intenzioni di raccolta e analisi dei dati devono essere buone. I professionisti dei dati devono essere chiari su come e perché utilizzano i dati. Se un team sta raccogliendo dati sulle abitudini di spesa degli utenti, per realizzare un'app per gestire le spese, allora l'intenzione è buona. Trasparenza: Gli interessati hanno il diritto di sapere come intendi acquisire, conservare e utilizzare le loro informazioni personali, oltre a possederle. La trasparenza dovrebbe essere utilizzata durante l'acquisizione dei dati. È necessario creare una politica che spieghi come vengono utilizzati i cookie per tracciare l'attività dell'utente e come le informazioni raccolte vengono conservate in un database sicuro, nonché addestrare un algoritmo che offra un'esperienza online su misura. È diritto dell'utente avere accesso a queste informazioni in modo che possa scegliere se accettare o meno i cookie del proprio sito. Alcuni esempi di vita reale: OKCupid: Nel 2016, Emil Kirkegaard e Julius Daugbjerg Bjerrekr della Danimarca hanno condiviso un set di dati sull'Open Science Framework che includeva informazioni su oltre 70.000 membri del servizio di incontri online OkCupid. I ricercatori hanno raccolto informazioni dal sito di OkCupid, inclusi nomi utente (ma non nomi reali), età, sesso, religione e caratteristiche della personalità, nonché le risposte alle domande che il sito pone ai nuovi membri per aiutare a scoprire potenziali corrispondenze, per costruire il loro proprio set di dati. Le informazioni, raccolte tra novembre 2014 e marzo 2015, non sono anonime e sono piuttosto personali. L'unico motivo per cui i ricercatori non hanno condiviso le immagini degli utenti è che occuperebbe troppo spazio sul disco rigido, secondo i ricercatori. Chiunque abbia ripetuto un nome utente da un sito all'altro o abbia utilizzato un nome che potrebbe essere ricondotto a loro, potrebbe improvvisamente essere gravemente vulnerabile. I dati sono stati raschiati e caricati in violazione delle norme etiche di base osservate dagli scienziati sociali. Interrogati su Twitter, i ricercatori hanno affermato che i dati erano già pubblici perché erano stati inviati su OkCupid. Questo è stato un caso di comportamento non etico con i dati. Anche se i dati erano pubblici, raccoglierli e condividerli esplicitamente non era corretto. Violazione dei dati di Robinhood: La società americana di servizi finanziari Robinhood ha annunciato una violazione dei dati nel novembre 2021, che ha colpito oltre cinque milioni di utenti dell'app di trading. È stato utilizzato un sistema di assistenza clienti per ottenere indirizzi e-mail, nomi, numeri di telefono e altre informazioni. Secondo l'azienda, nessun numero di previdenza sociale è stato divulgato durante l'indagine. Conti bancari e carte di debito non erano inclusi. Questo è stato un caso di furto di dati e si è verificato a causa di problemi di sicurezza nell'archiviazione dei dati. Dovrebbero essere presi provvedimenti per prevenire tali casi. Data Science nella lotta al Covid-19: L'analisi delle epidemie, una metodologia di data science finalizzata a guidare la risposta alle epidemie, è aumentata in risposta alla crescente complessità dei dati sulle epidemie. Il governo sudcoreano ha utilizzato l'analisi in tempo reale per migliorare la progettazione del piano preventivo e la sorveglianza dei pazienti positivi al Covid. Incorpora i dati dei sistemi IoT e AI che sono alla base delle vere reti di città intelligenti, nonché i dati personali forniti dai pazienti confermati. Con l'uso dell'analisi dei big data, i ricercatori possono seguire i viaggi dei pazienti, identificare i loro contatti e anticipare la possibile entità dell'epidemia in un luogo specifico. Le informazioni vengono utilizzate anche per creare piani e istruzioni di prevenzione. Questo è un esempio di come i dati vengono utilizzati per un buon scopo. Conclusione: L'etica della scienza dei dati è un importante argomento di discussione nel mondo di oggi. Le organizzazioni e le aziende che utilizzano i dati e implementano la scienza dei dati devono seguire una serie di etica durante la gestione dei dati. Se utilizzati in modo etico, i dati possono aiutarti a prendere decisioni migliori e fare la differenza nel mondo.
- Differenze tra Analisi descrittiva, predittiva e prescrittiva che i data scientist devono conoscere
L'uso di metodi analitici ha acquisito molta importanza negli ultimi anni. La pratica di ottenere informazioni utili dai dati ha aiutato diverse aziende a migliorare le proprie prestazioni aziendali. Le analisi consentono alle aziende di ottenere un quadro chiaro degli eventi passati e del futuro delle loro prestazioni. Uno sguardo al futuro aiuta le aziende a prepararsi alla sfortuna (se presente) che sta per arrivare. Utilizzando l'analisi, le aziende possono trovare risposte a tre domande principali: "Cosa è successo" "Cosa sta accadendo" "Cosa accadrà" L'analisi non si limita solo a trarre informazioni dal passato, ma consente anche di prevedere i risultati futuri e ottimizzare le risorse aziendali. Di conseguenza, le forme più avanzate di analisi, ovvero predittiva e prescrittiva, hanno assunto maggiore importanza nel supportare le esigenze decisionali delle organizzazioni. In questo articolo, spieghremo le 3 principali forme di analisi che classificano tutte le forme di modelli analitici applicati in tutti i paesi. Secondo uno studio americano, le organizzazioni che si concentrano sull'automazione di base per espandere le proprie capacità di reporting possono migliorare il proprio ROI del 188%. Quindi, in linea di principio, quali sono i diversi tipi di analisi? 1. Analisi descrittiva Iniziamo con il tipo più elementare di analisi, ovvero l' analisi descrittiva . L'obiettivo dei modelli descrittivi è analizzare le tendenze storiche e individuare i modelli rilevanti per ottenere informazioni sul comportamento della popolazione. L'analisi descrittiva implica la ricerca di risposte a "cosa è successo?". È la forma di analisi più comunemente utilizzata dalle organizzazioni per il loro funzionamento quotidiano ed è generalmente la meno complessa. I modelli descrittivi utilizzano tecniche statistiche e matematiche di base per derivare indicatori chiave di prestazione che mettono in evidenza le tendenze storiche. Lo scopo principale del modello non è stimare un valore, ma ottenere informazioni sul comportamento sottostante. Gli strumenti comuni utilizzati per eseguire l'analisi descrittiva includono MS Excel, PowerBi e Tableu. Un tipico esempio nel settore bancario sarebbe la segmentazione della clientela. I dati storici vengono estratti per analizzare i modelli di spesa dei clienti e la quota di portafoglio per consentire un approccio mirato al marketing e alle vendite. Tali modelli sono strumenti potenti per profilare i clienti, ma sono limitati nella loro capacità predittiva rispetto al comportamento dei singoli membri della stessa popolazione. 2. Analisi predittiva L'analisi predittiva utilizza la modellazione statistica per determinare la probabilità che si verifichi un risultato futuro o una situazione. Implica la ricerca di risposte a "Cosa potrebbe accadere?". I modelli predittivi si basano su modelli descrittivi mentre vanno oltre l'utilizzo dei dati storici come base principale per il processo decisionale, spesso utilizzando dati strutturati e non strutturati provenienti da varie fonti. Consentono ai manager e data scientist di prendere decisioni informate fornendo un resoconto compressivo della probabilità che un evento si verifichi in futuro. Comprendono vari modelli statistici avanzati e concetti matematici sofisticati come foreste casuali, GBM, SVM, GLM, teoria dei giochi, ecc. Un modello predittivo si basa su un modello descrittivo per prevedere il comportamento futuro. Tuttavia, a differenza di un modello descrittivo che profila solo la popolazione, un modello predittivo si concentra sulla previsione del comportamento di un singolo cliente. Gli strumenti utilizzati per eseguire modelli predittivi variano in base alla natura della complessità del modello, tuttavia alcuni degli strumenti comunemente utilizzati sono RapidMiner, R, Python, SAS, Matlab, Dataiku DSS, e molti altri. Le risorse online sull'utilizzo di questi strumenti possono essere trovate su Coursera. Un tipico esempio nel settore bancario sarebbe l'analisi avanzata delle campagne. Può aiutare a prevedere la probabilità che un cliente risponda a una determinata offerta di marketing per migliorare il cross-selling e l'up-selling dei prodotti. Un altro esempio potrebbe essere la previsione della probabilità di frode sulle carte di credito. 3. Analisi prescrittiva L' analisi prescrittiva è il tipo più sofisticato di analisi che utilizza l'ottimizzazione e la simulazione stocastica per esplorare una serie di opzioni possibili e consigliare la migliore azione possibile per una determinata situazione. Implica la ricerca di risposte a "Cosa si dovrebbe fare?". I modelli prescrittivi vanno oltre i modelli descrittivi che affrontano solo ciò che sta accadendo e oltre i modelli predittivi che possono solo dire cosa accadrà, poiché continuano a consigliare cosa effettivamente dovrebbe essere fatto nel futuro previsto. Quantificano l'effetto delle azioni future sulle metriche aziendali chiave e suggeriscono l'azione più ottimale. I modelli prescrittivi sintetizzano i big data e le regole aziendali utilizzando algoritmi complessi per confrontare i probabili risultati di una serie di azioni e scegliere l'azione più ottimale per raggiungere gli obiettivi aziendali. I modelli prescrittivi più avanzati seguono un processo di simulazione in cui il modello apprende continuamente e automaticamente dai dati correnti per migliorare la propria intelligenza. Questi modelli sono in genere i più complessi in natura e quindi vengono utilizzati da alcune aziende progressiste e di grandi dimensioni, poiché sono difficili da gestire. Tuttavia, se implementati correttamente, possono avere un forte impatto sull'efficacia del processo decisionale di un'azienda e, di conseguenza, sui suoi profitti. Detto questo, i progressi tecnici come i super computer, il cloud computing, Hadoop HDFS, Spark, l'elaborazione in-database, l'architettura MPP, ecc. hanno reso molto più semplice l'implementazione di modelli prescrittivi complessi che utilizzano dati strutturati e non strutturati. Gli strumenti utilizzati per eseguire i modelli prescrittivi sono per lo più gli stessi dei modelli predittivi, tuttavia richiedono capacità avanzate di infrastruttura dei dati. Un esempio comune di modelli prescrittivi nel settore bancario al dettaglio è l'allocazione ottimale del personale di vendita tra le varie filiali della banca per massimizzare l'acquisizione di nuovi clienti. Unendo le informazioni di geolocalizzazione con le prestazioni e il potenziale di ogni filiale, il modello può prescrivere l'allocazione ottimale del personale di vendita in tutte le filiali. Un approccio di modellazione prescrittiva più sofisticato viene utilizzato nei sistemi di tariffazione dei biglietti aerei per ottimizzare il prezzo dei biglietti aerei in base a fattori di viaggio, livelli di domanda, tempi di acquisto, ecc. per massimizzare i margini di profitto, ma allo stesso tempo non scoraggiare le vendite. Secondo una ricerca, circa il 10% delle organizzazioni utilizza attualmente una qualche forma di analisi prescrittiva, questa cifra è aumentata dal 3% nel 2014 e dovrebbe salire al 35% entro il 2025. Fattori come massicci investimenti nell'analisi predittiva, espansione delle capacità IoT che l'analisi prescrittiva complementare sta guidando questa crescita e ampliando la portata dei modelli prescrittivi. Conclusione Differenze tra Analisi descrittiva, predittiva e prescrittiva In questo articolo, abbiamo discusso 3 diverse versioni di analisi utilizzate oggi in tutti i settori. Questi sono gli elementi costitutivi del settore dell'analisi in tutto il mondo. È corretto affermare che tutti i modelli, gli sviluppi e le scoperte realizzati utilizzando i dati possono essere classificati in una di queste tre categorie. Questo articolo ha lo scopo di aiutare le persone che non conoscono l'analisi o intendono usare l'analisi per ottenere una visione più chiara e supportata da numeri. Condividi l'articolo :)














