Risultati Ricerca Intelligenza Artificiale Italia
331 risultati trovati per "ChatGPT business"
- Dove scaricare modelli di intelligenza artificiale pre-addestrati
Sapevi che è possibile scaricare dei modelli di IA pre-addestrati e pronti all'uso? In questo articolo ti elencheremo le principali piattaforme dove potrai scaricare modelli già allenati, cosi' da risparmiare tempo e denaro per il tuo prossimo progetto. La comunity dell'IA condivide generosamente codice, architetture di modelli e persino modelli addestrati su grandi set di dati. Siamo sulle spalle dei giganti, motivo per cui l'industria sta adottando così ampiamente l'IA. Quando iniziamo un progetto di intelligenza artificiale, tentiamo prima di cercare dei modelli che risolvono parzialmente il nostro problema. Supponiamo che tu voglia creare un'applicazione di sicurezza che cerchi gli esseri umani in aree riservate. Innanzitutto, controlla se un modello di rilevamento dei pedoni disponibile pubblicamente funziona per te immediatamente. In tal caso, non è necessario addestrare un nuovo modello. In caso contrario, la sperimentazione di modelli disponibili pubblicamente ti darà un'idea di quale architettura scegliere per la messa a punto o il trasferimento dell'apprendimento. Cosa è un modello pre-addestrato? Un modello pre-addestrato si riferisce a un modello o a una rete neurale salvata creata da qualcun altro e addestrata su un set di dati di grandi dimensioni per risolvere un problema simile. I team di intelligenza artificiale possono utilizzare un modello pre-addestrato come punto di partenza, invece di creare un modello da zero. Esempi di modelli linguistici pre-addestrati su larga scala di successo sono le rappresentazioni di codificatori bidirezionali di Transformers (BERT) e la serie Generative Pre-trained Transformer (GPT-n). Perchè usare un modello pre-addestrato? Sembra che ogni anno i modelli di apprendimento automatico raggiungano una maggiore precisione in tutti i tipi di attività e domini, dalla visione artificiale all'elaborazione del linguaggio naturale (PNL). Per fare ciò, scienziati e ingegneri che lavorano in aziende e istituti di ricerca modificano i modelli architettura, che di solito li rende più complessi e li addestra anche con quantità impressionanti di dati. Ad esempio, l'ultimo modello NLP di OpenAI, GPT-3, ha 175 miliardi di parametri e richiederebbe circa 355 anni per addestrarlo su una singola macchina. Quindi ammenochè non vuoi lasciare in eredità a un tuo pronipote un modello che ancora dovrà finire il suo addestramento dovrai optare per altre soluzioni :) . Ma anche addestrare modelli più semplici può essere difficile: ottenere dati sufficienti per ottenere una buona prestazione è solitamente una grande sfida. Ciò rende molto difficile, se non impossibile, per gli individui e anche le piccole aziende utilizzare questi modelli ML se devono addestrarli da zero. Fortunatamente, possiamo risolvere questo problema utilizzando modelli pre-addestrati. Migliori siti per scaricare modelli pre-addestrati : 1. Papers With Code La missione di Papers With Code è creare una risorsa gratuita e aperta con documenti, codice, set di dati, metodi e tabelle di valutazione di Machine Learning. La piattaforma viene aggiornata regolarmente con gli ultimi documenti e risorse sulla visione artificiale e altri sottocampi dell'IA. 1.1 Utilizzare i filtri per restringere i risultati di ricerca Con un ampio catalogo di attività di Machine Learning con centinaia di documenti di ricerca e implementazioni di codice, avrai un mare di informazioni da vagliare, ma le ponderate funzionalità di filtro disponibili sulla piattaforma vengono in soccorso. 1.2 Parametri di riferimento Per un'attività particolare, puoi visualizzare tutti i modelli all'avanguardia che funzionano meglio sui benchmark più diffusi per quell'attività. Inoltre, puoi scegliere di visualizzare gli invii in base al numero di voti positivi ricevuti dalla community sotto forma di stelle. 1.3 Set di dati Oltre a questo, Papers with Code ha anche una raccolta di popolari dataset pubblici disponibili in un'unica posizione. Utilizzando Papers With Code, puoi confrontare un gran numero di soluzioni per trovare quella che fa per te. 2. ModelZoo.co Creato da Jing Yu Koh, un ingegnere ricercatore di Google, Model Zoo cura e fornisce una piattaforma per i ricercatori di deep learning per trovare rapidamente modelli pre-addestrati per varie piattaforme e attività. Il sito viene aggiornato regolarmente e fornisce funzionalità di filtraggio per trovare i modelli adatti in base al framework di machine learning che prevedi di utilizzare o alla categoria dell'attività in questione. Le due categorie più utili per noi sono Visione computerizzata Modelli generativi 3. Open Model Zoo Il toolkit Open Model Zoo for OpenVINO™ offre un'ampia varietà di modelli di deep learning pre-addestrati gratuiti e altamente ottimizzati che funzionano a una velocità incredibile su CPU, GPU e VPU Intel. Questo repository contiene oltre 200 modelli di rete neurale per attività tra cui rilevamento di oggetti, classificazione, segmentazione delle immagini, riconoscimento della grafia, sintesi vocale, stima della posa e altro. Ci sono due tipi di modelli. Modelli pre-addestrati di Intel : il team di Intel ha addestrato questi modelli e li ha ottimizzati per l'esecuzione con OpenVINO. Modelli pubblici pre-addestrati : questi sono modelli creati dalla comunità di intelligenza artificiale e possono essere facilmente convertiti in formato OpenVINO utilizzando OpenVINO Model Optimizer. Controlla sempre la pagina di supporto del dispositivo per assicurarti che il modello sia compatibile con il dispositivo su cui desideri eseguirlo. Dai un'occhiata alla nostra serie su OpenVINO per conoscere i dettagli. L'Open Model Zoo ospita anche un carico di applicazioni demo con istruzioni per eseguirle. Puoi utilizzare queste applicazioni come modello per creare le tue applicazioni. Puoi anche utilizzare Model Analyzer per ottenere maggiori informazioni su un modello come consumo di memoria, scarsità, Gflop e così via. Tieni presente che Model Analyzer funziona solo con modelli in formato IR (Intermediate Representation) . E se sei nuovo con OpenVino Toolkit, potrebbe valere la pena dare un'occhiata al repository openvinotoolkit/openvino_notebooks . Contiene taccuini jupyter pronti per l'uso per aiutarti ad aggiornarti su come lavorare con il toolkit OpenVino e i modelli disponibili nello zoo. Inoltre, fornisce anche strumenti per eseguire attività sul modello, come download, conversione e quantizzazione. 4. TensorFlow Model Garden TensorFlow è una piattaforma open source end-to-end per Machine Learning e probabilmente il framework ML più popolare. Il TensorFlow Model Garden è un repository contenente molti modelli SOTA (state-of-the-art). Ci sono tre tipi di modelli. Ufficiale : i modelli di questa collezione vengono mantenuti, testati e aggiornati con l'ultima API TensorFlow. Ricerca : i modelli in questa raccolta possono utilizzare Tensorflow 1 o 2 e sono mantenuti dai ricercatori. Comunità : questa è una raccolta di collegamenti a modelli gestiti dalla comunità. Lo scopo di questo repository è fornire gli elementi costitutivi per addestrare i propri modelli basandosi sulle configurazioni predefinite, sui set di dati e sulla messa a punto dei checkpoint dei modelli disponibili. Per aiutarti a riprodurre i risultati dell'allenamento, sono stati forniti anche i registri dell'allenamento per i modelli disponibili. Gli utenti di TensorFlow possono sfruttare i modelli forniti e trattarli come riferimenti per addestrare il proprio modello o perfezionare i modelli dai checkpoint disponibili. 5. TensorFlow Hub Dalla classificazione delle immagini, agli incorporamenti di testo, al riconoscimento di azioni audio e video, TensorFlow Hub è uno spazio in cui è possibile sfogliare modelli e set di dati addestrati dall'intero ecosistema TensorFlow. A differenza di TensorFlow Model Garden, i modelli disponibili su TensorFlow Hub sono pronti per l'uso e destinati ad essere utilizzati come scatole nere con ingressi e uscite impostati. Se riesci a trovare un modello adatto alle tue esigenze, puoi usarlo! Puoi scoprire e scaricare centinaia di modelli di machine learning preparati per la distribuzione e addestrati pubblicati da risorse rinomate. Tutti i dettagli sulla distribuzione vengono forniti per i modelli come i formati di input e output, il set di dati utilizzato e le metriche delle prestazioni previste per aiutarti a scegliere i modelli migliori per le tue attività. Per alcuni modelli sono disponibili anche quaderni di esempio ed esperienze Web interattive per semplificare il lavoro. I formati comuni dei modelli disponibili sono i formati SavedModel, TFLite o TF.js che possono essere implementati direttamente nel codice dalla loro libreria tensorflow_hub disponibile . Ti consente di scaricare e utilizzare i modelli disponibili da TensorFlow Hub nel tuo programma TensorFlow con una quantità minima di codice. TensorFlow Hub è aperto ai contributi della community, quindi possiamo essere certi che la raccolta di modelli è destinata a crescere e che saranno disponibili altri modelli a nostra disposizione. 6. Modelli MediaPipe MediaPipe è un framework di Machine Learning open source e multipiattaforma sviluppato dai ricercatori di Google. Fornisce soluzioni ML personalizzabili. Sebbene il progetto Mediapipe sia ancora nella fase Alpha, le sue soluzioni sono già state implementate in molte applicazioni quotidiane che utilizziamo. Le "foto in movimento" di Google e la funzione "sfocatura della privacy" di Youtube sono esempi di questo tipo. Oltre a prestazioni leggere e incredibilmente veloci, MediaPipe supporta la compatibilità multipiattaforma. L'idea è quella di costruire un modello ML una volta e distribuirlo su piattaforme e dispositivi diversi con risultati riproducibili. Supporta piattaforme Python, C, Javascript, Android e IOS. La collezione Medipipe Models fornisce modelli di percezione pronti all'uso per diversi compiti, ad esempio : Le soluzioni più popolari disponibili sono Face mesh (modello face landmark), Pose Detection , Hair Segmentation , KNIFT (feature matching), ecc. Per ciascuno dei modelli disponibili vengono fornite schede modello, contenenti tutti i dettagli relativi a quel modello. Mediapipe fornisce anche un visualizzatore di modelli disponibile online, che aiuta a comprendere il comportamento generale delle loro pipeline di inferenza di machine learning. Di seguito è riportata la struttura del grafico del modello Face Detection disponibile. Con le prestazioni Fast e la compatibilità hardware che offre, Mediapipe può essere una buona soluzione per la maggior parte delle soluzioni di visione in tempo reale. 7. Fantastici modelli CoreML La libreria CoreML di Apple consente agli sviluppatori iOS, macOS, tvOS o watchOS di creare applicazioni divertenti ed entusiasmanti che sfruttano i poteri dell'IA. È in circolazione da iOS 11 ed è incorporato in molte delle applicazioni imminenti in una forma o nell'altra. Il repository Awesome-CoreML-Models contiene una raccolta di modelli di machine learning supportati dalla libreria CoreML di Apple. I modelli sono disponibili nel formato CoreML e non richiedono post-elaborazione o conversione in un'applicazione basata su CoreML. Oltre ai modelli disponibili, il numero di formati di modello può essere convertito nel formato coreML. I formati supportati includono Tensorflow, Caffe, Keras, XGBoost, Scikit-learn, MXNet, LibSVM, Torch7, ecc. 8. Jetson Model Zoo Jetson, la scheda informatica incorporata di Nvidia, è una scelta popolare nella comunità della piattaforma embedded per l'implementazione di applicazioni di intelligenza artificiale. Jetson può eseguire varie reti avanzate, comprese le versioni native complete di framework ML popolari come TensorFlow, PyTorch, Caffe/Caffe2, Keras, MXNet e altri. Jetson Model Zoo contiene vari modelli DNN per l'inferenza su Nvidia Jetson con supporto per TensorRT . Include i collegamenti agli esempi di codice con il modello e l'origine originale del modello. Lo zoo del modello offre anche una panoramica dei benchmark di inferenza di diversi modelli testati su Nvidia Jetson rispetto ad altre schede di sviluppo integrate popolari come Raspberry Pi, Intel Neural Compute Stick e Google Edge TPU Dev Board. Considerando che Jetson è una delle piattaforme integrate più potenti, Jetson Model Zoo è una buona risorsa per la distribuzione di qualsiasi applicazione incorporata. 9. PINTO Model Zoo Il PINTO Model Zoo è stato creato da Katsuya Hyodo, un programmatore e membro del programma Intel Software Innovator. È un repository che condivide i risultati di ottimizzazione dei modelli addestrati generati da Tensorflow. Lo zoo contiene un'enorme quantità di 252 modelli ottimizzati che coprono un'ampia gamma di domini di apprendimento automatico. I modelli forniti sono stati ottimizzati utilizzando varie tecniche come la quantizzazione post-allenamento (quantizzazione del peso, quantizzazione intera, quantizzazione intera intera, quantizzazione Float16) e training consapevole della quantizzazione. I modelli sono disponibili per molte piattaforme diverse come TensorFlow Lite, OpenVINO, CoreML, TensorFlow.js, TF-TRT, MediaPipe, ONNX. Pinto Model Zoo è la risorsa ideale se desideri versioni ottimizzate dei più diffusi modelli ML. 10. ONNX Model Zoo L' ONNX Model Zoo è una raccolta di modelli pre-addestrati e all'avanguardia nel formato ONNX. Open Neural Network Exchange (ONNX) è un formato standard aperto per rappresentare i modelli di apprendimento automatico forniti dai membri della comunità. Offre il vantaggio dell'interoperabilità e consente di utilizzare il framework preferito con il motore di inferenza scelto. Puoi pensarlo come un linguaggio comune di modelli per tutti i framework ML popolari per parlare tra loro. Contiene modelli per una serie di attività diverse in diversi domini: Vision Classificazione delle immagini Rilevamento di oggetti e segmentazione dell'immagine Analisi del corpo, del viso e dei gesti Manipolazione dell'immagine Lingua Comprensione della macchina Traduzione automatica Modellazione del linguaggio Altro Risposte alle domande visive e dialogo Elaborazione vocale e audio Altri modelli interessanti Ad accompagnare ogni modello ci sono i notebook Jupyter per l'addestramento del modello e l'esecuzione dell'inferenza con il modello addestrato. I taccuini sono scritti in Python e includono collegamenti al set di dati di addestramento e riferimenti al documento originale che descrive l'architettura del modello. 11. Modelplace.AI Modelplace.AI è un mercato per modelli di apprendimento automatico e una piattaforma per la comunità per condividere i propri modelli personalizzati. Ha una collezione crescente di modelli per varie attività di visione artificiale, che si tratti di classificazione, rilevamento di oggetti, stima della posa, segmentazione o rilevamento del testo. 11.1 Interfaccia Web per provare i modelli senza scaricarli Un fattore significativo che distingue Modelplace.AI dagli altri repository di modelli è che puoi utilizzare la loro interfaccia web per provare il modello di tuo gradimento con le tue immagini personalizzate. Puoi anche confrontare modelli che svolgono attività simili tra loro su benchmark standard . 11.2 API cloud Modelplace.AI fornisce una comoda API Cloud che puoi utilizzare nella tua applicazione desktop, mobile o edge. 11.3 Importa il modello con Python In alternativa, puoi scegliere di scaricare la versione ottimizzata di quel modello a seconda della piattaforma su cui desideri implementarlo. Per l'ambiente Python, impacchettano i modelli come un file ruota Python in modo da poter far funzionare il modello rapidamente con solo poche righe di codice. Conclusione sui modelli di intelligenza artificiale pre-addestrati Come avrai notato, la maggior parte di questi siti ti reindirizza ai repository github. E Github è, in effetti, il più grande repository di modelli pre-addestrati che puoi trovare. Ciò significa che puoi sempre cercare modelli pre-addestrati su Github e potresti trovare molte opzioni tra cui scegliere. Ovviamente puoi trovare anche molti altri siti ma la qualità dei modelli non è garantita. Il valore aggiunto dei precedenti siti Web è che hanno già effettuato una selezione dei repository Github, quindi se decidi di cercare direttamente in Github, dovrai essere paziente per trovare quello che stai cercando. Come consiglio, controlla sempre la data dell'ultimo commit nel progetto per vedere quanto è ben mantenuto il progetto e controlla anche la licenza con cui è stato pubblicato il progetto. Inizia a sfruttare queste risorse ogni volta che avvii un progetto di Intelligenza Artificiale e controlla se esiste un modello simile che puoi utilizzare o su cui puoi costruire, invece di addestrare i tuoi modelli da zero per accelerare il processo di sviluppo e distribuzione.
- Come Generare dataset con python e scikit-learn
I dataset di test sono piccoli set di dati inventati che consentono di testare un algoritmo di apprendimento automatico. I dati dei set di dati di test hanno proprietà ben definite, come linearità o non linearità, che consentono di esplorare il comportamento dell'algoritmo specifico. La libreria Python scikit-learn fornisce una suite di funzioni per la generazione di campioni da problemi di test configurabili per la regressione e la classificazione. In questo tutorial scoprirai problemi di test e come usarli in Python con scikit-learn. Dopo aver completato questo tutorial, saprai: Come generare problemi di test di previsione di classificazione multi-classe. Come generare problemi di test di previsione della classificazione binaria. Come generare problemi di test di predizione di regressione lineare. Prerequisiti : Se non sai cosa è il Machine 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 perchè utilizziamo python, clicca qui Non hai un ambiente di sviluppo ? clicca qui Generare dataset con python Un problema durante lo sviluppo e l'implementazione di algoritmi di apprendimento automatico è come sapere se li hai implementati correttamente. I set di dati di test sono piccoli problemi inventati che consentono di testare ed eseguire il debug degli algoritmi. Sono anche utili per comprendere meglio il comportamento degli algoritmi in risposta alle modifiche degli iperparametri. Di seguito sono riportate alcune proprietà dei set di dati di test: Possono essere generati rapidamente e facilmente. Contengono risultati "conosciuti" o "compresi" per il confronto con le previsioni. Sono stocastici, consentendo variazioni casuali sullo stesso problema ogni volta che vengono generati. Sono piccoli e facilmente visualizzabili in due dimensioni. Possono essere ridimensionati banalmente. Consiglio di utilizzare i set di dati di test quando si inizia con un nuovo algoritmo di apprendimento automatico o quando si sviluppa un nuovo cablaggio di test. scikit-learn è una libreria Python per l'apprendimento automatico che fornisce funzioni per generare una suite di problemi di test. In questo tutorial, esamineremo alcuni esempi di generazione di problemi di test per algoritmi di classificazione e regressione. Generare dataset di classificazione La classificazione è il problema dell'assegnazione di etichette alle osservazioni. In questa sezione esamineremo tre problemi di classificazione: blob, lune e cerchi. Generare dataset di classificazione La funzione make_blobs() può essere utilizzata per generare blob di punti con una distribuzione gaussiana. Puoi controllare quanti BLOB generare e il numero di campioni da generare, oltre a una miriade di altre proprietà. Il problema è adatto per problemi di classificazione lineare data la natura linearmente separabile dei blob. L'esempio seguente genera un set di dati 2D di campioni con tre BLOB come problema di previsione della classificazione multi-classe. Ogni osservazione ha due input e 0, 1 o 2 valori di classe. # Genera un dataset per la classificazione 2d X, y = make_blobs(n_samples=100, centers=3, n_features=2) L'esempio completo è elencato di seguito. from sklearn.datasets import make_blobs from matplotlib import pyplot from pandas import DataFrame # Genera un dataset per la classificazione 2d X, y = make_blobs(n_samples=100, centers=3, n_features=2) # Creiamo uno scatter plot per il valore della classe df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y)) colors = {0:'red', 1:'blue', 2:'green'} fig, ax = pyplot.subplots() grouped = df.groupby('label') for key, group in grouped: group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key]) pyplot.show() L'esecuzione dell'esempio genera gli input e gli output per il problema e quindi crea un pratico grafico 2D che mostra i punti per le diverse classi utilizzando colori diversi. Nota, il tuo set di dati specifico e la trama risultante varieranno data la natura stocastica del generatore di dati. Questa è una funzionalità, non un bug. Useremo questa stessa struttura di esempio per i seguenti esempi. Generare dataset di classificazione ( lune ) La funzione make_moons() è per la classificazione binaria e genererà uno schema di turbolenza o due lune. Puoi controllare quanto sono rumorose le forme della luna e il numero di campioni da generare. Questo problema di test è adatto per algoritmi in grado di apprendere limiti di classe non lineari. L'esempio seguente genera un set di dati lunare con rumore moderato. # Genera un dataset per la classificazione 2d X, y = make_moons(n_samples=100, noise=0.1) L'esempio completo è elencato di seguito. from sklearn.datasets import make_moons from matplotlib import pyplot from pandas import DataFrame # Genera un dataset per la classificazione 2d X, y = make_moons(n_samples=100, noise=0.1) # Creiamo uno scatter plot per il valore della classe df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y)) colors = {0:'red', 1:'blue'} fig, ax = pyplot.subplots() grouped = df.groupby('label') for key, group in grouped: group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key]) pyplot.show() L'esecuzione dell'esempio genera e traccia il set di dati per la revisione, colorando ancora i campioni in base alla classe assegnata. Generare dataset di classificazione ( cerchi ) La funzione make_circles() genera un problema di classificazione binaria con set di dati che rientrano in cerchi concentrici. Ancora una volta, come con il problema del test delle lune, puoi controllare la quantità di rumore nelle forme. Questo problema di test è adatto per algoritmi in grado di apprendere varietà non lineari complesse. L'esempio seguente genera un set di dati circles con un po' di rumore. # Genera un dataset per la classificazione 2d X, y = make_circles(n_samples=100, noise=0.05) L'esempio completo è elencato di seguito. from sklearn.datasets import make_circles from matplotlib import pyplot from pandas import DataFrame # Genera un dataset per la classificazione 2d X, y = make_circles(n_samples=100, noise=0.05) # Creiamo uno scatter plotordinato per il valore della classe df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y)) colors = {0:'red', 1:'blue'} fig, ax = pyplot.subplots() grouped = df.groupby('label') for key, group in grouped: group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key]) pyplot.show() L'esecuzione dell'esempio genera e traccia il set di dati per la revisione. Generare dataset di regressione La regressione è il problema di prevedere una quantità data un'osservazione. La funzione make_regression() creerà un set di dati con una relazione lineare tra input e output. Puoi configurare il numero di campioni, il numero di funzioni di input, il livello di rumore e molto altro. Questo set di dati è adatto per algoritmi in grado di apprendere una funzione di regressione lineare. L'esempio seguente genererà 100 esempi con una funzione di input e una funzione di output con un rumore modesto. # Generiamo un Dataset per la regressione ( regression dataset ) X, y = make_regression(n_samples=100, n_features=1, noise=0.1) L'esempio completo è elencato di seguito. from sklearn.datasets import make_regression from matplotlib import pyplot # Generiamo un Dataset per la regressione ( regression dataset ) X, y = make_regression(n_samples=100, n_features=1, noise=0.1) # Creiamo il dataset del nostro set di dati pyplot.scatter(X,y) pyplot.show() L'esecuzione dell'esempio genererà i dati e traccia la relazione X e y, che, dato che è lineare, è piuttosto noiosa. Estensioni Questa sezione elenca alcune idee per estendere il tutorial che potresti voler esplorare. Confronta algoritmi . Seleziona un problema di test e confronta una suite di algoritmi sul problema e segnala le prestazioni. Problemi aggiuntivi . La libreria fornisce una suite di problemi di test aggiuntivi; scrivi un esempio di codice per ciascuno per dimostrare come funzionano. Se esplori una di queste estensioni, ci piacerebbe saperlo. Magari faccelo sapere nei commenti. Ulteriori letture Questa sezione fornisce ulteriori risorse sull'argomento se stai cercando di approfondire. Feature Engineering e Feature Selection per Principianti e non Come preparare i dati per il Machine Learning Come Analizzare Un Dataset in Solo 5 Passaggi Cosa è un Dataset e a cosa serve Dove trovare i migliori Dataset per esercitarsi Manipolazione Dati con Python e Pandas Cosa hai imparato ? In questo tutorial, hai scoperto problemi di test e come usarli in Python con scikit-learn. Nello specifico hai imparato: Come generare dataset di test di previsione di classificazione multi-classe. Come generare dataset di test di previsione della classificazione binaria. Come generare dataset di test di predizione di regressione lineare. Hai domande? Fai pure le tue domande nei commenti qui sotto e faremo del nostro meglio per rispondere.
- PyTorch vs TensorFlow quale è meglio per creare modelli di deep learning
In questo articolo ti guideremo e confronteremo l'usabilità del codice e la facilità d'uso di TensorFlow e PyTorch sul set di dati MNIST più utilizzato per classificare le cifre scritte a mano. Due delle librerie di deep learning basate su Python più popolari sono PyTorch e TensorFlow. Potrebbe essere difficile per un professionista del machine learning alle prime armi decidere quale utilizzare quando si lavora con un modello di deep learning. Potresti essere completamente inconsapevole delle distinzioni, rendendo impossibile per te prendere una decisione informata. Esamineremo alcune di queste differenze nella pratica in questo articolo creando un classificatore utilizzando entrambi i framework per la stessa risoluzione dei problemi. Infine, concluderemo come i modelli simili definiti per affrontare lo stesso problema ma che utilizzano infrastrutture diverse differiscono nei risultati. I punti principali da trattare in questo articolo sono elencati di seguito. Indice Articolo Informazioni sui dati delle cifre MNIST Breve introduzione su TensorFlow Breve introduzione su PyTorch Creazione di un modello di deep learning per la classificazione delle immagini Costruzione di modelli con TensorFlow Costruzione di modelli con PyTorch Confrontiamo le prestazioni Discutiamo prima il set di dati MNIST. Informazioni sui dati delle cifre MNIST Il set di dati Modified National Institute of Standards and Technology è l'acronimo di set di dati MNIST . È una raccolta di 60.000 piccole immagini quadrate in scala di grigi di singole cifre scritte a mano che vanno da 0 a 9. L'obiettivo è ordinare un'immagine di una cifra scritta a mano in una delle dieci classi che rappresentano valori interi che vanno da 0 a 9, inclusi. È un set di dati ampiamente utilizzato e ben compreso che è stato risolto per la maggior parte. Le reti neurali convoluzionali di deep learning sono i modelli con le prestazioni migliori, con un'accuratezza di classificazione di oltre il 99% e un tasso di errore compreso tra lo 0,4% e lo 0,2% sul set di dati del test di tenuta. Gli esempi riportati di seguito provengono dal set di dati di addestramento delle cifre MNIST caricate dall'API del set di dati Tensorflow. Breve introduzione su TensorFlow Google ha sviluppato TensorFlow, che è stato reso open source nel 2015. Si è evoluto dal software di apprendimento automatico interno di Google, che è stato rifattorizzato e ottimizzato per l'uso in produzione. Il termine "TensorFlow" si riferisce al modo in cui i dati sono organizzati ed elaborati. Un tensore è la struttura dati più basilare sia in TensorFlow che in PyTorch. Quando usi TensorFlow, crei un grafico del flusso di dati con stato, simile a un diagramma di flusso che ricorda gli eventi passati, per eseguire operazioni sui dati in questi tensori. TensorFlow è noto per essere una libreria di deep learning ad alte prestazioni. Ha una base di utenti ampia e attiva, oltre a una pletora di modelli, strumenti e piattaforme di formazione, distribuzione e servizio ufficiali e di terze parti. Breve introduzione su PyTorch PyTorch è uno dei framework di deep learning più recenti, sviluppato dal team di Facebook e rilasciato su GitHub nel 2017. PyTorch sta guadagnando popolarità grazie alla sua facilità d'uso, semplicità, grafico computazionale dinamico e utilizzo efficiente della memoria. È imperativo, il che significa che viene eseguito immediatamente e l'utente può testarlo per vedere se funziona prima di scrivere l'intero codice. Possiamo scrivere una sezione di codice ed eseguirla in tempo reale perché ha un'implementazione Python integrata per fornire compatibilità come piattaforma di deep learning. Ha rapidamente guadagnato popolarità grazie alla sua interfaccia intuitiva, spingendo il team di Tensorflow a incorporare le sue funzionalità più popolari in Tensorflow 2.0. Creazione di un modello di deep learning per la classificazione delle immagini In questa sezione, confronteremo l'usabilità del codice e la facilità d'uso di TensorFlow e PyTorch sul set di dati MNIST più utilizzato per classificare le cifre scritte a mano. Utilizzando entrambi i framework verificheremo le procedure minime da eseguire per avere un modello di classificazione adeguato. In entrambi i passaggi del modello da eseguire sono il caricamento dei dati, la preelaborazione, la creazione del modello, l'addestramento e la visualizzazione del risultato. Per entrambi i modelli, ho cercato di mantenere i livelli e le configurazioni di iperparametri uguali tra loro. Quindi ora iniziamo prima con Tensorflow. Creare modelli di deep learning con TensorFlow Costruiamo un modello di rete neurale convoluzionale per la classificazione delle immagini in TensorFlow. import tensorflow from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical from tensorflow.keras.layers import Conv2D, Flatten, Dense, MaxPooling2D from tensorflow.keras.models import Sequential import matplotlib.pyplot as plt Carica e preelabora i dati. Qui la preelaborazione non è altro che rimodellare le immagini da 28 x 28 a 28 x 28 x 1 i, abbiamo aggiunto il canale del colore e 1 indica il canale del grigio. Successivamente, abbiamo creato una rappresentazione binaria di ciascuna classe e, infine, abbiamo ridimensionato tutti i valori dei pixel. # Rimodelliamo e codifichiamo con onehot x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) x_test = x_test.reshape(x_test.shape[0], 28, 28, 1) y_train = to_categorical(y_train) y_test = to_categorical(y_test) # scaling x_train = x_train.astype('float32') x_test = x_test.astype('float32') x_train = x_train / 255.0 x_test = x_test / 255.0 Successivamente, costruiremo un modello. Questo modello sarà composto da 2 strati convoluzionali seguiti da uno strato di pooling e un classificatore Dense. La discesa del gradiente stocastico viene utilizzata come funzione di ottimizzazione con un tasso di apprendimento di 0,01 e l'entropia incrociata categoriale come funzione di perdita, il modello viene addestrato per 5 epoche. E questo viene mantenuto anche nel modello Pytorch. model = Sequential() model.add(Conv2D(32, (3,3), input_shape = (28,28,1), activation='relu')) model.add(Conv2D(64,(3,3), activation='relu')) model.add(MaxPooling2D((2,2))) model.add(Flatten()) model.add(Dense(1024, activation='relu')) model.add(Dense(10, activation='softmax')) # Compiliamo model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy']) # Alleniamo history = model.fit(x_train, y_train, validation_split=0.3, epochs=5) Fino a questo, questo è tutto il lavoro minimo richiesto per costruire un classificatore di immagini usando TensorFlow. Creare modelli di deep learning con Pytorch Costruiamo un modello di rete neurale convoluzionale per la classificazione delle immagini in PyTorch. #importiamo le librerie import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torchvision import datasets, transforms # preprocessiamo transform = transforms.Compose([ transforms.Resize((8, 8)), transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) # carichiamo i dati train_dataset = datasets.MNIST( 'data', train=True, download=True, transform=transform) test_dataset = datasets.MNIST( 'data', train=False, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=512) test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=512) # Costruisci un modello class CNNModel(nn.Module): def __init__(self): super(CNNModel, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.fc = nn.Linear(1024, 10) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = F.max_pool2d(x, 1) x = torch.flatten(x, 1) x = self.fc(x) output = F.log_softmax(x, dim=1) return output net = CNNModel() # Compiliamo optimizer = optim.SGD(net.parameters(), lr=0.01) criterion = nn.CrossEntropyLoss() Dopodiché, durante la fase di addestramento, dobbiamo creare un ciclo che ripercorre le nostre epoche e lotti. Elaboreremo le nostre immagini di conseguenza e utilizzeremo il passaggio in avanti per calcolare la nostra perdita. Confrontiamo le prestazioni Dai due grafici precedenti, la curva del modello TensorFlow sembra ripida e dopo la 3a epoca, la perdita sul set di convalida sembra aumentare. In breve, possiamo dire che la procedura di apprendimento nel modello TensorFlow è di natura ripida e possiamo aspettarci molti compromessi. Mentre nel modello PyTorch, anche la procedura di costruzione del modello sembra complessa, l'addestramento e la perdita osservati sono stati fluidi durante la procedura e la perdita di convalida ha seguito correttamente la perdita del test. Conclusioni A questo punto, abbiamo discusso brevemente TensorFlow e PyTorch e visto la procedura di modellazione minima per la classificazione delle immagini. Nel contesto dell'allenamento e delle prestazioni dei test dai due rispettivi grafici, possiamo dire che il processo di addestramento e valutazione è più fluido nel modello PyTorch e, in termini di elementi costitutivi, direi che TensorFlow è più adatto ai principianti grazie alla sua API semplificata .
- Apprendimento Automatico e Blockchain tutto quello che devi sapere
Gli algoritmi di machine learning hanno incredibili capacità di apprendimento. Queste capacità possono essere applicate nella blockchain per rendere la catena più intelligente e sicura di quanto non lo sia già. Prerequsiti : Che cosa è il Machine Learning (ML) Cos'è il Machine Learning in 3 minuti! Spiegato in modo semplice Machine Learning Esempi di Utilizzo nella Vita di tutti i Giorni Come funzionano gli algoritmi di machine learning? L'Intelligenza Artificiale Spiegata Semplice Migliori IDE Python per il machine learning e data science Il tuo Primo Programma di Machine Learning con Python Introduzione all'Apprendimento Automatico nella BlockChain La tecnologia Blockchain ha fatto tendenza negli ultimi anni. Questa tecnologia consente alle persone di interagire direttamente tra loro attraverso un sistema altamente sicuro e decentralizzato, senza intermediari. Oltre alle proprie capacità, l'apprendimento automatico può aiutare a gestire molte limitazioni che hanno i sistemi basati su blockchain. La combinazione di queste due tecnologie (Machine Learning e Blockchain Technology) può fornire risultati utili e performanti. In questo articolo, comprenderemo la tecnologia blockchain ed esploreremo come le capacità di apprendimento automatico possono essere integrate con un sistema basato sulla tecnologia blockchain. Discuteremo anche alcune applicazioni popolari e casi d'uso di questo approccio integrato. I punti principali da trattare in questo articolo sono elencati nel sommario riportato di seguito. Cosa è la Tecnologia Blockchain ? L'idea di base alla base della tecnologia blockchain è quella di decentralizzare l'archiviazione dei dati in modo che non possano essere di proprietà o gestiti da un particolare individuo, pubblico o privato che sia. Può essere aggiornato da un foglio di transazione in cui una volta che una transazione è annotata nel foglio non può essere modificata. Successivamente, la transazione in arrivo deve essere verificata prima di entrare nel foglio da una parte di fiducia. L'unica differenza è che il nuovo set di record è controllato dall'architettura decentralizzata dei nodi. Non è necessaria alcuna parte centralizzata specifica per verificare i record. In altre parole il totale del tuo conto bancario e il tuo estratto conto è in un server di una banca, se invece hai un "conto nella blockchain" questi dati sono distribuiti tra tutte le persone che hanno un "conto nella blockchain". Quindi se il server della banca viene hackerato e cancellato il backup tu perdi tutto, giusto? Nella blockchain per riuscire in questo attacco dovrei hackerare contemporaneamente tutti i dispositivi connessi alla blockchain ( solitamente si parla di milioni di dispositivi ). Anche se il meccanismo della tecnologia blockchain è complesso e può essere considerato come l'insieme di vari blocchi che sono collegati tra loro dove viene mantenuto il flusso di dati. In questa catena, il blocco attuale mantiene l'hash del blocco precedente e così via. L'utilizzo di questo tipo di meccanismo blockchain di sistema si rende tracciabile in termini di dati e transazioni. Invece di questo, sono resistenti alle modifiche in cui la blockchain più vecchia non può essere modificata e tuttavia ci sono modifiche eseguite nel blocco, il che significa che le modifiche nel loro hash. Da cosa è composta la Tecnologia Blockchain ? Una blockchain è composta da tre componenti importanti che sono elencati di seguito: Blocchi: come suggerisce il nome, la blockchain è composta da molti blocchi in cui ogni blocco ha tre elementi di base: Dati Nonce che è un numero intero a 32 bit. Viene generato casualmente con la generazione di un blocco, che provoca la generazione dell'hash dell'intestazione del blocco Hash che è un numero a 256 bit molto piccolo e connesso al nonce Ogni volta che in una catena viene creato un blocco, nonce genera l'hash crittografico che viene firmato e legato ai dati nel blocco. L'estrazione dei dati dal blocco rende il nonce e l'hash slegati con i dati. Minatori: i minatori sono responsabili della creazione di nuovi blocchi sulla catena attraverso un processo chiamato mining. Come funziona la Tecnologia Blockchain ? Come spiegato sopra, ogni blocco è costituito dal suo nonce e hash univoci, e l'hash nel blocco attuale fa riferimento all'hash del blocco precedente collegato nella catena, il che rende difficile l'estrazione di un blocco, specialmente su catene di grandi dimensioni. I minatori richiedono tecniche speciali per risolvere la complessa matematica nella ricerca di un nonce responsabile della generazione di un hash accettato. Poiché il nonce è solo 32 bit e l'hash è 256, ci sono circa miliardi di possibili combinazioni di nonce e hash che devono essere estratte fino a quando non viene trovata la giusta combinazione. I minatori con la giusta combinazione sono spesso chiamati come aventi un "nonce d'oro" e questo crea un blocco da aggiungere nella catena. Dal momento che trovare i nonces richiede un'enorme quantità di tempo e potenza di calcolo. Diventa difficile apportare modifiche ai blocchi e questo rende la tecnologia blockchain resiliente ai cambiamenti . Nodi: Uno dei concetti più importanti alla base della creazione di blockchain è decentralizzare i dati in blocchi diversi. Quindi non uno in particolare può possedere tutte le informazioni. Ciò consente di rendere la catena di proprietà di diverse persone o organizzazioni. I nodi possono essere considerati come un dispositivo che contiene la copia della blockchain e fa funzionare la catena o la rete. Ogni nodo possiede una copia della blockchain e la rete è impostata per approvare qualsiasi blocco appena estratto per la catena come aggiornato, affidabile e verificato. La trasparenza delle blockchain rende difficile controllare o visualizzare ogni azione nel libro mastro. Ogni partecipante della catena ha un numero di identificazione univoco che mostra le sue transazioni nella catena. La figura seguente rappresenta la tracciabilità e la resistenza al cambiamento delle qualità di qualsiasi blockchain con la sua struttura . Capite quanto è più difficile hackerare una blockchain .... Applicazioni dell'Apprendimento Automatico basate su blockchain Ci possono essere diverse applicazioni della tecnologia blockchain, alcune di queste sono elencate di seguito: Commercio di dati sicuro Trasferimento di denaro con prevenzione frodi Sistema operativo IoT in tempo reale Monitoraggio della filiera e della logistica Scambio di criptovalute Sicurezza dell'identità personale Apprendimento Automatico e blockchain cosa devi sapere Queste capacità possono essere applicate nella blockchain per rendere la catena più intelligente di prima. Questa integrazione può essere utile per migliorare la sicurezza del registro distribuito della blockchain. Inoltre, la potenza di calcolo di ML può essere utilizzata per ridurre il tempo impiegato per trovare il nonce d'oro e anche la ML può essere utilizzata per migliorare i percorsi di condivisione dei dati. Inoltre, possiamo costruire molti modelli migliori di apprendimento automatico utilizzando la caratteristica dell'architettura dati decentralizzata della tecnologia blockchain. I modelli di machine learning possono utilizzare i dati archiviati nella rete blockchain per fare la previsione o per l'analisi dei dati. prendiamo un esempio di qualsiasi applicazione basata su blockchain intelligente in cui i dati vengono raccolti da diverse fonti come sensori, dispositivi intelligenti, dispositivi IoT e la blockchain in questa applicazione funziona come parte integrante dell'applicazione dove sui dati il modello di apprendimento automatico può essere applicato per analisi o previsioni dei dati in tempo reale. La memorizzazione dei dati nella rete della blockchain aiuta a ridurre gli errori dei modelli ML perché i dati nella rete non avranno valori mancanti, duplicati o rumore, che è un requisito primario per il modello di apprendimento automatico per fornire la maggiore precisione. L'immagine seguente è una rappresentazione dell'architettura per l'adattamento dell'apprendimento automatico in un'applicazione basata su l'apprendimento automatico e blockchain. Vantaggi dell'apprendimento automatico nelle applicazioni basate su blockchain Ci possono essere molti vantaggi nell'utilizzo di modelli di apprendimento automatico nella tecnologia blockchain, alcuni di essi sono elencati di seguito: L'autenticazione dell'utente di qualsiasi utente autorizzato è facile quando tenta di apportare modifiche alla blockchain. Utilizzando ML possiamo fare in modo che blockchain fornisca un'ampia gamma di sicurezza e fiducia. L'integrazione dei modelli ML può aiutare a garantire la sostenibilità dei termini e delle condizioni concordati in precedenza. Possiamo realizzare un modello ML aggiornato in base all'ambiente di catena di blockchain. I modelli possono aiutare a estrarre dati validi dall'utente finale. Che può essere calcolato continuamente e sulla base di ciò possiamo dare ricompense all'utente Utilizzando la tracciabilità del blockchain possiamo anche valutare l'hardware di diverse macchine in modo che i modelli ML non possano discostarsi dal percorso di apprendimento per cui sono assegnati nell'ambiente. Siamo in grado di implementare un processo di pagamento affidabile in tempo reale nell'ambiente blockchain. Applicazioni di Machine Learning e Sistemi Integrati Blockchain Ci possono essere molte applicazioni di machine learning e sistemi integrati blockchain. Alcuni di loro sono elencati di seguito: Servizio clienti avanzato: poiché sappiamo tutti che la soddisfazione del cliente è un'esigenza primaria di qualsiasi organizzazione che serve i clienti utilizzando un modello di apprendimento automatico o una sorta di framework AutoML su un'applicazione basata su Blockchain, possiamo rendere il servizio più efficiente e automatizzato. Trading di dati: le aziende che utilizzano blockchain per il trading di dati in tutto il mondo possono rendere il servizio più veloce utilizzando i modelli ML nella blockchain. Dove il lavoro dei modelli ML è gestire le rotte commerciali dei dati. Invece di questo, possiamo anche usarli per la convalida dei dati e la crittografia dei dati. Produzione di prodotti: nello scenario attuale la maggior parte delle grandi unità o organizzazioni di produzione ha iniziato a lavorare con procedure basate su blockchain per migliorare la produzione, la sicurezza, la trasparenza e i controlli di conformità. L'integrazione di algoritmi ML può essere più utile per elaborare piani flessibili in periodi specifici per la manutenzione dei macchinari. Invece di questa integrazione di ML può aiutare a rendere automatizzato il test del prodotto e il controllo di qualità. Città intelligenti: al giorno d'oggi le città intelligenti stanno aiutando a migliorare il tenore di vita delle persone in cui l'apprendimento automatico e le tecnologie blockchain svolgono un ruolo cruciale nella creazione di città intelligenti, ad esempio le case intelligenti possono essere monitorate da algoritmi di apprendimento automatico e personalizzazione dei dispositivi basata sulla blockchain può migliorare la qualità del sostentamento. Sistema di sorveglianza: la sicurezza è una preoccupazione importante delle persone a causa dell'aumento del tasso di criminalità nello scenario attuale. ML e blockchain possono essere utilizzati per la sorveglianza in cui blockchain può essere utilizzato per la gestione dei dati continui e ML può essere utilizzato per l'analisi dei dati. Casi d'uso di Machine Learning con tecnologia Blockchain Nello scenario odierno, ci sono varie grandi e piccole aziende che hanno implementato entrambe le tecniche integrate tra loro o integrate in diversi lavori di un sistema che sta lavorando per fornire un unico output. Alcuni dei casi d'uso dell'apprendimento automatico e della tecnologia blockchain sono elencati di seguito: IBM in collaborazione con Twiga Foods ha lanciato una strategia di microfinanziamento basata su blockchain per i fornitori di cibo. Dove hanno implementato con successo alcune tecniche di ML. in cui i dati acquistati utilizzando blockchain da dispositivi mobili vengono elaborati utilizzando tecniche di ML per determinare i punteggi di credito e prevedere l'affidabilità creditizia di diversi utenti. In modo che gli istituti di credito possano facilitare il prestito e il rimborso utilizzando la tecnologia blockchain. Porsche, una famosa azienda produttrice di automobili, è uno dei primi ad adottare la tecnologia in cui ML e blockchain sono integrati per migliorare le capacità e la sicurezza delle automobili. L'azienda utilizza la tecnologia blockchain per scambiare i dati in modo più sicuro, offrendo tranquillità ai suoi utenti; facilitando loro il parcheggio, la ricarica e l'accesso temporaneo di terzi alla propria auto. Una società con sede a New York sta anche utilizzando un'innovazione basata su blockchain per consentire la generazione e il commercio di energia per le comunità locali. La tecnologia utilizza contatori intelligenti a microgrid che funzionano sulla base di modelli di apprendimento automatico e contratti intelligenti basati su blockchain per tracciare e gestire le transazioni energetiche. Alcune altre società legate alle industrie alimentari come Unilever e Nestlé stanno utilizzando blockchain e ML per affrontare disastri alimentari come lo spreco e la contaminazione del cibo per mantenere la loro catena di approvvigionamento in modo efficiente. Conclusioni sull'apprendimento automatico e blockchain Nell'articolo, abbiamo visto una panoramica della tecnologia blockchain con i suoi componenti e applicazioni. Successivamente, abbiamo esplorato l'opportunità di integrare la tecnologia blockchain con l'apprendimento automatico. Lascia un commento per esprimere i tuoi pensieri, domande o progetti. Letture correlate a "Apprendimento Automatico e Blockchain" : Come viene utilizzata l'intelligenza artificiale nel mercato delle crypto Come Utilizzare l' Intelligenza Artificiale nel Settore Finanziario Trading algoritmico e apprendimento automatico con Python Intelligenza Artificiale nelle imprese, come e perchè applicarla Previsione prezzo Bitcoin con il Machine Learning [Progetto Python] Prevedere il prezzo dell'oro con la regressione lineare [Progetto Python] Deep Learning, Previsione del prezzo delle azioni [Progetto Python]
- Cosa sono le reti neurali artificiali ANN? Introduzione alle reti neurali artificiali
Nei precedenti articoli abbiamo parlato molto di deep learning, reti neurali e tipi di esse, ma oggi in questo articolo impareremo a conoscere le reti ANN un tipo di rete neurale della famiglia del deep learning. Prerequisiti : Se non sai cosa è il Machine Learning, clicca qui Se non sai cosa è il Deep Learning, clicca qui Se non conosci le principali applicazioni Deep Learning, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Cos'è una rete neurale? Una rete neurale è una serie di algoritmi che tenta di riconoscere le relazioni sottostanti in un insieme di dati attraverso un processo che imita il modo in cui opera il cervello umano . le reti neurali si riferiscono a sistemi di neuroni . la rete neurale è anche un insieme di neuroni organizzati . Queste reti neurali hanno molti strati tra gli strati di input e output che e gli strati tra di loro sono nascosti. Cos'è un neurone? Un neurone è una funzione matematica ogni neurone riceve un input ed elabora l'informazione particolare e restituisce l'output. dove x1,x2,x3 sono input e w1,w2,w3 sono i loro pesi e li ranghiamo in un neurone e y è l'output dato dal neurone. Che cos'è una rete neurale artificiale (ANN)? Il termine " Rete neurale artificiale " si riferisce a un sottocampo di intelligenza artificiale ispirato alla biologia e al cervello . Una rete neurale artificiale è solitamente una rete computazionale basata su reti neurali biologiche che costruiscono la struttura del cervello umano. Simile, non uguale, a un cervello umano con neuroni interconnessi tra loro, le reti neurali artificiali hanno anche neuroni collegati tra loro in vari strati delle reti. Come funzionano le reti neurali artificiali? La rete neurale artificiale riceve il segnale in ingresso dalla sorgente esterna sotto forma di pattern e l' immagine sotto forma di vettore. Questi input vengono quindi assegnati matematicamente dalle notazioni x(n) per ogni n numero di input. Successivamente, ciascuno degli ingressi viene moltiplicato per i pesi corrispondenti . Questi pesi rappresentano normalmente la forza dell'interconnessione tra i neuroni all'interno della rete . Tutti gli input pesati sono riepilogati all'interno dell'unità di calcolo. Se la somma ponderata è uguale a zero , viene aggiunta la distorsione per rendere l'output diverso da zero o qualcos'altro per aumentare la risposta del sistema. Il Bias ha lo stesso input e il peso è uguale a 1 . La funzione di attivazione si riferisce all'insieme delle funzioni di trasferimento utilizzate per ottenere l'uscita desiderata. Esiste un diverso tipo di funzione di attivazione , ma principalmente insiemi di funzioni lineari o non lineari. Alcuni degli insiemi di funzioni di attivazione comunemente usati sono le funzioni di attivazione sigmoidale, iperbolica , binaria , lineare e molte altre . nel prossimo futuro scriveremo un articolo in cui spiegheremo tutte le funzioni di attivazione . Tipi di rete neurale artificiale: Esistono vari tipi di reti neurali artificiali (ANN) a seconda del neurone del cervello umano e delle funzioni di rete, una rete neurale artificiale svolge allo stesso modo compiti. I principali Tipi di rete neurale artificiale sono : Feedback ANN Feed Forward ANN Cos'è la Feedback ANN ? In questo tipo di ANN , l'output ritorna nella rete per ottenere internamente i risultati più evoluti. Le reti di feedback reinseriscono le informazioni in se stesse e sono adatte a risolvere i problemi di ottimizzazione. Le correzioni degli errori di sistema interne utilizzano le ANN di feedback . Guarda l'immagine qui sotto e nota che l'output manda un feedback all'input. Cos'è la Feed Forward ANN ? Una rete neurale feed-forward consente alle informazioni di fluire solo nella direzione in avanti, dai nodi di input, attraverso i livelli nascosti e ai nodi di output . Non ci sono cicli o loop nella rete . Attraverso la valutazione del suo output attraverso la revisione del suo input, l'intensità della rete può essere notata in base al comportamento di gruppo dei neuroni associati e l'output è deciso. Il vantaggio principale di questa rete è che riesce a capire come valutare e riconoscere i modelli di input. Guardando l'immagine qui sotto noterai che questa volta son gli input a comunicare con l'output. Speriamo davvero che questo articolo sia riuscito a darti l'infarinatura che cercavi sulle ANN. Qui sotto troverai una sezione per fare commenti o domande,e degli articoli correlati. Grazie mille per la lettura condividi l'articolo per supportarci :)
- Cosa sono gli algoritmi generativi ? Tutto quello che devi sapere
Gli algoritmi generativi sono un tipo di intelligenza artificiale che ha guadagnato una notevole attenzione negli ultimi anni grazie alla sua capacità di creare contenuti nuovi e originali. A differenza dei tradizionali sistemi di intelligenza artificiale, progettati per riconoscere e classificare i dati esistenti, gli algoritmi generativi sono in grado di generare nuovi dati simili a quelli su cui sono stati addestrati. Questa capacità rende gli algoritmi generativi un potente strumento per attività come la sintesi di immagini e video, la composizione musicale e la generazione di linguaggio naturale. Lo so anche tu stai pensando WOW💡. Indice Articolo sugli Algoritmi Generativi Cosa sono gli algoritmi generativi? Definizione di algoritmi generativi In che modo differiscono da altri tipi di IA Esempi di algoritmi generativi Come funzionano gli algoritmi generativi? Panoramica del processo generativo Componenti chiave degli algoritmi generativi Tecniche e algoritmi comuni utilizzati nell'IA generativa Applicazioni di algoritmi generativi Esempi di algoritmi generativi nell'arte e nella musica Esempi di algoritmi generativi nell'elaborazione del linguaggio naturale Potenziali applicazioni future di algoritmi generativi Considerazioni etiche degli algoritmi generativi Questioni come pregiudizi e responsabilità nell'IA generativa La necessità di trasparenza e spiegabilità nell'IA generativa Il ruolo della collaborazione uomo-IA nell'affrontare queste sfide Creare un algoritmo generativo con Python Siti web per provare algoritmi generativi Conclusione: il potenziale degli algoritmi generativi per creare contenuti nuovi e originali e le sfide che devono essere affrontate nel suo sviluppo e implementazione. Cosa sono gli algoritmi generativi ? Gli algoritmi generativi sono un tipo di intelligenza artificiale in grado di creare contenuti nuovi e originali. A differenza dei tradizionali sistemi di intelligenza artificiale, progettati per riconoscere e classificare i dati esistenti, gli algoritmi generativi sono in grado di generare nuovi dati simili a quelli su cui sono stati addestrati. Questa capacità rende gli algoritmi generativi un potente strumento per attività come la sintesi di immagini e video, la composizione musicale e la generazione di linguaggio naturale. Un modo per pensare agli algoritmi generativi è come l'opposto degli algoritmi discriminativi. Mentre gli algoritmi discriminativi sono progettati per classificare e prevedere sulla base di dati esistenti, gli algoritmi generativi sono progettati per generare nuovi dati sulla base di un insieme di regole o di una distribuzione. Ad esempio, un algoritmo generativo addestrato su un set di dati di immagini di volti potrebbe essere utilizzato per generare nuovi volti dall'aspetto realistico che non sono presenti nei dati di addestramento. Quali algoritmi generativi esistono ? Alcuni esempi di algoritmi generativi includono reti generative avversarie (GAN), codificatori automatici variazionali (VAE) e reti neurali ricorrenti (RNN). Le GAN, introdotte per la prima volta nel 2014 da Ian Goodfellow e dai suoi colleghi, sono costituiti da due reti neurali che lavorano insieme per generare nuovi dati. La prima rete, nota come generatore, viene addestrata per creare dati simili ai dati di addestramento. La seconda rete, nota come discriminatore, è addestrata a distinguere i dati generati dai dati reali. Attraverso questa competizione, il GAN è in grado di apprendere e migliorare la sua capacità di generare dati realistici. I VAE sono un tipo di rete neurale che può essere utilizzata per generare nuovi dati imparando la distribuzione sottostante dei dati di addestramento. A differenza dei GAN, che utilizzano un discriminatore per valutare i dati generati, i VAE utilizzano un approccio probabilistico per valutare i dati generati e guidare il generatore verso campioni più realistici. Ciò consente ai VAE di generare dati più fluidi e coerenti rispetto ai GAN, ma potrebbero avere difficoltà a generare dati altamente dettagliati e diversificati. Le RNN, che sono un tipo di rete neurale in grado di elaborare dati sequenziali, possono essere utilizzati per generare nuovo testo o musica prevedendo la parola o la nota successiva in una sequenza. Gli RNN vengono addestrati su un ampio corpus di testo o musica e quindi utilizzano i modelli che hanno appreso per generare nuove sequenze simili ai dati di addestramento. Ciò consente agli RNN di generare testo o musica coerente e dal suono naturale, ma potrebbero avere difficoltà a generare contenuti altamente creativi e originali. In sintesi, gli algoritmi generativi sono un tipo di intelligenza artificiale in grado di generare contenuti nuovi e originali basati sui dati su cui sono stati addestrati. Differiscono da altri tipi di intelligenza artificiale per la loro capacità di creare nuovi dati e sono utilizzati in una varietà di applicazioni come la sintesi di immagini e video, la composizione musicale e la generazione di linguaggio naturale. Come funzionano gli algoritmi generativi? Il processo di generazione di nuovi dati con un algoritmo generativo prevede in genere i seguenti passaggi: Addestramento: l'algoritmo generativo viene addestrato su un ampio set di dati di esempi, come immagini, testi o suoni. Ciò consente all'algoritmo di apprendere i modelli e le regolarità presenti nei dati e di acquisire la struttura intrinseca e la diversità dei dati di addestramento. Campionamento: l'algoritmo generativo genera nuovi dati campionando dalla distribuzione appresa. Questo può essere fatto utilizzando un generatore di numeri casuali per generare un insieme di valori di input, che vengono poi inseriti nell'algoritmo per generare l'output corrispondente. I dati generati possono essere diversi e originali, ma dovrebbero anche essere coerenti con i dati di addestramento e conformi alla stessa distribuzione sottostante. Valutazione: i dati generati vengono valutati da un algoritmo separato o da un valutatore umano per valutarne la qualità e il realismo. Questo feedback viene utilizzato per guidare l'algoritmo generativo e migliorare la sua capacità di generare dati realistici. Il processo di valutazione può essere continuo, consentendo all'algoritmo di apprendere e adattarsi in tempo reale man mano che genera nuovi dati. I componenti chiave di un algoritmo generativo includono tipicamente un generatore, un discriminatore e un algoritmo di addestramento. Il generatore è una rete neurale addestrata per generare nuovi dati simili ai dati di addestramento. Prende come input un insieme di numeri casuali, noto come spazio latente, e produce come output i dati generati corrispondenti. Il generatore può essere addestrato utilizzando una varietà di tecniche, come l'apprendimento supervisionato, l'apprendimento non supervisionato o l'apprendimento per rinforzo. Il discriminatore è una rete neurale separata addestrata per distinguere i dati generati dai dati reali. Prende come input i dati generati e i dati reali e produce come output un punteggio che indica quanto sono simili o dissimili i due input. Il discriminatore può essere addestrato utilizzando una varietà di tecniche, come l'apprendimento supervisionato, l'apprendimento non supervisionato o l'apprendimento semi-supervisionato. L'algoritmo di addestramento è un insieme di regole o un algoritmo di apprendimento utilizzato per regolare i parametri del generatore e del discriminatore in base alle loro prestazioni. Nel caso di reti generative avversarie (GAN), l'algoritmo di addestramento utilizza l'output del generatore e del discriminatore per guidare il generatore verso campioni più realistici e il discriminatore verso una migliore discriminazione. Nel caso degli autocodificatori variazionali (VAE), l'algoritmo di addestramento utilizza l'output del generatore e del discriminatore per ottimizzare un limite inferiore sulla probabilità logaritmica dei dati di addestramento. Nel caso di reti neurali ricorrenti (RNN), l'algoritmo di addestramento utilizza l'output del generatore e del discriminatore per ottimizzare la perdita a livello di sequenza, come la perdita di entropia incrociata o la perdita di probabilità logaritmica negativa. In sintesi, il processo di generazione di nuovi dati con un algoritmo generativo comporta l'addestramento dell'algoritmo su un ampio set di dati di esempi, il campionamento dalla distribuzione appresa e la valutazione dei dati generati per migliorare le prestazioni dell'algoritmo. I componenti chiave di un algoritmo generativo includono un generatore, un discriminatore e un algoritmo di addestramento e tecniche e algoritmi comuni utilizzati nell'IA generativa includono GAN, VAE e RNN. Questi componenti e tecniche lavorano insieme per consentire all'algoritmo generativo di apprendere la struttura intrinseca e la diversità dei dati di addestramento e di generare nuovi dati originali Applicazioni di algoritmi generativi Una delle applicazioni più promettenti degli algoritmi generativi nell'arte e nella musica è la generazione di immagini e video dall'aspetto realistico di persone, animali, paesaggi e altre scene. Le reti generative avversarie (GAN) hanno avuto particolare successo in questo senso, in quanto possono generare immagini altamente dettagliate e diverse che sono difficili da distinguere dalle fotografie reali. Ad esempio, un GAN addestrato su un set di dati di volti potrebbe essere utilizzato per generare nuovi volti dall'aspetto realistico che non sono presenti nei dati di addestramento. Ciò potrebbe essere utile per applicazioni come la prova virtuale, in cui gli utenti possono vedere come apparirebbero con diverse acconciature o trucco. Un'altra applicazione degli algoritmi generativi nell'arte e nella musica è la generazione di animazioni o video fluidi e coerenti. Gli autocodificatori variazionali (VAE) sono adatti a questo compito, in quanto utilizzano un approccio probabilistico per valutare i dati generati e guidare il generatore verso campioni più realistici. Ciò consente ai VAE di generare animazioni o video fluidi e coerenti, ma che presentano anche un certo grado di diversità e novità. Ad esempio, un VAE addestrato su un set di dati del movimento umano potrebbe essere utilizzato per generare nuove animazioni dall'aspetto realistico di persone che camminano, corrono, ballano o eseguono altre azioni. Ciò potrebbe essere utile per applicazioni come la realtà virtuale, in cui gli utenti possono interagire con avatar o personaggi dall'aspetto realistico. Infine, gli algoritmi generativi possono essere utilizzati anche per generare nuove melodie e progressioni di accordi che sono simili ai dati di addestramento ma mostrano anche un certo grado di creatività e originalità. Le reti neurali ricorrenti (RNN) sono adatte a questo compito, in quanto possono elaborare dati sequenziali e generare nuove sequenze simili ai dati di addestramento. Ad esempio, un RNN addestrato su un set di dati di musica potrebbe essere utilizzato per generare nuove melodie o progressioni di accordi simili ai dati di addestramento, ma che presentano anche un certo grado di novità e diversità. Ciò potrebbe essere utile per applicazioni come la composizione musicale, in cui gli utenti possono creare musica nuova e originale utilizzando l'output dell'algoritmo generativo. In sintesi, gli algoritmi generativi hanno il potenziale per rivoluzionare il campo dell'arte e della musica consentendo la creazione di contenuti nuovi e originali che sono coerenti con i dati di formazione, ma mostrano anche un certo grado di creatività e originalità. I GAN possono essere utilizzati per generare immagini e video dall'aspetto realistico, i VAE possono essere utilizzati per generare animazioni o video fluidi e coerenti e gli RNN possono essere utilizzati per generare nuove melodie e progressioni di accordi. Queste applicazioni di algoritmi generativi hanno il potenziale per ispirare e abilitare nuove forme di creatività ed espressione nel campo dell'arte e della musica. Considerazioni etiche degli algoritmi generativi Una delle sfide chiave nell'uso etico degli algoritmi generativi è la questione del pregiudizio e della responsabilità. Poiché gli algoritmi generativi vengono addestrati su grandi quantità di dati, possono ereditare i pregiudizi e altri errori presenti in tali dati. Ciò può portare a risultati ingiusti e dannosi, come la generazione di immagini distorte o un linguaggio offensivo. Ad esempio, un algoritmo generativo addestrato su un set di dati di documenti storici potrebbe generare visioni prevenute e distorte del passato, se il set di dati contiene solo una prospettiva limitata e distorta degli eventi e degli attori coinvolti. Ciò potrebbe avere gravi conseguenze sul modo in cui comprendiamo e interpretiamo la nostra storia e potrebbe rafforzare stereotipi e pregiudizi esistenti. Per affrontare queste preoccupazioni, è importante che ricercatori e sviluppatori siano trasparenti sui dati e gli algoritmi utilizzati nell'IA generativa e valutino attentamente i potenziali pregiudizi ed errori che possono essere presenti nei dati generati. Ciò può essere fatto utilizzando set di dati diversi e rappresentativi, applicando tecniche di rilevamento e mitigazione dei bias e coinvolgendo valutatori o revisori umani nel processo di valutazione. Un modo per ridurre i pregiudizi e migliorare la responsabilità negli algoritmi generativi è utilizzare set di dati diversi e rappresentativi. Ciò significa che i dati utilizzati per addestrare l'algoritmo dovrebbero essere il più diversificati e inclusivi possibile e dovrebbero coprire un'ampia gamma di prospettive, background ed esperienze. Ciò può aiutare a ridurre il rischio di parzialità e generalizzazione eccessiva e può anche migliorare la qualità e l'affidabilità dei dati generati. Un altro modo per ridurre i bias e migliorare la responsabilità negli algoritmi generativi consiste nell'applicare tecniche di rilevamento e mitigazione dei bias. Queste tecniche possono aiutare a identificare ed eliminare potenziali fonti di distorsione nei dati di addestramento, come campioni sbilanciati o danneggiati o etichette o caratteristiche distorte. Ciò può aiutare a garantire che i dati generati siano equi e imparziali e non rafforzino stereotipi o pregiudizi esistenti. Infine, il coinvolgimento di valutatori o revisori umani nel processo di valutazione può anche aiutare a ridurre i pregiudizi e migliorare la responsabilità negli algoritmi generativi. Ciò significa che i dati generati dovrebbero essere valutati e valutati da esperti umani o specialisti di dominio, che possono fornire approfondimenti e feedback sulla qualità e la pertinenza dei dati. Questo può aiutare a garantire che i dati generati siano accurati, informativi e utili e non contengano errori o pregiudizi che potrebbero essere stati trascurati dall'algoritmo. In sintesi, l'uso etico degli algoritmi generativi implica affrontare le sfide del pregiudizio e della responsabilità. Ciò può essere fatto utilizzando set di dati diversi e rappresentativi, applicando tecniche di rilevamento e mitigazione dei bias e coinvolgendo valutatori o revisori umani nel processo di valutazione. Affrontando queste sfide, possiamo garantire che gli algoritmi generativi siano equi, trasparenti e responsabili e che non rafforzino stereotipi o pregiudizi esistenti. Creare algoritmi generativi con Python Per creare semplici algoritmi generativi con Python, dovrai installare alcune librerie e pacchetti che forniscono gli strumenti e i framework necessari per la costruzione e l'addestramento di modelli generativi. Alcune delle librerie e dei pacchetti più popolari e ampiamente utilizzati per gli algoritmi generativi in Python includono TensorFlow, PyTorch, Keras e scikit-learn. Per installare queste librerie e pacchetti, puoi utilizzare il comando pip in un terminale o in un prompt dei comandi, come segue: pip install tensorflow pip install pytorch pip install keras pip install scikit-learn Dopo aver installato le librerie e i pacchetti necessari, puoi iniziare a scrivere codice Python per creare e addestrare semplici algoritmi generativi. Il codice seguente fornisce un esempio di come creare una semplice rete generativa avversaria (GAN) con TensorFlow e Keras: import tensorflow as tf import keras from keras.models import Model from keras.layers import Input, Dense, LeakyReLU, BatchNormalization # Create the input layer input_layer = Input(shape=(100,)) # Create the generator network x = Dense(256, activation='relu')(input_layer) x = BatchNormalization()(x) x = Dense(512, activation='relu')(x) x = BatchNormalization()(x) x = Dense(1024, activation='relu')(x) x = BatchNormalization()(x) x = Dense(784, activation='sigmoid')(x) # Create the generator model generator = Model(input_layer, x) # Compile the generator model generator.compile(loss='binary_crossentropy', optimizer='adam') # Train the generator model on random noise generator.fit(noise, labels) Il codice sopra crea un semplice GAN con TensorFlow e Keras, utilizzando l'API funzionale di Keras per definire la rete del generatore. La rete del generatore è costituita da diversi strati densi con attivazione ReLU, seguita dalla normalizzazione batch e uno strato di attivazione sigmoideo alla fine. La rete del generatore viene addestrata sul rumore casuale, utilizzando la perdita binaria di entropia incrociata e l'ottimizzatore Adam. Siti web per provare algoritmi generativi : Esistono molti siti Web e piattaforme online in cui è possibile provare algoritmi e modelli di intelligenza artificiale generativa. Alcune delle piattaforme più popolari e ampiamente utilizzate per l'IA generativa includono quanto segue: Google Colab: https://colab.research.google.com/ Kaggle: https://www.kaggle.com/ Palestra OpenAI: https://gym.openai.com/ Parco giochi TensorFlow: https://playground.tensorflow.org/ DeepMind Lab: https://github.com/deepmind/lab OpenAI Jukebox: https://openai.com/blog/jukebox/ NVIDIA AI Playground: https://aiplayground.nvidia.com/ Queste piattaforme forniscono un'ampia gamma di strumenti e risorse per sperimentare algoritmi di intelligenza artificiale generativa, come modelli preaddestrati, set di dati di esempio, esercitazioni e demo interattive. Puoi utilizzare queste piattaforme per conoscere l'IA generativa, per creare e addestrare i tuoi modelli generativi e per esplorare il potenziale e le sfide dell'IA generativa. Conclusione In conclusione, gli algoritmi generativi sono un'area promettente ed entusiasmante della ricerca sull'IA che ha il potenziale per creare contenuti nuovi e originali basati sui dati su cui sono stati addestrati. Gli algoritmi generativi possono essere applicati in un'ampia gamma di campi, tra cui arte e musica, elaborazione del linguaggio naturale e molti altri, e possono consentire nuove forme di creatività ed espressione. Tuttavia, lo sviluppo e l'implementazione di algoritmi generativi sollevano anche importanti considerazioni etiche, come le questioni di parzialità e responsabilità, la necessità di trasparenza e spiegabilità e il ruolo della collaborazione uomo-IA. Per affrontare queste sfide, è importante che ricercatori e sviluppatori siano trasparenti sui dati e gli algoritmi utilizzati nell'IA generativa, valutino attentamente i potenziali pregiudizi ed errori che possono essere presenti nei dati generati e coinvolgano esperti umani e conoscenze di dominio nella progettazione, addestramento e valutazione di algoritmi generativi. In conclusione, il potenziale degli algoritmi generativi è vasto ed entusiasmante, ma richiede anche un'attenta considerazione e attenzione alle sfide etiche che solleva. Affrontando queste sfide, possiamo garantire che gli algoritmi generativi siano equi, trasparenti e responsabili e che non rafforzino stereotipi o pregiudizi esistenti. Grazie per aver letto questo articolo sugli algoritmi generativi.
- Classificazione binaria con python e keras Deep Learning
Keras è una libreria Python per il deep learning che racchiude le efficienti librerie numeriche TensorFlow e Theano. Keras ti consente di progettare e addestrare in modo rapido e semplice reti neurali e modelli di deep learning. In questo post scoprirai come utilizzare in modo efficace la libreria Keras nel tuo progetto di machine learning lavorando passo dopo passo attraverso un progetto di classificazione binaria. Dopo aver completato questo tutorial, saprai: Come caricare i dati di allenamento e renderli disponibili a Keras Come progettare e addestrare una rete neurale per dati tabulari Come valutare le prestazioni di un modello di rete neurale in Keras su dati invisibili Come eseguire la preparazione dei dati per migliorare le capacità quando si utilizzano le reti neurali Come ottimizzare la topologia e la configurazione delle reti neurali in Keras Cosa è la classificazione binaria ? La classificazione binaria è un metodo per l'apprendimento automatico che essenzialmente prende un insieme di dati e li classifica in base a due categorie. Ad esempio, se si dispone di un set di dati costituito da valori che sono 0 o 1, potrebbe trattarsi di una classificazione binaria. Questo metodo di apprendimento automatico viene solitamente utilizzato nel deep learning. Allora, cos'è la classificazione binaria? Si tratta di un processo che accetta un insieme di dati di input e gli assegna una categoria. Le etichette sono 0 o 1, che sono le due categorie. Le uscite sono le stesse. Applicazioni della classificazione binaria La classificazione binaria è un metodo di riconoscimento dei pattern utilizzato nel deep learning. È una tecnica di apprendimento statistico che viene utilizzata per determinare se un dato input ha un'appartenenza a una classe specifica. Il metodo è un'operazione fondamentale nell'apprendimento automatico. L'algoritmo di classificazione binaria viene utilizzato in un'ampia varietà di applicazioni di apprendimento automatico in cui le classi sono note. Ad esempio Rilevamento dello spam e-mail (spam o meno). Previsione di abbandono (abbandono o meno). Previsione di conversione (acquista o meno). Classificazione binaria con python 1. Descrizione del Dataset Il set di dati che utilizzerai in questo tutorial è il set di dati Sonar . Questo è un set di dati che descrive i ritorni dei segnali acustici del sonar che rimbalzano su diversi servizi. Le 60 variabili di input sono la forza dei rendimenti a diverse angolazioni. È un problema di classificazione binaria che richiede un modello per differenziare le rocce dai cilindri metallici. Puoi saperne di più su questo set di dati nel repository UCI Machine Learning . Puoi scaricare il set di dati gratuitamente e inserirlo nella tua directory di lavoro con il nome del file sonar.csv . È un set di dati ben compreso. Tutte le variabili sono continue e generalmente nell'intervallo da 0 a 1. La variabile di output è una stringa "M" per la mia e "R" per rock, che dovrà essere convertita in numeri interi 1 e 0. Un vantaggio dell'utilizzo di questo set di dati è che si tratta di un problema di benchmark standard. Ciò significa che abbiamo un'idea delle capacità attese di un buon modello. Utilizzando la convalida incrociata, una rete neurale dovrebbe essere in grado di ottenere prestazioni di circa l'84% con un limite superiore di precisione per i modelli personalizzati di circa l'88%. Classificazione binaria con python 2. Prestazioni del modello di rete neurale di base Creiamo un modello di base e un risultato per questo problema. Inizierai importando tutte le classi e le funzioni di cui avrai bisogno. import pandas as pd from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline ... Ora puoi caricare il set di dati usando i panda e dividere le colonne in 60 variabili di input (X) e una variabile di output (Y). Usa i panda per caricare i dati perché gestisce facilmente le stringhe (la variabile di output), mentre tentare di caricare i dati direttamente usando NumPy sarebbe più difficile. # Carichiamo i dati dataframe = pd.read_csv("sonar.csv", header=None) dataset = dataframe.values # dividiamoli in input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] La variabile di output è valori stringa. Devi convertirli in valori interi 0 e 1. Puoi farlo usando la classe LabelEncoder di scikit-learn. Questa classe modellerà la codifica richiesta utilizzando l'intero set di dati tramite la funzione fit(), quindi applicherà la codifica per creare una nuova variabile di output utilizzando la funzione transform(). # Trasformiamo le variabili categoriche encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) Ora sei pronto per creare il tuo modello di rete neurale usando Keras. Utilizzerai scikit-learn per valutare il modello utilizzando la convalida incrociata k-fold stratificata. Questa è una tecnica di ricampionamento che fornirà una stima delle prestazioni del modello. Lo fa suddividendo i dati in k-parti e addestrando il modello su tutte le parti tranne una, che viene presentata come un set di test per valutare le prestazioni del modello. Questo processo viene ripetuto k volte e il punteggio medio di tutti i modelli costruiti viene utilizzato come stima affidabile delle prestazioni. È stratificato, il che significa che esaminerà i valori di output e tenterà di bilanciare il numero di istanze che appartengono a ciascuna classe nei k-split dei dati. Per utilizzare i modelli Keras con scikit-learn, devi utilizzare il wrapper KerasClassifier dal modulo SciKeras. Questa classe accetta una funzione che crea e restituisce il nostro modello di rete neurale. Richiede anche argomenti che passerà alla chiamata a fit(), come il numero di epoche e la dimensione del batch. Iniziamo definendo la funzione che crea il tuo modello di base. Il tuo modello avrà un unico livello nascosto completamente connesso con lo stesso numero di neuroni delle variabili di input. Questo è un buon punto di partenza predefinito durante la creazione di reti neurali. I pesi vengono inizializzati utilizzando un piccolo numero casuale gaussiano. Viene utilizzata la funzione di attivazione del raddrizzatore. Il livello di output contiene un singolo neurone per fare previsioni. Utilizza la funzione di attivazione sigmoidea per produrre un output di probabilità nell'intervallo da 0 a 1 che può essere convertito facilmente e automaticamente in valori di classe nitidi. Infine, durante l'allenamento utilizzerai la funzione di perdita logaritmica (binary_crossentropy), la funzione di perdita preferita per i problemi di classificazione binaria. Il modello utilizza anche l'efficiente algoritmo di ottimizzazione Adam per la discesa del gradiente e le metriche di precisione verranno raccolte quando il modello viene addestrato. # modello base def create_baseline(): # creiamo il modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model Ora è il momento di valutare questo modello utilizzando la convalida incrociata stratificata nel framework scikit-learn. Passa il numero di epoche di addestramento al KerasClassifier, usando ancora valori predefiniti ragionevoli. Anche l'output dettagliato è disattivato, dato che il modello verrà creato dieci volte per la convalida incrociata 10 volte eseguita. # valutiamolo estimator = KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(estimator, X, encoded_Y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values X = dataset[:,0:60].astype(float) Y = dataset[:,60] encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) def create_baseline(): model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimator = KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(estimator, X, encoded_Y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) 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. L'esecuzione di questo codice produce l'output seguente che mostra la media e la deviazione standard dell'accuratezza stimata del modello su dati invisibili. Baseline: 81.68% (7.26%) Questo è un punteggio eccellente senza fare alcun duro lavoro.ù Classificazione binaria con python 3. Eseguire nuovamente il modello di base con la preparazione dei dati È buona norma preparare i dati prima della modellazione. I modelli di rete neurale sono particolarmente adatti per avere valori di input coerenti, sia in scala che in distribuzione. La standardizzazione è un efficace schema di preparazione dei dati per i dati tabulari durante la creazione di modelli di reti neurali. È qui che i dati vengono ridimensionati in modo tale che il valore medio per ciascun attributo sia 0 e la deviazione standard sia 1. Ciò preserva le distribuzioni gaussiane e di tipo gaussiano mentre normalizza le tendenze centrali per ciascun attributo. Puoi usare scikit-learn per eseguire la standardizzazione del tuo set di dati sonar usando la classe StandardScaler . Anziché eseguire la standardizzazione sull'intero set di dati, è buona norma addestrare la procedura di standardizzazione sui dati di addestramento durante il passaggio di un'esecuzione di convalida incrociata e utilizzare la standardizzazione addestrata per preparare la piega di prova "non vista". Ciò rende la standardizzazione un passaggio nella preparazione del modello nel processo di convalida incrociata. Impedisce all'algoritmo di avere conoscenza dei dati "invisibili" durante la valutazione, conoscenza che potrebbe essere trasmessa dallo schema di preparazione dei dati come una distribuzione più nitida. Puoi ottenerlo in scikit-learn usando un Pipeline . La pipeline è un wrapper che esegue uno o più modelli all'interno di un passaggio della procedura di convalida incrociata. Qui puoi definire una pipeline con StandardScaler seguito dal tuo modello di rete neurale. # valutiamo il modello su un dataset standardizzato estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Standardized: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. # Binary Classification con Standardized from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # dataset dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values # input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] # encode encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # baseline model def create_baseline(): # creazione modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # compilazione model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model # valutazione modello con standardized dataset estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Standardized: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) L'esecuzione di questo esempio fornisce i risultati seguenti. 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. Ora vedi un piccolo ma molto bello aumento della precisione media. Standardized: 84.56% (5.74%) Classificazione binaria con python 4. Ottimizzazione dei livelli e del numero di neuroni nel modello Ci sono molte cose da mettere a punto su una rete neurale, come l'inizializzazione del peso, le funzioni di attivazione, la procedura di ottimizzazione e così via. Un aspetto che potrebbe avere un effetto fuori misura è la struttura della rete stessa, chiamata topologia di rete. In questa sezione, esaminerai due esperimenti sulla struttura della rete: rimpicciolirla e ingrandirla. Questi sono buoni esperimenti da eseguire quando si sintonizza una rete neurale sul proprio problema. 4.1. Valuta una rete più piccola Si noti che è probabile che vi sia molta ridondanza nelle variabili di input per questo problema. I dati descrivono lo stesso segnale da diverse angolazioni. Forse alcuni di questi angoli sono più rilevanti di altri. Quindi puoi forzare un tipo di estrazione di funzionalità dalla rete limitando lo spazio di rappresentazione nel primo livello nascosto. In questo esperimento, prenderai il tuo modello di base con 60 neuroni nello strato nascosto e lo ridurrai della metà a 30. Ciò farà pressione sulla rete durante l'allenamento per selezionare la struttura più importante nei dati di input da modellare. Standardizzerai anche i dati come nell'esperimento precedente con la preparazione dei dati e cercherai di sfruttare il leggero aumento delle prestazioni. # modello più piccolo def create_smaller(): # creazione modello model = Sequential() model.add(Dense(30, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # compilazione modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_smaller, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Smaller: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. # Binary Classification con Standardized Smaller from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # dataset dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values #input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] # encode encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # modello più piccolo def create_smaller(): # creiamo modello model = Sequential() model.add(Dense(30, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # compiliamo modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_smaller, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Smaller: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) L'esecuzione di questo esempio fornisce il seguente risultato. Puoi vedere che hai un leggero aumento dell'accuratezza media stimata e un'importante riduzione della deviazione standard (spread medio) dei punteggi di accuratezza per il modello. 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. Questo è un ottimo risultato perché stai andando leggermente meglio con una rete grande la metà, che, a sua volta, richiede metà del tempo per allenarti. Smaller: 86.04% (4.00%) 4.2. Valuta una rete più ampia Una topologia di rete neurale con più livelli offre maggiori opportunità alla rete di estrarre funzionalità chiave e ricombinarle in utili modi non lineari. Puoi facilmente valutare se l'aggiunta di più livelli alla rete migliora le prestazioni apportando un'altra piccola modifica alla funzione utilizzata per creare il nostro modello. Qui aggiungi un nuovo livello (una linea) alla rete che introduce un altro livello nascosto con 30 neuroni dopo il primo livello nascosto. La tua rete ora ha la topologia: 60 inputs -> [60 -> 30] -> 1 output L'idea qui è che alla rete viene data l'opportunità di modellare tutte le variabili di input prima di essere bloccata e costretta a dimezzare la capacità di rappresentazione, proprio come hai fatto nell'esperimento sopra con la rete più piccola. Invece di comprimere la rappresentazione degli input stessi, hai un livello nascosto aggiuntivo per aiutare nel processo. # modello più grande def create_larger(): # creiamo il modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(30, activation='relu')) model.add(Dense(1, activation='sigmoid')) # compiliamo il model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_larger, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Larger: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. # Binary Classification con Standardized Larger from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # dataset dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values # input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] # encode encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # modello più grande def create_larger(): # crezione modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(30, activation='relu')) model.add(Dense(1, activation='sigmoid')) # compilazione modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_larger, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Larger: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) L'esecuzione di questo esempio produce i risultati seguenti. 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. Puoi vedere che non ottieni un aumento delle prestazioni del modello. Questo potrebbe essere un rumore statistico o un segno che è necessaria ulteriore formazione. Larger: 83.14% (4.52%) Con un'ulteriore messa a punto di aspetti come l'algoritmo di ottimizzazione e il numero di epoche di addestramento, si prevede che siano possibili ulteriori miglioramenti. Qual è il miglior punteggio che puoi ottenere su questo set di dati? Riepilogo In questo post, hai scoperto la libreria Keras deep Learning in Python. Hai imparato passo dopo passo come risolvere un problema di classificazione binaria con Keras, in particolare: Come caricare e preparare i dati per l'uso in Keras Come creare un modello di rete neurale di base Come valutare un modello Keras utilizzando scikit-learn e la convalida incrociata k-fold stratificata In che modo gli schemi di preparazione dei dati possono migliorare le prestazioni dei tuoi modelli In che modo gli esperimenti che regolano la topologia di rete possono migliorare le prestazioni del modello
- SQL vs. NoSQL : le principali differenze tra i database SQL e NoSQL
I dati sono la spina dorsale di tutti i sottocampi della scienza dei dati. Indipendentemente dalle dimensioni o dall'applicazione del progetto che stai costruendo, dovrai ottenere e analizzare i dati. Molto spesso, i dati di cui hai bisogno sono archiviati in un DBMS (sistema di gestione del database). Per interagire e comunicare con il DBMS, è necessario utilizzare la sua lingua o una lingua che comprende. Il linguaggio utilizzato per interagire con i DBMS è SQL (Structured Query Language). Negli ultimi anni è emerso un altro termine nel campo dei database: database NoSQL. Se hai appena iniziato con la scienza dei dati, potresti aver sentito parlare di database SQL e NoSQL. Ma qual è la differenza tra Sql e NosSql e come si sceglie quale utilizzare? Partiamo dall'inizio assoluto. Perché abbiamo due approcci per interagire con i database? Semplice: SQL e NoSQL interagiscono con diversi tipi di database. SQL è l'approccio utilizzato per interagire con i database relazionali, mentre NoSQL viene utilizzato per interagire con i database non relazionali. SQL VS. NOSQL: QUAL È LA DIFFERENZA? I database SQL sono più vecchi, quindi hanno la strutture più consolidate. I database NoSQL sono facilmente scalabili, flessibili e relativamente semplici da usare grazie al loro schema flessibile. SQL è l'approccio utilizzato per interagire con i database relazionali, mentre NoSQL viene utilizzato per interagire con i database non relazionali. Database relazionali Nei database relazionali, i dati vengono archiviati in tabelle diverse, ciascuna contenente più record (righe). Queste tabelle sono collegate tra loro tramite una o più relazioni. Le chiavi definiscono la relazione tra le tabelle. Una chiave è il campo della tabella (colonna) che contiene valori univoci per ogni record. Se un campo è definito come chiave primaria di una tabella, questo campo può essere incluso in più tabelle e può essere utilizzato per accedere a tabelle diverse contemporaneamente. Una volta che una chiave primaria connette una tabella a un'altra, diventerà nota nell'altra tabella come chiave esterna. Ad esempio, l'immagine seguente mostra parte del database di una compagnia aerea. Abbiamo due tavoli: tavolo piloti e tavolo voli. Queste due tabelle sono collegate e utilizzate come chiave primaria nella tabella dei piloti "PilotId". Posso usare l'ID del pilota per accedere alle informazioni sul pilota per la tabella dei piloti e sui voli che questo pilota sta gestendo dalla tabella dei voli. Quindi, nella tabella dei piloti, PilotId è la chiave primaria, mentre è una chiave esterna nella tabella dei voli. PilotId viene utilizzato qui per formare una relazione tra le due tabelle. Database non relazionali A differenza dei database relazionali, i database non relazionali, i database NoSQL, non memorizzano i dati in tabelle e record. Invece, in questi tipi di database, la struttura di archiviazione dei dati è progettata e ottimizzata per esigenze specifiche. Invece di SQL, che è ciò che usano i database relazionali, i database NoSQL usano la mappatura relazionale degli oggetti (ORM) per facilitare la comunicazione con i suoi dati. I quattro tipi più diffusi di database NoSQL sono: orientati alla colonna, orientati al documento, coppie chiave-valore e database a grafo. Puoi utilizzare questi tipi singolarmente o combinarli. La scelta dipenderà dalla tua applicazione e dal tipo di dati che devi archiviare. DATABASE ORIENTATI ALLE COLONNE Come suggerisce il nome, in un database orientato a colonne, i dati vengono archiviati e organizzati come colonne. Questo tipo di database è utile se è necessario archiviare dati sparsi. DATABASE ORIENTATO AI DOCUMENTI In un database orientato ai documenti, la struttura dei dati ordinati non è così rigida. Al contrario, i dati vengono archiviati come una raccolta di campi e valori di dati insieme nella struttura di un documento. Questi database orientati ai documenti sono spesso archiviati come stringhe JSON e possono essere codificati utilizzando YAML, XML o come testo normale per proteggere i dati. Un vantaggio dell'utilizzo di un database orientato ai documenti è che i documenti non devono avere tutti la stessa struttura. Ciò significa che lo sviluppatore ha la libertà di ordinare diversi tipi di dati all'interno dello stesso database. In Python, MongoDB è un esempio di database orientati ai documenti. DATABASE DI VALORI-CHIAVE Se hai familiarità con Python, puoi pensare a un database di valori-chiave come a un dizionario Python. Ogni oggetto dati nel database verrà archiviato come una coppia: una chiave e un valore. DATABASE A GRAFI Quando i tuoi dati sono altamente interconnessi, dovrai utilizzare un database che ti consenta di implementare l'interconnessione dei dati in modo efficiente. I database Graph sono considerati i database NoSQL più complessi. Tuttavia, i database di grafici sono versatili, il che li rende ideali per molte applicazioni. Come scegliere tra SQL e NoSQL Quindi, come possiamo scegliere tra database SQL e NoSQL? Ci sono quattro aspetti che devi considerare per rispondere a questa domanda: flessibilità, scalabilità, coerenza e tecnologia disponibile. 1. FLESSIBILITÀ SQL VS NoSQL A volte i tuoi dati hanno strutture diverse e tipi diversi. Per definizione, i database NoSQL ti danno più libertà di progettare il tuo schema e archiviare diverse strutture di dati all'interno dello stesso database. I database SQL, d'altra parte, hanno una struttura e uno schema più rigidi. 2. SCALABILITÀ SQL VS NoSQL Hai mai visto un ascensore giapponese per parcheggi auto? Ti permette di parcheggiare le auto una sopra l'altra. Ora chiediti questo: quale sarà più efficiente, aggiungendo livelli all'ascensore o costruendo nuovi ascensori? I database SQL sono scalabili verticalmente, il che significa che puoi aggiungere livelli (aumentare il carico) mentre i database NoSQL sono scalabili orizzontalmente, il che significa che puoi aumentarne il carico dividendo il lavoro su più server. 3. COERENZA SQL VS NoSQL I database SQL hanno un design altamente coerente. Tuttavia, un database NoSQL può essere coerente (o meno) basato su DBMS. Ad esempio, MongoDB è coerente, mentre un database come Cassandra non lo è. 4. TECNOLOGIA DISPONIBILE SQL VS NoSQL Un aspetto che potresti considerare è l'attuale fase di sviluppo della tecnologia dei database. Poiché i database SQL esistono da molto tempo, sono più sviluppati dei database NoSQL. Quindi, per i principianti, iniziare con SQL e poi passare a NoSQL potrebbe essere la scelta migliore. Come regola generale, SQL è una scelta migliore se hai a che fare con un RDBMS (sistema di gestione di database relazionali) e desideri analizzare il comportamento dei dati o desideri creare dashboard personalizzati. Inoltre, SQL spesso consente un'archiviazione e un ripristino dei dati più rapidi e funziona meglio con query complesse. D'altra parte, i database NoSQL sono la scelta migliore se si desidera espandere la struttura standard di RDBMS o se è necessario creare uno schema flessibile. I database NoSQL sono anche migliori quando i dati che stai archiviando e registrando provengono da origini distribuite o devi solo archiviarli temporaneamente. Conclusione SQL VS NoSQL Alla fine, non possiamo dire che SQL sia assolutamente migliore di NoSQL o viceversa. Ognuno ha i suoi vantaggi e svantaggi e dovresti fare la tua scelta in base ai tuoi dati, alla loro applicazione e a ciò che ti semplifica il processo di sviluppo. I database SQL sono più vecchi, quindi hanno una strutture fisse più consolidate. I database NoSQL sono facilmente scalabili, flessibili e relativamente semplici da usare grazie al loro schema flessibile. Quindi, quali sono i requisiti dei tuoi dati? I tuoi dati sono ben strutturati? Hai a che fare con una grande quantità di dati? Ascolta i tuoi dati e farai la scelta migliore. Letture consigliate per "SQL vs. NoSQL : le principali differenze tra i database SQL e NoSQL" : Cosa è un Dataset e a cosa serve Come Analizzare Un Dataset in Solo 5 Passaggi Dove trovare i migliori Dataset per esercitarsi con il Machine learning Come Creare Un Dataset per il tuo Progetto Di Machine Learning Dataset per Esercitarsi nella Data Science e Data Visualizzation Manipolazione Dati con Python e Pandas Come preparare i dati per il Machine Learning o apprendimento automatico Analisi esplorativa dati con Python. Analisi esplorativa dei dati (EDA) Una Guida Semplice e Completa per passare da Excel a Python Come Generare dataset con python e scikit-learn
- Modelli di Machine Learning per Principianti con codice python
A volte la parte più difficile dell'apprendimento automatico è capire da dove cominciare. ML ha fatto scalpore negli ultimi anni e le opzioni su quali modelli utilizzare sono in continua crescita. Molte volte non esiste un modello "giusto" per il problema che stai cercando di risolvere, quindi può essere utile avere familiarità con diverse opzioni. Con così tanti fattori come dimensioni, qualità e tipo di dati, è importante avere familiarità con i diversi modelli, in modo da conoscere l'algoritmo che si adatta meglio alle tue esigenze. Cos'è un modello di Machine Learning? Un modello di Machine Learning è l'espressione o "formula"di un algoritmo che analizza montagne di dati per trovare pattern o fare previsioni. Alimentati dai dati, i modelli di machine learning (ML) sono i motori matematici dell'intelligenza artificiale. Ad esempio, un modello ML per la visione artificiale potrebbe essere in grado di identificare automobili e pedoni in un video in tempo reale. Uno per l'elaborazione del linguaggio naturale potrebbe tradurre parole e frasi. Sotto il cofano, un modello di Machine Learning è una rappresentazione matematica degli oggetti e delle loro relazioni reciproche. Gli oggetti possono essere qualsiasi cosa, dai "Mi piace" su un post di social network alle molecole in un esperimento di laboratorio. Modelli Machine Learning per ogni scopo Senza vincoli sugli oggetti che possono diventare funzionalità in un modello ML, non c'è limite agli usi dell'IA. Le combinazioni sono infinite. I data scientist hanno creato intere famiglie di modelli di apprendimento automatico per usi diversi e altri sono in lavorazione. Ecco cinque algoritmi generali che aiutano a fornire una comprensione di base del ML e aiutano a trovare il punto di partenza perfetto. Modelli di Machine Learning per Principianti 1- Modello di regressione logistica In termini di analisi di regressione, i modelli di regressione logistica stimano i parametri di un modello logistico. I modelli più comuni sono strutturati per risultati binari (sì/no). I modelli di regressione logistica vengono utilizzati per considerare la probabilità che un evento avvenga con log odds combinati con 1+ variabili indipendenti. I modelli logistici sono utili per problemi di classificazione in cui si sta cercando di determinare l'adattamento migliore. Esempio di Modello di Machine Learning di Regressione Logistica con Python from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression X, y = load_iris(return_X_y=True) clf = LogisticRegression(random_state=0).fit(X, y) clf.predict(X[:2, :]) clf.predict_proba(X[:2, :]) clf.score(X, y) Modelli di Machine Learning per Principianti 2- Modello dell'albero delle decisioni I modelli Decision Tree sono un sottoinsieme dell'apprendimento automatico supervisionato. Un modello di classificazione legge l'input e genera una classificazione che raccoglie i dati in una categoria. Un esempio di classificazione binaria è la creazione di un modello che decide se un'e-mail viene etichettata o meno come spam. I modelli dell'albero decisionale utilizzano una sequenza di query o test che si adattano man mano che i dati vengono analizzati, consentendo al modello di evolversi e di trarre conclusioni piuttosto significative. Gli alberi decisionali sono uno dei modi migliori per utilizzare la modellazione per l'esplorazione e l'apprendimento dei dati e migliorano l'analisi con una facile interpretazione, precisione ed efficienza. Esempio di Modello di Machine Learning dell'albero delle decisioni con Python from sklearn.datasets import load_iris from sklearn import treeiris = load_iris() X, y = iris.data, iris.target clf = tree.DecisionTreeClassifier() clf = clf.fit(X, y) tree.plot_tree(clf) Modelli di Machine Learning per Principianti 3 - Modello Naive Bayes Gli algoritmi di Naive Bayes (abbreviazione di NB) sono modelli bayesiani che utilizzano i nodi per ciascuna colonna o funzionalità nei dati. La ragione dell'ingenuità è che ignora qualsiasi precedente distribuzione parametrica e fa un'ipotesi iniziale di indipendenza di tutte le caratteristiche. Esempio di Modello di Machine Learning di Naive Bayes con Python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) gnb = GaussianNB() y_pred = gnb.fit(X_train, y_train).predict(X_test) print("Number of mislabeled points out of a total %d points : %d"% (X_test.shape[0], (y_test != y_pred).sum())) Modelli di Machine Learning per Principianti 4- Modello KNN Il modello KNN è un modello supervisionato e non parametrico che utilizza la prossimità per classificare e prevedere informazioni dettagliate sul raggruppamento di un singolo punto dati. I modelli KNN si basano sul presupposto iniziale che punti dati simili saranno posizionati in modo simile ed estrapola questo concetto nell'analisi di classificazione. Modelli di Machine Learning per Principianti 5 - Modello SVM Nell'apprendimento automatico, le macchine a vettori di supporto sono modelli di apprendimento supervisionato con algoritmi di apprendimento associati che analizzano i dati per la classificazione e l'analisi di regressione. Nel complesso, i modelli SVM sono spesso significativamente accurati e utilizzano meno potenza di calcolo rispetto ad altri modelli. Trovi il codice ed esempi qui Conclusione sui Modelli di Machine Learning per Principianti Ci sono molti altri modelli che meritano riconoscimento e consapevolezza. Tuttavia, questi sono un ottimo inizio se stai cercando di approfondire la tua comprensione dell'apprendimento automatico. Lascia un commento condividendo il tuo modello preferito e grazie per aver letto l'articolo!
- Sentiment Analysis con Python la guida completa
Ha completamente rivoluzionato il modo in cui interagiscono i chatbot. L'elenco è infinito.
- Ciclo di vita del Machine Learning e delle Intelligenze artificiali
Introduzione al ciclo di vita del Machine Learning (ML). Il ciclo di vita dell'apprendimento automatico è definito come un processo ciclico che coinvolge un processo in tre fasi (sviluppo della pipeline, fase di addestramento e fase di inferenza) acquisito dal data scientist e dai data engineer per sviluppare, addestrare e servire i modelli utilizzando l'enorme quantità di dati che sono coinvolti in varie applicazioni in modo che l'organizzazione possa trarre vantaggio dall'intelligenza artificiale e dagli algoritmi di apprendimento automatico per ricavare un valore aziendale pratico. Il primo passo nel ciclo di vita dell'apprendimento automatico consiste nel trasformare i dati grezzi in un set di dati pulito, che viene spesso condiviso e riutilizzato. Se un analista o un data scientist riscontrano problemi nei dati ricevuti, devono accedere ai dati originali e agli script di trasformazione. Ci sono una serie di motivi per cui potremmo voler tornare a versioni precedenti dei nostri modelli e dati. Ad esempio, trovare la versione migliore precedente potrebbe richiedere la ricerca in molte versioni alternative poiché i modelli inevitabilmente degradano il loro potere predittivo. Ci sono molte ragioni per questo degrado, come uno spostamento nella distribuzione dei dati che può comportare un rapido declino del potere predittivo come compensazione degli errori. La diagnosi di questo declino può richiedere il confronto dei dati di addestramento con i dati in tempo reale, la riqualificazione del modello, Oppure Imparare dagli errori, parte fondamentale del Ciclo di vita del Machine Learning Lo sviluppo di modelli richiede training separati e set di dati di test. L'uso eccessivo dei dati dei test durante l'allenamento può portare a una scarsa generalizzazione e prestazioni, in quanto possono portare a un adattamento eccessivo. Il contesto gioca un ruolo fondamentale qui, quindi è necessario capire quali dati sono stati utilizzati per addestrare i modelli previsti e con quali configurazioni. Il ciclo di vita dell'apprendimento automatico è basato sui dati perché il modello e l'output del training sono collegati ai dati su cui è stato eseguito il training. Nella figura seguente è mostrata una panoramica di una pipeline di machine learning end-to-end con un punto di vista dei dati: Passaggi coinvolti nel ciclo di vita dell'apprendimento automatico Lo sviluppatore di Machine Learning esegue costantemente la sperimentazione con nuovi set di dati, modelli, librerie software, parametri di ottimizzazione al fine di ottimizzare e migliorare l'accuratezza del modello. Poiché le prestazioni del modello dipendono completamente dai dati di input e dal processo di addestramento. 1. Costruire il modello di apprendimento automatico Questo passaggio determina il tipo di modello in base all'applicazione. Rileva inoltre che l'applicazione del modello nella fase di apprendimento del modello in modo che possano essere progettati correttamente in base alle esigenze di un'applicazione prevista. È disponibile una varietà di modelli di machine learning, come il modello supervisionato, il modello non supervisionato, i modelli di classificazione, i modelli di regressione, i modelli di clustering e i modelli di apprendimento per rinforzo. Una visione ravvicinata è illustrata nella figura seguente: 2. Preparazione dei dati Una varietà di dati può essere utilizzata come input per scopi di machine learning. Questi dati possono provenire da una serie di fonti, come un'azienda, aziende farmaceutiche, dispositivi IoT, aziende, banche, ospedali ecc. Nella fase di apprendimento della macchina vengono forniti grandi volumi di dati poiché all'aumentare del numero di dati si allinea ottenendo i risultati desiderati. Questi dati di output possono essere utilizzati per l'analisi o inseriti come input in altre applicazioni o sistemi di machine learning per i quali fungeranno da seme. 3. Allenamento del modello Questa fase riguarda la creazione di un modello dai dati forniti. In questa fase, una parte dei dati di addestramento viene utilizzata per trovare parametri del modello come i coefficienti di un polinomio o i pesi di nell'apprendimento automatico, il che aiuta a ridurre al minimo l'errore per il set di dati specificato. I dati rimanenti vengono quindi utilizzati per testare il modello. Questi due passaggi vengono generalmente ripetuti più volte al fine di migliorare le prestazioni del modello. 4. Selezione dei parametri Implica la selezione dei parametri associati al training che sono anche chiamati iperparametri. Questi parametri controllano l'efficacia del processo di addestramento e quindi, in definitiva, le prestazioni del modello dipendono da questo. Sono molto cruciali per la produzione di successo del modello di apprendimento automatico. 5. Trasferisci l'apprendimento Poiché ci sono molti vantaggi nel riutilizzare i modelli di apprendimento automatico in vari domini. Pertanto, nonostante il fatto che un modello non possa essere trasferito direttamente tra domini diversi, viene utilizzato per fornire un materiale di partenza per iniziare la formazione di un modello di fase successiva. In questo modo si riduce notevolmente il tempo di allenamento. 6. Verifica del modello L'input di questa fase è il modello addestrato prodotto dalla fase di apprendimento del modello e l'output è un modello verificato che fornisce informazioni sufficienti per consentire agli utenti di determinare se il modello è adatto all'applicazione prevista. Pertanto, questa fase del ciclo di vita dell'apprendimento automatico riguarda il fatto che un modello funziona correttamente se trattato con input che non sono visibili. 7. Distribuire il modello di apprendimento automatico In questa fase del ciclo di vita del machine learning, ci applichiamo per integrare i modelli di machine learning in processi e applicazioni. L'obiettivo finale di questa fase è la corretta funzionalità del modello dopo la distribuzione. I modelli dovrebbero essere distribuiti in modo tale da poter essere utilizzati per l'inferenza e dovrebbero essere aggiornati regolarmente. 8. Monitoraggio Implica l'inclusione di misure di sicurezza per garantire il corretto funzionamento del modello durante la sua durata. Affinché ciò avvenga è necessaria una corretta gestione e aggiornamento. Vantaggio del ciclo di vita dell'apprendimento automatico L'apprendimento automatico offre i vantaggi di potenza, velocità, efficienza e intelligenza attraverso l'apprendimento senza programmarli esplicitamente in un'applicazione. Offre opportunità per prestazioni, produttività e robustezza migliorate. Conclusione sul Ciclo di vita del Machine learning I sistemi di apprendimento automatico stanno diventando ogni giorno più importanti poiché la quantità di dati coinvolti in varie applicazioni sta aumentando rapidamente. La tecnologia di apprendimento automatico è il cuore di dispositivi intelligenti, elettrodomestici e servizi online. Il successo dell'apprendimento automatico può essere ulteriormente esteso ai sistemi critici per la sicurezza, alla gestione dei dati, al calcolo ad alte prestazioni, che ha un grande potenziale per i domini applicativi. Articoli consigliati Questa è una guida al ciclo di vita dell'apprendimento automatico. Abbiamo visto l'introduzione, Imparare dagli errori e i Passaggi coinvolti nel ciclo di vita dell'apprendimento automatico con i relativi vantaggi. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 25 righe di codice Tutorial di Regressione Logistica per l'apprendimento automatico Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Tutorial Pratico Tensorflow , TensorBoard e Python Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Migliori portatili per il Machine Learning e Deep Learning 2023
pollici 4K UHD (3840 x 2160) GPU: 10 GB NVIDIA GeForce RTX 3080 Batteria: fino a 5 ore L'ascesa di Business aspiranti programmatori per esplorare il campo del deep learning, dell'apprendimento automatico e della business
- Data Science software gratuiti per studenti e professori
Siccome teniamo molto a voi lettori e da un indagine abbiamo visto che per la maggior parte site studenti o professori abbiamo deciso di raccogliere per voi una lista con I migliori software di Data Science gratuiti per studenti e professori Introduzione ai software di Data science gratis in questo articolo, vorrei riassumere i migliori software gratuiti che puoi ottenere come studente o professore. Non importa in quale campo stai studiando/insegnando. Questa guida può aiutarti a trovare i tuoi nuovi software o strumenti preferiti. Tieni presente che mi concentrerò solo sui software/strumenti che di solito costano qualcosa e salterò il software che di solito è gratuito/open source. Ad esempio non parleremo di Python o software opensource simile. Ma solo di tool per la data science che anche solo per provarli devi pagare o fare un abbonamento. Mi raccomando salvati questo articolo o condividilo per non perdertelo in futuro. software di Data science gratis 1 : Pacchetto per sviluppatori GitHub per studenti ** Consigliato per sviluppatori di software. Pacchetto per sviluppatori GitHub per studenti Il pacchetto di sviluppo Github è una delle migliori fonti per sviluppatori che conoscessi. Non solo otterrai Github Pro, ma avrai accesso a un sacco di prodotti popolari come un dominio gratuito, Unity Student, alcuni crediti presso Digital Oceans, AWS, Microsoft e molti altri. Ecco alcuni software gratis che potrai ottenere ... Se sei un insegnante o un membro della facoltà, puoi registrarti a GitHub Teacher Toolbox invece che fornisce un po' meno prodotti rispetto al pacchetto di sviluppo per studenti. software di Data science gratis 2 : Bitbucket ** Consigliato per sviluppatori di software. Bitbucket Education per sviluppatori studenti | Bitbucket Puoi ottenere repository Git privati illimitati gratuiti su Bitbucket . Se hai già un GitHub Pro, potresti chiederti perché Bitbucket... Puoi controllare la loro differenza qui (tramite bitbucket e upguard ). Oppure, dai un'occhiata tu stesso, è gratis! Inoltre, se non conosci Git , ti consiglio di studiarlo su Github o bitbucket . software di Data science gratis 3 : Servizi di cloud computing ** Consigliato per sviluppatori di software! Esistono diversi fornitori di servizi cloud. Buone notizie, la maggior parte di loro offre crediti gratuiti per studenti e insegnanti da utilizzare/provare gratuitamente! Amazon AWS Educa Azure per studenti Google Cloud per l'istruzione Non preoccuparti se sei nuovo nel cloud computing. Su queste tre gigantesche piattaforme tecnologiche, hai molte risorse per imparare anche se sei all'inizio. software di Data science gratis 4 : JetBrains per gli studenti ** Consigliato per sviluppatori di software! Licenze educative gratuite — Supporto della community JetBrains è un insieme di strumenti di sviluppo software professionali per la codifica in Java, Kotlin, C#, C++, Ruby, Python, PHP, JavaScript e altri linguaggi. Puoi ottenere l'accesso gratuito a tutti gli IDE JetBrains se sei studente o insegnante. Puoi verificare con diverse opzioni: la tua e-mail didattica, la carta ISIC o ITIC, il documento ufficiale o il pacchetto Github. software di Data science gratis 5 : Tableau Desktop e Prep Builder ** Consigliato per i data scientist Gli studenti possono scaricare gratuitamente Tableau Desktop e Tableau Prep tramite i Programmi accademici. Provalo ora. "Tableau è uno dei migliori strumenti di visualizzazione dei dati di sempre! Se hai un'e-mail educativa, vai avanti con il link sopra e ottieni questo fantastico strumento gratuitamente! Riceverai licenze Tableau gratuite per un anno di Tableau Desktop e Tableau Prep ." - Evelina Judeikytë software di Data science gratis 6 : Autodesk Education ** Consigliato per Designer, Ingegneri, Architetti Comunità studentesca Autodesk | Software e risorse gratuiti per l'istruzione Autodesk offre accesso aperto a oltre 100 prodotti, disponibili per studenti, docenti e istituzioni a livello globale. Ricevi tutti questi prodotti popolari gratuitamente!! per l'architettura : Revit + AutoCAD + Civil 3D + … per Product designer : Inventor + AutoCAD + Fusion 360 + … per Media designer : Maya + 3ds Max + Arnold +... software di Data science gratis 7 : Microsoft Office 365 ** Consigliato a tutti Microsoft Office 365 gratuito per scuole e studenti Non c'è bisogno di dire molto sui prodotti Microsoft. Lo sanno tutti. Quindi ricevilo gratuitamente se sei uno studente! Non ti bastano ?? Qui trovi tutti gli altri Speriamo che questo articolo sugli strumenti gratuiti di data science per studenti e professori ti sia piaciuto. Abbiamo visto una varietà di strumenti che puoi usare per fare il tuo lavoro in modo più produttivo. Se hai domande, usa i commenti qui sotto. Grazie per aver letto l'articolo, condividilo per aiutarci.
- Introduzione a Scikit Learn con esempio pratico in Python
Se sei un programmatore Python o stai cercando una libreria robusta che puoi usare per portare l'apprendimento automatico in un sistema di produzione, allora una libreria che vorrai considerare seriamente è scikit-learn. In questo post avrai una panoramica della libreria scikit-learn e utili riferimenti su dove puoi saperne di più. Dove nasce Scikit-Learn ? Scikit-learn è stato inizialmente sviluppato da David Cournapeau come progetto di Google Summer of Code nel 2007. Successivamente Matthieu Brucher si è unito al progetto e ha iniziato a usarlo come parte del suo lavoro di tesi. Nel 2010 è stata coinvolta INRIA e la prima versione pubblica (v0.1 beta) è stata pubblicata a fine gennaio 2010. Il progetto ha ora più di 30 contributori attivi e ha ricevuto sponsorizzazioni da INRIA , Google, Tinyclues e Python Software Foundation . Cos'è scikit-learn? Scikit-learn è una libreria che fornisce una gamma di algoritmi di apprendimento supervisionati e non supervisionati tramite un'interfaccia python. È concesso in licenza con una licenza BSD semplificata permissiva ed è distribuito sotto molte distribuzioni Linux, incoraggiando l'uso accademico e commerciale. La libreria è basata su SciPy (Scientific Python) che deve essere installata prima di poter usare scikit-learn. Questa librerie si appoggia anche su: NumPy : pacchetto di matrice n-dimensionale di base SciPy : Libreria fondamentale per il calcolo scientifico Matplotlib : grafica 2D/3D completa IPython : Console interattiva migliorata Sympy : matematica simbolica Pandas : Strutture e analisi dei dati Estensioni o moduli per SciPy sono convenzionalmente denominati SciKits . In quanto tale, il modulo fornisce algoritmi di apprendimento ed è denominato scikit-learn. La visione per la libreria è un livello di robustezza e supporto richiesto per l'uso nei sistemi di produzione. Ciò significa una profonda attenzione a questioni quali facilità d'uso, qualità del codice, collaborazione, documentazione e prestazioni. Sebbene l'interfaccia sia Python, le librerie C fanno leva per prestazioni come numpy per operazioni di array e matrici, LAPACK , LibSVM e l'uso attento di cython. Quali sono le caratteristiche di scikit-learn? La libreria è focalizzata sulla modellazione dei dati. Non si concentra sul caricamento, la manipolazione e il riepilogo dei dati. Per queste funzionalità, fare riferimento a NumPy e Pandas. Alcuni gruppi popolari di modelli forniti da scikit-learn includono: Clustering : per raggruppare dati senza etichetta come KMeans. Cross Validation : per stimare la performance di modelli supervisionati su dati invisibili. Set di dati : per testare set di dati e per generare set di dati con proprietà specifiche per l'analisi del comportamento del modello. Riduzione dimensionale : per ridurre il numero di attributi nei dati per il riepilogo, la visualizzazione e la selezione di funzionalità come l'analisi dei componenti principali. Metodi di insieme : per combinare le previsioni di più modelli supervisionati. Estrazione delle caratteristiche : per definire gli attributi in immagini e dati di testo. Selezione delle funzioni : per identificare attributi significativi da cui creare modelli supervisionati. Regolazione dei parametri : per ottenere il massimo dai modelli supervisionati. Apprendimento multidimensionale: per riassumere e rappresentare dati multidimensionali complessi. Modelli supervisionati : una vasta gamma non limitata a modelli lineari generalizzati, analisi discriminate, baye ingenue, metodi pigri, reti neurali, macchine vettoriali di supporto e alberi decisionali. Esempio: Classificazione e alberi di regressione Vogliamo farti un esempio per mostrarti quanto sia facile usare la libreria. In questo esempio, utilizziamo l'algoritmo dell'albero decisionale Classification and Regression Trees (CART) per modellare il set di dati dei fiori Iris. Questo set di dati viene fornito come set di dati di esempio con la libreria e viene caricato. Il classificatore si adatta ai dati e quindi vengono effettuate previsioni sui dati di addestramento. Infine, viene stampata l'accuratezza della classificazione e una matrice di confusione . # Semplice esempio di Decision Tree Classifier from sklearn import datasets from sklearn import metrics from sklearn.tree import DecisionTreeClassifier # Carichiamo il dataset iris dataset = datasets.load_iris() # creiamo e alleniamo il modello model = DecisionTreeClassifier() model.fit(dataset.data, dataset.target) print(model) # Facciamo le nostre previsioni expected = dataset.target predicted = model.predict(dataset.data) # Riassumiamo le performance del modello print(metrics.classification_report(expected, predicted)) print(metrics.confusion_matrix(expected, predicted)) #Ti consigliamo di provarlo è molto divertente L'esecuzione di questo esempio produce l'output seguente, che mostra i dettagli del modello addestrato, l'abilità del modello in base ad alcune metriche comuni e una matrice di confusione. DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None, max_features=None, max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=None, splitter='best') precision recall f1-score support 0 1.00 1.00 1.00 50 1 1.00 1.00 1.00 50 2 1.00 1.00 1.00 50 avg / total 1.00 1.00 1.00 150 [[50 0 0] [ 0 50 0] [ 0 0 50]] Chi usa scikit-learn? La pagina delle testimonianze di scikit-learn elenca Inria, Mendeley, wise.io, Evernote, Telecom ParisTech e AWeber come utenti della libreria. Se questa è una piccola indicazione delle aziende che hanno presentato informazioni sul loro utilizzo, è molto probabile che ci siano decine o centinaia di organizzazioni più grandi che utilizzano la libreria. Ha una buona copertura di test e versioni gestite ed è adatto sia per prototipi che per progetti di produzione. Risorse utili per scikit-learn Se sei interessato a saperne di più, controlla la homepage di Scikit-Learn che include documentazione e risorse correlate. Puoi ottenere il codice dal repository github e le versioni sono storicamente disponibili sul progetto Sourceforge . Documentazione Ti consiglio di iniziare con il tutorial di avvio rapido e di sfogliare la guida per l'utente e la galleria di esempi per gli algoritmi che ti interessano. In definitiva, scikit-learn è una libreria e il riferimento API sarà la migliore documentazione per portare a termine le cose. Tutorial di installazione-> http://scikit-learn.org/stable/tutorial/basic/tutorial.html Guida per l'utente-> http://scikit-learn.org/stable/user_guide.html Riferimento API-> http://scikit-learn.org/stable/modules/classes.html Galleria di esempi-> http://scikit-learn.org/stable/auto_examples/index.html Condividi o Commenta l'Articolo per sostenerci
- 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.














