top of page

Risultati Ricerca Intelligenza Artificiale Italia

475 elementi trovati per ""

  • I migliori modelli linguistici open source

    In questo articolo, discuteremo dell'importanza dei modelli linguistici di grandi dimensioni e suggeriremo alcuni dei migliori modelli open source e le attività NLP per cui possono essere utilizzati. Cos'è un modello linguistico? Un modello linguistico è solo una distribuzione di probabilità su sequenze di token (parole). I modelli linguistici sono il fulcro della moderna elaborazione del linguaggio naturale (NLP) e le loro applicazioni possono essere per una varietà di attività NLP come sintesi vocale, analisi del sentimento, riepilogo del testo, controllo ortografico, classificazione dei token, ecc. Nella maggior parte della NLP compiti, i modelli linguistici possono determinare la probabilità del prossimo token analizzando il testo dato. Il modello linguistico può essere sotto forma di reti Unigrams, N-grams, Exponential o Neural. Perhè usare i modelli linguistici ? Nel 2019, c'è stato un grande incremento nella popolarità del Language Modeling grazie allo sviluppo di trasformatori come BERT, GPT-2 e XLM. Questi modelli basati su trasformatori possono essere adattati da un modello di linguaggio generico a un'attività a valle specifica nota come messa a punto. Il processo di ottimizzazione richiede molti meno dati rispetto all'addestramento del modello linguistico da zero. Questo è uno dei motivi che rende le modalità basate su trasformatore straordinarie rispetto ai precedenti approcci utilizzati nella modellazione linguistica. Un altro motivo per cui i modelli linguistici sono così utilizzati è che un singolo modello può essere utilizzato per più attività NLP , ad esempio come risposta alle domande, classificazione di token e testo, riassunto di documenti, generazione di testo, traduzione e molti altri. I modelli linguistici basati su trasformatore possono eseguire queste attività NLP con prestazioni molto più elevate grazie alla presenza di più parametri e più dati di addestramento. Questo post include alcuni dei migliori modelli di linguaggio open source. I migliori modelli linguistici 1. GPT-Neo, GPT-J e GPT-NeoX GPT-Neo, GPT-J e GPT-NeoX sono modelli di intelligenza artificiale molto potenti e possono essere utilizzati per problemi di apprendimento a pochi colpi. L'apprendimento immediato è come l'addestramento/la messa a punto di qualsiasi modello di apprendimento profondo, tuttavia richiede solo un numero limitato di campioni. I modelli GPT-Neo, GPT-J e GPT-NeoX sono stati addestrati e rilasciati da EleutherAI come versioni open source di GPT-3, che è stato rilasciato da Open-AI ed è rimasto privato fino ad oggi. I modelli GPT-J e GPT-Neo sono simili a GPT-2 ed entrambi sono stati addestrati sul set di dati Pile. The Pile è un set di dati di modellazione del linguaggio open source da 825 GiB che consiste in 22 set di dati più piccoli combinati. L'importanza di Pile è la diversità delle sue fonti di dati che migliora la conoscenza generale tra domini e le attività della PNL a valle. GPT-NeoX è un miglioramento dei modelli GPT open source rilasciati in precedenza basati principalmente su Megatron-LM e DeepSeed. A causa della complessità e delle sue dimensioni, è stato costruito su Mesh TensorFlow e progettato per GPU. Il modello GPT-NeoX-20B ha 20 miliardi di parametri ed è stato addestrato sul Pile, il che lo rende il più grande modello autoregressivo denso disponibile pubblicamente. GPT-NeoX-20B può aiutare a sviluppare prove di concetto per misurare la fattibilità del progetto grazie all'apprendimento a colpi di poche. I migliori modelli linguistici 2. XLNET I ricercatori della Carnegie Mellon University e di Google hanno sviluppato un nuovo modello chiamato XLNet per eseguire attività di NLP come la comprensione della lettura, la classificazione del testo, l'analisi del sentimento e altro. La sua formulazione autoregressiva consente l'apprendimento di contesti bidirezionali massimizzando la probabilità su tutte le permutazioni dell'ordine di fattorizzazione e supera i limiti di BERT. Segue un metodo di pre-allenamento autoregressivo generalizzato. Inoltre, XLNet integra le idee di Transformer-XL, il modello autoregressivo all'avanguardia, nel pre-training. Empiricamente, XLNet supera BERT su 20 attività, per lo più con un ampio margine, e ottiene risultati all'avanguardia su 18 attività come risposta alle domande, inferenza del linguaggio naturale, analisi del sentimento e classifica dei documenti. I migliori modelli linguistici 3. Roberta I ricercatori di Facebook AI e dell'Università di Washington hanno analizzato come è stata addestrata la rappresentazione dell'encoder bidirezionale di Google da Transformers (BERT). Hanno apportato diverse modifiche al processo di allenamento e hanno anche migliorato le prestazioni. Inoltre, i ricercatori hanno utilizzato un set di dati più ampio per l'addestramento, hanno scelto mini-batch più grandi, hanno rimosso la Next Sentence Prediction (NSP) e hanno addestrato il modello con molte più iterazioni rispetto a BERT. Ciò ha portato a un modello ottimizzato chiamato RoBERTa (Robustly Optimized BERT Approach) che corrispondeva ai punteggi del modello XLNet sul benchmark GLUE (General Language Understanding Evaluation). È stato dimostrato che l'apprendimento trasferito nella PNL è altamente efficiente per le attività di classificazione del testo. I modelli RoBERTa raggiungono una precisione competitiva in un'ampia gamma di attività a valle, il che lo ha reso un modello "Go-to" per le attività di classificazione di token e testo da parte di molte aziende. I migliori modelli linguistici 4. DeBERTa I ricercatori di Microsoft Research hanno proposto BERT potenziato con la decodifica con un'attenzione districata per migliorare i modelli BERT e RoBERTa utilizzando due tecniche. In primo luogo, ha districato il meccanismo dell'attenzione, in cui ogni parola è rappresentata utilizzando due vettori che ne codificano rispettivamente il contenuto e la posizione, e i pesi dell'attenzione tra le parole sono calcolati utilizzando matrici districate sul loro contenuto e posizioni relative. In secondo luogo, viene utilizzato un decodificatore maschera avanzato per sostituire il livello softmax di output per prevedere i token mascherati per il pre-training del modello. Tanya sottolinea che queste due tecniche migliorano significativamente l'efficienza del pre-addestramento del modello e l'esecuzione delle attività a valle. Il modello DeBERTa supera per la prima volta la linea di base umana sul benchmark GLUE al momento della pubblicazione. Fino ad oggi i modelli DeBERTa sono utilizzati principalmente per una varietà di attività NLP come la risposta a domande, il riepilogo e la classificazione di token e testi. I migliori modelli linguistici 5. XLM-RoBERTa Nel mondo degli affari di oggi, le aziende di maggior successo hanno raggiunto il punto in cui devono offrire i propri servizi in lingue diverse dall'inglese. Grazie ai ricercatori del team AI di Facebook, XLM-RoBERTa è un modello linguistico basato su trasformatore ed è in grado di elaborare testo da 100 lingue diverse. In passato, ciò richiedeva di moltiplicare gli sforzi per ogni nuova lingua, occupandosi dei dettagli intricati di ogni lingua. Sebbene spesso non forniscano le migliori prestazioni per attività, i modelli multilingue come XLM-RoBERTa consentono alle aziende di generare valore per gli utenti che non parlano inglese molto più velocemente. I migliori modelli linguistici 6. DistilBERT Mentre altri modelli mirano a ottimizzare le prestazioni di BERT, DistilBERT ha un obiettivo diverso. Mentre XLNet, RoBERTa e DeBERTa hanno apportato miglioramenti alle prestazioni, DistilBERT cerca di migliorare la velocità di inferenza. Il suo obiettivo è ridurre le grandi dimensioni e aumentare la velocità di BERT_{BASE} e BERT_{LARGE} con parametri rispettivamente di 110M e 340M, pur mantenendo quanta più potenza possibile. DistilBERT riduce le dimensioni di BERT_{BASE} del 40% e migliora la velocità del 60% mantenendo il 97% delle sue capacità. I migliori modelli linguistici 7. BLOOM Con i suoi 176 miliardi di parametri, BLOOM è in grado di generare testo in 46 linguaggi naturali e 13 linguaggi di programmazione. Per quasi tutti, come spagnolo, francese e arabo, BLOOM sarà il primo modello linguistico con oltre 100 miliardi di parametri mai creato. Questo è il culmine di un anno di lavoro che ha coinvolto oltre 1000 ricercatori provenienti da oltre 70 paesi e oltre 250 istituzioni, che ha portato a un ciclo finale di 117 giorni (11 marzo - 6 luglio) per addestrare il modello BLOOM sul supercomputer Jean Zay nel sud di Parigi, Francia grazie a una sovvenzione di calcolo del valore stimato di 3 milioni di euro dalle agenzie di ricerca francesi CNRS e GENCI. I ricercatori possono ora scaricare, eseguire e studiare BLOOM per studiare le prestazioni e il comportamento di modelli linguistici di grandi dimensioni recentemente sviluppati fino alle loro operazioni interne più profonde. Più in generale, qualsiasi individuo o istituzione che accetti i termini della Licenza per l'IA responsabile del modello(sviluppato durante il progetto BigScience stesso) può utilizzare e costruire sul modello su una macchina locale o su un provider cloud. In questo spirito di collaborazione e miglioramento continuo, stiamo rilasciando, per la prima volta, anche i checkpoint intermedi e gli stati di ottimizzazione della formazione. Non hai 8 A100 con cui giocare? Un'API di inferenza, attualmente supportata dal cloud TPU di Google e da una versione FLAX del modello, consente anche test rapidi, prototipazione e utilizzo su scala ridotta. Puoi già giocarci su Hugging Face Hub. Facci sapere nei commenti se conosci altri modelli linguistici open source su cui poter mettere mano !

  • Ottimizzare gli iperparametri con GridSearchCV e Python

    Il processo decisionale basato sui dati ha un ampio coinvolgimento degli algoritmi di apprendimento automatico. Per un problema aziendale, il professionista non si affida mai a un algoritmo. Si applicano sempre più algoritmi rilevanti in base al problema e si seleziona il modello migliore in base alle migliori metriche di prestazione mostrate dai modelli. Ma questa non è la fine. È possibile aumentare le prestazioni del modello utilizzando gli iperparametri. Pertanto, trovare gli iperparametri ottimali ci aiuterebbe a ottenere il modello con le migliori prestazioni. In questo articolo impareremo su Hyperparameters, Grid Search, Cross-Validation, GridSearchCV e l'ottimizzazione di Hyperparameters in Python. Gli iperparametri per un modello possono essere scelti utilizzando diverse tecniche come Ricerca casuale, Ricerca griglia, Ricerca manuale, Ottimizzazioni bayesiane, ecc. In questo articolo impareremo su GridSearchCV che utilizza la tecnica Grid Search per trovare gli iperparametri ottimali per aumentare il modello prestazione. Indice su Come ottimizzare gli iperparametri con GridSearchCV Iperparametri vs parametri Comprensione della ricerca nella griglia Convalida incrociata e GridSearchCV Come applicare GridSearchCV? Conclusioni Iperparametri vs parametri Sia i parametri che gli iperparametri sono associati al modello di Machine Learning, ma entrambi sono pensati per attività diverse. Capiamo come sono diversi tra loro nel contesto del Machine Learning. I parametri sono le variabili utilizzate dall'algoritmo di Machine Learning per prevedere i risultati in base ai dati storici di input. Questi sono stimati utilizzando un algoritmo di ottimizzazione dello stesso algoritmo di Machine Learning. Pertanto, queste variabili non sono impostate o codificate dall'utente o dal professionista. Queste variabili sono servite come parte dell'addestramento del modello. Esempio di parametri: Coefficiente di variabili indipendenti Regressione lineare e Regressione logistica. Gli iperparametri sono le variabili che l'utente specifica in genere durante la creazione del modello di Machine Learning. Quindi, gli iperparametri vengono specificati prima di specificare i parametri o possiamo dire che gli iperparametri vengono utilizzati per valutare i parametri ottimali del modello. La parte migliore degli iperparametri è che i loro valori sono decisi dall'utente che sta costruendo il modello. Ad esempio, max_depth negli algoritmi della foresta casuale, k nel classificatore KNN. Tieni a mente questa differenza, solitamente viene fatta ai colloqui. Comprensione della ricerca nella griglia Ora che sappiamo cosa sono gli iperparametri, il nostro obiettivo dovrebbe essere trovare i migliori valori di iperparametri per ottenere i risultati di previsione perfetti dal nostro modello. Ma sorge la domanda, come trovare questi migliori insiemi di iperparametri? Si può provare il metodo di ricerca manuale, utilizzando il processo hit and trial e si possono trovare i migliori iperparametri che richiederebbero molto tempo per costruire un singolo modello. Per questo motivo sono stati introdotti metodi come Random Search, GridSearch. Qui, discuteremo come viene eseguita Grid Seach e come viene eseguita con la convalida incrociata in GridSearchCV. Questa ricerca a griglia utilizza una combinazione diversa di tutti gli iperparametri specificati e dei relativi valori, calcola le prestazioni per ciascuna combinazione e seleziona il valore migliore per gli iperparametri. Ciò rende l'elaborazione dispendiosa in termini di tempo e costo in base al numero di iperparametri coinvolti. Ricerca della griglia su due parametri (immagine di Alexander Elvers da WikiMedia ) Convalida incrociata e GridSearchCV In GridSearchCV, insieme a Grid Search, viene eseguita anche la convalida incrociata. La convalida incrociata viene utilizzata durante l'addestramento del modello. Come sappiamo, prima di addestrare il modello con i dati, dividiamo i dati in due parti: dati di training e dati di test . Nella convalida incrociata, il processo divide ulteriormente i dati del treno in due parti: i dati del treno e i dati di convalida. Il tipo più popolare di convalida incrociata è la convalida incrociata K-fold. È un processo iterativo che divide i dati del treno in k partizioni. Ogni iterazione conserva una partizione per il test e le restanti partizioni k-1 per il training del modello. L'iterazione successiva imposterà la partizione successiva come dati di test e il restante k-1 come dati del treno e così via. In ogni iterazione, registrerà le prestazioni del modello e alla fine darà la media di tutte le prestazioni. Pertanto, è anche un processo che richiede tempo. Pertanto, GridSearch insieme alla convalida incrociata impiega molto tempo cumulativamente per valutare i migliori iperparametri. Ora vedremo come utilizzare GridSearchCV nel nostro problema di Machine Learning. Convalida incrociata K-Fold (immagine di Gufosowa da WikiMedia ) Come applicare GridSearchCV? Il metodo .GridSearchCV() è disponibile nella classe scikit-learn model_selection. Può essere avviato creando un oggetto di GridSearchCV(): clf = GridSearchCv(stimatore, param_grid, cv, punteggio) In primo luogo, sono necessari 4 argomenti, ovvero estimator , param_grid , cv e scoring . La descrizione degli argomenti è la seguente: 1. estimatore – Un modello scikit-learn 2. param_grid – Un dizionario con nomi di parametri come chiavi ed elenchi di valori di parametro. 3. punteggio – La misura della performance. Ad esempio, ' r2 ' per i modelli di regressione, ' precision ' per i modelli di classificazione. 4. cv – Un numero intero che è il numero di pieghe per la convalida incrociata K-fold. GridSearchCV può essere utilizzato su diversi iperparametri per ottenere i valori migliori per gli iperparametri specificati. Ora applichiamo GridSearchCV con un set di dati di esempio: Potete scaricare il dataset cliccando qui , e cercando heart.csv utilizzando l'icona in alto a destra (il tasto evidenziato nella fotto seguente) . Come ottimizzare gli iperparametri con GridSearchCV e Python ? Dopo aver visto la teoria base, sporchiamoci le mani con un pò di codice. #importiamo le librerie necessarie import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.model_selection import GridSearchCV from sklearn import metrics import warnings warnings.filterwarnings('ignore') #carichiamo il dataset scaricato df = pd.read_csv('heart.csv') print(df.head()) Dividiamo le variabili indipendenti e dipendenti(target) X = df.drop('target', axis = 1) y = df['target'] Dividiamo i dati in Train e Test X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42) Inizializziamo un modello Random Forest Classifier rfc = RandomForestClassifier() Qui, abbiamo creato l'oggetto rfc di RandomForestClassifier(). Inizializzazione dell'oggetto GridSearchCV() e adattamento con iperparametri forest_params = [{'max_depth': list(range(10, 15)), 'max_features': list(range(0,14))}] clf = GridSearchCV(rfc, forest_params, cv = 10, scoring='accuracy') clf.fit(X_train, y_train) Qui, abbiamo passato l'oggetto estimatore rfc , param_grid come forest_params , cv = 5 e il metodo di punteggio come accuratezza in GridSearchCV() come argomenti. Otteniamo i migliori iperparametri print(clf.best_params_) Questo darà la combinazione di iperparametri insieme a valori che danno le migliori prestazioni della nostra stima specificata. Mettiamo tutto il codice insieme import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.model_selection import GridSearchCV from sklearn import metrics import warnings warnings.filterwarnings('ignore') df = pd.read_csv('heart.csv') X = df.drop('target', axis = 1) y = df['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42) rfc = RandomForestClassifier() forest_params = [{'max_depth': list(range(10, 15)), 'max_features': list(range(0,14))}] clf = GridSearchCV(rfc, forest_params, cv = 10, scoring='accuracy') clf.fit(X_train, y_train) print(clf.best_params_) print(clf.best_score_) Eseguendo il codice sopra, otteniamo: Migliori parametri e miglior punteggio del classificatore foresta casuale Pertanto, clf.best_params_ fornisce la migliore combinazione di iperparametri ottimizzati e clf.best_score_ fornisce il punteggio medio con convalida incrociata del nostro Classificatore di foresta casuale. Conclusioni su come Ottimizzare gli iperparametri con GridSearchCV e Python In questo articolo, abbiamo appreso di Grid Search, K-fold Cross-Convalidation, GridSearchCV e come fare un buon uso. GridSearchCV è una fase di selezione del modello e dovrebbe essere eseguita dopo le attività di elaborazione dei dati. È sempre bene confrontare le prestazioni dei modelli Tuned e Untuned. Questo ci costerà tempo e denaro ma sicuramente ci darà i migliori risultati. L'API scikit-learn è un'ottima risorsa in caso di aiuto. È sempre bello imparare facendo. Condividi l'articolo per aiutarci a diffondere la cultura del dato e dell'intelligenza artificiale :)

  • Intelligenza artificiale nello sviluppo del software il suo ruolo

    Il mondo dello sviluppo del software sta cambiando molto velocemente. L'intelligenza artificiale sta avendo un enorme impatto su tutto lo sviluppo del software. Il viaggio dell'IA nello sviluppo del software è iniziato quando è stato coniato per la prima volta il termine "intelligenza artificiale". L'intelligenza artificiale è già utilizzata nello sviluppo di software in vari modi, ma non è affatto vicina a raggiungere il suo pieno potenziale. Questo blog esplorerà come l'IA può aiutare lo sviluppo del software. Introduzione al uolo dell' I.A. nello sviluppo del software Nel 2022, le statistiche giornaliere sulla generazione di dati si attestano a 2,5 quintilioni di byte, la cui conversione di unità in Gigabyte diventa un compito da capogiro. Ora, potresti chiederti perché una raccolta di valori dispari è importante in quest'era in cui le persone etichettano i dati come il nuovo petrolio. Qui entra in gioco il concetto di data science. La scienza dei dati è una raccolta di varie tecniche analitiche, descrittive e predittive per estrarre conoscenze e informazioni utili dai dati. La domanda di data scientist è sempre in eccedenza nel mercato. Questo mostra l'importanza dei dati e quanto potente può diventare un insieme casuale di dati come un array, diciamo [0,1,1,2,3,5,8,13]. Questi dati hanno alimentato il settore dell'automazione con l'aiuto dell'intelligenza artificiale. Questo ci porta a una domanda importante. Come verrà cambiato lo sviluppo del software con l' Intelligenza Artificiale? Nell'industria del software, l'introduzione dell'intelligenza artificiale ha il potenziale per migliorare la produttività degli sviluppatori di software, rendendo lo sviluppo del software più efficiente. L'industria del software sta crescendo rapidamente e gli sviluppatori di software stanno lottando per tenere il passo con la rapida crescita. L'IA ha il potenziale per migliorare la produttività degli sviluppatori di software. L'intelligenza artificiale potrebbe aiutare a monitorare, gestire e analizzare grandi volumi di dati generati dal processo di sviluppo del software. L'IA aiuterebbe anche gli esperti di sviluppo software a prendere decisioni migliori sulla progettazione. Ruoli dell' intelligenza artificiale nello sviluppo di software : Ecco come l' intelligenza artificiale viene applicata allo sviluppo software: Esperienza utente aumentata Aumento della velocità di sviluppo Maggiore sicurezza e privacy Sistemi di raccomandazione Eliminazione degli errori Processo decisionale e stima del tempo Ruolo dell' intelligenza artificiale nello sviluppo software Società SaaS affermate come Netflix, Spotify, Amazon Prime, Youtube, ecc., utilizzano ampiamente l'IA sulla loro piattaforma per soddisfare le esigenze dei clienti e fornire un servizio soddisfacente ai propri utenti. C'è stato un cambiamento crescente verso l'IA nello sviluppo del software e l'IA è sicuramente il futuro dello sviluppo del software. Ecco alcuni modi in cui l'intelligenza artificiale può aiutarti a creare il tuo prossimo prodotto software "wow". Ruolo dell' intelligenza artificiale nello sviluppo software : Esperienza utente aumentata Ogni software deve fornire una piattaforma per consentire all'utente di comunicare le sue domande e ottenere una soluzione. Una piattaforma non è tutto, ma piuttosto una piattaforma basata sull'intelligenza artificiale (AI Chatbot) che risponde istantaneamente a ogni query e offre agli utenti un'esperienza di qualità di prim'ordine. Quasi tutti i siti Web del servizio clienti, come IRCTC, BookMyShow, MakeMyTrip , ecc., sono basati su chatbot AI per aiutare i clienti. Anche Alexa e altri assistenti vocali intelligenti supportati dall'intelligenza artificiale hanno aiutato gli utenti con un'ampia gamma di attività a proprio piacimento. Ruolo dell' intelligenza artificiale nello sviluppo software : Aumento della velocità di sviluppo Le tecniche di machine learning e deep learning possono aiutare DevOp a ridurre diversi processi di test del software. Gli analisti del controllo qualità non sarebbero più necessari per testare manualmente il software poiché l'IA testerebbe il tuo software automaticamente in ogni fase. Le società fintech stanno adottando bot di trading basati sull'intelligenza artificiale per automatizzare le operazioni dei loro libri. Ruolo dell' intelligenza artificiale nello sviluppo software : Maggiore sicurezza e privacy I modelli di deep learning più potenti possono classificare e identificare quasi tutto in un frame. Pertanto, l'IA può migliorare la sicurezza consentendo l'accesso solo a persone identificate e verificate, mantenendo la privacy a livello di utente fornendo un accesso diverso a utenti diversi come definito dall'amministratore. Le applicazioni bancarie utilizzano esclusivamente l'IA per proteggere i dati dei propri clienti. Ruolo dell' intelligenza artificiale nello sviluppo software : Sistema di raccomandazione Se il tuo prodotto è un servizio di streaming video o un servizio di streaming di podcast/musica, l'alimentazione del software con un sistema di suggerimenti aumenterebbe l'esperienza utente e il tempo di permanenza dell'utente sulla tua applicazione. Il sistema di raccomandazione funziona comprendendo gli interessi dell'utente e prevedendo la migliore opzione successiva. Aziende come Netflix e Facebook curano ampiamente i contenuti degli utenti con l'aiuto dell'IA. Ruolo dell' intelligenza artificiale nello sviluppo software : Eliminazione degli errori L'intelligenza artificiale può aiutare a diagnosticare e trattare un errore senza l'intervento umano, riducendo anche i costi di manutenzione. L'IA può utilizzare l'apprendimento per rinforzo per affrontare gli errori con il concetto di ricompensa e punizione. I dati vengono quindi riqualificati per evitare gli stessi errori in futuro. In questo modo, garantisce che un errore trattato sia un errore eliminato per sempre. Ruolo dell' intelligenza artificiale nello sviluppo software : Processo decisionale e stima del tempo La capacità dell'IA include la capacità di prendere decisioni. In base a vincoli e criteri definiti, la macchina può prendere la decisione più adatta e accurata. Diversi modelli di regressione possono aiutare a prevedere il periodo di tempo stimato e la stima dei costi per il progetto corrente se addestrati con le tempistiche del progetto passate e le stime dei costi. Gli algoritmi di apprendimento supervisionato e non supervisionato possono aiutare in modo significativo uno sviluppatore con servizi avanzati. Il futuro dell sviluppo del software con l'intelligenza artificiale L'ambito dell'IA nello sviluppo del software è enorme e l'elenco continua con altre applicazioni come la codifica automatizzata, la progettazione automatizzata dell'interfaccia utente, ecc. Questo è il motivo per cui si ritiene che l'80% delle aziende stia investendo nell'IA e circa il 50 La % di queste aziende ha già iniziato a definire le proprie strategie di intelligenza artificiale. Il ruolo dell'IA non si limita solo allo sviluppo del software, ma aiuta anche gli sviluppatori a distribuire il proprio software nel modo più conveniente. È possibile condurre sondaggi per conoscere gli interessi e le esigenze degli utenti e gli algoritmi di Machine Learning possono gestire i dati per selezionare la regione migliore e il momento migliore per distribuire il prodotto. Dopo la distribuzione, l'IA può essere utilizzata nell'analisi sentimentale per comprendere il feedback degli utenti e aiutare gli sviluppatori a introdurre nuovi aggiornamenti per la soddisfazione degli utenti. L'analisi sentimentale può essere eseguita utilizzando l'elaborazione del linguaggio naturale, che aiuta a estrarre l'ambito dei miglioramenti da ogni feedback fornito dall'utente. Conclusione sull'Intelligenza artificiale nello sviluppo del software L'IA può essere utilizzata per migliorare le prestazioni operative e l'esperienza dell'utente. Puoi fare in modo che la tua IA raccomandi contenuti personalizzati e personalizzati per l'utente. Con l'intelligenza artificiale, ottieni sicurezza e privacy dei dati di nuova generazione poiché i suoi algoritmi complessi garantiscono la crittografia. Infine, elimina gli errori e prende decisioni importanti per mantenere il processo senza intoppi. Il futuro della razza umana sembra luminoso con questi progressi tecnologici. Ci auguriamo che i cambiamenti apportati dall'IA siano nella giusta direzione e verso il miglioramento della società e degli individui nel loro insieme. In sostanza, non ci sarebbe nulla che un essere umano avrebbe bisogno di eseguire manualmente una volta che il potere supremo dell'intelligenza artificiale è combinato con imminenti scoperte umane.

  • Migliori progetti Open Source Python di Intelligenza Artificiale da provare nel 2023

    Se sei interessato a imparare Python, ecco i migliori progetti open source Python dedicati all' I.A. da provare nel 2023 Lavorando come data scientist o data engineer, Python è un linguaggio di programmazione che non puoi permetterti di non conoscere . Forse non c'è modo migliore per imparare Python che lavorare su progetti open source. Ti aiuterà a diventare più abile nella programmazione, soprattutto in ambito di I.A. Ecco i migliori progetti open source Python da provare: Teano Scikit-learn Chainer Caffè Gensim PyTorch Shogun Pylearn2 Nilearn Numenta Teano Theano ti consente di ottimizzare, valutare e definire espressioni matematiche che coinvolgono array multidimensionali. È una libreria Python e ha molte funzionalità che la rendono un must per qualsiasi professionista dell'apprendimento automatico. È ottimizzato per stabilità e velocità e può generare codice C dinamico per valutare rapidamente le espressioni. Theano ti consente di utilizzare NumPy.ndarray anche nelle sue funzioni, in modo da poter utilizzare le capacità di NumPy in modo efficace. Scikit-learn Scikit-learn è una libreria di strumenti basata su Python che puoi utilizzare per l'analisi dei dati e il data mining. Puoi riutilizzarlo in numerosi contesti. Ha un'eccellente accessibilità, quindi anche usarlo è abbastanza facile. I suoi sviluppatori lo hanno costruito su matplotlib, NumPy e SciPy. Alcune attività per le quali è possibile utilizzare Scikit-learn includono Clustering, Regression, Classification, Model Selection, Preprocessing e Dimensionality Reduction. Per diventare un vero professionista dell'IA, devi essere in grado di utilizzare questa libreria. Chainer Chainer è un framework basato su Python per lavorare su reti neurali. Supporta più architetture di rete, comprese reti ricorrenti, convnet, reti ricorsive e reti feed-forward. A parte questo, consente il calcolo CUDA in modo da poter utilizzare una GPU con pochissime righe di codice. Puoi eseguire Chainer anche su molte GPU, se necessario. Un vantaggio significativo di Chainer è che rende molto semplice il debug del codice, quindi non dovrai fare molti sforzi in tal senso. Su Github, Chainer ha più di 12.000 commit, quindi puoi capire quanto è popolare. Caffè Caffe è un prodotto di Berkeley AI Research ed è un framework di deep learning incentrato su modularità, velocità ed espressione. È tra i progetti di intelligenza artificiale open source più popolari in Python. Ha un'architettura e una velocità eccellenti in quanto può elaborare più di 60 milioni di immagini in un giorno. Inoltre, ha una fiorente comunità di sviluppatori che lo utilizzano per applicazioni industriali, ricerca accademica, multimedia e molti altri domini. Gensim Gensim è una libreria Python open source in grado di analizzare file di testo normale per comprenderne la struttura semantica, recuperare file semanticamente simili a quello ed eseguire molte altre attività. È scalabile e indipendente dalla piattaforma, come molte delle librerie e dei framework Python di cui abbiamo discusso in questo articolo. Se hai intenzione di utilizzare la tua conoscenza dell'intelligenza artificiale per lavorare su progetti NLP (Natural Language Processing), allora dovresti sicuramente studiare questa libreria. PyTorch PyTorch aiuta a facilitare la prototipazione della ricerca in modo da poter distribuire i prodotti più velocemente. Ti consente di passare da una modalità grafica all'altra tramite TorchScript e fornisce una formazione distribuita che puoi scalare. PyTorch è disponibile anche su più piattaforme cloud e ha numerose librerie e strumenti nel suo ecosistema che supportano la NLP, la visione artificiale e molte altre soluzioni. Per eseguire implementazioni AI avanzate, dovrai acquisire familiarità con PyTorch. Shogun Shogun è una libreria di apprendimento automatico (open-source) e fornisce molti metodi ML unificati ed efficienti. Non è basato esclusivamente su Python, quindi puoi usarlo anche con molti altri linguaggi come Lua, C#, Java, R e Ruby. Consente la combinazione di più classi di algoritmi, rappresentazioni dei dati e strumenti in modo da poter prototipare rapidamente pipeline di dati. Ha una fantastica infrastruttura per i test che puoi utilizzare su varie configurazioni del sistema operativo. Ha anche diversi algoritmi esclusivi, inclusi i metodi Krylov e Multiple Kernel Learning, quindi conoscere Shogun ti aiuterà sicuramente a padroneggiare l'IA e l'apprendimento automatico. Pylearn2 Basato su Theano, Pylearn2 è tra le librerie di machine learning più diffuse tra gli sviluppatori Python. Puoi usare espressioni matematiche per scrivere i suoi plugin mentre Theano si occupa della loro stabilizzazione e ottimizzazione. Su Github, Pylearn2 ha più di 7k commit e sono ancora in crescita, il che dimostra la sua popolarità tra gli sviluppatori ML. Pylearn2 si concentra sulla flessibilità e fornisce un'ampia varietà di funzionalità, inclusa un'interfaccia per i media (immagini, vettori, ecc.) e implementazioni multipiattaforma. Nilearn Nilearn aiuta nei dati di neuroimaging ed è un popolare modulo Python. Utilizza scikit-learn (di cui abbiamo discusso in precedenza) per eseguire varie azioni statistiche come la decodifica, la modellazione, l'analisi della connettività e la classificazione. La neuroimaging è un'area importante nel settore medico e può aiutare a risolvere molteplici problemi come una migliore diagnosi con una maggiore precisione. Se sei interessato a utilizzare l'IA in campo medico, allora questo è il punto di partenza. Numenta Numenta si basa su una teoria della neocorteccia chiamata HTM (Hierarchical Temporal Memory). Molte persone hanno sviluppato soluzioni basate su HTM e sul software. Tuttavia, c'è molto lavoro in corso in questo progetto. HTM è un framework di intelligenza artificiale basato sulla neuroscienza. Condividi l'articolo se ti è piaciuto : )

  • Machine learning con excel

    Tranquilli non siamo impazziti 🤣 nel blog post di oggi andiamo a vedere come applicare il machine sui tuoi dati utilizzando direttamente excel. Alla fine di questo tutorial, avrai implementato il tuo primo algoritmo senza scrivere una singola riga di codice. Utilizzerai le tecniche di Machine Learning per classificare i dati reali utilizzando le funzioni di base in Excel. Non devi essere un genio o un programmatore per capire l'apprendimento automatico. Nonostante le applicazioni popolari di auto a guida autonoma, robot killer e riconoscimento facciale, le basi dell'apprendimento automatico (ML) sono abbastanza semplici. Questa è un'occasione per bagnare i piedi e comprendere la potenza di queste nuove tecniche. Prima di iniziare chiediamo scusa a tutti i data scientist che leggeranno questo articolo🙌 Cosa ne pensiamo NOI del Machine learning con excel Tutti i data scientist probabilmente stanno rabbrividendo al titolo di questo tutorial. Excel è generalmente considerato uno strumento terribile per l'analisi dei dati seria. Non è scalabile per elaborare i grandi set di dati con cui abbiamo a che fare nel mondo reale e manca di alcune funzionalità chiave dei linguaggi di programmazione e delle librerie di apprendimento automatico. Vedrai che molte delle formule fornite in questo tutorial sono complicate da capire per le carenze e le peculiarità di Excel. Il motivo per cui sto usando Excel è rendere questa introduzione accessibile ai non programmatori poiché la maggior parte di noi ha una conoscenza di base dello strumento. Coloro che scelgono di perseguire più seriamente l'apprendimento automatico e la scienza dei dati alla fine passeranno all'utilizzo di Python o R, ma non c'è nulla di male nell'iniziare in modo semplice. Machine learning con excel : Il nostro obiettivo finale L'obiettivo finale di questo tutorial è utilizzare Machine Learning per costruire un modello di classificazione su un insieme di dati reali utilizzando un'implementazione dell'algoritmo k-nearest neighbors (KNN). Non lasciarti sopraffare, analizziamo poco a poco cosa significa. Apprendimento automatico Machine Learning è una raccolta di tecniche per creare o ottimizzare i modelli. In altre parole, Machine Learning prende i modelli che abbiamo costruito e usa i dati del mondo reale per "imparare" come mettere a punto i parametri del modello per essere più utili in uno scenario del mondo reale basato sui dati di addestramento. In questo tutorial applicheremo l'apprendimento automatico a un modello di classificazione. Non preoccuparti se non sei del tutto chiaro in questo momento, alla fine del tutorial saprai esattamente di cosa sto parlando. Set di allenamento vs set di prova Gli algoritmi di Machine Learning adattano il modello in base a una serie di dati di addestramento. I dati di allenamento sono un set di dati che contiene tutte le variabili che abbiamo a disposizione e la corretta classificazione. I set di allenamento possono essere sviluppati in vari modi, ma in questo tutorial utilizzeremo un set di allenamento classificato da un esperto umano. È importante ricordare che i modelli di apprendimento automatico sono validi solo quanto i dati di addestramento. Più sono accurati i tuoi dati di allenamento e più ne hai, meglio è. In altre parole: spazzatura dentro, spazzatura fuori. Un set di test è in genere un sottoinsieme dei dati di addestramento in quanto contiene anche tutte le variabili e le classificazioni corrette. La differenza sta nel modo in cui lo usiamo. Mentre il set di allenamento aiuta a sviluppare il modello, il set di test lo prova in uno scenario reale e vede come se la cava bene. Esistono molti modi complicati per misurare gli errori e testare i modelli, ma finché ottieni l'idea di base possiamo andare avanti. Machine learning con excel : Modelli di classificazione Un modello di classificazione è semplicemente uno strumento matematico per determinare quale categoria o classe di qualcosa hai a che fare in base a un insieme di variabili o input. Ad esempio, se volessi classificare se un animale è un gatto o un pesce, potrei usare variabili come se l'animale nuota o meno, se ha o meno la pelliccia e se mangia o meno per determinare quale classe appartiene sotto. Noterai due cose. In primo luogo, più variabili hai, meglio è. Con ulteriori informazioni, puoi essere più sicuro che la tua classificazione sia corretta. In secondo luogo, alcune variabili sono più utili o predittivedi altri. Prendi l'ultimo esempio, indipendentemente dal fatto che l'animale mangi o meno. L'osservatore casuale sa che sia i pesci che i gatti mangiano, quindi avere questo dato non è utile per determinare la classe dell'animale. L'obiettivo del machine learning in questo contesto è quello di creare il modello di classificazione più utile dati i dati disponibili e di eliminare gli input che non migliorano l'efficacia del modello. Machine learning con excel : K-Nearest Neighbors K-Nearest Neighbors (KNN) è un tipo specifico di modello di classificazione. L'intuizione è semplice da capire. Il modello prende tutti i dati disponibili su un punto dati sconosciuto e li confronta con un set di dati di addestramento per determinare a quali punti in quel set di addestramento il punto sconosciuto è più simile o più vicino. L'idea è che il punto dati sconosciuto molto probabilmente rientrerà nella stessa classe dei punti dati noti a cui è più simile. KNN è semplicemente un modo matematico per determinare la somiglianza tra due punti dati. Il set di dati dell'iris Per questo tutorial utilizzeremo un set di dati classico utilizzato per insegnare l'apprendimento automatico chiamato Iris Data Set . Questa è una raccolta di dati su tre specie di fiori di Iris e quattro dati su di esse: lunghezza del sepalo, larghezza del sepalo, lunghezza del petalo e larghezza del petalo. Il set di dati è già stato preparato per facilitare l'accesso ai principianti. Puoi scaricare i dati in un formato excel compatibile a questo link facendo clic su "scarica zip" in alto a destra e aprendo i contenuti in Excel. Machine learning con excel : Preparare i nostri dati Come ho già detto, questo set di dati è pensato per essere semplice da utilizzare. Ognuna delle prime 4 colonne (AD) è una dimensione, o caratteristica, dei dati. La quinta colonna, E, è la varietà o la classe del fiore. Ogni riga è il proprio record o punto dati. Come puoi vedere, abbiamo 150 punti dati noti con cui lavorare. Abbiamo una decisione importante da prendere: come vogliamo segregare questo set di dati in un set di addestramento e un set di test. Dato un set di dati più grande, ci sono tecniche di ottimizzazione che potremmo usare per prendere questa decisione. Poiché questo set di dati è piccolo e pensato per i principianti, lo divideremo 70/30 per convenzione. In altre parole, utilizzeremo il 70% dei dati, ovvero 105 punti dati come set di addestramento e i restanti 45 punti dati come set di test. Ora useremo Excel per campionare casualmente il 70% dei dati. Innanzitutto, aggiungi una colonna al tuo foglio chiamata "Valore casuale" e usa la funzione RAND() per selezionare casualmente un valore compreso tra 0 e 1. Tieni presente che la funzione RAND() riseleziona un nuovo numero ogni volta che il tuo foglio ricalcola. Per evitarlo, dopo aver generato i miei numeri li copierò (Ctrl+C) e poi li incollerò in modo speciale come valori (Ctrl+Shift+V) in modo che rimangano fissi. Inizieremo nella cella F2 e trascineremo fino all'ultimo punto dati. =RAND() Successivamente li classificherò da 1 a 150 utilizzando la funzione RANK() di Excel, iniziando nella cella G2 come mostrato di seguito e trascinando fino all'ultimo punto dati. Assicurati di bloccare il quadro di riferimento come mostrato premendo F4 o aggiungendo manualmente i segni $, altrimenti questa formula non funzionerà come previsto. =RANGO(F2, $F$2:$F$15) Ora abbiamo un valore univoco compreso tra 1 e 150 per ciascun punto dati. Poiché vogliamo 105 valori per il nostro set di allenamento, aggiungeremo un'altra colonna e selezionare i valori classificati da 1 a 105 per il nostro set di allenamento utilizzando una funzione IF() rapida. In caso contrario, aggiungeremo il valore al nostro set di test. Di nuovo, inizieremo da H2 e trascineremo fino all'ultimo punto dati. =SE(G2<=105,”Train”, “Test”) A questo punto il tuo set di dati dovrebbe essere impostato come lo screenshot. Ricorda che poiché ognuno di noi ha preso un campione casuale diverso, i valori specifici nelle colonne FH avranno un aspetto diverso per te. Dovresti anche dedicare un minuto all'aggiunta di filtri per il nostro passaggio successivo. Successivamente suddivideremo i nostri due set di dati nei loro fogli di lavoro (o schede) per mantenere le cose organizzate. Crea un nuovo foglio di lavoro chiamato "Training Set" e filtra i dati "Training" nel foglio di lavoro originale. Copia questi dati insieme alle intestazioni e incollali nel tuo "Training Set". Dovresti avere 106 righe (105 valori + la riga di intestazione). Fai lo stesso per il foglio di lavoro "Set di test". Dovresti avere 46 righe (45 valori + la riga di intestazione). A questo punto puoi eliminare il foglio di lavoro "Iris" ed eliminare le colonne FH in entrambi i fogli di lavoro rimanenti poiché abbiamo già separato i nostri dati. Infine, aggiungerò una colonna "ID" all'inizio di ogni foglio di lavoro ed etichetterò ciascun punto dati rispettivamente 1–105 e 1–45 semplicemente digitando il numero (trascinando verso il basso il quadratino di riempimento sarà tuo amico qui per salvarti il ​​lavoro ). Questo ci aiuterà a fare i nostri calcoli nelle prossime sezioni. Assicurati che ciascuno dei tuoi set sia organizzato come nell'esempio seguente. Machine learning con excel : Costruire il modello I nostri dati sono ora pronti e possiamo procedere alla costruzione del nostro modello. Come promemoria, questo modello funziona confrontando il punto dati sconosciuto che desideriamo classificare con i suoi k più vicini o più simili. Per fare ciò dovremo prendere ogni punto nel nostro set di test e calcolare la sua distanza da ciascun punto nel set di allenamento. per k intendiamo "oggetti o istanze" dello stesso tipo Machine learning con excel : Il concetto di distanza La distanza è il modo in cui i matematici determinano quali punti sono più simili in uno spazio n-dimensionale. L'intuizione è che più piccola è la distanza tra i punti più sono simili. La maggior parte di noi è abituata a calcolare la distanza in uno spazio bidimensionale, come un sistema di coordinate x,y, o usando longitudine e latitudine. Esistono diversi modi per calcolare la distanza, ma per semplificare utilizzeremo la distanza euclidea. Di seguito è riportata una visualizzazione della formula della distanza euclidea in uno spazio bidimensionale. Come puoi vedere, la formula funziona creando un triangolo rettangolo tra due punti e determinando la lunghezza dell'ipotenusa, il lato più lungo del triangolo, come identificato dalla freccia. Il nostro set di dati è a 4 dimensioni. È difficile per noi visualizzare spazi oltre le 3 dimensioni, ma indipendentemente dal fatto che tu possa visualizzarlo o meno possiamo comunque calcolare la distanza tra due punti allo stesso modo indipendentemente dal numero di dimensioni. Ecco la formula generica per la distanza euclidea: In parole povere questo sta dicendo è che la distanza euclidea tra due punti, q & p, può essere determinata prendendo ogni dimensione per ogni punto, a partire dalla prima dimensione, e quadrando la differenza tra loro in modo iterativo finché non lo hai fatto per tutte le dimensioni e sommate le differenze. Quindi prendiamo la radice quadrata di quella somma e abbiamo la distanza euclidea. Sembra complicato ma vedrai che in realtà è abbastanza semplice da usare una volta che torniamo nei nostri dati. Machine learning con excel : Calcolo della distanza Nella nostra cartella di lavoro, crea un nuovo foglio di lavoro chiamato "Distanza". Il nostro obiettivo per questo foglio è creare una matrice 45X105 delle distanze tra ciascun punto dati nel set di test e il set di allenamento. Nel nostro caso, ogni riga corrisponderà a un punto dati nel set di test e ogni colonna corrisponderà a un punto dati nel set di addestramento. Partendo da A2 e procedendo riga per riga fino a raggiungere A46, riempi ogni cella con i numeri 1–45. Anche in questo caso, il quadratino di riempimento è utile qui, quindi non è necessario digitare i numeri uno per uno. Ora, lavorando da B1 e poi colonna per colonna orizzontalmente fino a quando non colpisci DB1, riempi ogni colonna con i numeri 1–105. La tua matrice dovrebbe assomigliare allo screenshot qui sotto che ne mostra una piccola parte. Prima di andare avanti, dovrai convertire la tua matrice in una tabella in modo da poter mantenere le cose organizzate. Seleziona l'intera matrice e premi Ctrl+T, quindi nomina la tabella "Distance_Table" e seleziona per creare la tabella con le intestazioni. Successivamente, ti consigliamo di nominare la tua prima colonna "ID test" digitandolo nella cella A1. Ora che la nostra tabella è impostata possiamo iniziare i nostri calcoli. Inizieremo nella cella B2 che calcolerà la distanza tra il primo punto nel nostro Training Set (ID #1) e il primo punto nel nostro Test Set (ID #1). Possiamo applicare rapidamente la formula della distanza euclidea utilizzando la funzione CERCA.VERT in Excel per trovare i valori per ciascuna dimensione e quindi eseguire i calcoli secondo necessità. È meglio copiare e incollare questa formula nella barra della formula nella cella B2 poiché gestisce un paio di particolarità della funzione Tabella in Excel, ma assicurati di capire che tutto ciò che questa formula sta facendo è applicare la formula Distanza euclidea di cui abbiamo discusso in precedenza. Come scritto, puoi quindi trascinarlo per riempire l'intera tabella. =SQRT(((VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 2, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 2, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 3, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 3, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 4, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 4, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 5, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 5, FALSE)) ^ 2)) Dovresti finire con qualcosa del genere: Machine learning con excel : Trovare i K più vicini A questo punto abbiamo calcolato la distanza tra ogni punto del nostro set di test e ogni punto del nostro set di allenamento. Ora dobbiamo identificare i k più vicini a ciascun punto nel nostro set di test. Crea un nuovo foglio di lavoro chiamato "k più vicini" e iniziando da A2 lavora riga per riga per riempire le celle con i numeri 1–45 in modo che corrispondano ai punti nel nostro set di test. Le nostre colonne non rappresenteranno il Training Set come nei fogli precedenti. Invece, questi rappresenteranno i 6 k più vicini, iniziando con il primo più vicino e poi il secondo più vicino e così via. Il primo vicino più vicino ha la distanza più piccola, il secondo vicino più vicino ha la seconda distanza più piccola e così via. Il tuo foglio dovrebbe assomigliare a questo: Come abbiamo già fatto, scriveremo una formula nella cella B2 che può essere trascinata per riempire il resto della nostra matrice. Il nostro approccio consiste nell'identificare il valore più piccolo nella riga corrispondente (2) nella tabella delle distanze, trovare il numero di colonna per quel valore e quindi restituire il nome della colonna poiché questo ci darà l'ID del valore nel Training Set. Utilizzeremo una combinazione delle funzioni Indice e Match per raggiungere questo obiettivo. Nota che siamo in grado di semplificare questa formula perché abbiamo avuto la lungimiranza di impostare la nostra matrice Distanza come tabella in Excel e quindi possiamo facilmente inserire le intestazioni. =INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 1), Distance!2:2, FALSE)) Trascina questa formula per riempire la riga superiore della matrice dei tuoi k più vicini. Dovrai regolare manualmente il valore in grassetto nella funzione SMALL() per rappresentare il vicino che stiamo cercando. Quindi, ad esempio, per trovare il secondo vicino più vicino la formula sarebbe la seguente. =INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 2), Distance!2:2, FALSE)) Ricorda che i tuoi valori saranno diversi poiché il tuo campione casuale utilizzato per formare il set di test è diverso dal mio. A questo punto, di solito mi prendo un minuto per ricontrollare manualmente una delle righe quando possibile solo per assicurarmi che le mie formule funzionino come previsto. Su larga scala ti consigliamo di utilizzare i test automatizzati, ma per ora lo stiamo semplificando. Abbiamo un ultimo passaggio: dobbiamo identificare la classificazione di ciascuno dei nostri vicini più prossimi. Torneremo alla formula in B2 e la modificheremo per eseguire un VLOOKUP dell'ID nel Training Set e restituire la classifica. Lo trascineremo quindi per riempire la matrice. =VLOOKUP(NUMBERVALUE(INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 1), Distance!2:2, FALSE))), ‘Training Set’!$A$1:$F$106, 6, FALSE) Fare un passo indietro Facciamo un passo indietro e guardiamo cosa abbiamo realizzato. Ora hai identificato per ogni punto nel tuo test impostato la classificazione per i 6 k più vicini. Probabilmente noterai che per tutti o quasi tutti i tuoi punti dati i 6 k più vicini rientreranno tutti nella stessa classificazione. Ciò significa che il nostro set di dati è altamente raggruppato. Nel nostro caso, i nostri dati sono altamente raggruppati per due motivi. In primo luogo, come discusso all'inizio del tutorial, il set di dati è progettato per essere facile da usare. In secondo luogo, questo è un set di dati a bassa dimensione poiché stiamo lavorando solo con 4 dimensioni. Man mano che gestisci i dati del mondo reale, scoprirai in genere che sono molto meno raggruppati, soprattutto all'aumentare del numero di dimensioni. Minore è il raggruppamento dei dati, maggiore dovrà essere il training set per creare un modello utile. Ottimizzazione con l'apprendimento automatico Se i nostri dati fossero sempre raggruppati in modo ordinato come il set di dati Iris, non ci sarebbe bisogno dell'apprendimento automatico. Troveremmo semplicemente il vicino più vicino usando la nostra formula e la useremmo per determinare la classificazione di ogni punto dati sconosciuto. Poiché di solito non è così, l'apprendimento automatico ci aiuta a prevedere con maggiore precisione la classificazione di un punto dati sconosciuto osservando più vicini contemporaneamente. Ma quanti vicini dobbiamo guardare? È qui che entra in gioco la "K" in K-Nearest Neighbors. K descrive il numero di vicini che prenderemo in considerazione quando prevediamo la classificazione di un punto dati sconosciuto. Troppi pochi o troppi vicini Intuitivamente, è importante capire perché questo problema è complicato. È possibile guardare troppo pochi vicini e anche troppi vicini. Soprattutto con l'aumento del numero di dimensioni, è possibile che il vicino più vicino non sia sempre la classificazione corretta. Guardare troppo pochi vicini limita la quantità di informazioni che il tuo modello ha a disposizione per fare la sua determinazione. Considerare troppi vicini degraderà effettivamente la qualità delle informazioni utilizzate dal tuo modello come input. Questo perché man mano che vengono introdotti più vicini, si introduce anche rumore nei dati. Pensaci: non avrebbe senso considerare tutti i 104 vicini nel nostro esempio! Vedere una rappresentazione visiva di questo concetto di seguito. Quindi questo diventa un classico problema di ottimizzazione in cui tentiamo di trovare il valore K che fornisce la maggior parte delle informazioni senza essere troppo alto o troppo basso. Usiamo il tuo set di prova Per questo tutorial, utilizzeremo un processo molto semplice di tentativi ed errori per determinare il valore K ottimale. Prima di andare avanti, ti consiglio di guardare il foglio di lavoro k più vicini e di fare un'ipotesi su quale potrebbe essere il miglior valore k, solo per divertimento. Lo scopriremo presto se hai ragione! Machine Learning con Excel : Impostazione dell'algoritmo Un algoritmo è solo un insieme di passaggi che un computer deve ripetere più e più volte secondo un insieme definito di regole. In questo caso, diremo al computer di provare diversi valori K, calcoleremo il tasso di errore per ciascuno utilizzando il nostro set di test e quindi alla fine restituiremo il valore che produce il tasso di errore più basso. Per fare ciò dovremo creare un nuovo foglio di lavoro chiamato "Modello KNN". Lo configureremo come segue, etichettando le righe da A4 a A48 con 1–45 per ciascuno dei nostri punti dati di test. Iniziamo con il valore previsto nella colonna B. Abbiamo bisogno che questa formula si aggiusti in base al valore K. Nel caso in cui il valore K sia 1, la formula è semplice, prendiamo solo il vicino più vicino. =’Nearest Neighbors’!B2 Nel caso in cui il valore K sia maggiore di 1, prenderemo il vicino più comune che appare. Se l'occorrenza dei vicini è equamente distribuita, ad esempio se 3 dei vicini sono Setosa e 3 dei vicini sono Virginica quando K=6, ci si schiererà con la classificazione del vicino più prossimo. La formula per K=2 sarebbe la seguente. Usiamo IFERROR perché questa formula restituisce un errore quando ci sono due vicini che si verificano un numero uguale di volte per il valore K dato. =IFERROR(INDEX(‘Nearest Neighbors’!B2:C2,MODE(MATCH(‘Nearest Neighbors’!B2:C2,’Nearest Neighbors’!B2:C2,0))), ‘Nearest Neighbors’!B2) Ti consigliamo di utilizzare la formula espansa di seguito nella cella B4 che ti consente di utilizzare valori K fino a K = 6 incluso. Non c'è bisogno di preoccuparsi delle specifiche di questa formula, basta copiarla e incollarla. A proposito, dover usare formule complicate, schizzinose e difficili da capire come queste sono uno dei limiti di Excel a cui mi riferivo in precedenza. Questo sarebbe stato un gioco da ragazzi in Python. Nota che questa formula restituirà un errore se non c'è un valore in K o un valore non compreso tra 1 e 6. Dovresti copiare questa formula dalla cella B4 alla colonna B. =IFS($B$1=1, 'Nearest Neighbors'!B2, $B$1=2, IFERROR(INDEX('Nearest Neighbors'!B2:C2,MODE(MATCH('Nearest Neighbors'!B2:C2,'Nearest Neighbors'!B2:C2,0))), 'Nearest Neighbors'!B2), $B$1=3, IFERROR(INDEX('Nearest Neighbors'!B2:D2,MODE(MATCH('Nearest Neighbors'!B2:D2,'Nearest Neighbors'!B2:D2,0))), 'Nearest Neighbors'!B2), $B$1=4, IFERROR(INDEX('Nearest Neighbors'!B2:E2,MODE(MATCH('Nearest Neighbors'!B2:E2,'Nearest Neighbors'!B2:E2,0))), 'Nearest Neighbors'!B2), $B$1=5, IFERROR(INDEX('Nearest Neighbors'!B2:F2,MODE(MATCH('Nearest Neighbors'!B2:F2,'Nearest Neighbors'!B2:F2,0))), 'Nearest Neighbors'!B2),$B$1=6, IFERROR(INDEX('Nearest Neighbors'!B2:G2,MODE(MATCH('Nearest Neighbors'!B2:G2,'Nearest Neighbors'!B2:G2,0))), 'Nearest Neighbors'!B2)) Successivamente, vogliamo inserire la classificazione effettiva e nota di ciascun punto di test in modo da poter determinare se il nostro modello aveva ragione o meno. Per questo utilizziamo un rapido VLOOKUP nella colonna C, partendo dalla cella C4 e trascinando verso il basso. =VLOOKUP(A4, ‘Test Set’!$A$1:$F$46, 6, FALSE) Quindi imposteremo una formula nella colonna D per restituire un 1 se la previsione era errata o errata e uno 0 se la previsione era corretta. Inizierai nella cella D4 e trascinerai la formula verso il basso. =IF(B4=C4, 0, 1) Infine calcoleremo il tasso di errore dividendo il numero di errori per il numero totale di punti dati, utilizzando questa formula nella cella B2. Per convenzione lo formatteremo come percentuale. =SUM(D4:D48)/COUNT(D4:D48) Machine Learning con Excel : Esecuzione dell'algoritmo Ora siamo pronti per eseguire il nostro algoritmo per diversi valori K. Poiché stiamo testando solo 6 valori, potremmo farlo a mano. Ma non sarebbe divertente e, cosa più importante, non scala. Prima di procedere , dovrai abilitare il componente aggiuntivo Risolutore per Excel seguendo le istruzioni in questo articolo. Ora vai alla barra multifunzione Dati e fai clic sul pulsante Risolutore. Il pulsante del risolutore esegue automaticamente le prove e gli errori secondo le nostre istruzioni. Avrai una finestra di dialogo di parametri o istruzioni, che vorrai impostare come mostrato di seguito. Lo stiamo configurando in modo che cerchi di ridurre al minimo il tasso di errore durante il test di valori compresi tra 1 e 6, testando solo valori interi . Excel girerà per un minuto e potresti vedere lampeggiare alcuni valori sullo schermo prima di visualizzare questa finestra di dialogo. È necessario fare clic su OK per mantenere la soluzione del risolutore. Interpretazione del tasso di errore e della soluzione del risolutore Molti algoritmi di ottimizzazione hanno più soluzioni a causa del fatto che i dati hanno più minimi o massimi. Questo è successo nel mio caso. Infatti, nel mio caso particolare, tutti i valori interi da 1 a 6 rappresentano i minimi con un tasso di errore di circa il 2%. Quindi, cosa facciamo ora? Alcune cose mi passano per la testa. Innanzitutto, questo set di test non è molto buono. Il modello non ha ottenuto alcun vantaggio di ottimizzazione dal set di test e, in quanto tale, probabilmente rifarei il set di test e riprovare per vedere se ottengo risultati diversi. Considererei anche l'utilizzo di metodi di test più sofisticati come la convalida incrociata. A un tasso di errore così basso nel mio set di test, comincio anche a preoccuparmi di un adattamento eccessivo. L'overfitting è un problema che si verifica nell'apprendimento automatico quando un modello è troppo adattato alle sfumature di un particolare set di dati di addestramento o test. Quando un modello è troppo adatto, non è così predittivo o efficace quando incontra nuovi dati in natura. Ovviamente, con un set di dati accademici come questo ci aspetteremmo che il nostro tasso di errore fosse piuttosto basso. La considerazione successiva è quale valore scegliere se ho identificato diversi minimi. Sebbene il test non sia stato efficace in questo particolare esempio, in genere sceglierei il numero più basso di vicini che è al minimo per risparmiare risorse di calcolo. Il mio modello funzionerà più velocemente se deve considerare meno vicini. Non farà la differenza con un piccolo set di dati, ma decisioni come questa consentono di risparmiare risorse sostanziali su larga scala. Conclusione sul Machine Learning con Excel Complimenti! Hai imparato le basi dell'apprendimento automatico e implementato l'algoritmo KNN senza uscire dai confini di Excel. Ricorda che Excel è semplicemente uno strumento e che la parte importante è comprendere i concetti che fanno funzionare questo approccio. Comprendere i fondamenti ti aiuterà ad approfondire la scienza dei dati e l'apprendimento automatico e iniziare a sviluppare i tuoi modelli. Ora però il nostro consiglio è quello di iniziare a utilizzare Python o strumenti più scalabili di excel.

  • Cos'è il TinyML o Tiny Machine Learning ?

    Scopriamo insieme un sottosezione di machine learning (ML) chiamata Tiny Machine Learning (TinyML), che cos'è, le sue applicazioni, i requisiti hardware e software e i suoi vantaggi. TinyML è un tipo di machine learning che riduce le reti di deep learning per adattarle a hardware minuscolo. Riunisce intelligenza artificiale e dispositivi intelligenti. Sono 45x18mm di Intelligenza Artificiale in tasca . Improvvisamente, il progetto del fine settimana fai-da-te sulla tua scheda Arduino ha un modello di apprendimento automatico in miniatura incorporato al suo interno. I dispositivi embedded a bassissima potenza stanno invadendo il nostro mondo e, con i nuovi framework embedded di machine learning, consentiranno ulteriormente la proliferazione di dispositivi IoT basati sull'intelligenza artificiale. Cos'è TinyML ? E, cosa più importante, per cosa può (e non può) essere utilizzato? L'apprendimento automatico (ML) è un campo dinamico e potente dell'informatica che ha permeato quasi ogni cosa digitale con cui interagiamo, siano essi i social media, i nostri telefoni cellulari, le nostre auto o persino gli elettrodomestici. Tuttavia, ci sono molti posti in cui ML vorrebbe andare ma ha difficoltà a raggiungerlo. Ciò è dovuto al fatto che molti modelli di apprendimento automatico all'avanguardia richiedono risorse di elaborazione e consumo di energia significativi per eseguire l'inferenza, che è l'atto di eseguire i modelli ML e fare previsioni sui dati immessi. La necessità di risorse di elaborazione ad alte prestazioni ha confinato molte applicazioni ML nel cloud, dove l'elaborazione a livello di data center è prontamente disponibile. Per consentire al ML di ampliare la sua portata e sbloccare una nuova era di applicazioni nel processo, dobbiamo trovare modi per facilitare l'inferenza del ML su dispositivi più piccoli e con risorse limitate. Questa ricerca ha portato al campo noto come Tiny Machine Learning o TinyML (un termine registrato dalla TinyML Foundation che è diventato sinonimo di tecnologia). Che cos'è Tiny Machine Learning o TinyML? L'apprendimento automatico stesso è una tecnologia che utilizza algoritmi chiamati reti neurali (un esempio è mostrato nella Figura 1) per insegnare a un computer a riconoscere i modelli. Questo viene estrapolato a una varietà di applicazioni tra cui il riconoscimento di oggetti e l'elaborazione del linguaggio naturale. Figura 1. Una visualizzazione di un esempio di rete neurale Perceptron. TinyML, d'altra parte, può essere definito come un sottocampo di ML che persegue l'abilitazione di applicazioni ML su dispositivi economici, nonché con risorse e potenza limitate. L'obiettivo di TinyML è portare l'apprendimento automatico all'edge in modo estremo, in cui i dispositivi embedded basati su microcontroller alimentati a batteria possono eseguire attività ML con reattività in tempo reale. Questo sforzo è straordinariamente multidisciplinare e richiede l'ottimizzazione e la massimizzazione in campi quali hardware, software, scienza dei dati e apprendimento automatico. Il campo ha in gran parte guadagnato popolarità negli ultimi anni a causa della maturazione degli ecosistemi hardware e software che ne sono alla base. Applicazioni del TinyML : Che tu te ne renda conto o meno, TinyML è probabilmente una parte della tua vita quotidiana in qualche modo. Le applicazioni per TinyML includono: individuazione delle parole chiave riconoscimento e classificazione degli oggetti riconoscimento gestuale rilevamento dell'audio monitoraggio della macchina Un esempio di applicazione TinyML nella vita quotidiana è il modello di rilevamento della parola sveglia audio utilizzato all'interno dei dispositivi Google e Android. Un esempio di componenti di rilevamento delle parole di riattivazione è mostrato nella Figura 2. Per "accendersi" quando sentono le parole "OK Google", i dispositivi Android utilizzano un modello ML di rilevamento vocale da 14 kB che funziona su un DSP. Lo stesso si può dire per molti altri assistenti virtuali. Figura 2. Componenti per un'applicazione wake-word. Altri esempi di applicazioni TinyML degli studenti di Harvard includono il rilevamento dei cervi in ​​autostrada per le auto (un esempio di rilevamento di oggetti), il rilevamento di zanzare basato sull'audio (un esempio di riconoscimento audio) e molti altri. Hardware utilizzato nelle applicazioni TinyML Quando si tratta del lato hardware delle cose, TinyML è impressionante in quanto mira a lavorare su hardware piuttosto insignificante. Da un certo punto di vista, il vero obiettivo di TinyML è eseguire l'inferenza ML alla minor potenza possibile. Pete Warden , ampiamente considerato il padre di TinyML, afferma nel suo libro fondamentale sull'argomento che TinyML dovrebbe mirare a funzionare con un consumo energetico inferiore a 1 mW . La ragione di questo numero apparentemente arbitrario è che il consumo di 1 mW rende un dispositivo in grado di funzionare con una batteria a bottone standard con una durata ragionevole da mesi a un anno. Quindi, quando pensi alle fonti di alimentazione per TinyML, pensa alle batterie a bottone, alle piccole batterie Li-Po e ai dispositivi di raccolta dell'energia. Dal punto di vista del calcolo, TinyML non si basa su unità di elaborazione grafica (GPU), circuiti integrati specifici dell'applicazione (ASIC) e microprocessori come la maggior parte delle applicazioni ML. Un esempio di kit di apprendimento che utilizza un Arduino può essere visto nella Figura 3. Figura 3. Un esempio di TinyML Learning Kit. Per raggiungere gli elevati obiettivi di 1 mW, siamo quasi esclusivamente limitati a hardware di elaborazione meno capaci come microcontrollori (MCU) e processori di segnali digitali (DSP). Questi dispositivi sono spesso basati su Cortex-M e ci si può aspettare che non abbiano più di poche centinaia di kB di RAM, quantità simili di flash e velocità di clock di decine di MHz. Oltre a questo, altro hardware che potresti aspettarti di trovare su un dispositivo TinyML include sensori (ad es. fotocamera, microfono) e possibilmente una connettività BLE (Bluetooth Low Energy). Software TinyML: TensorFlow In molti modi, il software alla base degli strumenti e dei concetti alla base di TinyML è la sua caratteristica più importante. In generale, l'ecosistema più popolare e integrato per lo sviluppo di TinyML è TensorFlow Lite for Microcontrollers (TF Lite Micro). Un flusso di lavoro generalizzato per TinyML su TF Lite Micro è mostrato di seguito nella Figura 4. TF Lite Micro è stato progettato specificamente per l'attività di ML su dispositivi con risorse limitate, con al centro gli MCU. Un ambiente basato su Python, TF Lite Micro è pieno di librerie e toolkit integrati per: Acquisizione dei dati Preelaborazione Architettura del modello Addestramento Valutazione Ottimizzazione Quantizzazione Figura 4. Il flusso di lavoro di TensorFlow Lite Micro. Come toccheremo negli articoli successivi, la quantizzazione è davvero la salsa segreta che rende possibile TinyML. Ma in breve e in minima parte, la quantizzazione è un processo mediante il quale si riduce la precisione (dimensione in bit) dei pesi e delle distorsioni di un modello in modo tale che il modello occupi meno memoria, funzioni più velocemente e richieda meno energia, il tutto con un minimo di precisione! Con un modello quantizzato, la maggior parte delle applicazioni dei dispositivi TinyML sono scritte in C/C++ per un sovraccarico minimo. Vantaggi di TinyML Il principale vantaggio di TinyML è la sua portabilità. L'utilizzo di microcontrollori economici con batterie minuscole e basso consumo energetico significa che, utilizzando TinyML, è possibile integrare facilmente ML praticamente in qualsiasi cosa a basso costo. Inoltre, TinyML ha anche il vantaggio di una maggiore sicurezza grazie alla natura locale dell'elaborazione, ovvero non è necessario inviare i dati al cloud. Questo può essere significativo quando si lavora con i dati personali in applicazioni come IoT. Con una solida introduzione al campo di TinyML, ora possiamo approfondire gli aspetti più tecnici del campo nel prossimo articolo. TinyML e il suo futuro Nel 2020, Harvard ha lanciato il corso CS249R: Tiny Machine Learning , affermando che "la crescita esplosiva dell'apprendimento automatico e la facilità d'uso di piattaforme come TensorFlow (TF) lo rendono un argomento di studio indispensabile per lo studente di informatica moderno". Oggi ci sono oltre 250 miliardi di dispositivi embedded attivi nel mondo, con una crescita prevista del 20% annuo . Questi dispositivi stanno raccogliendo grandi quantità di dati e l'elaborazione nel cloud ha rappresentato una vera sfida. Di questi 250 miliardi di dispositivi, circa 3 miliardi attualmente in produzione sono in grado di supportare TensorsFlow Lite attualmente in produzione. TinyML potrebbe colmare il divario tra hardware edge e intelligenza del dispositivo. Rendere TinyML più accessibile agli sviluppatori sarà fondamentale per consentire alla proliferazione di massa dell'apprendimento automatico incorporato di trasformare i dati sprecati in informazioni fruibili e per creare nuove applicazioni in molti settori. Con l'emergere di nuovi tipi di interfacce uomo-macchina (HMI) e il numero di dispositivi intelligenti in aumento, TinyML ha il potenziale per incorporare l'intelligenza artificiale e l'informatica ai margini onnipresenti, più economici, scalabili e più prevedibili, cambiando il paradigma nel ML.

  • Come vengono utilizzati i dati nel calcio

    È difficile immaginare che ai giorni nostri il calcio sia ancora nei secoli bui in termini di capacità di utilizzare i dati per aiutare il gioco e, a sua volta, aiutare lo sport. Ma non è così. Mentre molti team esteri utilizzano i dati nel mondo del calcio, pochi in Italia sanno a cosa servono realmente i dati nel gioco. Con i rapidi progressi della tecnologia, i dati stanno diventando uno strumento essenziale per gli sviluppatori di metodi di coaching e per gli appassionati di questo sport. I dati nel mondo del calcio I dati vengono utilizzati in vari modi nel calcio, sia per dare maggiori opportunità a un giocatore o per ottenere un vantaggio rispetto alla concorrenza. I dati sono uno degli aspetti più importanti del calcio e vengono utilizzati per aiutare le squadre. In questo post del blog noi di Soccerment, vi spiegheremo gli utilizzi dei dati nel calcio e come anche voi potete iniziare ad approcciarvi a questo mondo. Il calcio è uno degli sport più popolari al mondo. Questo sport molto divertente ha un ruolo molto significativo nella società. - curiosità Il mondo del calcio è in continua evoluzione. Nel corso degli anni, club, giocatori e manager hanno utilizzato i dati a proprio vantaggio, per aiutare nel processo decisionale, nello scouting, nella tattica e nella selezione dei giocatori. Man mano che il gioco si evolve, aumenta anche il ruolo dei dati nel calcio. Adesso entriamo nelle specifico e vediamo punto punto come relamente come vengono utilizzati i dati nel calcio Come vengono utilizzati i dati nel calcio ? Le applicazioni dei dati nel mondo del calcio sono molteplici ed in particolare sono suddivisibili in tre macro aree: Scouting: utilizzo di dataset permette di visionare i calciatori in modo più efficiente rispetto ai metodi tradizionali. I dati sono usati come collo largo di un processo di selezione a “imbuto” che verranno filtrati secondo gli obiettivi dello scout, fino alla creazione di una shortlist. Questi calciatori verranno poi osservati tramite una fase di scouting più tradizionale. Team/opposition analysis: analisi tecnico-tattica delle prestazioni della propria squadra per individuare punti di forza e punti di debolezza e per valutare in modo più oggettivo trend recenti. Il medesimo approccio si può applicare all’avversario in preparazione della partita. Valutazione di performance atletica e tecnica in allenamento: l’utilizzo dei dati atletici in allenamento ha un raggio di applicazione più esteso, grazie alle pettorine GPS. Anche questo campo presenta innovazioni, come ad esempio l’innovativo Smart Wearables come XSEED di Soccerment, che permette la raccolta di dati sia atletici che tecnici, garantendo un'analisi ancora più profonda delle performance del calciatore. Chi si occupa di analizzare i dati nel calcio ? Il Football Data Analyst I data analyst sono figure professionali sempre più ricercate all’interno delle squadre di calcio. Inserito in un team specializzato questa figura avrà l’obiettivo di focalizzarsi sulla parte di data science sfruttando le proprie conoscenze di Machine Learning e di Data Visualization. A livello pratico un Football Data Analyst dovrà essere in grado di tradurre domande e problemi calcistici in data problems, valutarne la fattibilità e comunicarne i risultati, questo ri-traducendoli dal linguaggio macchina al linguaggio calcistico. L’analista deve quindi avere anche una buona conoscenza dello sport di riferimento, infatti la domain knowledge è fondamentale in ogni processo di Machine Learning o Data Science. Sfruttare i dati nel calcio usando il Machine Learning Dopo aver visto, come i dati possono cambiare il mondo del calcio, tramite il loro utilizzo e grazie alle nuove figure professionali, noi di Soccerment vogliamo spiegarvi di più. Ad oggi, nel mondo del calcio, ci sono 3 principali metodologie per sviluppare un Machine Learning efficiente: Modelli di regressione logistica (supervised learning): le metriche avanzate più note, come ad esempio gli xG, sono basati su modelli di regressione logistica binaria, dove le variabili predittive sono principalmente date dalla posizione del tiro, da informazioni contestuali come la situazione di gioco e dal tipo di assist se presente. Nella pratica questi modelli vengono implementati con diversi strumenti a seconda del contesto, dalla regressione logistica classica a strumenti come alberi decisionali, metodi di ensemble (random forest, gradient boosting), fino alle reti neurali. Modelli di clustering per classificazione (unsupervised learning): il clustering è una tecnica utilizzata principalmente per classificare giocatori e squadra in base allo stile di gioco. Tipicamente questo processo consiste in questi passaggi: Creazione di un dataset con un certo numero di statistiche Preprocessing, ossia standardizzazione o normalizzazione seguita da riduzione di dimensionalità tramite metodi come PCA, UMAP o altri Creazione di un modello di clustering con vari possibili scelte di algoritmo, dal semplice KMeans a modelli più complessi come Gaussian Mixture (usato da Soccerment) . Data Visualization: una componente fondamentale della football analytics è la fase di comunicazione dei risultati, e quindi traduzione dell’analisi, e del suo esito, dai termini matematici, statistici e informatici a quelli calcistici. È sempre consigliabile utilizzare la forma grafica per rendere fin da subito i risultati intuitivi e fruibili. Proprio per questo le capacità di data visualization sono assolutamente necessarie, nonostante siano tra le meno tecniche presenti nel machine learning. Nel libro The Clustering Project pubblicato da Soccerment troviamo un interessante esempio di utilizzo di questo algoritmo per classificare i giocatori in base alla loro funzione in campo, discostandosi definitivamente da concetti obsoleti basati unicamente sulla loro posizione sul terreno di gioco (terzino, punta, etc.). Esempi di utilizzo dei dati nel calcio Ecco qualche esempio di lavori prodotti dai Football Data Analyst di Soccerment: Esempio dinamico prodotto dai Football Data Analyst di Soccerment: Vuoi imparare a usare i dati nel calcio ? Le singole conoscenze tecniche di statistica, di matematica e di programmazione sono solo una parte degli strumenti must-have affinchè un Football Data Analyst possa applicare questi metodi con profitto all’interno di una squadra di calcio.Proprio per questo Soccerment ha lanciato, in collaborazione con SICS, un corso di “Football Data Intelligence” dedicato alla formazione e certificazione del Data Analyst, con al suo interno docenti di spicco come Antonio Gagliardi (ex Head of Match Analysis Nazionale Italiana, FIGC, Assistant Coach), Francesco Bordin (Match Analyst e coach UEFA A) e Roberto Angioni (Head of Data Science di Soccerment). Il corso avrà come finale un esame attraverso il quale verranno individuati i migliori tre talenti che avranno la possibilità di svolgere uno stage in una Squadra di serie A, presso SICS e presso Soccerment. Chi è soccerment ? Soccerment è un'azienda Italiana specializzata in Football Data Intelligence. Attraverso lo sviluppo di strumenti per raccogliere e analizzare le prestazioni calcistiche, ha l’obiettivo di accelerare l’adozione dei dati nel calcio, con la convinzione che un approccio data-driven possa rivoluzionare lo sport più amato del mondo, rendendolo più meritocratico ed inclusivo per i giovani talenti e più efficiente ed economicamente sostenibile per club e talent scout. Grazie alla piattaforma di Football analytics, lo sviluppo di metriche avanzate proprietarie, una data visualization immediata ed accessibile e le innumerevoli pubblicazioni e ricerche, Soccerment sta diventando un punto di riferimento internazionale per club, scout, media e per la crescente community di Football Data Analytics. Grazie per aver letto l'articolo, a presto.

  • Valutare le prestazioni dei modelli di Deep Learning

    Il deep learning è un campo in continua evoluzione e in costante miglioramento nel consentire alle aziende di fare previsioni ancora più accurate. L'intelligenza artificiale non è solo per le grandi aziende con budget elevati, perché richiede molti dati, è anche uno strumento che può essere utilizzato da aziende di qualsiasi dimensione. Nel post del blog di oggi illustreremo come valutare le prestazioni dei modelli di deep learning. piu' nel particolare vedremo un esempio reale con python e keras. Come valutare le prestazioni dei modelli di deep learning con python Keras è una libreria Python potente e facile da usare per il deep learning. Ci sono molte decisioni da prendere durante la progettazione e la configurazione dei modelli di deep learning. La maggior parte di queste decisioni deve essere risolta empiricamente attraverso tentativi ed errori e valutandole su dati reali. Pertanto, è di fondamentale importanza disporre di un modo solido per valutare le prestazioni delle reti neurali e dei modelli di deep learning. È necessario prendere una miriade di decisioni durante la progettazione e la configurazione dei modelli di deep learning. Molte di queste decisioni possono essere risolte copiando la struttura delle reti di altre persone. In definitiva, la tecnica migliore è progettare effettivamente piccoli esperimenti e valutare empiricamente i problemi utilizzando dati reali. Ciò include decisioni di alto livello come il numero, la dimensione e il tipo di livelli nella tua rete. Include anche le decisioni di livello inferiore come la scelta della funzione di perdita, le funzioni di attivazione, la procedura di ottimizzazione e il numero di epoche . Il deep learning viene spesso utilizzato su problemi con set di dati molto grandi. Sono decine di migliaia o centinaia di migliaia di istanze. Pertanto, è necessario disporre di un solido test che consenta di stimare le prestazioni di una determinata configurazione su dati invisibili e confrontare in modo affidabile le prestazioni con altre configurazioni. Divisione dei dati La grande quantità di dati e la complessità dei modelli richiedono tempi di training molto lunghi. Pertanto, è tipico separare i dati in set di dati di addestramento e test o set di dati di addestramento e convalida. Keras offre due modi convenienti per valutare i tuoi algoritmi di deep learning in questo modo: Utilizza un set di dati di verifica automatica Utilizzare un set di dati di verifica manuale Valutare le prestazioni dei modelli di deep learning usando un set di dati di verifica automatica Keras può separare una parte dei tuoi dati di addestramento in un set di dati di convalida e valutare le prestazioni del tuo modello su quel set di dati di convalida in ogni epoca. Puoi farlo impostando l' argomento validation_split sulla funzione fit() su una percentuale della dimensione del tuo set di dati di addestramento. Ad esempio, un valore ragionevole potrebbe essere 0,2 o 0,33 per il 20% o il 33% dei dati di addestramento trattenuti per la convalida. L'esempio seguente mostra l'uso di un set di dati di convalida automatica su un piccolo problema di classificazione binaria. Tutti gli esempi in questo post utilizzano il set di dati sull'inizio del diabete . Puoi scaricarlo dall'UCI Machine Learning Repository e salvare il file di dati nella tua directory di lavoro corrente con il nome del file diabetes.csv (aggiornamento: scarica da qui ). # Creiamo un modello che poi valuteremo insieme from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy # Fissiamo un seme così avremo gli stessi risultati numpy.random.seed(7) # carichiamo il dataset dataset = numpy.loadtxt("diabetes.csv", delimiter=",") # input (X) e output (Y) X = dataset[:,0:8] Y = dataset[:,8] # definiamo il nostro modello model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamolo model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10) Eseguendo l'esempio, puoi vedere che l'output dettagliato su ogni epoca mostra la perdita e l'accuratezza sia sul set di dati di addestramento che sul set di dati di convalida. Epoch 145/150 514/514 [==============================] - 0s - loss: 0.5252 - acc: 0.7335 - val_loss: 0.5489 - val_acc: 0.7244 Epoch 146/150 514/514 [==============================] - 0s - loss: 0.5198 - acc: 0.7296 - val_loss: 0.5918 - val_acc: 0.7244 Epoch 147/150 514/514 [==============================] - 0s - loss: 0.5175 - acc: 0.7335 - val_loss: 0.5365 - val_acc: 0.7441 Epoch 148/150 514/514 [==============================] - 0s - loss: 0.5219 - acc: 0.7354 - val_loss: 0.5414 - val_acc: 0.7520 Epoch 149/150 514/514 [==============================] - 0s - loss: 0.5089 - acc: 0.7432 - val_loss: 0.5417 - val_acc: 0.7520 Epoch 150/150 514/514 [==============================] - 0s - loss: 0.5148 - acc: 0.7490 - val_loss: 0.5549 - val_acc: 0.7520 Valutare le prestazioni dei modelli di deep learning usando un set di dati di verifica manuale Keras consente inoltre di specificare manualmente il set di dati da utilizzare per la convalida durante l'addestramento. In questo esempio, puoi utilizzare la pratica funzione train_test_split () della libreria di apprendimento automatico scikit-learn di Python per separare i tuoi dati in un set di dati di addestramento e test. Utilizzare il 67% per la formazione e il restante 33% dei dati per la convalida. Il set di dati di convalida può essere specificato nella fit() funzione in Keras validation_datadall'argomento. Richiede una tupla dei set di dati di input e output. # Creiamo un modello che poi valuteremo insieme from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy # Fissiamo un seme così avremo gli stessi risultati numpy.random.seed(7) # carichiamo il dataset dataset = numpy.loadtxt("diabetes.csv", delimiter=",") # dividiamo in 67% per l'allenamento e il 33% per il test X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed) # creiamo il modello model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamolo model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamolo model.fit(X_train, y_train, validation_data=(X_test,y_test), epochs=150, batch_size=10) Come prima, l'esecuzione dell'esempio fornisce un output dettagliato dell'addestramento che include la perdita e l'accuratezza del modello sui set di dati di addestramento e convalida per ogni epoca. Epoch 145/150 514/514 [==============================] - 0s - loss: 0.4847 - acc: 0.7704 - val_loss: 0.5668 - val_acc: 0.7323 Epoch 146/150 514/514 [==============================] - 0s - loss: 0.4853 - acc: 0.7549 - val_loss: 0.5768 - val_acc: 0.7087 Epoch 147/150 514/514 [==============================] - 0s - loss: 0.4864 - acc: 0.7743 - val_loss: 0.5604 - val_acc: 0.7244 Epoch 148/150 514/514 [==============================] - 0s - loss: 0.4831 - acc: 0.7665 - val_loss: 0.5589 - val_acc: 0.7126 Epoch 149/150 514/514 [==============================] - 0s - loss: 0.4961 - acc: 0.7782 - val_loss: 0.5663 - val_acc: 0.7126 Epoch 150/150 514/514 [==============================] - 0s - loss: 0.4967 - acc: 0.7588 - val_loss: 0.5810 - val_acc: 0.6929 Convalida incrociata k-Fold manuale Il gold standard per la valutazione del modello di apprendimento automatico è la convalida incrociata k-fold . Fornisce una stima affidabile delle prestazioni di un modello su dati invisibili. Lo fa suddividendo il set di dati di addestramento in k sottoinsiemi, alternando i modelli di addestramento su tutti i sottoinsiemi tranne uno, che è trattenuto, e valutando le prestazioni del modello sul set di dati di convalida trattenuto. Il processo viene ripetuto fino a quando a tutti i sottoinsiemi viene data l'opportunità di essere il set di convalida sospeso. La misura delle prestazioni viene quindi calcolata in media su tutti i modelli creati. È importante capire che la convalida incrociata significa stimare un modello di progettazione (ad esempio, rete neurale a 3 strati rispetto a 4 strati) piuttosto che uno specifico modello adattato. Non si desidera utilizzare un set di dati specifico per adattare i modelli e confrontare il risultato poiché ciò potrebbe essere dovuto a quel particolare set di dati che si adatta meglio a un progetto di modello. Invece, si desidera utilizzare più set di dati per adattarsi, ottenendo più modelli adattati dello stesso design, prendendo la misura delle prestazioni medie per il confronto. La convalida incrociata spesso non viene utilizzata per valutare i modelli di deep learning a causa della maggiore spesa computazionale. Ad esempio, la convalida incrociata k-fold viene spesso utilizzata con 5 o 10 volte. Pertanto, è necessario costruire e valutare 5 o 10 modelli, aumentando significativamente il tempo di valutazione di un modello. Tuttavia, quando il problema è sufficientemente piccolo o se si dispone di risorse di calcolo sufficienti, la convalida incrociata k-fold può fornire una stima meno distorta delle prestazioni del modello. Nell'esempio seguente, utilizzerai la pratica classe StratifiedKFold della libreria di apprendimento automatico Python scikit-learn per dividere il set di dati di addestramento in 10 pieghe. Le pieghe sono stratificate, il che significa che l'algoritmo tenta di bilanciare il numero di istanze di ciascuna classe in ciascuna piega. L'esempio crea e valuta 10 modelli utilizzando le 10 suddivisioni dei dati e raccoglie tutti i punteggi. L'output dettagliato per ogni epoca viene disattivato passando verbose=0alle funzioni fit() e evaluate() sul modello. La performance viene stampata per ciascun modello e memorizzata. La media e la deviazione standard delle prestazioni del modello vengono quindi stampate alla fine della corsa per fornire una stima attendibile dell'accuratezza del modello. # Convalidiamo con un 10-fold cross validation from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from sklearn.model_selection import StratifiedKFold import numpy as np # fissiamo il seed seed = 7 np.random.seed(seed) # carichiamo il dataset dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",") # input (X) e output (Y) X = dataset[:,0:8] Y = dataset[:,8] # definiamo il 10-fold cross validation kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed) cvscores = [] for train, test in kfold.split(X, Y): #creiamo il modello model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamolo model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamolo model.fit(X[train], Y[train], epochs=150, batch_size=10, verbose=0) # valutiamolo scores = model.evaluate(X[test], Y[test], verbose=0) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) cvscores.append(scores[1] * 100) print("%.2f%% (+/- %.2f%%)" % (np.mean(cvscores), np.std(cvscores))) 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 dell'esempio richiederà meno di un minuto e produrrà il seguente output: acc: 77.92% acc: 68.83% acc: 72.73% acc: 64.94% acc: 77.92% acc: 35.06% acc: 74.03% acc: 68.83% acc: 34.21% acc: 72.37% 64.68% (+/- 15.50%) Riepilogo In questo post, hai scoperto l'importanza di disporre di un modo affidabile per stimare le prestazioni dei tuoi modelli di deep learning su dati invisibili. Hai scoperto tre modi per stimare le prestazioni dei tuoi modelli di deep learning in Python utilizzando la libreria Keras: Usando il set di dati di verifica automatica Utilizzando i set di dati di verifica manuale Utilizzando la convalida incrociata k-Fold manuale

  • Classificazione multiclasse con python e keras Deep Learning

    Keras è una libreria Python per il deep learning che racchiude le efficienti librerie numeriche Theano e TensorFlow. In questo tutorial scoprirai come utilizzare Keras per sviluppare e valutare modelli di reti neurali per problemi di classificazione multi-classe. Dopo aver completato questo tutorial passo dopo passo, saprai: Come caricare i dati da CSV e renderli disponibili a Keras Come preparare dati di classificazione multiclasse per la modellazione con reti neurali Come valutare i modelli di rete neurale Keras con scikit-learn Cosa è la classificazione multiclasse ? La classificazione multi classe è un algoritmo di apprendimento supervisionato che cerca di classificare un insieme di oggetti in una delle k classi. È un tipo di algoritmo di classificazione. L'algoritmo inizia con un elenco di oggetti da classificare, quindi inizia a confrontare ogni oggetto nell'elenco con ogni altro oggetto nell'elenco, cercando oggetti simili in qualche modo. Se due oggetti sono simili, l'algoritmo li assegnerà alla stessa classe. Applicazioni della classificazione multiclasse La classificazione multi-classe è una tecnica di apprendimento supervisionato che può essere utilizzata nel deep learning. Può essere una tecnica utile quando non si sta solo cercando di prevedere un risultato binario. Ad esempio : Rilevamento del sentiment (Positivo o Neutro o Negativo). Previsione stadio malattia (Stadio1 o Stadio2 o StadioFinale). Previsione di conversione (Acquista o SiAbbona o LasciaRecensione). Classificazione multiclasse con python 1. Descrizione del problema In questo tutorial utilizzerai il problema di machine learning standard chiamato iris flowers dataset . Questo set di dati è ben studiato e costituisce un buon problema per esercitarsi sulle reti neurali perché tutte e quattro le variabili di input sono numeriche e hanno la stessa scala in centimetri. Ogni istanza descrive le proprietà delle misurazioni di un fiore osservato e la variabile di output è una specifica specie di iris. Questo è un problema di classificazione multi-classe, il che significa che ci sono più di due classi da prevedere. In effetti, ci sono tre specie di fiori. Questo è un problema importante per esercitarsi con le reti neurali perché i tre valori di classe richiedono una gestione specializzata. Il set di dati del fiore di iris è un problema ben studiato e, in quanto tale, puoi aspettarti di ottenere una precisione del modello compresa tra il 95% e il 97%. Ciò fornisce un buon obiettivo a cui mirare durante lo sviluppo dei modelli. È possibile scaricare il set di dati di iris flowers dal repository UCI Machine Learning e inserirlo nella directory di lavoro corrente con il nome del file " iris.csv ". Classificazione multiclasse con python 2. Importa classi e funzioni Puoi iniziare importando tutte le classi e le funzioni di cui avrai bisogno in questo tutorial. Ciò include sia la funzionalità richiesta da Keras che il caricamento dei dati da panda , nonché la preparazione dei dati e la valutazione del modello da scikit-learn . import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.preprocessing import LabelEncoder from sklearn.pipeline import Pipeline Classificazione multiclasse con python 3. Caricare il set di dati Il set di dati può essere caricato direttamente. Poiché la variabile di output contiene stringhe, è più semplice caricare i dati utilizzando i panda. È quindi possibile suddividere gli attributi (colonne) in variabili di input (X) e variabili di output (Y). # carichiamo il dataset dataframe = pandas.read_csv("iris.csv", header=None) dataset = dataframe.values X = dataset[:,0:4].astype(float) Y = dataset[:,4] Classificazione multiclasse con python 4. Codificare la variabile di output La variabile di output contiene tre diversi valori di stringa. Quando si modellano problemi di classificazione multiclasse utilizzando le reti neurali, è buona norma rimodellare l'attributo di output da un vettore che contiene valori per ogni valore di classe a una matrice con un booleano per ogni valore di classe e se una determinata istanza ha quel valore di classe o non. Questo è chiamato codifica one-hot o creazione di variabili fittizie da una variabile categoriale. Ad esempio, in questo problema, tre valori di classe sono Iris-setosa, Iris-versicolor e Iris-virginica. Se avessi le osservazioni: Iris-setosa Iris-versicolor Iris-virginica Puoi trasformarlo in una matrice binaria codificata a caldo per ogni istanza di dati che sarebbe simile a questa: Iris-setosa, Iris-versicolor, Iris-virginica 1, 0, 0 0, 1, 0 0, 0, 1 Puoi prima codificare le stringhe in modo coerente in numeri interi usando la classe di scikit-learn LabelEncoder. Quindi converti il ​​vettore di interi in una codifica one-hot usando la funzione Keras to_categorical(). # trasformiamoo le variabili categoriche in interi encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) dummy_y = np_utils.to_categorical(encoded_Y) Classificazione multiclasse con python 5. Definire il modello di rete neurale La libreria Keras fornisce classi wrapper per consentire di utilizzare modelli di rete neurale sviluppati con Keras in scikit-learn. Esiste una classe KerasClassifier in Keras che può essere utilizzata come Estimator in scikit-learn, il tipo base di modello nella libreria. Il KerasClassifier prende il nome di una funzione come argomento. Questa funzione deve restituire il modello di rete neurale costruito, pronto per l'addestramento. Di seguito è riportata una funzione che creerà una rete neurale di base per il problema di classificazione dell'iride. Crea una rete semplice e completamente connessa con uno strato nascosto che contiene otto neuroni. Lo strato nascosto utilizza una funzione di attivazione del raddrizzatore che è una buona pratica. Poiché è stata utilizzata una codifica one-hot per il set di dati dell'iride, il livello di output deve creare tre valori di output, uno per ciascuna classe. Il valore di output con il valore più grande verrà preso come classe prevista dal modello. La topologia di rete di questa semplice rete neurale a uno strato può essere riassunta come segue: 4 inputs -> [8 hidden nodes] -> 3 outputs Si noti che una funzione di attivazione " softmax " è stata utilizzata nel livello di output. Ciò garantisce che i valori di output siano compresi nell'intervallo 0 e 1 e possano essere utilizzati come probabilità previste. Infine, la rete utilizza l'efficiente algoritmo di ottimizzazione della discesa del gradiente di Adam con una funzione di perdita logaritmica, chiamata " crossentropia_categoriale " in Keras. # definiamo un modello di base def baseline_model(): # creazione modello model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(3, activation='softmax')) # compilazione modello model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model Ora puoi creare il tuo KerasClassifier da utilizzare in scikit-learn. Puoi anche passare argomenti nella costruzione della classe KerasClassifier che verranno passati alla funzione fit() utilizzata internamente per addestrare la rete neurale. Qui si passa il numero di epoche come 200 e la dimensione del batch come 5 da utilizzare durante l'addestramento del modello. Il debug viene disattivato anche durante l'allenamento impostando verbose su 0. estimator = KerasClassifier(build_fn=baseline_model, epochs=200, batch_size=5, verbose=0) Classificazione multiclasse con python 6. Valutare il modello con la convalida incrociata k-Fold Ora puoi valutare il modello di rete neurale sui nostri dati di addestramento. Scikit-learn ha un'eccellente capacità di valutare i modelli utilizzando una suite di tecniche. Il gold standard per la valutazione dei modelli di machine learning è la convalida incrociata k-fold. In primo luogo, definire la procedura di valutazione del modello. Qui, imposti il ​​numero di pieghe su 10 (un'eccellente impostazione predefinita) e mescoli i dati prima di partizionarli. kfold = KFold(n_splits=10, shuffle=True) Ora puoi valutare il tuo modello (stimatore) sul tuo set di dati (X e dummy_y) utilizzando una procedura di convalida incrociata di 10 volte (k-fold). La valutazione del modello richiede solo circa 10 secondi e restituisce un oggetto che descrive la valutazione dei dieci modelli costruiti per ciascuna delle suddivisioni del set di dati. results = cross_val_score(estimator, X, dummy_y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Classificazione multiclasse con python 7. Esempio completo di Classificazione multiclasse con Python Puoi legare tutto questo insieme in un unico programma che puoi salvare ed eseguire come script: import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.preprocessing import LabelEncoder from sklearn.pipeline import Pipeline dataframe = pandas.read_csv("iris.data", header=None) dataset = dataframe.values X = dataset[:,0:4].astype(float) Y = dataset[:,4] encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) dummy_y = np_utils.to_categorical(encoded_Y) def baseline_model(): model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(3, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimator = KerasClassifier(build_fn=baseline_model, epochs=200, batch_size=5, verbose=0) kfold = KFold(n_splits=10, shuffle=True) results = cross_val_score(estimator, X, dummy_y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) I risultati sono riassunti sia come media che come deviazione standard dell'accuratezza del modello sul set di dati. 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. Questa è una stima ragionevole delle prestazioni del modello su dati invisibili. È anche nel regno dei risultati migliori noti per questo problema. Accuracy: 97.33% (4.42%) Riepilogo In questo post, hai scoperto come sviluppare e valutare una rete neurale utilizzando la libreria Keras Python per il deep learning. Completando questo tutorial, hai imparato: Come caricare i dati e renderli disponibili a Keras Come preparare i dati di classificazione multiclasse per la modellazione utilizzando la codifica one-hot Come utilizzare i modelli di rete neurale Keras con scikit-learn Come definire una rete neurale utilizzando Keras per la classificazione multiclasse Come valutare un modello di rete neurale Keras utilizzando scikit-learn con convalida incrociata k-fold Hai domande sul deep learning con Keras o su questo post?

  • 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

  • Tipi di modelli di regressione nel Machine Learning

    La parola regressione deriva dal vocabolo latino "regressus" che significa tornare indietro o tornare. Quando applicata alla statistica, l'analisi di regressione è una tecnica statistica utilizzata per descrivere come una variabile è correlata a un'altra. Il termine modello di regressione viene utilizzato anche per riferirsi a una funzione matematica che mette in relazione i valori di due variabili. I modelli di regressione possono essere applicati a vari campi come l'economia, la genetica, l'astronomia e la psicologia. In questo articolo esploreremo diversi tipi di modelli di regressione e le basi dell'analisi di regressione. Introduzione sui diversi tipi di modelli di regressione nel Machine Learning I problemi di regressione sono prevalenti nell'apprendimento automatico e l'analisi di regressione è la tecnica più utilizzata per risolverli. Si basa sulla modellazione dei dati e comporta la determinazione della linea di adattamento migliore che passa attraverso tutti i punti dati con la distanza più breve possibile tra la linea e ciascun punto dati. Sebbene esistano altre tecniche per l'analisi di regressione, la regressione lineare e logistica sono le più utilizzate. In definitiva, il tipo di modello di analisi di regressione che adottiamo sarà determinato dalla natura dei dati. Impariamo di più sull'analisi di regressione e sulle varie forme di modelli di regressione. Sommario sui diversi tipi di modelli di regressione nel Machine Learning In questo articolo vedremo : Che cos'è l'analisi di regressione? Qual è lo scopo di un modello di regressione? Tipi di modelli di regressione : Regressione lineare Regressione logistica Regressione polinomiale Regressione ridge Regressione lazo Regressione quantilica Regressione lineare bayesiana Regressione delle componenti principali Regressione dei minimi quadrati parziali Regressione della rete elastica Che cos'è l'analisi di regressione? Le tecniche di modellazione predittiva come l'analisi di regressione possono essere utilizzate per determinare la relazione tra le variabili dipendenti (obiettivo) e indipendenti di un set di dati. È ampiamente utilizzato quando le variabili dipendenti e indipendenti sono collegate in modo lineare o non lineare e la variabile target ha un insieme di valori continui. Pertanto, gli approcci dell'analisi di regressione aiutano a stabilire relazioni causali tra variabili, modellazione di serie temporali e previsioni. L'analisi di regressione, ad esempio, è il modo migliore per esaminare la relazione tra le vendite e le spese pubblicitarie per un'azienda. Qual è lo scopo di un modello di regressione? L'analisi di regressione viene utilizzata per uno dei due scopi: prevedere il valore della variabile dipendente quando le informazioni sulle variabili indipendenti sono note o prevedere l'effetto di una variabile indipendente sulla variabile dipendente. Applicazioni principali di un un modello di regressione I modelli di regressione sono un modo per approssimare la relazione tra due insiemi di variabili, come x e y, utilizzando modelli lineari. I modelli di regressione sono molto utili in molte aree, dalla determinazione del costo di un farmaco da prescrizione alla ricerca della soluzione migliore per il modello di reddito di un'azienda. Ad esempio, puoi utilizzare i modelli di regressione per determinare in che modo i diversi tipi di campagne di marketing influiscono sulle entrate della tua azienda. I modelli di regressione vengono utilizzati anche a scopo di previsione. Un modello di regressione può essere utilizzato per determinare la linea di adattamento migliore per un determinato insieme di dati. Esistono molti tipi diversi di modelli di regressione, ma i più comuni includono la regressione lineare e la regressione logistica. Tipi di modelli di regressione Sono disponibili numerosi approcci di analisi di regressione per fare previsioni. Inoltre, la scelta della tecnica è determinata da vari parametri, tra cui il numero di variabili indipendenti, la forma della retta di regressione e il tipo di variabile dipendente. Esaminiamo alcune delle tecniche di analisi di regressione più utilizzate: 1. Regressione lineare La tecnica di modellazione più ampiamente utilizzata è la regressione lineare, che presuppone una connessione lineare tra una variabile dipendente (Y) e una variabile indipendente (X). Impiega una linea di regressione, nota anche come linea di adattamento. La connessione lineare è definita come Y = c+m*X + e, dove 'c' denota l'intercetta, 'm' denota la pendenza della linea e 'e' è il termine di errore. Il modello di regressione lineare può essere semplice (con una sola variabile dipendente e una indipendente) o complesso (con numerose variabili dipendenti e indipendenti) (con una variabile dipendente e più di una variabile indipendente). 2. Regressione logistica Quando la variabile dipendente è discreta, è applicabile la tecnica di regressione logistica. In altre parole, questa tecnica viene utilizzata per calcolare la probabilità di occorrenze mutuamente esclusive come pass/fail, true/false, 0/1 e così via. Pertanto, la variabile target può assumere solo uno dei due valori e una curva sigmoidea rappresenta la sua connessione alla variabile indipendente e la probabilità ha un valore compreso tra 0 e 1. 3. Regressione polinomiale La tecnica dell'analisi di regressione polinomiale viene utilizzata per rappresentare una relazione non lineare tra variabili dipendenti e indipendenti. È una variante del modello di regressione lineare multipla, tranne per il fatto che la linea di adattamento migliore è curva anziché diritta. 4. Regressione Ridge Quando i dati mostrano multicollinearità, cioè la tecnica di regressione della cresta viene applicata quando le variabili indipendenti sono altamente correlate. Sebbene le stime dei minimi quadrati siano imparziali nella multicollinearità, le loro varianze sono sufficientemente significative da far divergere il valore osservato dal valore effettivo. La regressione di cresta riduce gli errori standard distorcendo le stime di regressione. La variabile lambda (λ) nell'equazione di regressione della cresta risolve il problema della multicollinearità. 5. Regressione Lazo Come per la regressione ridge, la tecnica del lazo (Least Absolute Shrinkage and Selection Operator) penalizza l'entità assoluta del coefficiente di regressione. Inoltre, la tecnica di regressione con lazo impiega la selezione variabile, che porta alla contrazione dei valori dei coefficienti allo zero assoluto. 6. Regressione quantilica L'approccio della regressione quantile è un sottoinsieme della tecnica della regressione lineare. Viene utilizzato quando i requisiti di regressione lineare non sono soddisfatti o quando i dati contengono valori anomali. In statistica viene utilizzata la regressione quantile. 7. Regressione lineare bayesiana La regressione lineare bayesiana è una forma di tecnica di analisi di regressione utilizzata nell'apprendimento automatico che utilizza il teorema di Bayes per calcolare i valori dei coefficienti di regressione. Piuttosto che determinare i minimi quadrati, questa tecnica determina la distribuzione a posteriori delle caratteristiche. Di conseguenza, l'approccio supera la normale regressione lineare in termini di stabilità. 8. Regressione delle componenti principali I dati di regressione multicollineare vengono spesso valutati utilizzando l'approccio di regressione delle componenti principali. L'approccio della regressione delle componenti significative, come la regressione della cresta, riduce gli errori standard distorcendo le stime di regressione. L'analisi delle componenti principali (PCA) viene utilizzata prima per modificare i dati di addestramento, quindi i campioni trasformati risultanti vengono utilizzati per addestrare i regressori. 9. Regressione dei minimi quadrati parziali La tecnica di regressione dei minimi quadrati parziali è una tecnica di analisi di regressione basata sulla covarianza veloce ed efficiente. È vantaggioso per problemi di regressione con molte variabili indipendenti con un'elevata probabilità di multicollinearità tra le variabili. Il metodo riduce il numero di variabili a un numero gestibile di predittori, quindi viene utilizzato in una regressione. 10. Regressione della rete elastica La regressione della rete elastica combina tecniche di regressione con cresta e lazo che sono particolarmente utili quando si tratta di dati fortemente correlati. Regolarizza i modelli di regressione utilizzando le penalità associate ai metodi di regressione con ridge e lazo. I limiti dei modelli di regressione I modelli di regressione vengono utilizzati nell'apprendimento automatico per trovare la linea di adattamento migliore che passa attraverso tutti i punti dati con la distanza più breve possibile tra la linea e ciascun punto dati. Tuttavia, i modelli di regressione hanno dei limiti. Esistono molti tipi diversi di modelli di regressione, ma i più comuni sono la regressione lineare e la regressione logistica. Ognuno di questi modelli ha i propri vantaggi e svantaggi. Il principale vantaggio della regressione lineare è che non è limitato a due sole dimensioni. La regressione logistica è limitata a due dimensioni, ma viene spesso utilizzata nei casi in cui i dati sono linearmente correlati. Riepilogo sui tipi di modelli di regressione nel Machine Learning L'apprendimento automatico utilizza una varietà di altri modelli di regressione, come la la regressione graduale, la regressione multipla e la regressione robusta, oltre a quelli discussi sopra. Per ciascuna di queste varie tecniche di regressione, sapere quanta precisione si può ottenere dai dati forniti. In generale, l'analisi di regressione offre due vantaggi significativi, che sono i seguenti: Denota la relazione tra due variabili, una dipendente e una indipendente. Dimostra l'entità dell'effetto di una variabile indipendente su una variabile dipendente. Spero che ti sia piaciuto leggere questo articolo sui modelli di regressione.

  • Prevedere il prezzo d'affitto di una casa con il Deep Learning e Python

    L'affitto di una casa dipende da molti fattori. Con dati appropriati e tecniche di deep Learning, molte piattaforme immobiliari trovano le opzioni abitative in base al budget del cliente. Quindi, se vuoi imparare come utilizzare il deep Learning per prevedere il prezzo d'affitto di una casa, questo articolo è per te. In questo articolo, ti guiderò attraverso l'attività di previsione dell'affitto di case con l'apprendimento profondo utilizzando Python. Quali sono i fattori che incidono sul costo di una casa? Il costo di una casa può variare a seconda della posizione, delle dimensioni e del numero di stanze. Un altro fattore che può cambiare il costo di una casa è il tipo di materiale da costruzione. Ad esempio, le case in mattoni costeranno di più rispetto alle case in legno. Il costo di una casa può dipendere anche dal numero di camere da letto e bagni. Ad esempio, una casa con due camere da letto costerà più di una casa con una camera da letto. Il costo di una casa varierà anche a seconda del tipo di finestre e della quantità di isolamento. Ad esempio, una casa con molte finestre sarà più costosa di una con poche finestre. Il costo di una casa varierà anche a seconda della vista. Come si può utilizzare il deep learning per prevedere il costo futuro di una casa? Il deep learning è una branca dell'intelligenza artificiale che studia l'uso dei computer per imitare il comportamento umano intelligente. È utilizzato in molti settori, come il servizio clienti, l'e-commerce, l'istruzione e l'assistenza sanitaria. Un'applicazione comune dell'intelligenza artificiale è l'uso dell'apprendimento automatico per prevedere il costo futuro di una casa. L'idea è quella di creare un modello in grado di utilizzare i dati di mercato attuali per prevedere il costo futuro di una casa. Questo tipo di modello è chiamato modello di regressione. Il modello utilizzerà i dati attuali per prevedere il valore futuro di una casa. Ad esempio, il modello può utilizzare il numero medio di giorni in cui le case restano sul mercato prima di vendere per prevedere per quanto tempo le case rimarranno sul mercato prima di vendere. Prevedere l' affitto della casa con Python L'affitto di una proprietà abitativa dipende da molti fattori come: numero di camere da letto, ingresso e cucina dimensione della proprietà il pavimento della casa tipo di zona località della zona Città stato d'arredo della casa Per costruire un sistema di previsione dell'affitto di una casa, abbiamo bisogno di dati basati sui fattori che influenzano l'affitto di una proprietà abitativa. Ho trovato un set di dati di Kaggle che include tutte le funzionalità di cui abbiamo bisogno. È possibile scaricare il set di dati da qui . NON ABBIAMO TROVATO DATASET ITALIANI, ma se ne conoscete qualcuno postatelo nei commenti ! Previsione dell'affitto di una casa utilizzando Python Inizierò l'attività di previsione dell'affitto della casa importando le librerie Python necessarie e il set di dati : import pandas as pd import numpy as np import matplotlib.pyplot as plt import plotly.express as px import plotly.graph_objects as go data = pd.read_csv("House_Rent_Dataset.csv") print(data.head()) Output: Posted On BHK Rent Size Floor Area Type \ 0 2022-05-18 2 10000 1100 Ground out of 2 Super Area 1 2022-05-13 2 20000 800 1 out of 3 Super Area 2 2022-05-16 2 17000 1000 1 out of 3 Super Area 3 2022-07-04 2 10000 800 1 out of 2 Super Area 4 2022-05-09 2 7500 850 1 out of 2 Carpet Area Area Locality City Furnishing Status Tenant Preferred \ 0 Bandel Kolkata Unfurnished Bachelors/Family 1 Phool Bagan, Kankurgachi Kolkata Semi-Furnished Bachelors/Family 2 Salt Lake City Sector 2 Kolkata Semi-Furnished Bachelors/Family 3 Dumdum Park Kolkata Unfurnished Bachelors/Family 4 South Dum Dum Kolkata Unfurnished Bachelors Bathroom Point of Contact 0 2 Contact Owner 1 1 Contact Owner 2 1 Contact Owner 3 1 Contact Owner 4 1 Contact Owner Prima di andare avanti, controlliamo se i dati contengono valori null o meno: print(data.isnull().sum()) Output: Posted On 0 BHK 0 Rent 0 Size 0 Floor 0 Area Type 0 Area Locality 0 City 0 Furnishing Status 0 Tenant Preferred 0 Bathroom 0 Point of Contact 0 dtype: int64 Diamo un'occhiata alle statistiche descrittive dei dati: print(data.describe()) BHK Rent Size Bathroom count 4746.000000 4.746000e+03 4746.000000 4746.000000 mean 2.083860 3.499345e+04 967.490729 1.965866 std 0.832256 7.810641e+04 634.202328 0.884532 min 1.000000 1.200000e+03 10.000000 1.000000 25% 2.000000 1.000000e+04 550.000000 1.000000 50% 2.000000 1.600000e+04 850.000000 2.000000 75% 3.000000 3.300000e+04 1200.000000 2.000000 max 6.000000 3.500000e+06 8000.000000 10.000000 Ora diamo un'occhiata all'affitto medio, mediano, più alto e più basso delle case: print(f"Mean Rent: {data.Rent.mean()}") print(f"Median Rent: {data.Rent.median()}") print(f"Highest Rent: {data.Rent.max()}") print(f"Lowest Rent: {data.Rent.min()}") Output: Mean Rent: 34993.45132743363 Median Rent: 16000.0 Highest Rent: 3500000 Lowest Rent: 1200 Analisi grafica Modello di previsione dell'affitto della casa Ora diamo un'occhiata all'affitto delle case nelle diverse città in base al numero di camere da letto, corridoi e cucine: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["BHK"], title="Rent in Different Cities According to BHK") figure.show() Ora diamo un'occhiata agli affitti delle case nelle diverse città a seconda della tipologia di zona: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["Area Type"], title="Rent in Different Cities According to Area Type") figure.show() Diamo un'occhiata all'affitto delle case nelle diverse città in base allo stato di arredo della casa: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["Furnishing Status"], title="Rent in Different Cities According to Furnishing Status") figure.show() Ora diamo un'occhiata all'affitto delle case nelle diverse città in base alle dimensioni della casa: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["Size"], title="Rent in Different Cities According to Size") figure.show() Diamo un'occhiata al numero di case disponibili in affitto in diverse città in base al set di dati: cities = data["City"].value_counts() label = cities.index counts = cities.values colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts, hole=0.5)]) fig.update_layout(title_text='Number of Houses Available for Rent') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show() Ora diamo un'occhiata al numero di case disponibili per i diversi tipi di inquilini: # Preferenza dell'inquilino tenant = data["Tenant Preferred"].value_counts() label = tenant.index counts = tenant.values colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts, hole=0.5)]) fig.update_layout(title_text='Preference of Tenant in India') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show() Modello di previsione dell'affitto della casa Ora convertirò tutte le caratteristiche categoriali in caratteristiche numeriche di cui abbiamo bisogno per addestrare un modello di previsione dell'affitto di una casa: data["Area Type"] = data["Area Type"].map({"Super Area": 1, "Carpet Area": 2, "Built Area": 3}) data["City"] = data["City"].map({"Mumbai": 4000, "Chennai": 6000, "Bangalore": 5600, "Hyderabad": 5000, "Delhi": 1100, "Kolkata": 7000}) data["Furnishing Status"] = data["Furnishing Status"].map({"Unfurnished": 0, "Semi-Furnished": 1, "Furnished": 2}) data["Tenant Preferred"] = data["Tenant Preferred"].map({"Bachelors/Family": 2, "Bachelors": 1, "Family": 3}) print(data.head()) Output: Posted On BHK Rent Size Floor Area Type \ 0 2022-05-18 2 10000 1100 Ground out of 2 1 1 2022-05-13 2 20000 800 1 out of 3 1 2 2022-05-16 2 17000 1000 1 out of 3 1 3 2022-07-04 2 10000 800 1 out of 2 1 4 2022-05-09 2 7500 850 1 out of 2 2 Area Locality City Furnishing Status Tenant Preferred \ 0 Bandel 7000 0 2 1 Phool Bagan, Kankurgachi 7000 1 2 2 Salt Lake City Sector 2 7000 1 2 3 Dumdum Park 7000 0 2 4 South Dum Dum 7000 0 1 Bathroom Point of Contact 0 2 Contact Owner 1 1 Contact Owner 2 1 Contact Owner 3 1 Contact Owner 4 1 Contact Owner Ora dividerò i dati in set di allenamento e test: from sklearn.model_selection import train_test_split x = np.array(data[["BHK", "Size", "Area Type", "City", "Furnishing Status", "Tenant Preferred", "Bathroom"]]) y = np.array(data[["Rent"]]) xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.10, random_state=42) Ora formiamo un modello di previsione dell'affitto di una casa utilizzando un modello di rete neurale LSTM : from keras.models import Sequential from keras.layers import Dense, LSTM model = Sequential() model.add(LSTM(128, return_sequences=True, input_shape= (xtrain.shape[1], 1))) model.add(LSTM(64, return_sequences=False)) model.add(Dense(25)) model.add(Dense(1)) model.summary() Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm (LSTM) (None, 7, 128) 66560 lstm_1 (LSTM) (None, 64) 49408 dense (Dense) (None, 25) 1625 dense_1 (Dense) (None, 1) 26 ================================================================= Total params: 117,619 Trainable params: 117,619 Non-trainable params: 0 _________________________________________________________________ Alleniamo il modello model.compile(optimizer='adam', loss='mean_squared_error') model.fit(xtrain, ytrain, batch_size=1, epochs=21) Output: Epoch 1/21 4271/4271 [==============================] - 35s 7ms/step - loss: 7038080512.0000 Epoch 2/21 4271/4271 [==============================] - 31s 7ms/step - loss: 6481502720.0000 Epoch 3/21 4271/4271 [==============================] - 31s 7ms/step - loss: 6180754944.0000 Epoch 4/21 4271/4271 [==============================] - 31s 7ms/step - loss: 5968361472.0000 Epoch 5/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5770649088.0000 Epoch 6/21 4271/4271 [==============================] - 29s 7ms/step - loss: 5618835968.0000 Epoch 7/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5440893952.0000 Epoch 8/21 4271/4271 [==============================] - 29s 7ms/step - loss: 5341533696.0000 Epoch 9/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5182846976.0000 Epoch 10/21 4271/4271 [==============================] - 31s 7ms/step - loss: 5106288128.0000 Epoch 11/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5076118528.0000 Epoch 12/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5001080320.0000 Epoch 13/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4941253120.0000 Epoch 14/21 4271/4271 [==============================] - 33s 8ms/step - loss: 4904356864.0000 Epoch 15/21 4271/4271 [==============================] - 29s 7ms/step - loss: 4854262784.0000 Epoch 16/21 4271/4271 [==============================] - 30s 7ms/step - loss: 4855796736.0000 Epoch 17/21 4271/4271 [==============================] - 36s 8ms/step - loss: 4764052480.0000 Epoch 18/21 4271/4271 [==============================] - 30s 7ms/step - loss: 4709226496.0000 Epoch 19/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4702300160.0000 Epoch 20/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4670900736.0000 Epoch 21/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4755582976.0000 Facciamo previsioni dell'affitto di una casa conil Deep Learning usando Python Ora ecco come prevedere l'affitto di un immobile utilizzando il modello addestrato: print("Enter House Details to Predict Rent") a = int(input("Number of BHK: ")) b = int(input("Size of the House: ")) c = int(input("Area Type (Super Area = 1, Carpet Area = 2, Built Area = 3): ")) d = int(input("Pin Code of the City: ")) e = int(input("Furnishing Status of the House (Unfurnished = 0, Semi-Furnished = 1, Furnished = 2): ")) f = int(input("Tenant Type (Bachelors = 1, Bachelors/Family = 2, Only Family = 3): ")) g = int(input("Number of bathrooms: ")) features = np.array([[a, b, c, d, e, f, g]]) print("Predicted House Price = ", model.predict(features)) Output: Enter House Details to Predict Rent Number of BHK: 3 Size of the House: 1100 Area Type (Super Area = 1, Carpet Area = 2, Built Area = 3): 2 Pin Code of the City: 1100 Furnishing Status of the House (Unfurnished = 0, Semi-Furnished = 1, Furnished = 2): 1 Tenant Type (Bachelors = 1, Bachelors/Family = 2, Only Family = 3): 3 Number of bathrooms: 2 Predicted House Price = [[34922.3]] Conclusione sulla previsione dell'affitto di una casa con Deep Learning usando Python Ecco come utilizzare il Deep Learning per prevedere l'affitto di una proprietà abitativa. Con dati appropriati e tecniche di Deep Learning, molte piattaforme immobiliari trovano le opzioni abitative in base al budget del cliente. Spero ti sia piaciuto questo articolo sulla previsione dell'affitto di una casa con deep Learning usando Python. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.

  • I dati l'ingrediente principale dell'Intelligenza Artificiale IA

    Sapevate che i dati hanno raggiunto, se non superato, il prezzo del petrolio. Come abbiamo visto grazie alla grande capacità computazionale ( di calcolo ) offerta dai computer è possibile elaborare tutti questi dati, fare stime, prendere decisioni. Tutto questo è stato realizzabile solo dopo la nascita di internet e dei social network, l'International Data Corporation ha stimato che entro il 2024 il mondo avrà prodotto all'incirca 165 Zettabyte ( 1 Zettabyte = 1 trilione di Gigabyte ) di dati. I. Introduzione Come è possibile che produciamo tutti questi dati ? Chi gli ha dato il permesso di memorizzare questi dati se sono così importanti? II. Come vengono utilizzati i dati nell'IA Come i dati vengono raccolti ed elaborati per addestrare i modelli di intelligenza artificiale I tipi di dati utilizzati nell'IA, come i dati strutturati e non strutturati Come la qualità e la quantità dei dati possono influire sulle prestazioni dei sistemi di intelligenza artificiale III. Considerazioni etiche sull'utilizzo dei dati per l'intelligenza artificiale I potenziali rischi per la privacy e la sicurezza associati alla raccolta e all'utilizzo di grandi quantità di dati per scopi di intelligenza artificiale Le implicazioni etiche dell'utilizzo dell'intelligenza artificiale per prendere decisioni che influiscono sulla vita delle persone, ad esempio nel settore sanitario o finanziario IV. Vantaggi e svantaggi di affidarsi ai dati per l'IA I potenziali vantaggi dell'utilizzo dei dati per alimentare i sistemi di intelligenza artificiale, come una maggiore efficienza e un migliore processo decisionale I potenziali svantaggi dell'affidarsi ai dati per guidare l'IA, come pregiudizi e mancanza di trasparenza V. conclusione L'importanza dei dati nello sviluppo e nell'uso dell'intelligenza artificiale Il ​​futuro dell'IA e il potenziale impatto dei dati sulla sua continua crescita ed evoluzione. Introduzione L'International Data Corporation ha stimato che entro il 2024 il mondo avrà prodotto all'incirca 165 Zettabyte ( 1 Zettabyte = 1 trilione di Gigabyte ) di dati. Wow sembra un dato quasi vicino all'infinito, ma come è possibile che produciamo tutti questi dati? Chi gli ha dato il permesso di memorizzare questi dati se sono così importanti? Rispondiamo alla prima domanda, noi produciamo dati utili all'elaborazione ogni volta che accediamo su internet o usiamo software con apposite funzione per la memorizzazione delle azioni compiute al suo interno. Un esempio veloce di giornata tipo: Una volta svegliati accediamo al nostro social network e all'interno di questo iniziamo a produrre dati, i post che ci piacciono, i post che guardiamo più del solito, i commenti che scriviamo oltre a tutte le informazioni che il social network ha già su di noi come nome, cognome, indirizzo,interessi, etc.. Andiamo a lavoro e per vedere la strada migliore ed evitare il traffico apriamo la nostra applicazione delle mappe (Maps ad esempio). Questo tipo di app monitorerà la tua velocità di viaggio, percorso, memorizzerà i tuoi spostamenti, i luoghi dove passi più tempo e molti altri Ci ricordiamo che la settimana prossima è il compleanno di un nostro parente e apriamo subito un app di acquisti online (amazon, ebay ad esempio) per prendere il regalo. Queste app come i social network ci profilano in base alle nostre ricerche, a ciò che acquistiamo per poi creare campagne di marketing ad hoc per l utente, ad esempio: l'articolo nel tuo carrello è stato scontato Prepariamo la cena e apriamo un app di streaming per cenare con una serie tv e metterci a letto. Mentre scegli la serie tv da vedere la piattaforma di streaming inizia a memorizzare quali sono le categorie che ti soffermi di più a guardare e anche qui sei profilato. La piattaforma di streaming domani in caso non hai dormito per vedere tutta la tua serie tv sarà pronta a consigliartene una simile grazie alla profilatura. Pensate solo facendo queste 4 azioni tutti i giorni in una settimana quanti dati utili per le varie aziende avete e ho prodotto Rispondiamo ora alla seconda domanda, mi dispiace dirlo così ma sei stato proprio tu, come me, a dare quel permesso. Nella società di oggi non è semplice "stare al passo" sia a livello di comunità ( ad esempio la comunicazione, o le indicazioni stradali ) sia per quanto riguarda il lavoro e le aziende. Per questo motivo quando hai saputo che i tuoi colleghi o i tuoi amici avevano installato l'app per comunicare più velocemente l'hai scaricata subito senza leggere "termini e condizioni". E' proprio li dove c'è scritto che ogni click che effettuerai verrà memorizzato ed usato a scopi commerciali. Come vengono utilizzati i dati nell'IA I dati svolgono un ruolo fondamentale nello sviluppo e nel miglioramento dei sistemi di intelligenza artificiale (AI). Affinché i sistemi di intelligenza artificiale funzionino, devono essere addestrati su grandi quantità di dati che rappresentano accuratamente le attività che devono svolgere. I dati vengono raccolti da una varietà di fonti, come sensori, database e interazioni dell'utente. I dati raccolti vengono quindi preelaborati per garantire che siano puliti, accurati e formattati correttamente per l'uso nei sistemi di intelligenza artificiale. Una volta che i dati sono stati raccolti e preelaborati, vengono utilizzati per addestrare i modelli di intelligenza artificiale. Questi modelli sono algoritmi matematici progettati per apprendere dai dati e fare previsioni o decisioni basate su tali informazioni. La qualità e la quantità dei dati utilizzati per addestrare questi modelli possono avere un impatto significativo sulle loro prestazioni. Esistono due tipi principali di dati utilizzati nell'IA: dati strutturati e non strutturati. I dati strutturati sono organizzati e formattati in modo da facilitare l'elaborazione da parte dei computer, come i dati in un foglio di calcolo o in un database. I dati non strutturati, invece, sono più difficili da elaborare e comprendere per i computer, come dati di testo, audio o video. Anche la qualità dei dati utilizzati per addestrare i modelli di intelligenza artificiale è importante. I dati di alta qualità sono accurati, pertinenti e diversificati e rappresentano accuratamente le attività che il sistema di intelligenza artificiale dovrà svolgere. Al contrario, i dati di bassa qualità possono contenere errori, incoerenze o pregiudizi, che possono avere un impatto negativo sulle prestazioni del sistema di intelligenza artificiale. Infine, anche la quantità di dati utilizzati per addestrare i modelli di intelligenza artificiale può influire sulle loro prestazioni. In generale, più dati sono migliori, in quanto consentono al sistema di intelligenza artificiale di apprendere di più e fare previsioni o decisioni più accurate. Tuttavia, c'è un punto di rendimenti decrescenti, in cui l'aggiunta di più dati potrebbe non migliorare in modo significativo le prestazioni del sistema di intelligenza artificiale. In sintesi, i dati sono un ingrediente fondamentale nello sviluppo e nell'utilizzo dei sistemi di intelligenza artificiale. Viene utilizzato per addestrare i modelli di intelligenza artificiale e consentire loro di apprendere e fare previsioni o decisioni. I tipi e la qualità dei dati utilizzati possono influire sulle prestazioni dei sistemi di intelligenza artificiale, così come la quantità di dati. Considerazioni etiche sull'utilizzo dei dati per l'intelligenza artificiale Man mano che i sistemi di intelligenza artificiale diventano più diffusi e sofisticati, crescono le preoccupazioni circa le implicazioni etiche dell'utilizzo dei dati per alimentare questi sistemi. Uno dei principali problemi etici associati all'utilizzo dei dati per l'intelligenza artificiale sono i potenziali rischi per la privacy e la sicurezza. Quando vengono raccolte e utilizzate grandi quantità di dati per addestrare modelli di intelligenza artificiale, questi dati spesso contengono informazioni personali sulle persone che li hanno generati. Queste informazioni possono includere cose come nome, età, posizione e altri dettagli sensibili. Se questi dati non sono adeguatamente protetti, possono essere consultati da persone o organizzazioni non autorizzate, il che può comportare violazioni della privacy e altri rischi. Oltre ai problemi di privacy, esistono anche rischi per la sicurezza associati all'utilizzo dei dati per l'intelligenza artificiale. Man mano che i sistemi di intelligenza artificiale diventano più avanzati e vengono utilizzati in una gamma più ampia di applicazioni, possono diventare obiettivi per malintenzionati che vogliono sfruttarli per i propri scopi. Ciò può includere cose come l'hacking dei sistemi di intelligenza artificiale per rubare dati, l'uso dell'IA per lanciare attacchi informatici o l'uso dell'IA per manipolare informazioni o processi decisionali. Un altro problema etico relativo all'utilizzo dei dati per l'IA è il potenziale impatto sulla vita delle persone. Man mano che i sistemi di intelligenza artificiale diventano più sofisticati e vengono utilizzati in una gamma più ampia di applicazioni, si fa sempre più affidamento su di essi per prendere decisioni che possono avere conseguenze significative per gli individui. Ad esempio, i sistemi di intelligenza artificiale vengono utilizzati nel settore sanitario per diagnosticare e curare i pazienti, nella finanza per prendere decisioni di investimento e nella giustizia penale per prevedere la probabilità di recidiva. Queste applicazioni dell'IA sollevano importanti questioni etiche circa l'equità e la trasparenza delle decisioni prese dai sistemi di IA. Si teme che i sistemi di intelligenza artificiale possano essere prevenuti, intenzionalmente o meno, il che può portare a disparità di trattamento degli individui in base alla razza, al sesso, all'età o ad altri fattori. C'è anche la preoccupazione che le decisioni prese dai sistemi di intelligenza artificiale possano essere difficili o impossibili da comprendere o contestare per le persone, il che può limitare la loro capacità di ritenere questi sistemi responsabili. In sintesi, l'utilizzo dei dati per alimentare i sistemi di intelligenza artificiale solleva importanti preoccupazioni etiche relative alla privacy, alla sicurezza e all'equità. Poiché l'intelligenza artificiale continua a evolversi e a diventare più ampiamente utilizzata, è importante considerare attentamente questi problemi etici e adottare misure per affrontarli. Vantaggi e svantaggi di affidarsi ai dati per l'IA I dati sono un ingrediente fondamentale nello sviluppo e nell'uso dei sistemi di intelligenza artificiale, ma fare affidamento sui dati per alimentare questi sistemi presenta anche potenziali vantaggi e svantaggi. Uno dei principali vantaggi dell'utilizzo dei dati per guidare l'IA è che può migliorare l'efficienza e l'accuratezza del processo decisionale. I sistemi di intelligenza artificiale sono in grado di elaborare e analizzare grandi quantità di dati in modo rapido e accurato, il che può consentire loro di prendere decisioni più accurate e affidabili di quelle prese dagli esseri umani. Ciò può avere un impatto positivo su un'ampia gamma di applicazioni, come nel settore sanitario, finanziario e dei trasporti, dove decisioni accurate e tempestive sono fondamentali. Un altro potenziale vantaggio dell'utilizzo dei dati per potenziare l'intelligenza artificiale è che possono aiutare a migliorare le prestazioni dei sistemi di intelligenza artificiale nel tempo. Poiché i sistemi di intelligenza artificiale sono esposti a più dati, sono in grado di apprendere e adattarsi, il che può consentire loro di fare previsioni e decisioni migliori. Ciò può essere particolarmente utile nelle applicazioni in cui i dati o l'ambiente cambiano costantemente, ad esempio nelle previsioni meteorologiche o nel commercio di azioni. Tuttavia, ci sono anche potenziali svantaggi nell'affidarsi ai dati per guidare l'IA. Uno dei principali svantaggi è il potenziale di distorsione nei dati utilizzati per addestrare i modelli di intelligenza artificiale. Se i dati utilizzati per addestrare i sistemi di intelligenza artificiale sono distorti, intenzionalmente o meno, ciò può portare a decisioni distorte e trattamento ineguale degli individui in base alla razza, al sesso, all'età o ad altri fattori. Un altro potenziale svantaggio di fare affidamento sui dati per alimentare l'IA è la mancanza di trasparenza nelle decisioni prese dai sistemi di intelligenza artificiale. In molti casi, gli algoritmi e i modelli utilizzati dai sistemi di intelligenza artificiale sono complessi e difficili da comprendere per gli esseri umani, il che può rendere difficile o impossibile per gli individui contestare o mettere in discussione le decisioni prese da questi sistemi. In sintesi, mentre l'utilizzo dei dati per alimentare i sistemi di intelligenza artificiale ha molti potenziali vantaggi, come una maggiore efficienza e precisione, ci sono anche potenziali svantaggi, come bias e mancanza di trasparenza. Poiché l'IA continua ad evolversi, è importante considerare attentamente questi vantaggi e svantaggi e adottare misure per affrontarli. Conclusione sui dati e l' IA In conclusione, i dati sono un ingrediente fondamentale nello sviluppo e nell'uso di sistemi di intelligenza artificiale (AI). I dati vengono utilizzati per addestrare i modelli di intelligenza artificiale e consentire loro di apprendere e fare previsioni o decisioni. I tipi e la qualità dei dati utilizzati possono influire sulle prestazioni dei sistemi di intelligenza artificiale, così come la quantità di dati. L'uso dei dati nell'IA solleva anche importanti considerazioni etiche, come i potenziali rischi per la privacy e la sicurezza e l'impatto sulla vita delle persone. Poiché l'intelligenza artificiale continua a evolversi e a diventare più ampiamente utilizzata, è importante considerare attentamente questi problemi etici e adottare misure per affrontarli. Guardando al futuro, è probabile che la continua crescita ed evoluzione dell'IA sarà fortemente influenzata dai dati. Man mano che vengono raccolti ed elaborati più dati, i sistemi di intelligenza artificiale diventeranno più sofisticati e saranno in grado di svolgere una gamma più ampia di attività. Tuttavia, anche le considerazioni etiche e i potenziali svantaggi dell'affidarsi ai dati per potenziare l'IA dovranno essere attentamente considerati e affrontati. Se hai trovato questo articolo interessante e informativo, condividilo con i tuoi amici e colleghi. Più persone sono consapevoli dell'importanza dei dati nell'IA, meglio possiamo affrontare le considerazioni etiche e i potenziali svantaggi dell'utilizzo dei dati per alimentare questi avviamo una conversazione e lavoriamo insieme per garantire che l'intelligenza artificiale sia utilizzata in modo responsabile ed etico

  • 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.

  • Cosa è la classificazione del testo

    Gli analisti affermano che ci sono molte più informazioni di quelle che possiamo elaborare. Ciò è particolarmente vero per la classificazione del testo. Pensate a quanto testo produciamo su Facebook, o quante informazioni contiene wikipedia. La classificazione del testo è l'atto di determinare a quale categoria appartiene un testo. Questo video fa schifo Questo video è fantastico L' I.A. aiuterà l'uomo L' I.A. distruggerà l'uomo Questo video fa schifo Questo video è fantastico L' I.A. aiuterà l'uomo L' I.A. distruggerà l'uomo Il processo è solitamente diviso in due parti principali, "formazione" e "classificazione". La classificazione del testo è un processo di apprendimento automatico, il che significa che è una forma di intelligenza artificiale. Questo può essere utilizzato in molti modi diversi e può essere molto utile in una varietà di campi diversi. Che cos'è la classificazione del testo? La classificazione del testo è il processo di categorizzazione testuale in una o più classi diverse per organizzare, strutturare e filtrare in qualsiasi parametro. Ad esempio, la classificazione del testo viene utilizzata in documenti legali, studi medici e file o semplicemente come recensioni di prodotti. I dati sono più importanti che mai; le aziende stanno spendendo fortune cercando di estrarre quante più informazioni possibili. Perché usare la classificare del testo con il Machine Learning? Scalabilità: l'immissione, l'analisi e l'organizzazione manuali dei dati sono noiose e lente. L'apprendimento automatico consente un'analisi automatica che può essere applicata a set di dati, non importa quanto grandi o piccoli siano. Coerenza: l'errore umano si verifica a causa della fatica e della desensibilizzazione al materiale nel set di dati. L'apprendimento automatico aumenta la scalabilità e migliora drasticamente la precisione grazie alla natura imparziale e alla coerenza dell'algoritmo. Velocità: a volte potrebbe essere necessario accedere e organizzare rapidamente i dati. Un algoritmo appreso dalla macchina può analizzare i dati per fornire informazioni in modo digeribile. Creare un classificatore del testo Inizia con 6 passaggi universali Alcuni metodi di base possono classificare documenti di testo diversi in una certa misura, ma i metodi più comunemente usati coinvolgono l'apprendimento automatico. Ci sono sei passaggi di base che un modello di classificazione del testo deve affrontare prima di essere distribuito. 1. Fornire un set di dati di alta qualità I set di dati sono blocchi di dati grezzi utilizzati come origine dati per alimentare il nostro modello. Nel caso della classificazione del testo, vengono utilizzati algoritmi di apprendimento automatico supervisionati, fornendo così al nostro modello di apprendimento automatico dati etichettati. I dati etichettati sono dati predefiniti per il nostro algoritmo con un tag informativo allegato. 2. Filtraggio ed elaborazione dei dati Poiché i modelli di apprendimento automatico possono comprendere solo valori numerici, la tokenizzazione e l'incorporamento di parole del testo fornito saranno necessarie affinché il modello riconosca correttamente i dati. La tokenizzazione è il processo di divisione dei documenti di testo in parti più piccole chiamate token. I token possono essere rappresentati come l'intera parola, una sottoparola o un singolo carattere. Ad esempio, la tokenizzazione del lavoro in modo più intelligente può essere eseguita in questo modo: Parola chiave: stupido Sottoparola token: st-pi-do Sottolettera token: s-t-pi-d-o La tokenizzazione è importante perché i modelli di classificazione del testo possono elaborare i dati solo a livello basato su token e non possono comprendere ed elaborare frasi complete. Sarebbe necessaria un'ulteriore elaborazione sul set di dati grezzi fornito affinché il nostro modello digerisse facilmente i dati forniti. Rimuovi le funzionalità non necessarie, filtrando i valori nulli e infiniti e altro ancora. Mescolare l'intero set di dati aiuterebbe a prevenire eventuali distorsioni durante la fase di addestramento. 3. Suddivisione del nostro set di dati in set di dati di addestramento e test Vogliamo addestrare i dati sull'80% del set di dati riservando il 20% del set di dati per testare l'accuratezza dell'algoritmo. Poi ognuno fa come preferisce. 4. Allena l'algoritmo Eseguendo il nostro modello con il set di dati di addestramento, l'algoritmo può classificare i testi forniti in diverse categorie identificando schemi e approfondimenti nascosti. 5. Testare e verificare le prestazioni del modello Successivamente, verifica l'integrità del modello utilizzando il set di dati di test come menzionato nel passaggio 3. Il set di dati di test non sarà etichettato per testare l'accuratezza del modello rispetto ai risultati effettivi. Per testare accuratamente il modello, il set di dati di test deve contenere nuovi casi di test (dati diversi rispetto al set di dati di addestramento precedente) per evitare l'overfitting del nostro modello. 6. Ottimizzazione del modello Ottimizza il modello di machine learning regolando i diversi iperparametri del modello senza overfitting o creare una varianza elevata. Un iperparametro è un parametro il cui valore controlla il processo di apprendimento del modello. Ora sei pronto per la distribuzione! Come funziona la classificazione del testo? Nel processo di filtraggio menzionato in precedenza, gli algoritmi di machine e deep learning possono comprendere solo valori numerici, costringendoci a eseguire alcune tecniche di incorporamento di parole sul nostro set di dati. L'inclusione di parole è il processo di rappresentazione delle parole in vettori di valore reale che possono codificare il significato della parola data. Word2Vec: un metodo di incorporamento di parole non supervisionato sviluppato da Google. Utilizza le reti neurali per imparare da grandi set di dati di testo. Come suggerisce il nome, l'approccio Word2Vec converte ogni parola in un dato vettore. GloVe: noto anche come Global Vector, è un modello di apprendimento automatico non supervisionato per ottenere rappresentazioni vettoriali di parole. Simile al metodo Word2Vec, l'algoritmo GloVe mappa le parole in spazi significativi in ​​cui la distanza tra le parole è correlata alla somiglianza semantica. TF-IDF: Abbreviazione di termine frequenza documento inversa frequenza, TF-IDF è un algoritmo di incorporamento di parole che valuta l'importanza di una parola all'interno di un determinato documento. Il TF-IDF assegna ad ogni parola un determinato punteggio per indicarne l'importanza in una serie di documenti. Algoritmi di classificazione del testo Ecco tre degli algoritmi di classificazione del testo più noti ed efficaci. Tieni presente che ci sono ulteriori algoritmi di definizione incorporati in ciascun metodo. 1. Classificazione del testo con Macchina vettoriale di supporto lineare ( SVM) Considerato uno dei migliori algoritmi di classificazione del testo in circolazione, l'algoritmo della macchina vettoriale di supporto lineare traccia i punti dati forniti relativi alle loro caratteristiche date, quindi traccia una linea di adattamento migliore per dividere e classificare i dati in classi diverse. 2. Classificazione del testo con la Regressione logistica La regressione logistica è una sottoclasse di regressione che si concentra principalmente sui problemi di classificazione. Utilizza un confine decisionale, una regressione e una distanza per valutare e classificare il set di dati. 3. Classificazione del testo con Naive Bayes L'algoritmo di Naive Bayes classifica oggetti diversi in base alle loro caratteristiche fornite. Quindi traccia i confini del gruppo per estrapolare quelle classificazioni di gruppo da risolvere e classificare ulteriormente. Errori da evitare nella classificazione del testo Dati di train di scarsa qualità Fornire al tuo algoritmo dati di bassa qualità comporterà previsioni future scadenti. Pensa ai dati come gli ingredienti del tuo programma. Se usi ingredienti di bassa qualità o magari scaduti come pensi verrà fuori il piatto alla fine ? Una schifezza, anche se ti sei impegnato tanto. Tuttavia, un problema molto comune tra i professionisti dell'apprendimento automatico è alimentare il modello di formazione con un set di dati troppo dettagliato che include funzionalità non necessarie. Il sovraffollamento dei dati con dati irrilevanti può comportare una diminuzione delle prestazioni del modello. Quando si tratta di scegliere e organizzare un set di dati, Less is More. Un addestramento errato per testare rapporti di dati può influire notevolmente sulle prestazioni del modello e influire sulla riproduzione casuale e sul filtro. Con punti dati precisi che non sono distorti da altri fattori non necessari, il modello di addestramento funzionerà in modo più efficiente. Quando si esegue il training del modello, scegliere un set di dati che soddisfi i requisiti del modello, filtrare i valori non necessari, mescolare il set di dati e testare la precisione del modello finale. Gli algoritmi più semplici richiedono meno tempo e risorse di calcolo; i modelli migliori sono quelli più semplici che possono risolvere problemi complessi. Overfitting e Underfitting La precisione dei modelli quando l'allenamento raggiunge un picco e poi si riduce lentamente man mano che l'allenamento continua. Questo è chiamato overfitting; il modello inizia ad apprendere modelli non intenzionali poiché la formazione è durata troppo a lungo. Prestare attenzione quando si ottiene un'elevata precisione sul set di addestramento poiché l'obiettivo principale è sviluppare modelli la cui accuratezza è radicata nel set di test (dati che il modello non ha mai visto prima). D'altra parte, underfitting si ha quando il modello formativo ha ancora margini di miglioramento e non ha ancora raggiunto il suo massimo potenziale. I modelli scarsamente addestrati derivano dal periodo di tempo addestrato o sono eccessivamente regolati rispetto al set di dati. Questo esemplifica il punto di avere dati concisi e precisi. Trovare il punto debole durante l'allenamento di un modello è fondamentale. La suddivisione del set di dati 80/20 è un buon inizio, ma l'ottimizzazione dei parametri potrebbe essere ciò di cui il tuo modello specifico ha bisogno per funzionare al meglio. Formato testo errato Sebbene non sia ampiamente menzionato in questo articolo, l'utilizzo del formato di testo corretto per il tuo problema di classificazione del testo porterà a risultati migliori. Alcuni approcci alla rappresentazione dei dati testuali includono GloVe , Word2Vec e modelli di incorporamento . L'uso del formato di testo corretto migliorerà il modo in cui il modello legge e interpreta il set di dati e, a sua volta, lo aiuterà a comprendere i modelli. Applicazioni di classificazione del testo ecco alcuni eempi di applicazioni di classificazione del testo : Filtraggio dello spam: ricercando determinate parole chiave, un'e-mail può essere classificata come utile o spam. Classificazione del testo: utilizzando le classificazioni del testo, le applicazioni possono classificare diversi elementi (articoli, libri, ecc.) in classi diverse classificando i testi correlati come il nome dell'elemento, la descrizione e così via. L'utilizzo di tali tecniche può migliorare l'esperienza in quanto semplifica la navigazione degli utenti all'interno di un database. Identificazione dell'incitamento all'odio: alcune società di social media utilizzano la classificazione del testo per rilevare e vietare commenti o post con manierismi offensivi in ​​quanto non consentono di digitare e chattare alcuna variazione di volgarità in un gioco multiplayer per bambini. Marketing e pubblicità: le aziende possono apportare modifiche specifiche per soddisfare i propri clienti comprendendo come gli utenti reagiscono a determinati prodotti. Può anche consigliare determinati prodotti in base alle recensioni degli utenti su prodotti simili. Gli algoritmi di classificazione del testo possono essere utilizzati insieme ai sistemi di raccomandazione, un altro algoritmo di deep learning utilizzato da molti siti Web online per ottenere affari ripetuti. Set di dati per la classificazione del testo Con tonnellate di set di dati etichettati e pronti per l'uso disponibili, puoi sempre cercare il set di dati perfetto che soddisfi i requisiti del tuo modello. Sebbene tu possa affrontare alcuni problemi quando decidi quale utilizzare, nella parte successiva ti consiglieremo alcuni dei set di dati più noti disponibili per l'uso pubblico. Set di dati IMDB Set di dati delle recensioni di Amazon Yelp Recensioni Dataset Raccolta di spam SMS Set di dati di revisione del grado di apertura Set di dati sul sentiment delle compagnie aeree statunitensi di Twitter Dataset di incitamento all'odio e linguaggio offensivo Set di dati clickbait I NOSTRI DATASET Siti web come Kaggle contengono una varietà di set di dati che coprono tutti gli argomenti. Prova a eseguire il tuo modello su un paio dei set di dati sopra menzionati per esercitarti! Esempio di Classificazione del testo con Python Classificazione del testo e Machine Learning Con il machine learning che ha avuto un enorme impatto nell'ultimo decennio, le aziende stanno provando ogni metodo possibile per utilizzare il machine learning per automatizzare i processi. Recensioni, commenti, post, articoli, giornali e documentazione hanno tutti un valore inestimabile nel testo. Con la classificazione del testo utilizzata in molti modi creativi per estrarre informazioni e modelli degli utenti, le aziende possono prendere decisioni supportate dai dati; i professionisti possono ottenere e apprendere informazioni preziose più velocemente che mai. Conclusione sulla Classificazione del testo Non è un segreto che le aziende stiano spendendo milioni di dollari cercando di estrarre quante più informazioni possibili. I dati sono la spina dorsale di qualsiasi azienda e più dati hai, maggiori sono le tue possibilità di prendere le decisioni giuste. Uno strumento che i data scientist possono utilizzare per estrarre i dati è la classificazione del testo. Ci auguriamo che il nostro post sul blog sulla classificazione del testo ti sia piaciuto. Se hai qualche domanda, usa i commenti qui sotto :)

bottom of page