top of page

Risultati Ricerca Intelligenza Artificiale Italia

484 risultati trovati con una ricerca vuota

  • Python e Machine Learning per la SEO Guida Completa

    Python viene utilizzato per alimentare piattaforme, eseguire analisi dei dati ed eseguire i loro modelli di machine learning. In questa guida, step by step, partendo da zero vedremo come python e il machine learning possono e potranno aiutarti per la SEO. Come detto partiamo da zero e vedendo cosa è Python Cos'è Python? In breve, Python è un linguaggio di programmazione interattivo open source orientato agli oggetti che viene interpretato riga per riga. Con una sintassi semplice e facile da imparare, oltre a leggibilità avanzata e supporto per diversi moduli e librerie, Python è molto amato grazie alla maggiore produttività che fornisce. A dimostrazione di ciò, Python è utilizzato da alcune delle più grandi organizzazioni del mondo per potenziare le proprie piattaforme, eseguire analisi dei dati ed eseguire i propri modelli di machine learning. Aziende tra cui Google, YouTube, Netflix, NASA, Spotify e IBM hanno dichiarato pubblicamente che Python è stata una parte importante della loro crescita, grazie alla sua semplicità, velocità e scalabilità. In effetti, il primo web-crawler di Google è stato effettivamente scritto in Python e rimane uno dei loro linguaggi ufficiali lato server. Letture per approfondire Se non sai perchè utilizzeremo python, clicca qui Se non hai ancora installato Python, clicca qui Per sapere qualcosa in più su python, clicca qui Come utilizzo Python ? Puoi eseguire script Python in diversi modi, a seconda di ciò che funziona meglio per te. La maggior parte dei sistemi viene fornita con Python già installato, molto probabilmente sarà Python 3, ma puoi scoprire quale versione hai digitando python –version nel tuo terminale. Se hai installato Python 2, puoi aggiornarlo a Python versione 3 scaricando Python 3 dal sito Web di Python poiché Python 2 è stato ufficialmente deprecato nel 2020 e ci sono alcune differenze di sintassi tra i due, quindi è meglio assicurarsi di utilizzare Python 3. È possibile eseguire Python dal terminale o dall'IDE (Integrated Development Environment) della riga di comando, nonché da piattaforme desktop tra cui Pycharm o VSCode. In alternativa, puoi utilizzare alternative basate su cloud tra cui: Google Colab Questi forniscono un'esperienza più semplice per i principianti per apprendere e testare elementi del codice riga per riga, nonché per condividere e collaborare con il tuo team. Letture per approfondire Iniziare a programmare su colab, clicca qui riconoscimento facciale in 25 righe di codice con Python, clicca qui Per sapere qualcosa in più su colab, clicca qui Le principali librerie Python per la SEO Il potere principale di Python è nelle sue librerie, che abilitano diverse funzioni extra tra cui: Estrazione dati. Analisi e preparazione. Informatica scientifica. Elaborazione del linguaggio naturale. Apprendimento automatico. Alcune librerie utili per attività che coinvolgono l'analisi dei dati e l'automazione in SEO includono: Panda : utilizzati per la manipolazione e l'analisi dei dati. NumPy : Utile per il calcolo scientifico. SciPy : utilizzato per l'informatica scientifica e tecnica. SciKit Learn : apprendimento automatico per il data mining e l'analisi. Pandas : utilizzati per la manipolazione e l'analisi dei dati. SpaCy : una grande libreria di elaborazione del linguaggio naturale. Requests : una libreria per effettuare richieste HTTP. Beautiful Soup : utilizzata per estrarre dati da file HTML e XML. Matplotlib : per creare visualizzazioni dai dati. Letture per approfondire Principali librerie Machine Learning, clicca qui Principali librerie Deep Learning, clicca qui Principali librerie DataScience Learning, clicca qui Per sapere qualcosa in più sulle librerie, clicca qui Perché Python è popolare tra i SEO ? Sebbene sia importante comprendere i linguaggi che alimentano i siti Web su cui lavoriamo (come HTML, CSS e JavaScript), Python offre molte opportunità di automazione per attività di basso livello che di solito trascorriamo per diverse ore. Python consente ai professionisti SEO in diversi modi in quanto non solo ci consente di automatizzare attività ripetitive, ma anche di estrarre e analizzare grandi set di dati. La quantità di dati con cui lavorano i marketer è solo in aumento, quindi essere in grado di analizzarli in modo efficiente aiuterà a risolvere molti problemi complessi in un lasso di tempo più breve. Questo a sua volta consente di risparmiare tempo prezioso e ci consente di essere più efficienti nell'intraprendere altre importanti attività SEO. Questi fattori combinati hanno portato a una crescita della popolarità di Python tra i professionisti SEO. La capacità di comprendere meglio i dati non solo ci aiuterà a svolgere meglio il nostro lavoro, ma ci consentirà anche di prendere decisioni basate sui dati. Queste decisioni ci consentiranno quindi di fornire spunti concreti per i nostri clienti e stakeholder e di avere maggiore fiducia nelle raccomandazioni che implementiamo. I vantaggi dell'automazione con Python Sebbene Python non sarà in grado di imitare le strategie umane guidate dalle emozioni, gli script Python possono essere utilizzati per automatizzare un gran numero di attività che richiedono tempo . Questo elenco di attività che puoi automatizzare con Python è in continua crescita ma include: Identificazione dell'intento dell'utente. Mappatura degli URL prima di una migrazione. Analisi dei collegamenti interni. Esecuzione di ricerche di parole chiave. Ottimizzazione delle immagini. Siti web di scraping. Come aggiungere Python al tuo flusso di lavoro SEO Il modo migliore per aggiungere Python al tuo flusso di lavoro è iniziare a pensare a cosa può essere automatizzato, in particolare attività noiose e che richiedono tempo. In alternativa, pensa a modi in cui puoi gestire in modo più efficiente e trarre conclusioni dai dati che hai a disposizione. Se hai delle idee prova scriverle sul nostro forum o nei commenti! Un ottimo modo per iniziare è giocare con i dati del tuo sito Web a cui hai già accesso, ad esempio da una scansione del sito o dal tuo strumento di analisi. Non aver paura di trarre ispirazione da altre persone, giocare e persino rompere qualcosa quando impari, poiché questo è spesso il modo migliore per imparare. Trovare la causa di un problema e i modi per risolverlo è una parte importante di ciò che facciamo come SEO, ed è davvero lo stesso quando si impara e si usa Python. Esempi di modi per utilizzare Python Pronto per iniziare con Python? Ecco alcuni script utili che ho trovato utili per numerose attività, insieme a una breve descrizione di come ognuno funziona e delle sfide che risolvono. Pertinenza di reindirizzamento Il primo modo pratico per utilizzare Python è identificare se la mappatura di reindirizzamento che è stata implementata per una migrazione è accurata, creando uno script di rilevanza di reindirizzamento. Ciò implica eseguire una scansione del tuo sito prima e dopo la migrazione e segmentare le diverse categorie in base alla loro struttura URL. È quindi possibile utilizzare alcuni degli operatori di confronto integrati in Python per determinare se la cartella e la profondità di ciascuna pagina sono rimaste le stesse o sono state modificate dopo la migrazione. Lo script prenderà ciascuno dei tuoi URL e li confronterà prima e dopo la migrazione per identificare se sono gli stessi e i risultati verranno restituiti a una nuova tabella che indicherà True se sono gli stessi o False se sono cambiati. Puoi anche utilizzare la libreria Python Pandas per creare una tabella pivot in grado di visualizzare un conteggio di quanti URL per ciascuna categoria corrispondono e quanti sono stati modificati. Ciò ti consentirà di esaminare eventuali categorie o URL che non corrispondono e di rivedere le regole di reindirizzamento che sono state impostate. Analisi dei collegamenti interni Un altro script pratico che utilizza i dati di scansione utilizza Python per eseguire l'analisi dei collegamenti interni. Ciò ti consentirà di identificare le sezioni del tuo sito che hanno il maggior numero di collegamenti interni, oltre a scoprire opportunità per migliorare i collegamenti interni per diverse sezioni. Ciò utilizzerà nuovamente la segmentazione per determinare le diverse categorie degli URL e le tabelle pivot per esportare un conteggio del numero di collegamenti interni a ciascuna categoria del sito. API Python è ottimo anche da utilizzare con le API, ad esempio l'API Page Speed ​​Insights di Google. Ciò ti consentirà di misurare le metriche chiave delle prestazioni su larga scala, risparmiando tempo dal dover testare ogni URL. Utilizzando un file CSV con tutti gli URL che desideri testare, puoi eseguirli tramite l'API e creare un oggetto risposta per contenere tutte le metriche per ciascun URL. È quindi possibile estrarre le metriche specifiche, ad esempio LCP, CLS e FID, e generare una tabella che visualizzi queste metriche per ciascun URL. Puoi anche estrarre altre cose utili dall'API, inclusi gli elementi di spostamento del layout per ogni pagina, l'elemento di disegno più contenuto e un elenco di tutti i tag di blocco di terze parti o i file CSS e JS inutilizzati su ogni pagina. Altre possibilità Questi esempi stanno solo grattando la superficie, ci sono molte più possibilità di automazione e ottimizzazione usando gli script Python, tra cui: Ottimizzazione delle immagini. Unire i set di dati per trarre conclusioni ancora più forti. Convalida dell'hrflang. Calcolo della crescita delle parole chiave. Raccolta dei dati dell'SGC. Esecuzione dell'analisi della concorrenza. Machine Learning per la SEO Machine Learning per la SEO Guida Completa Potenziare l'apprendimento automatico Python è anche un linguaggio popolare utilizzato per potenziare le applicazioni di apprendimento automatico grazie alla sua sintassi semplice, intuitiva e accessibile. Inoltre, ci sono un gran numero di librerie utili che sono utili quando si lavora e si addestrano modelli di machine learning. Che cos'è l'apprendimento automatico? L'apprendimento automatico è essenzialmente "un'applicazione dell'intelligenza artificiale che fornisce ai sistemi la capacità di apprendere e migliorare automaticamente dall'esperienza, senza la necessità di essere programmati esplicitamente" (una definizione completa può essere trovata qui ). L'apprendimento automatico viene spesso utilizzato per identificare modelli nei dati, in base ai quali è possibile fare previsioni. Esistono due tipi principali di apprendimento automatico, il primo è l'apprendimento supervisionato che viene addestrato su dati etichettati, in cui un set di formazione ha input con l'output desiderato. L'algoritmo di apprendimento riceve quindi già la risposta durante la lettura dei dati. Il risultato corretto per ogni punto dati viene esplicitamente etichettato durante il training del modello. Mentre l'apprendimento non supervisionato viene addestrato utilizzando informazioni che non sono etichettate, quindi consente all'algoritmo di agire sulle informazioni senza guida. Viene spesso utilizzato per testare le capacità del sistema o quando non si dispone di dati pre-etichettati. Python e Machine learning per la seo Eseguito insieme all'apprendimento automatico, Python può essere utilizzato per potenziare gli script per il training di un set di dati, prima che riepiloghi e visualizzi i dati. Da qui, il modello valuterà gli algoritmi per consentire di fare previsioni. Esempi di apprendimento automatico nel mondo reale L'uso dell'apprendimento automatico sul Web è in costante aumento, con la creazione di nuovi modelli e i dati di allenamento che diventano ogni giorno più accessibili. In alcuni casi, veniamo anche usati per addestrarli. Alcuni esempi di apprendimento automatico nel mondo reale includono: Algoritmo RankBrain di Google. Il programma Deep Voice di Baidu. Le linee temporali curate da Twitter. Consigli su Netflix e Spotify. La funzione Einstein di Salesforce. Possibilità SEO con Machine Learning Grazie alla loro capacità di risolvere problemi complessi, non sorprende che i modelli di apprendimento automatico vengano utilizzati per semplificare la vita dei professionisti del marketing. Come dice Britney Muller : "Il machine learning sta diventando più accessibile e ci consentirà di lavorare su una strategia di livello superiore". Ciò ti consentirà di dedicare più tempo a trovare soluzioni, piuttosto che semplicemente a identificare i problemi. Alcuni esempi di modelli di machine learning utilizzati nella SEO includono: Valutazione della qualità dei contenuti. Identificare le lacune e le opportunità di parole chiave. Ottenere informazioni dettagliate sul coinvolgimento degli utenti. Ottimizzazione dei tag del titolo. Automatizzare la creazione di meta descrizioni. Trascrizione dell'audio. Ecco alcuni esempi di Machine Learning che vengono utilizzati per attività SEO, che potresti anche aver incontrato. Prelettura predittiva Sulla base dei modelli di navigazione degli utenti derivanti dall'analisi dei siti Web, strumenti come guess.js creano modelli di machine learning in grado di prevedere quali pagine gli utenti visiteranno con maggiore probabilità in seguito e precaricare le risorse che dovranno essere caricate. Altri esempi di ciò in pratica includono la previsione del prossimo contenuto che un utente potrebbe voler visualizzare e l'adeguamento dell'esperienza utente per tenerne conto. Oltre a prevedere i widget con cui è probabile che un utente interagisca e personalizzare un'esperienza più personalizzata tenendo presente questo. Collegamenti interni Esistono due diversi modi in cui l'apprendimento automatico può aiutare con i collegamenti interni. Il primo è aggiornare i collegamenti interrotti, questo può essere fatto eseguendo la scansione per identificare i collegamenti interni interrotti, quindi utilizzando un algoritmo per suggerire la pagina di sostituzione più accurata e sostituendo i collegamenti interni interrotti. L'altro suggerisce un collegamento interno rilevante basato sui big data. Questi strumenti utilizzano algoritmi che vengono messi a punto per acquisire costantemente nuove informazioni in modo che possano suggerire più collegamenti interni dopo un po' di tempo. Iniziano anche a suggerire collegamenti interni rilevanti mentre viene scritto un articolo. Qualità dei contenuti Il prossimo esempio è il miglioramento della qualità dei contenuti prevedendo ciò che utenti e motori di ricerca preferirebbero. Puoi farlo costruendo un modello che genera approfondimenti sui fattori più importanti. Questi fattori possono includere elementi come il volume di ricerca e il traffico, il tasso di conversione, i collegamenti interni, la frequenza di rimbalzo, il tempo sulla pagina e il conteggio delle parole. Utilizzerai quindi questi fattori importanti per addestrare un modello di apprendimento automatico, che genera un punteggio di qualità del contenuto per ogni pagina. L'esperienza utente L'apprendimento automatico viene utilizzato anche per migliorare l'esperienza dell'utente e ci sono molti esempi di come viene utilizzato, ad esempio Instagram utilizza l'analisi del sentimento per identificare e affrontare il linguaggio del bullismo. Twitter lo utilizza anche per il ritaglio delle immagini, per assicurarsi di ritagliare le immagini per visualizzare la parte più importante, ad esempio per concentrarsi sul testo. Il testo di queste immagini si trova in posizioni diverse su ciascuna, ma Twitter le ritaglia per visualizzare il testo nell'anteprima. Questo modello di machine learning è stato addestrato su migliaia di immagini ed è iniziato così, prima di poter identificare la parte più importante dell'immagine. La visione artificiale viene anche utilizzata per aiutare con l'esperienza dell'utente, identificando automaticamente cosa c'è in un'immagine, per rendere le immagini accessibili spiegando agli utenti cos'è un'immagine. Conclusione Spero che questo ti abbia ispirato a iniziare a imparare Python ed esplorare come può aiutarti con l'automazione delle attività e l'analisi di dati complessi per aumentare la tua efficienza. Come nota finale, ricorda che non è necessario imparare Python per essere un buon SEO, ma se sei incuriosito o interessato, spero che ti divertirai ad imparare e mettere in pratica alcuni script Python e Apprendimeto automatico nel tuo flusso di lavoro. Condividi questo contenuto se ti è stato di aiuto, grazie mille

  • Falsi miti sul machine learning

    Non esiste un modo giusto per entrare nell'apprendimento automatico. Impariamo tutti in modi leggermente diversi e abbiamo obiettivi diversi di ciò che vogliamo fare con o per l'apprendimento automatico. Un obiettivo comune è diventare rapidamente produttivi con l'apprendimento automatico. Se questo è il tuo obiettivo, questo post mette in evidenza cinque errori comuni che i programmatori commettono sulla strada per diventare rapidamente professionisti produttivi di machine learning. 1. Il machine learning è cosi potente da sembrare Magia L'apprendimento automatico è solo un altro insieme di tecniche che puoi utilizzare per creare soluzioni a problemi complessi. Poiché è un campo in piena espansione, l'apprendimento automatico viene generalmente comunicato in pubblicazioni accademiche e libri di testo per studenti post-laurea. Questo gli dà l'aspetto che è elitario e impenetrabile. È necessario un cambiamento di mentalità per essere efficaci nell'apprendimento automatico, dalla tecnologia al processo, dalla precisione all'"abbastanza buono", ma lo stesso si potrebbe dire per altri metodi complessi che i programmatori sono interessati ad adottare. 2. Non iniziare scrivendo codice Iniziare con l'apprendimento automatico scrivendo il codice può rendere le cose difficili perché significa che stai risolvendo almeno due problemi anziché uno: come funziona una tecnica in modo da poterla implementare e come applicare la tecnica a un determinato problema. È molto più semplice lavorare su un problema alla volta e sfruttare l'apprendimento automatico, gli ambienti statistici e le librerie di algoritmi per imparare ad applicare una tecnica a un problema. Ciò consente di controllare e mettere a punto una varietà di algoritmi in tempi relativamente brevi e di mettere a punto uno o due che sembrano promettenti piuttosto che investire grandi quantità di tempo nell'interpretazione di documenti di ricerca ambigui contenenti descrizioni di algoritmi. L'implementazione di un algoritmo può essere trattata come un progetto separato da completare in un secondo momento, ad esempio per un esercizio di apprendimento o se il sistema prototipo deve essere messo in funzione. Impara una cosa alla volta, ti consiglio di iniziare con un framework di apprendimento automatico basato su GUI, che tu sia un programmatore o meno. 3. Fare le cose manualmente Un processo circonda l'apprendimento automatico applicato, inclusa la definizione dei problemi, la preparazione dei dati e la presentazione dei risultati, tra le altre attività. Questi processi, insieme al test e alla messa a punto degli algoritmi, possono e devono essere automatizzati. L'automazione è una parte importante dello sviluppo di software moderno per build, test e distribuzione. C'è un grande vantaggio nella preparazione dei dati di script, nel test e nell'ottimizzazione degli algoritmi e nella preparazione dei risultati al fine di ottenere i vantaggi del rigore e della velocità di miglioramento. Ricorda e riutilizza le lezioni apprese nello sviluppo di software professionale. L'impossibilità di iniziare con l'automazione (come Makefiles o un sistema di build simile) è probabilmente dovuto al fatto che molti programmatori arrivano all'apprendimento automatico da libri e corsi che si concentrano meno sulla natura applicata del campo. In effetti, portare l'automazione nell'apprendimento automatico applicato è un'enorme opportunità per i programmatori . 4. Reinventare soluzioni a problemi comuni Centinaia e migliaia di persone hanno probabilmente implementato l'algoritmo che stai implementando prima di te o hanno risolto un tipo di problema simile al problema che stai risolvendo, sfruttando le loro lezioni apprese. Esiste una vasta gamma di conoscenze sulla risoluzione dell'apprendimento automatico applicato. Certo, gran parte di esso potrebbe essere legato a libri e pubblicazioni di ricerca, ma puoi accedervi. Fai i compiti e cerca su Google, Google Libri, Google Scholar e contatta la community di machine learning. Se stai implementando un algoritmo: Devi implementarlo? È possibile riutilizzare un'implementazione di un algoritmo open source esistente in una libreria o in uno strumento? Devi implementare da zero? Puoi rivedere il codice, imparare da o trasferire un'implementazione open source esistente? Devi interpretare la descrizione canonica dell'algoritmo? Ci sono descrizioni di algoritmi in altri libri, articoli, tesi o post di blog che puoi rivedere e da cui puoi imparare? Se stai affrontando un problema: Devi testare tutti gli algoritmi sul problema? Puoi sfruttare studi su questo o simili casi di problema dello stesso tipo generale che suggeriscono algoritmi e classi di algoritmi che funzionano bene? Devi raccogliere i tuoi dati? I loro set di dati o API pubblicamente disponibili che puoi utilizzare direttamente o come proxy per il tuo problema per apprendere rapidamente quali metodi potrebbero funzionare bene? Devi ottimizzare i parametri dell'algoritmo? Sono le euristiche che puoi utilizzare per configurare l'algoritmo presentato in articoli o studi sull'algoritmo? Quale sarebbe la tua strategia in caso di problemi con una libreria di programmazione o un tipo specifico di struttura dati? Usa le stesse tattiche nel campo dell'apprendimento automatico. Contatta la comunità e chiedi risorse che potresti essere in grado di sfruttare per accelerare l'apprendimento e il progresso del tuo progetto. Prendi in considerazione forum e siti di domande e risposte per iniziare e contatta accademici e specialisti come passaggio successivo. 5. Non serve davvero la matematica Non è necessaria la teoria matematica per iniziare, ma la matematica è una parte importante dell'apprendimento automatico. La ragione di ciò è che fornisce forse il modo più efficiente e inequivocabile per descrivere i problemi ei comportamenti dei sistemi. Ignorare i trattamenti matematici degli algoritmi può portare a problemi come avere una comprensione limitata di un metodo o adottare un'interpretazione limitata di un algoritmo. Ad esempio, molti algoritmi di apprendimento automatico hanno un'ottimizzazione al centro che viene aggiornata in modo incrementale. Conoscere la natura dell'ottimizzazione da risolvere (è la funzione convessa) consente di utilizzare algoritmi di ottimizzazione efficienti che sfruttano questa conoscenza. Interiorizzare il trattamento matematico degli algoritmi è lento e viene fornito con padronanza. Soprattutto se stai implementando algoritmi avanzati da zero, inclusi gli algoritmi di ottimizzazione interni, prenditi il ​​tempo necessario per imparare l'algoritmo dal punto di vista matematico. Riepilogo In questo post hai appreso di 5 errori comuni che i programmatori commettono quando iniziano l'apprendimento automatico. Le cinque lezioni sono: Non mettere l'apprendimento automatico su un piedistallo Non scrivere codice di apprendimento automatico per iniziare Non fare le cose manualmente Non reinventare soluzioni a problemi comuni Non ignorare la matematica Condividi l'articolo per supportarci, oppure se pensi di conoscere un altro mito scrivilo nei commenti.

  • IL SISTEMA INFERENZIALE + Regalo fine Serie

    Questa Spiegazione è appartenente ad una Serie di Articoli. Prima di iniziare a leggere ti consigliamo di guardare gli articoli precedenti : Lo Strumento "mente" Il servomeccanismo mentale Gli Engrammi : Le Immagini della Mente Che cosa è un concetto Gli stati Attenzionali Le funzioni attenzionali Il concetto di variabile La sovrapposizione degli effetti La Curiosità Le attività percettive La cognizione La concentrazione L'Intelligenza Generalizzando ulteriormente il processo inferenziale, visto nel precedente articolo, si rivela un aspetto che include ancora una volta dei continui informazionali che rispecchiano l’interazione causa-effetto, ovvero la relazione sopra esposta può essere ulteriormente tradotta in questa: SE (continuo informazionale di causa) : ALLORA (continuo informazionale di effetto); ALTRIMENTI (nuova causa) ALLORA (nuovo effetto). Ciò che forse non traspare da questa formula è che la "nuova causa" in realtà è essa stessa un effetto del sistema causa-effetto che la precedono in quanto potrebbe benissimo risultare valida anche una formula di questo tipo: SE (continuo informazionale di effetto) ALLORA (continuo informazionale di causa). Possiamo dunque supporre che tutti i processi inferenziali abbiano un carattere piramidale, dove l'ultimo effetto che sarà in definitiva la risoluzione di una problematica di carattere deduttivo, sia la punta di una piramide, la cui base è infinitamente elevata nei livelli logici informativi, questo ci porterebbe a pensare che effettivamente tutta la nostra conoscenza si deve basare su processi di questo tipo, ovvero la stessa esistenza dell'universo si può ipotizzare così composta: un continuo di interconnessioni di cose dove la base sembra essere infinitamente traslata nei livelli logici più elevati dalla punta. (ma questa può essere solo una mia impressione) A questo punto dobbiamo anche osservare che, in teoria, dovrebbe risultare più difficile risalire da un "effetto" alla causa che lo ha generato, poiché dobbiamo utilizzare dei processi inferenziali di tipo induttivo, quando invece la realtà sembra proporci il contrario, nel senso che è più difficile poter predire il futuro che non risalire alle cause che hanno generato un determinato evento, sembra essere di fronte ad una concezione paradossale, ma se ci pensiamo bene, la difficoltà risulta essere la stessa in quanto, partendo da un qualsiasi evento e prendendolo come "effetto" di una determinata causa, ovvero adottando un sistema inferenziale induttivo per risalire alla "Causa Prima" che lo ha generato, ci troveremo difronte alle stesse difficoltà che si incontrano partendo dalla concezione di quell'evento preso come "causa", per determinarne l'incidenza sull'Effetto Ultimo, adottando quindi un sistema inferenziale di tipo deduttivo. Dobbiamo a questo punto osservare che la metodologia inferenziale di ragionamento è limitata all'intorno logico delle informazioni appartenenti ad un determinato sistema di causa-effetto allo stesso modo in cui possiamo interpretare la valenza del “punto evento”. Molto probabilmente l'aiuto dato da questa simbologia geometrica ci può far capire che la comprensione inerente il punto indicato sulla piano spaziale ci può indicare il valore dei livelli logici dei campi informativi o di conoscenza in quel dato momento. Trascendendo dunque il metodo inferenziale, dovremmo a questo punto ipotizzare che il livello logico della "Causa Prima" dell'esistenza universale è lo stesso del suo "Effetto Ultimo", mentre tutto ciò che noi possiamo definire sono soltanto dei sistemi di interconnessioni di eventi come si può comprendere dallo schema che riportiamo di seguito: Come si potrà subito notare, la simbologia utilizzata è ancora una volta quella relativa ai sistemi controreazionati, in quanto sono quelli che meglio rispettano la strutturazione relazionale di interconnessione degli eventi. Preso dunque come causa un evento "x", saremmo in grado, tramite la funzione di trasferimento relativa al processo "CR", di ricavare l'effetto "y", ma come appare dallo schema, intervengono in questo caso ipotetico anche altre grandezze che sono specificatamente dei disturbi applicati al sistema e che condizionano, dal passato il processo futuro "CR1". Potremmo inoltre osservare che l'effetto "y" di “CR1” sarà, a sua volta la causa del processo relativo a "CRxx" che darà origine all'effetto "yc" e potremmo continuare ancora, mettendo perfino in relazione "yc" ad altre cause "xn" o a "xm". Quello che in ogni caso è importante capire è che la totalità degli eventi si dimostra essere partecipe ad un infinitamente complicato sistema che trascende la nostra potenzialità razionale di comprensione e ciò che sta appunto a dimostrare questo schema è la possibilità di concepire la realtà con una metodologia che rientra in un contesto relativistico spazio-temporale dell'universo di cui possiamo soltanto teorizzarne il funzionamento: Ma tentiamo di approfondire ulteriormente l'analisi dal punto di vista operativo della mente: la locuzione SE-ALLORA ci permette di legare strettamente assieme i processi di interazione causa effetto, ma se fosse sufficiente questa operazione mentale allora già i computers che sono in grado di comprendere un linguaggio siffatto avrebbero la possibilità di essere delle entità intelligenti nel senso umano della parola, invece siamo ancora lontani dall'implementare "intelligenza" di tipo umano su macchine in quanto mancano ancora dei pezzi al mosaico, in effetti l'inferenza prevede che vi siano ulteriori operazioni mentali, quali il legare assieme attenzionalmente, per esempio, l'effetto al processo che lo genera oppure alla causa che lo suscita, si pensi allora proprio alle domande che hanno dato lo spunto di partenza a questo lavoro: il "come" e il "perchè". Definire "come" avviene una determinata cosa significa proprio fare delle associazioni comparative, ovvero legare attenzionalmente assieme l'effetto al processo che lo genera oppure trovare delle analogie con altri processi e cose, in parole povere spiegare in che modo avviene una determinata cosa o portare degli esempi con altre cose comparabili, alla base troveremmo ancora la ricerca di una una uguaglianza o meglio la ricerca di continui informazionali in funzione al grado di comparazione o, che è la logica conseguenza, la generazione di continui informazionali. Definire il "perchè" avviene o sussiste una determinata cosa significa invece fare delle dissociazioni correlative, in definitiva significa spaccare attenzionalmente un continuo informazionale individuandone le parti che lo compongono, ovvero alla base troveremo la ricerca della diversità dei termini e quindi metteremo in relazione l'effetto al processo e alla causa, il soggetto all'oggetto ecc. Allora, i motori dei processi inferenziali sono proprio queste funzioni mentali date dal "perché" e dal "come", ovvero la possibilità di trasformazione, di traslazione su piani logici di concetto o trasposizione su continui informazionali che facciamo subire alla qualità energetica relativa alle informazioni che elaboriamo. Osserviamo ancora che l’attivazione di queste funzioni mentali può portare alla interazione o addirittura alla interconnessione delle funzioni stesse ovvero se cominciamo col rispondere alla domanda "come?" finiremmo quasi sicuramente con l’introdurre delle risposte anche al "perché!", ma è vero anche l’inverso, ossia se cominciamo col rispondere alla domanda "perché?" finiremmo per trovare anche delle risposte al "come!". In termini di processo dobbiamo allora chiarire un attimo che cosa si intende per interconnessione e per interazione. In un sistema di interazione di processi possiamo comunque desumere dal processo risultante i processi che anno partecipato alla sua conformazione in termini schematici potremmo ricondurre tutto a questo: Come si può notare, in un sistema di interazione fra due o più processi, rimangono distinguibili, nel processo risultante, le parti appartenenti ai due processi di base. Quando si tratta invece di processi interconnessi tra loro è molto più complesso poter identificare quali e quanti siano i processi partecipatori al sistema, ammenoché non si conoscano specificatamente tutti i passaggi elementari componenti i processi di base stessi,come si può vedere da quest'altro esempio e ancor meglio da questa formula: Possiamo a questo punto pensare, osservando gli schemi sopra esposti, che un sistema di interazione di processi non sia che un caso particolare di interconnessione, dove i processi di base non si fondono tra loro, ma mantengono le loro caratteristiche di partenza. Si può notare altresì che in un sistema di interconnessione di processi si possono ottenere moltissime combinazioni risultanti dalla "fusione" dei processi di partenza ed è per questo che si rivela estremamente difficile poter prevedere il risultato di una interconnessione. Noi abbiamo uno strumento estremamente potente per poter effettuare delle elaborazioni di dati, ma va considerato che in verità è uno strumento “compartecipatorio” di una realtà per noi molto complessa, dove l’elaborazione dei dati è solo, per così dire, un “effetto collaterale” e sotto questo profilo, molto spesso, la nostra mente produce dei risultati parziali, che contengono molto “rumore”, se non addirittura volutamente falsati. L’unicità di ogni singolo elemento può portare un contributo fondamentale per ottenere un risultato funzionale, ma questo comporta che vi sia una compartecipazione intelligente di tutto il sistema, altrimenti l’aspetto teleologico esistenziale porta solo ad una conseguenza inesorabile. Forse il modo migliore per provarlo è fare un piccolo gioco che vi propongo: Avete a disposizione i nove numeri, da 1 a 9, li dovete inserire in 9 caselle, ma non sono possibili ripetizioni, bisogna fare in modo che la somma di ogni riga, quella di ogni casella e quella delle diagonali, diano come risultato 15. Se volete potete fare una prova, lo potete fare con il software che potete trovare qui sotto oppure chiedere qui sotto nei commenti direttamente alla tartarughina Romeo di spiegarvi il funzionamento del gioco… prendetela come un esercizio di “presa di coscienza”. Premere il bottone vede per far partire il gioco Grazie per la lettura

  • Che cosa è un Concetto ?

    Questa Spiegazione è appartenente ad una Serie di Articoli. Prima di iniziare a leggere ti consigliamo di guardare gli articoli precedenti : Lo Strumento "mente" Il servomeccanismo mentale Gli Engrammi : Le Immagini della Mente Possiamo individuare nell'attività di concettualizzazione due diverse tipologie basilari di concetti che sono in sostanza i concetti "dato" e i concetti "funzione" come esistono le due tipologie di costituzione delle informazioni che elaborano i computers, ossia le informazioni inerenti ai dati da elaborare e le informazioni che indicano in che modo debbano essere elaborati questi dati, in questo modo rispettiamo ancora la teoria dei tipi logici poiché possiamo individuarne attraverso questa catalogazione svariate tipologie logiche in riferimento non solo al fatto di aver classificato in questo sistema di base i concetti, ma anche facendo riferimento al campo di azione dei vari concetti funzione e delle loro relazioni e interconnessioni; i concetti "dato" comunque sono quei concetti che vengono elaborati dalle funzioni mentali costituite dai concetti "funzione", possono essere considerati concetti "dato" tutti i prodotti degli stati attenzionali che derivano sicuramente dalle attività percettive, per esempio il concetto di bosco o quello di alberi, oppure il concetto di rumore o di suono, il concetto di odore o di profumo, il concetto di saporito o di gustoso e quant’altro la nostra mente può percepire, possono altrettanto essere concetti "dato" quelli che sono frutto delle attività cognitive poiché sono il prodotto delle ricerche in memoria, di impressioni o di immagini derivanti dalle attività percettive, altrettanto si può dire di quei concetti che derivano da attività di astrazione come ad esempio i concetti geometrici; sono invece considerati concetti "funzione" quei concetti che si riferiscono a situazioni dell’operare mentale, quelli esposti poco sopra come attività mentali di percezione e di cognizione, che sono di per sè dei concetti funzione molto complessi che intervengono su tutte le funzioni rappresentate in quell’ipotetico schema di base sopra illustrato. Sono concetti "funzione" tutti quei termini che noi indichiamo come appartenenti al mondo mentale tipo il singolare, il plurale, la congiunzione, la disgiunzione logica, i concetti derivanti dalle attività categoriali; in altre parole la ’e’ e la ’o’ oppure il ’con’ il ’tra’, i concetti di "parte", di "tutto", di "resto" le preposizioni in genere, il "perché", il "come", il "quando", il "quanto", l’"anche", il "ma", quelli di "fine", di "causa", di "effetto" ecc..., sono sempre concetti di questo tipo la “libertà”, la “felicità”, la “verità”, anche i sentimenti, le emozioni, le sensazioni, perfino gli stati d’animo sono concetti "funzione" per quanto complessi possano essere, bisogna anche dire che possono a volte essere considerati come concetti "dato" quando per esempio si fanno dei ragionamenti o sono frutto di pensieri che li riguardano. Può sembrare difficile in questo momento capire il perché si faccia una distinzione fra i concetti "dato" e quelli "funzione", ma dobbiamo pensare che per poter capire effettivamente cosa accade nella mente quando si svolgono delle operazioni di categorizzazione di correlazione o di costituzione del pensiero servono tre tipi di “segnale”: il segnale “soggetto”, costituito da un concetto "dato" o correlato primo, il segnale “oggetto” costituito anche questo da un altro concetto "dato" o correlato secondo e un concetto "funzione", che funge da correlatore fra i due, ed ecco apparire un primo embrione di pensiero una cellula logica di correlazione. E‘ anche vero che si possono pensare i concetti "funzione" come cause od effetti di altri concetti "funzione" o come stati mentali, ma non dobbiamo dimenticare che una funzione, se di carattere complesso, può coinvolgere tutta la struttura mentale, e quindi lo stato che si è creato è esso stesso una funzione, un sentimento ad esempio può essere considerato come uno stato di funzionamento particolare della mente, ma non è altro che un concetto "funzione" che mette in “movimento” per così dire dei concetti "dato" con relazioni particolari dovute ad altri concetti "funzione" che lo stesso è in grado di correlare. Implicitamente i concetti funzione sono sempre dovuti a delle sequenze di stati attenzionali, quindi bisogna pensare che le grandezze espresse come segnali nello schema di base non siano altro che delle armonie di stati attenzionali, non solo, ma che le “funzioni” stesse siano costituite da costrutti di stati attenzionali che fungono da operatori energetici, abbiamo finalmente raggiunto così l'identificazione della unità di comunicazione che si sviluppa nella nostra mente "lo stato attenzionale", sarà perciò questa la base della costituzione del pensiero cosciente ma per altre ragioni si può assumere come ipotesi che sia la base stessa della costituzione del pensiero che esiste al di sotto del livello di soglia della consapevolezza, in altre parole, quello che noi definiamo come pensiero cosciente non è che una parte della effettiva attività che svolge la nostra mente, anzi per quanto ne sappiamo credo che la parte del leone la faccia proprio quella parte di pensiero che lavora in sordina, in quanto dalla costituzione dello schema che ho sopra esposto è ovvio che il meccanismo di funzionamento della mente sia di tipo teleologico in quanto può essere considerato sempre rivolto alla risoluzione dei processi che si svolgono, è sempre orientato ai risultati finali di controllo della variabile di uscita che è il nostro comportamento. Sara interessante vedere come farlo funzionare al meglio delle possibilità che sono intrinseche nella strutturazione stessa del trattamento dell’informazione, devo ricordare comunque che questo terreno di ragionamento è frutto di ipotesi e quindi lascio al lettore confrontare quello che seguirà con quanto è in suo possesso, per trarne delle conclusioni, da parte mia tenterò di chiarire il più possibile tutte le affermazioni che sin qui mi hanno portato. Giunto a questo punto è ovvio che il linguaggio che adotterò per spiegare o perlomeno per tentare di dare una immagine coerente con quello che vuol significare lo schema di base sopra esposto, sarà un linguaggio che si differisce dall’essere considerato come un qualsiasi metodo di esposizione di concetti, anche perché, proprio di questi bisognerà parlare e quindi le parole di uso comune che saranno utilizzate verranno applicate in un modo particolare per riuscire ad esprimere le ipotesi di funzionamento della nostra mente vista sotto un aspetto “logonico”, ossia di contesto con una concezione strutturale dei processi che sono comuni sia della costituzione del mondo mentale che della costituzione delle interazioni delle cause e degli effetti da un punto di vista cibernetico, non solo, ma essendo il tutto immerso nel più vasto mondo della interdipendenza col concetto di informazione che esprime in sé la costituzione organicistica dell’universo, dovremmo tener conto anche delle teorie più sofisticate che trattano la relatività di ogni cosa esprimibile rispetto alle altre. Nel prossimo Articolo andremo a identificare gli STATI ATTENZIONALI e come questi agiscono nella nostra quotidianità. Grazie mille per la lettura, commenta l'articolo per qualsiasi domanda.

  • Gli Engrammi : Le Immagini della Mente

    Questa Spiegazione è appartenente ad una Serie di Articoli. Prima di iniziare a leggere ti consigliamo di guardare gli articoli precedenti : Lo Strumento "mente" Il servomeccanismo mentale A questo punto è logico iniziare a dare una prima visione d’insieme nell’identificare come si può intendere un engramma o immagine mentale: si può ipotizzare che ogniqualvolta la nostra mente compie una operazione coinvolga un numero di neuroni o di catene neuroniche che formano e danno origine a delle modificazioni bio-chimiche della struttura del cervello, quindi da un punto di vista fisico si otterranno sicuramente delle trasformazioni energetiche, ma per quanto riguarda la costituzione logica delle informazioni elaborate dobbiamo far riferimento a delle forme di analisi che riguardano esclusivamente una teoria che sembra rispondere in modo corretto alle esigenze di chiarificazione sulla strutturazione ordinata delle informazioni che sono oggetto dell’elaborazione. Questa teoria pone alla base della costituzione del pensiero la concettualizzazione delle informazioni attraverso delle configurazioni di stati attenzionali che possono essere considerate come possibilità di originare delle operazioni logiche sia sequenziali che parallele su una grandezza di base che è appunto l’energia. Gli engrammi o immagini mentali dovranno dunque essere intesi non tanto come tracce mnestiche ma come costituiti da delle configurazioni di stati attenzionali, ora io no so dire se si può effettuare una riparametrazione a questo livello con le configurazioni neurologiche che sono interessate, come negli esempi riportati: Credo invece di poter affermare che essendo il supporto cerebrale costantemente in azione e quindi soggetto a delle continue trasformazioni energetiche è come se pretendessimo di fornire tramite una fotografia magnetica quella che è la costituzione software di una informazione elaborata da un computer, è ovvio pensare che saremmo in grado di individuare soltanto i conduttori interessati in quel momento ma non potremmo mai dire l’aspetto logico della stessa informazione trattata ed è dunque per questa ragione che se si tenta di fornire una teoria sulla costituzione dei processi dell’operare mentale da un punto di vista matematico-logico è quantomai difficoltoso poter fare delle riparametrazioni che siano bio-fisiologiche. La composizione degli engrammi o delle immagini mentali intesa sotto l’aspetto attenzionale, deriva dalla possibilità di costituire delle idee che siano o che sembrino collegate tra loro da un supporto logico di coerenza, si costruiscono così delle strutture complesse di concetti che servono per formare le suddette immagini, ogni idea dunque si può considerare come una composizione di concetti concatenati tra loro attraverso delle strutture attenzionali e gli stessi concetti sono frutto di sequenze di stati attenzionali la cui trasmissione da un punto all'altro del nostro cervello potrà avvenire in modo seriale-parallelo o parallelo-seriale. Nel prossimo Articolo andremo a capire il significato di CONCETTO e di come un concetto viene elaborato dalla nostra mente. Grazie mille per la lettura, commenta l'articolo per qualsiasi domanda.

  • Tutorial di Regressione Logistica per l'apprendimento automatico

    La regressione logistica è uno degli algoritmi di machine learning più popolari per la classificazione binaria. Questo perché è un semplice algoritmo che funziona molto bene su un'ampia gamma di problemi. In questo post scoprirai passo passo l'algoritmo di regressione logistica per la classificazione binaria. Dopo aver letto questo post saprai: Come calcolare la funzione logistica. Come apprendere i coefficienti per un modello di regressione logistica utilizzando la discesa del gradiente stocastico. Come fare previsioni usando un modello di regressione logistica. Questo post è stato scritto per gli sviluppatori e non presuppone un background in statistiche o probabilità. Set di dati dell'esercitazione sulla Regressione Logistica In questo tutorial useremo un set di dati inventato. Questo set di dati ha due variabili di input (X1 e X2) e una variabile di output (Y). Nelle variabili di input sono numeri casuali con valori reali estratti da una distribuzione gaussiana. La variabile di output ha due valori, rendendo il problema un problema di classificazione binaria. I dati grezzi sono elencati di seguito. X1 X2 Y 2.7810836 2.550537003 0 1.465489372 2.362125076 0 3.396561688 4.400293529 0 1.38807019 1.850220317 0 3.06407232 3.005305973 0 7.627531214 2.759262235 1 5.332441248 2.088626775 1 6.922596716 1.77106367 1 8.675418651 -0.2420686549 1 7.673756466 3.508563011 1 Di seguito è riportato un grafico del set di dati. Puoi vedere che è completamente artificioso e che possiamo facilmente tracciare una linea per separare le classi. Questo è esattamente ciò che faremo con il modello di regressione logistica. Funzione logistica Prima di addentrarci nella regressione logistica, diamo un'occhiata alla funzione logistica, il cuore della tecnica di regressione logistica. La funzione logistica è definita come: funzione = 1 / (1 + e^-x) Dove e è la costante numerica del numero di Eulero e x è un input che inseriamo nella funzione. Inseriamo una serie di numeri da -5 a +5 e vediamo come la funzione logistica li trasforma: X Transformed -5 0.006692850924 -4 0.01798620996 -3 0.04742587318 -2 0.119202922 -1 0.2689414214 0 0.5 1 0.7310585786 2 0.880797078 3 0.9525741268 4 0.98201379 5 0.9933071491 Puoi vedere che tutti gli input sono stati trasformati nell'intervallo [0, 1] e che i numeri negativi più piccoli hanno prodotto valori vicini a zero e i numeri positivi più grandi hanno prodotto valori vicini a uno. Puoi anche vedere quello 0 trasformato in 0,5 o nel punto medio del nuovo intervallo. Da ciò possiamo vedere che finché il nostro valore medio è zero, possiamo inserire valori positivi e negativi nella funzione e ottenere sempre una trasformazione coerente nel nuovo intervallo. Modello di regressione logistica Il modello di regressione logistica prende input a valori reali e fa una previsione sulla probabilità che l'input appartenga alla classe di default (classe 0). Se la probabilità è > 0,5 possiamo prendere l'output come una previsione per la classe predefinita (classe 0), altrimenti la previsione è per l'altra classe (classe 1). Per questo set di dati, la regressione logistica ha tre coefficienti proprio come la regressione lineare, ad esempio: uscita = b0 + b1*x1 + b2*x2 Il compito dell'algoritmo di apprendimento sarà quello di scoprire i valori migliori per i coefficienti (b0, b1 e b2) in base ai dati di addestramento. A differenza della regressione lineare, l'output viene trasformato in una probabilità utilizzando la funzione logistica: p(classe=0) = 1 / (1 + e^(-output)) Nel tuo foglio di lavoro questo sarebbe scritto come: p(classe=0) = 1 / (1 + EXP(-uscita)) Regressione logistica per discesa stocastica a gradiente Possiamo stimare i valori dei coefficienti usando la discesa del gradiente stocastico. Questa è una procedura semplice che può essere utilizzata da molti algoritmi nell'apprendimento automatico. Funziona utilizzando il modello per calcolare una previsione per ogni istanza nel set di addestramento e calcolando l'errore per ogni previsione. Possiamo applicare la discesa stocastica del gradiente al problema di trovare i coefficienti per il modello di regressione logistica come segue: Data ogni istanza di formazione: Calcola una previsione utilizzando i valori correnti dei coefficienti. Calcola nuovi valori di coefficiente in base all'errore nella previsione. Il processo viene ripetuto finché il modello non è sufficientemente accurato (ad es. l'errore scende a un livello desiderabile) o per iterazioni di un numero fisso. Continui ad aggiornare il modello per le istanze di addestramento e la correzione degli errori fino a quando il modello non è sufficientemente accurato. Orc non può essere reso più accurato. Spesso è una buona idea randomizzare l'ordine delle istanze di addestramento mostrate al modello per confondere le correzioni apportate. Aggiornando il modello per ogni modello di formazione, chiamiamo questo apprendimento online. È anche possibile raccogliere tutte le modifiche al modello su tutte le istanze di addestramento ed effettuare un aggiornamento di grandi dimensioni. Questa variazione è chiamata apprendimento in batch e potrebbe essere una bella estensione a questo tutorial se ti senti avventuroso. Regressione logistica per discesa stocastica a gradiente Iniziamo assegnando 0,0 a ciascun coefficiente e calcolando la probabilità della prima istanza di addestramento che appartiene alla classe 0. B0 = 0,0 B1 = 0,0 B2 = 0,0 La prima istanza di addestramento è: x1=2,7810836, x2=2,550537003, Y=0 Usando l'equazione sopra possiamo inserire tutti questi numeri e calcolare una previsione: previsione = 1 / (1 + e^(-(b0 + b1*x1 + b2*x2))) previsione = 1 / (1 + e^(-(0.0 + 0.0*2.7810836 + 0.0*2.550537003))) previsione = 0,5 Calcola nuovi coefficienti Possiamo calcolare i nuovi valori dei coefficienti usando una semplice equazione di aggiornamento. b = b + alfa * (y – previsione) * previsione * (1 – previsione) * x Dove b è il coefficiente che stiamo aggiornando e la previsione è l'output di una previsione utilizzando il modello. Alpha è il parametro che è necessario specificare all'inizio dell'esecuzione dell'addestramento. Questo è il tasso di apprendimento e controlla quanto i coefficienti (e quindi il modello) cambiano o apprendono ogni volta che viene aggiornato. Tassi di apprendimento più elevati vengono utilizzati nell'apprendimento online (quando aggiorniamo il modello per ogni istanza di formazione). I buoni valori potrebbero essere compresi tra 0,1 e 0,3. Usiamo un valore di 0,3. Noterai che l'ultimo termine nell'equazione è x, questo è il valore di input per il coefficiente. Noterai che il B0 non ha un input. Questo coefficiente è spesso chiamato bias o intercetta e possiamo presumere che abbia sempre un valore di input di 1,0. Questa ipotesi può aiutare quando si implementa l'algoritmo utilizzando vettori o array. Aggiorniamo i coefficienti utilizzando i valori di previsione (0,5) e coefficiente (0,0) della sezione precedente. b0 = b0 + 0,3 * (0 – 0,5) * 0,5 * (1 – 0,5) * 1,0 b1 = b1 + 0,3 * (0 – 0,5) * 0,5 * (1 – 0,5) * 2,7810836 b2 = b2 + 0,3 * (0 – 0,5) * 0,5 * (1 – 0,5) * 2,550537003 Quindi b0 = -0,0375 b1 = -0,104290635 b2 = -0,09564513761 Ripetere il processo Possiamo ripetere questo processo e aggiornare il modello per ogni istanza di training nel set di dati. Una singola iterazione del set di dati di addestramento è chiamata epoch. È comune ripetere la procedura di discesa del gradiente stocastico per un numero fisso di epoche. Alla fine dell'epoca è possibile calcolare i valori di errore per il modello. Poiché si tratta di un problema di classificazione, sarebbe utile avere un'idea di quanto sia accurato il modello ad ogni iterazione. Il grafico sottostante mostra un grafico della precisione del modello su 10 epoche. Puoi vedere che il modello raggiunge molto rapidamente una precisione del 100% sul set di dati di addestramento. I coefficienti calcolati dopo 10 epoch di discesa stocastica del gradiente sono: b0 = -0,4066054641 b1 = 0,8525733164 b2 = -1.104746259 Fare previsioni Ora che abbiamo addestrato il modello, possiamo usarlo per fare previsioni. Possiamo fare previsioni sul set di dati di addestramento, ma potrebbero benissimo trattarsi di nuovi dati. Utilizzando i coefficienti sopra appresi dopo 10 epoche, possiamo calcolare i valori di output per ciascuna istanza di addestramento: 0.2987569857 0.145951056 0.08533326531 0.2197373144 0.2470590002 0.9547021348 0.8620341908 0.9717729051 0.9992954521 0.905489323 Queste sono le probabilità di ogni istanza appartenente a class=0. Possiamo convertirli in valori di classe nitidi usando: previsione = SE (uscita < 0,5) Allora 0 Altrimenti 1 Con questa semplice procedura possiamo convertire tutti gli output in valori di classe: 0 0 0 0 0 1 1 1 1 1 Infine, possiamo calcolare l'accuratezza per il modello sul set di dati di addestramento: accuratezza = (previsioni corrette / num previsioni effettuate) * 100 precisione = (10/10) * 100 precisione = 100% Riepilogo In questo post hai scoperto come implementare la regressione logistica da zero, passo dopo passo. Hai imparato: Come calcolare la funzione logistica. Come apprendere i coefficienti per un modello di regressione logistica utilizzando la discesa del gradiente stocastico. Come fare previsioni usando un modello di regressione logistica. Hai domande su questo post o sulla regressione logistica? Lascia un commento e fai la tua domanda, faremo del nostro meglio per rispondere.

  • Come preparare i dati per il Machine Learning o apprendimento automatico

    Gli algoritmi di apprendimento automatico imparano dai dati. È fondamentale fornire loro i dati giusti per il problema che si desidera risolvere. Anche se disponi di dati validi, devi assicurarti che siano in una scala, un formato utile e persino che siano incluse funzionalità significative. In questo post imparerai come preparare i dati per un algoritmo di apprendimento automatico. Questo è un argomento importante e tratterai l'essenziale. Processo di preparazione dei dati nel Machine Learning Più disciplinato sei nella gestione dei dati, più risultati coerenti e migliori probabilmente otterrai. Il processo per preparare i dati per un algoritmo di apprendimento automatico può essere riassunto in tre passaggi: Passaggio 1 : seleziona Dati Passaggio 2 : preelabora i dati Passaggio 3 : preelabora i dati Puoi seguire questo processo in modo lineare, ma è molto probabile che sia iterativo con molti loop. Passaggio 1: seleziona Dati Questo passaggio riguarda la selezione del sottoinsieme di tutti i dati disponibili con cui lavorerai. C'è sempre un forte desiderio di includere tutti i dati disponibili, che la massima "più è meglio" reggerà. Questo può o non può essere vero. Devi considerare di quali dati hai effettivamente bisogno per affrontare la domanda o il problema su cui stai lavorando. Fai alcune ipotesi sui dati di cui hai bisogno e fai attenzione a registrare tali ipotesi in modo da poterle testare in seguito, se necessario. Di seguito sono riportate alcune domande per aiutarti a riflettere su questo processo: Qual è l'entità dei dati che hai a disposizione? Ad esempio attraverso il tempo, le tabelle di database, i sistemi connessi. Assicurati di avere un quadro chiaro di tutto ciò che puoi utilizzare. Quali dati non sono disponibili che vorresti avere a disposizione? Ad esempio dati che non sono registrati o non possono essere registrati. Potresti essere in grado di derivare o simulare questi dati. Di quali dati non hai bisogno per risolvere il problema? L'esclusione dei dati è quasi sempre più semplice dell'inclusione dei dati. Annota quali dati hai escluso e perché. È solo in piccoli problemi, come la concorrenza o i set di dati di giocattoli in cui i dati sono già stati selezionati per te. Passaggio 2: preelabora i dati Dopo aver selezionato i dati, devi considerare come utilizzerai i dati. Questo passaggio di pre-elaborazione riguarda l'inserimento dei dati selezionati in un modulo su cui puoi lavorare. Tre fasi comuni di preelaborazione dei dati sono la formattazione, la pulizia e il campionamento: Formattazione : i dati che hai selezionato potrebbero non essere in un formato adatto a te con cui lavorare. I dati possono trovarsi in un database relazionale e lo vorresti in un file flat, oppure i dati potrebbero essere in un formato di file proprietario e lo vorresti in un database relazionale o in un file di testo. Pulizia : i dati di pulizia sono la rimozione o la correzione dei dati mancanti. Potrebbero esserci istanze di dati che sono incomplete e non contengono i dati che ritieni necessari per risolvere il problema. Potrebbe essere necessario rimuovere queste istanze. Inoltre, potrebbero esserci informazioni riservate in alcuni attributi e questi attributi potrebbero dover essere resi anonimi o rimossi completamente dai dati. Campionamento : potrebbero essere disponibili molti più dati selezionati di quelli con cui è necessario lavorare. Più dati possono comportare tempi di esecuzione molto più lunghi per gli algoritmi e requisiti di calcolo e di memoria maggiori. Puoi prendere un campione rappresentativo più piccolo dei dati selezionati che potrebbe essere molto più veloce per l'esplorazione e la prototipazione di soluzioni prima di considerare l'intero set di dati. Passaggio 3: trasformare i dati Il passaggio finale consiste nel trasformare i dati di processo. L'algoritmo specifico con cui stai lavorando e la conoscenza del dominio del problema influenzeranno questo passaggio e molto probabilmente dovrai rivedere diverse trasformazioni dei tuoi dati preelaborati mentre lavori sul problema. Tre trasformazioni di dati comuni sono il ridimensionamento, la scomposizione degli attributi e le aggregazioni degli attributi. Questo passaggio viene anche definito ingegneria delle funzionalità. Ridimensionamento : i dati preelaborati possono contenere attributi con miscele di bilance per varie quantità come dollari, chilogrammi e volume delle vendite. Molti metodi di apprendimento automatico come gli attributi dei dati devono avere la stessa scala, ad esempio tra 0 e 1 per il valore più piccolo e più grande per una determinata funzionalità. Considera qualsiasi ridimensionamento delle funzionalità che potresti dover eseguire. Decomposizione : potrebbero esserci funzionalità che rappresentano un concetto complesso che potrebbe essere più utile per un metodo di apprendimento automatico quando suddiviso nelle parti costituenti. Un esempio è una data che può avere componenti di giorno e ora che a loro volta potrebbero essere ulteriormente suddivise. Forse solo l'ora del giorno è rilevante per la risoluzione del problema. considera quali scomposizioni di funzionalità puoi eseguire. Aggregazione : potrebbero esserci funzionalità che possono essere aggregate in un'unica funzionalità che sarebbero più significative per il problema che stai cercando di risolvere. Ad esempio, potrebbero esserci istanze di dati per ogni volta che un cliente accede a un sistema che potrebbe essere aggregato in un conteggio per il numero di accessi consentendo l'eliminazione delle istanze aggiuntive. Considera quale tipo di aggregazioni di funzionalità potrebbero essere eseguite. Puoi dedicare molto tempo alla progettazione di funzionalità dai tuoi dati e può essere molto vantaggioso per le prestazioni di un algoritmo. Inizia in piccolo e sviluppa le abilità che impari. Riepilogo In questo post hai appreso l'essenza della preparazione dei dati per l'apprendimento automatico. Hai scoperto un framework in tre fasi per la preparazione dei dati e le tattiche in ogni passaggio: Passaggio 1: selezione dei dati Considera quali dati sono disponibili, quali dati mancano e quali dati possono essere rimossi. Passaggio 2: preelaborazione dei dati Organizza i dati selezionati mediante formattazione, pulizia e campionamento da essi. Passaggio 3: trasformazione dei dati Trasforma i dati preelaborati pronti per l'apprendimento automatico progettando funzionalità utilizzando il ridimensionamento, la scomposizione degli attributi e l'aggregazione degli attributi. La preparazione dei dati è un argomento di grandi dimensioni che può comportare molte iterazioni, esplorazioni e analisi. Diventare bravi nella preparazione dei dati ti renderà un maestro nell'apprendimento automatico. Per ora, considera solo le domande sollevate in questo post durante la preparazione dei dati e cerca sempre modi più chiari per rappresentare il problema che stai cercando di risolvere. Grazie mille per la lettura

  • Come costruire modelli predittivi sanitari utilizzando PyHealth?

    L' apprendimento automatico è stato applicato a molte attività relative alla salute, come lo sviluppo di nuovi trattamenti medici, la gestione dei dati e dei record dei pazienti e il trattamento delle malattie croniche. Per ottenere il successo in queste applicazioni , dobbiamo fare affidamento sulla tecnica dispendiosa in termini di tempo della valutazione della costruzione di modelli. Ma qui entriamo in soccorso noi di Intelligenza Artificiale Italia, abbiamo avuto il piacere di trovare e studiare una libreria Python dedicata al Machine Learning su dati medici, il suo nome è PyHealth. Come suggerisce il nome, questa libreria contiene una varietà di modelli ML e algoritmi di architettura per lavorare con i dati medici. In questo articolo, analizzeremo questo modello per comprenderne il funzionamento e l'applicazione. Di seguito sono riportati i prerequisiti per capire e poter approfondire e i punti principali di cui parleremo in questo articolo. Prerequisiti : Se non sai cosa è il Machine Learning, clicca qui Se non conosci le principali applicazioni Machine Learning, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Sommario Apprendimento automatico in ambito sanitario In che modo PyHealth può aiutare nel settore sanitario? Lavoro di PyHealth PyHealth per la costruzione di modelli Discutiamo prima il caso d'uso dell'apprendimento automatico nel settore sanitario. Apprendimento automatico in ambito sanitario L'apprendimento automatico viene utilizzato in una varietà di contesti sanitari, dalla gestione dei casi di condizioni croniche comuni allo sfruttamento dei dati sulla salute dei pazienti insieme a fattori ambientali come l'esposizione all'inquinamento e le condizioni meteorologiche. La tecnologia di apprendimento automatico può aiutare gli operatori sanitari a sviluppare trattamenti farmacologici accurati su misura per le caratteristiche individuali, elaborando enormi quantità di dati. Di seguito sono riportati alcuni esempi di applicazioni che possono essere affrontate in questo segmento: Apprendimento automatico in ambito sanitario : Rilevamento di malattie La capacità di diagnosticare rapidamente e correttamente le malattie è uno degli aspetti più critici di un'organizzazione sanitaria di successo. In aree ad alto bisogno come la diagnosi e la terapia del cancro, dove centinaia di farmaci sono ora in sperimentazione clinica, scienziati e computazionalisti stanno entrando nel mix. Un metodo combina il calcolo cognitivo con il sequenziamento genetico del tumore, mentre un altro utilizza l'apprendimento automatico per fornire diagnosi e cure in una vasta gamma di campi, inclusa l'oncologia. Apprendimento automatico in ambito sanitario : Diagnosi usando l'immagine L'imaging medico, e la sua capacità di fornire un quadro completo di una malattia, è un altro aspetto importante nella diagnosi di una malattia. Il deep learning sta diventando più accessibile man mano che le fonti di dati diventano più diversificate e può essere utilizzato nel processo diagnostico, quindi sta diventando sempre più importante. Sebbene queste applicazioni di apprendimento automatico siano spesso corrette, presentano alcune limitazioni in quanto non possono spiegare come sono arrivate alle loro conclusioni. Apprendimento automatico in ambito sanitario : Scoperta di nuovi farmaci Il ML ha il potenziale per identificare nuovi farmaci con significativi vantaggi economici per aziende farmaceutiche, ospedali e pazienti. Alcune delle più grandi aziende tecnologiche del mondo, come IBM e Google, hanno sviluppato sistemi ML per aiutare i pazienti a trovare nuove opzioni di trattamento. La medicina di precisione è un'espressione significativa in quest'area poiché implica la comprensione dei meccanismi alla base di disturbi complessi e lo sviluppo di percorsi terapeutici alternativi. Apprendimento automatico in ambito sanitario : Strumenti chirurgici A causa della natura ad alto rischio degli interventi chirurgici, avremo sempre bisogno dell'assistenza umana, ma l'apprendimento automatico si è dimostrato estremamente utile nel settore della chirurgia robotica. Il robot da Vinci, che consente ai chirurghi di azionare bracci robotici per eseguire interventi chirurgici con grande dettaglio e in spazi ristretti, è una delle scoperte più popolari nella professione. Queste mani sono generalmente più precise e stabili delle mani umane. Esistono strumenti aggiuntivi che utilizzano la visione artificiale e l'apprendimento automatico per determinare le distanze tra le varie parti del corpo in modo che l'intervento chirurgico possa essere eseguito correttamente. In che modo PyHealth può aiutare il settore sanitario? I dati sanitari sono in genere rumorosi, complicati ed eterogenei, risultando in una serie diversificata di problemi di modellizzazione sanitaria. Ad esempio, la previsione del rischio per la salute si basa su dati sequenziali del paziente, diagnosi della malattia basata su immagini mediche e rilevamento del rischio basato su segnali fisiologici continui. Elettroencefalogramma (EEG) o elettrocardiogramma (ECG), ad esempio, e note cliniche multimodali (es. testo e immagini). Nonostante la loro importanza nella ricerca sanitaria e nel processo decisionale clinico, la complessità e la variabilità dei dati e delle attività sanitarie richiedono lo sviluppo atteso da tempo di un sistema di riciclaggio specializzato per l'analisi comparativa dei modelli sanitari predittivi. PyHealth è composto da tre moduli: preelaborazione dei dati modellazione predittiva valutazione modello. Sia gli informatici che gli scienziati dei dati sanitari sono i consumatori target di PyHealth. Possono eseguire complicati processi di apprendimento automatico su set di dati sanitari in meno di 10 righe di codice utilizzando PyHealth. Il modulo di preelaborazione dei dati converte set di dati sanitari complicati come cartelle cliniche elettroniche longitudinali, immagini mediche, segnali continui (ad es. elettrocardiogrammi) e note cliniche in formati compatibili con l'apprendimento automatico. Il modulo di modellazione predittiva offre oltre 30 modelli di apprendimento automatico, inclusi alberi d'insieme noti e approcci basati su reti neurali profonde, utilizzando un'API uniforme ma flessibile pensata sia per i ricercatori che per i professionisti. Il modulo di valutazione include una serie di metodologie di valutazione (ad esempio, convalida incrociata e suddivisione del test di convalida del treno), nonché metriche del modello di previsione. Ci sono cinque vantaggi distinti nell'utilizzo di PyHealth. Per cominciare, contiene più di 30 algoritmi di salute predittiva all'avanguardia, comprese tecniche tradizionali come XGBoost e architetture di deep learning più recenti come autoencoder, modelli convoluzionali e contraddittori. In secondo luogo, PyHealth ha un'ampia portata e include modelli per una varietà di tipi di dati, inclusi sequenza, immagine, segnale fisiologico e dati di testo non strutturati. Terzo, per chiarezza e facilità d'uso, PyHealth include un'API unificata, documentazione dettagliata ed esempi interattivi per tutti gli algoritmi: modelli complessi di deep learning possono essere implementati in meno di dieci righe di codice. In quarto luogo, i test di unità con multipiattaforma, integrazione continua, copertura del codice e controlli di manutenibilità del codice vengono eseguiti sulla maggior parte dei modelli in PyHealth. Infine, per efficienza e scalabilità, la parallelizzazione è abilitata in moduli selezionati (preelaborazione dei dati), nonché il calcolo veloce della GPU per i modelli di deep learning tramite PyTorch. PyHealth Tutorial step by step - Crea il tuo modello predittivo in ambito sanitario PyHealth è un'applicazione Python 3 che utilizza NumPy, scipy, scikit-learn e PyTorch. Come mostrato nel diagramma seguente, PyHealth è costituito da tre moduli principali: in primo luogo, il modulo di preelaborazione dei dati può convalidare e convertire l'input dell'utente in un formato comprensibile dai modelli di apprendimento; In secondo luogo, il modulo di modellazione predittiva è costituito da una raccolta di modelli organizzati per tipo di dati di input in sequenze, immagini, EEG e testo. Per ogni tipo di dati è stata implementata una serie di modelli di apprendimento dedicati e il terzo è il modulo di valutazione in grado di dedurre automaticamente il tipo di attività, come la multiclassificazione, e condurre una valutazione completa per tipo di attività. La maggior parte dei modelli di apprendimento condivide la stessa interfaccia e si ispira alla scikit-API Learn to design e alla progettazione generale del deep learning: I fit apprende i pesi e salva le statistiche necessarie dal treno e dai dati di convalida; modello di carico sceglie il modello con la migliore accuratezza di convalida e l'inferenza prevede i dati di test in entrata. Per una rapida esplorazione di dati e modelli, il framework include una libreria di funzioni di supporto e di utilità (controllo parametro, controllo etichetta e stimatori di partizione). Ad esempio, un controllo dell'etichetta può controllare l'etichetta dei dati e dedurre il tipo di attività, ad esempio la classificazione binaria o la classificazione multipla, automaticamente. Per seguire il tutorial clicca questo apri una nuova finestra e vai su Google Colab e crea un nuovo file. Se non conosci google colab, ti consigliamo di leggere prima questa nostra breve guida, che ti insegnerà come usare Google colab per scrivere reti neurali anche da un telefonino PyHealth per la costruzione di modelli Ora di seguito discuteremo come possiamo sfruttare questa libreria con python. Per prima cosa, dobbiamo installare il pacchetto usando pip. ! pip install pyhealth Successivamente, possiamo caricare i dati dal repository stesso. Per questo, dobbiamo clonare il repository. Dopo aver clonato il repository all'interno della cartella dei set di dati, c'è una varietà di set di dati come basati su sequenze, basati su immagini, ecc. Stiamo usando il set di dati mimic ed è nel modulo zip che dobbiamo decomprimerlo. Di seguito è riportato il repository del clone snippet e decomprimi i dati. Naturalmente in questo tutorial utilizzeremo i loro dati perchè è molto difficile reperire questi tipi di dati. Però se avete dei vostri set di dati utilizzateli e magari condividete i risultati nei commenti. ! git clone https://github.com/yzhao062/PyHealth.git ! unzip /content/PyHealth/datasets/mimic.zip Il file decompresso viene salvato nella directory di lavoro corrente con il nome della cartella come imitazione. Successivamente per utilizzare questo set di dati è necessario caricare la funzione del generatore di dati di sequenza che funge da funzionalità per preparare il set di dati per la sperimentazione. from pyhealth.data.expdata_generator import sequencedata as expdata_generator # inizializza il set di dati # ID univoco per il set di dati expdata_id = '2020.0811.data.phenotyping.test.v2' cur_dataset = expdata_generator(expdata_id=expdata_id) cur_dataset.get_exp_data(sel_task='phenotyping', data_root='/content/mimic') cur_dataset.load_exp_data() Ora abbiamo caricato il set di dati. Ora possiamo fare un'ulteriore modellazione come di seguito. # caricare e montare il modello from pyhealth.models.sequence.embedgru import EmbedGRU # ID univoco per il modello expmodel_id = '2020.0811.model.phenotyping.test.v2' clf = EmbedGRU(expmodel_id=expmodel_id, n_batchsize=5, use_gpu=False, n_epoch=100) # fit model clf.fit(cur_dataset.train, cur_dataset.valid) Ecco il risultato. Per salvare il modello addestrato abbiamo scritto più articoli, clicca qui. Conclusioni finali e Riferimenti In questo articolo abbiamo discusso di come l'apprendimento automatico può essere utilizzato nel settore sanitario osservando le varie applicazioni. Riferimenti PyHealth Repository PyHealth Documentazione PyHealth

  • 200 Domande e Risposte al Colloqui Per Data Scientist e Data Engineer

    Saper rispondere a delle domande sull'apprendimento automatico è parte integrante del percorso per diventare uno scienziato dei dati , un ingegnere dell'apprendimento automatico o un ingegnere dei dati . Il team di Intelligenza Artificiale Italia ha creato una guida gratuita per le interviste/colloqui sulla scienza dei dati , in cui abbiamo appreso esattamente come questi colloqui sono progettati per far cadere i candidati! In questo blog, abbiamo curato un elenco di domande chiave del colloquio che potresti incontrare in un colloquio di apprendimento automatico. Abbiamo anche fornito alcune risposte utili per accompagnarle in modo da poter superare il tuo colloquio di lavoro di machine learning (o stage di machine learning). Domande dell'intervista sull'apprendimento automatico: 4 categorie Tradizionalmente abbiamo visto le domande dei colloqui di apprendimento automatico apparire in diverse categorie. Il primo ha davvero a che fare con gli algoritmi e la teoria dietro l'apprendimento automatico. Dovrai mostrare una comprensione di come gli algoritmi si confrontano tra loro e come misurarne l'efficacia e l'accuratezza nel modo giusto. La seconda categoria ha a che fare con le tue capacità di programmazione e la tua capacità di eseguire su quegli algoritmi e la teoria. Il terzo ha a che fare con il tuo interesse generale per l'apprendimento automatico . Ti verrà chiesto cosa sta succedendo nel settore e come stare al passo con le ultime tendenze dell'apprendimento automatico. Infine, ci sono domande specifiche dell'azienda o del settore che mettono alla prova la tua capacità di prendere le tue conoscenze generali sull'apprendimento automatico e trasformarle in punti attuabili per portare avanti i profitti. Abbiamo suddiviso questa guida alle domande del colloquio di apprendimento automatico nelle categorie sopra menzionate in modo che tu possa ottenere più facilmente le informazioni di cui hai bisogno quando si tratta di domande del colloquio di apprendimento automatico. Domande del colloquio di apprendimento automatico: algoritmi/teoria Le domande del colloquio sull'apprendimento automatico sugli algoritmi ML metteranno alla prova la tua comprensione della teoria alla base dell'apprendimento automatico. Domande e Risposte dei Colloqui Per Data Scientist Pronti a vedere nel dettaglio più di 50 domande e risposte solitamente chieste per le nuove posizioni da Data Scientist e Domande e Risposte dei Colloqui Per Data Scientist. Quindi si parte ecco le 50 più frequenti Domande e Risposte dei Colloqui Per Data Scientist Q1: Qual è la differenza tra bias e varianza ? Risposta: Il bias è un errore dovuto a presupposti errati o eccessivamente semplicistici nell'algoritmo di apprendimento che stai utilizzando. Ciò può portare il modello a non adattare i tuoi dati, rendendo difficile che abbia un'elevata precisione predittiva e che tu possa generalizzare le tue conoscenze dal set di addestramento al set di test. La varianza è un errore dovuto alla troppa complessità dell'algoritmo di apprendimento che stai utilizzando. Ciò fa sì che l'algoritmo sia altamente sensibile agli elevati gradi di variazione nei dati di addestramento, il che può portare il modello a sovraadattare i dati. Trascinerai troppo rumore dai tuoi dati di addestramento perché il tuo modello sia molto utile per i tuoi dati di test. La scomposizione bias-varianza essenzialmente scompone l'errore di apprendimento da qualsiasi algoritmo aggiungendo il bias, la varianza e un po' di errore irriducibile dovuto al rumore nel set di dati sottostante. In sostanza, se rendi il modello più complesso e aggiungi più variabili, perderai la distorsione ma guadagnerai una certa varianza: per ottenere la quantità di errore ridotta in modo ottimale, dovrai compensare la distorsione e la varianza. Non vuoi né una distorsione elevata né una varianza elevata nel tuo modello. D2: Qual è la differenza tra apprendimento automatico supervisionato e non supervisionato? Risposta: L'apprendimento supervisionato richiede l'addestramento dei dati etichettati. Ad esempio, per eseguire la classificazione (un'attività di apprendimento supervisionato), dovrai prima etichettare i dati che utilizzerai per addestrare il modello a classificare i dati nei tuoi gruppi etichettati. L'apprendimento non supervisionato, al contrario, non richiede l'etichettatura esplicita dei dati. Q3: In che modo KNN è diverso dal clustering di k-mean? Risposta: K-Nearest Neighbors è un algoritmo di classificazione supervisionato , mentre k-means clustering è un algoritmo di clustering non supervisionato . Anche se all'inizio i meccanismi possono sembrare simili, ciò significa in realtà che affinché K-Nearest Neighbors funzioni, sono necessari dati etichettati in cui si desidera classificare un punto senza etichetta (quindi la parte vicina più vicina). Il clustering di K-medie richiede solo un insieme di punti senza etichetta e una soglia: l'algoritmo prenderà punti senza etichetta e imparerà gradualmente come raggrupparli in gruppi calcolando la media della distanza tra punti diversi. La differenza fondamentale qui è che KNN ha bisogno di punti etichettati ed è quindi un apprendimento supervisionato, mentre k-mean no, ed è quindi un apprendimento non supervisionato. Q4: Spiega come funziona una curva ROC. Risposta: La curva ROC è una rappresentazione grafica del contrasto tra tassi di veri positivi e tassi di falsi positivi a varie soglie. Viene spesso utilizzato come proxy per il compromesso tra la sensibilità del modello (veri positivi) e la ricaduta o la probabilità che attivi un falso allarme (falsi positivi). Q5: Definisci precisione e recall. Risposta: Recall è anche noto come il tasso di veri positivi: la quantità di positivi dichiarati dal tuo modello rispetto al numero effettivo di positivi presenti nei dati. La precisione è anche nota come valore predittivo positivo ed è una misura della quantità di positivi accurati dichiarati dal tuo modello rispetto al numero di positivi effettivamente dichiarati. Può essere più facile pensare al ricordo e alla precisione nel contesto di un caso in cui hai previsto che c'erano 10 mele e 5 arance in un caso di 10 mele. Avresti un ricordo perfetto (in realtà ci sono 10 mele e avevi previsto che sarebbero state 10) ma una precisione del 66,7% perché dei 15 eventi che hai previsto, solo 10 (le mele) sono corrette. Q6: Che cos'è il teorema di Bayes? In che modo è utile in un contesto di apprendimento automatico? Risposta: Il teorema di Bayes ti dà la probabilità a posteriori di un evento data quella che è nota come conoscenza a priori. Matematicamente, è espresso come il tasso di veri positivi di un campione di condizione diviso per la somma del tasso di falsi positivi della popolazione e il tasso di veri positivi di una condizione. Supponiamo che tu abbia effettivamente il 60% di possibilità di avere l'influenza dopo un test antinfluenzale, ma tra le persone che hanno avuto l'influenza, il test sarà falso il 50% delle volte e la popolazione complessiva ha solo il 5% di possibilità di avere l'influenza influenza. Avresti effettivamente il 60% di possibilità di avere l'influenza dopo essere stato positivo al test? Il teorema di Bayes dice no. Dice che hai un (.6 * 0.05) (tasso di vero positivo di un campione di condizione) / (.6*0.05) (tasso di vero positivo di un campione di condizione) + (.5*0.95) (tasso di falso positivo di un Popolazione) = 0,0594 o 5,94% di probabilità di contrarre l'influenza . Il teorema di Bayes è alla base di una branca dell'apprendimento automatico che include in particolare il classificatore Naive Bayes . Questo è qualcosa di importante da considerare quando ci si trova di fronte a domande di interviste sull'apprendimento automatico. Q7: Perché "Naive" Bayes è ingenuo? Risposta: Nonostante le sue applicazioni pratiche, specialmente nel text mining, Naive Bayes è considerato “naive” perché fa un presupposto che è praticamente impossibile da vedere nei dati della vita reale: la probabilità condizionata è calcolata come il puro prodotto delle probabilità individuali di componenti. Ciò implica l'assoluta indipendenza delle caratteristiche, una condizione probabilmente mai incontrata nella vita reale. Come ha detto un commentatore di Quora in modo stravagante, un classificatore Naive Bayes che ha capito che ti piacevano i sottaceti e il gelato probabilmente ti consiglierebbe ingenuamente un gelato ai sottaceti. Q8: Spiega la differenza tra la regolarizzazione L1 e L2. Risposta: La regolarizzazione L2 tende a distribuire l'errore tra tutti i termini, mentre L1 è più binaria/sparsa, con molte variabili a cui viene assegnata una ponderazione 1 o 0. L1 corrisponde all'impostazione di un priore laplaceano sui termini, mentre L2 corrisponde a un priore gaussiano. Q9: Qual è il tuo algoritmo preferito e puoi spiegarmelo in meno di un minuto? Risposta: Gli intervistatori pongono queste domande del colloquio di apprendimento automatico per testare la tua comprensione di come comunicare sfumature complesse e tecniche con equilibrio e capacità di riassumere in modo rapido ed efficiente. Mentre rispondi a queste domande, assicurati di avere una scelta e assicurati di poter spiegare diversi algoritmi in modo così semplice ed efficace che un bambino di cinque anni possa afferrarne le basi! Q10: Qual è la differenza tra l'errore di tipo I e di tipo II? Risposta: Non pensare che questa sia una domanda trabocchetto! Molte domande del colloquio di apprendimento automatico saranno un tentativo di lanciarti domande di base solo per assicurarti di essere al top del tuo gioco e di aver preparato tutte le tue basi. L'errore di tipo I è un falso positivo, mentre l'errore di tipo II è un falso negativo. In breve, l'errore di tipo I significa affermare che qualcosa è successo quando non è successo, mentre l'errore di tipo II significa che si afferma che non sta accadendo nulla quando in realtà qualcosa lo è. Un modo intelligente per pensare a questo è pensare all'errore di tipo I come dire a un uomo che è incinta, mentre l'errore di tipo II significa dire a una donna incinta che non sta portando un bambino. Q11: Che cos'è una trasformata di Fourier? Risposta: Una trasformata di Fourier è un metodo generico per scomporre funzioni generiche in una sovrapposizione di funzioni simmetriche. O come dice questo tutorial più intuitivo , dato un frullato, è così che troviamo la ricetta. La trasformata di Fourier trova l'insieme delle velocità del ciclo, delle ampiezze e delle fasi che corrispondono a qualsiasi segnale temporale. Una trasformata di Fourier converte un segnale dal tempo nel dominio della frequenza: è un modo molto comune per estrarre caratteristiche da segnali audio o altre serie temporali come i dati dei sensori. Q12: Qual è la differenza tra probabilità e verosimiglianza? Risposta : La parola verosimiglianza si riferisce alla possibilità. D'altra parte, la parola probabilità si riferisce al "caso". Questa è la principale differenza tra le due parole, vale a dire, probabilità e probabilità. La verosimiglianza indica il significato di "essere probabile" come nell'espressione "con ogni probabilità". D13: Che cos'è il deep learning e in che modo contrasta con altri algoritmi di machine learning? Risposta: Il deep learning è un sottoinsieme dell'apprendimento automatico che riguarda le reti neurali: come utilizzare la backpropagation e alcuni principi della neuroscienza per modellare in modo più accurato grandi insiemi di dati non etichettati o semistrutturati. In questo senso, il deep learning rappresenta un algoritmo di apprendimento non supervisionato che apprende le rappresentazioni dei dati attraverso l'uso di reti neurali. Q14: Qual è la differenza tra un modello generativo e discriminativo? Risposta: Un modello generativo imparerà le categorie di dati mentre un modello discriminativo imparerà semplicemente la distinzione tra diverse categorie di dati. I modelli discriminativi generalmente supereranno i modelli generativi nei compiti di classificazione. Q15: Quale tecnica di convalida incrociata useresti su un set di dati di serie temporali? Risposta: Invece di utilizzare la convalida incrociata k-fold standard, devi prestare attenzione al fatto che una serie temporale non è costituita da dati distribuiti casualmente, ma è intrinsecamente ordinata in base all'ordine cronologico. Se un modello emerge in periodi di tempo successivi, ad esempio, il tuo modello potrebbe ancora riprenderlo anche se quell'effetto non regge negli anni precedenti! Ti consigliamo di fare qualcosa come il concatenamento in avanti in cui sarai in grado di modellare i dati passati, quindi guardare i dati rivolti in avanti. Step 1: allenamento [1], prova [2] Step 2: allenamento [1 2], prova [3] Step 3: allenamento [1 2 3], prova [4] Step 4 : allenamento [1 2 3 4], prova [5] Step 5 : allenamento [1 2 3 4 5], prova [6] Q16: Come viene potato un albero decisionale? Risposta: La potatura è ciò che accade negli alberi decisionali quando i rami che hanno un potere predittivo debole vengono rimossi al fine di ridurre la complessità del modello e aumentare l'accuratezza predittiva di un modello di albero decisionale. L'eliminazione può avvenire dal basso verso l'alto e dall'alto verso il basso, con approcci come l'eliminazione degli errori ridotti e l'eliminazione della complessità dei costi. L'eliminazione degli errori ridotti è forse la versione più semplice: sostituire ogni nodo. Se non diminuisce l'accuratezza predittiva, mantienilo potato. Sebbene sia semplice, questa euristica in realtà si avvicina molto a un approccio che ottimizzerebbe per la massima precisione. D17: Che cosa è più importante per te: precisione del modello o prestazioni del modello? Risposta: Tali domande di intervista sull'apprendimento automatico mettono alla prova la tua comprensione delle sfumature delle prestazioni del modello di apprendimento automatico! Le domande del colloquio di apprendimento automatico spesso guardano ai dettagli. Esistono modelli con una maggiore precisione che possono avere prestazioni peggiori in termini di potere predittivo: come ha senso? Bene, ha tutto a che fare con il modo in cui l'accuratezza del modello è solo un sottoinsieme delle prestazioni del modello e, a volte, fuorviante. Ad esempio, se si desidera rilevare le frodi in un enorme set di dati con un campione di milioni di persone, un modello più accurato molto probabilmente non prevederebbe alcuna frode se solo una vasta minoranza di casi fosse una frode. Tuttavia, questo sarebbe inutile per un modello predittivo, un modello progettato per trovare la frode che afferma che non c'è alcuna frode! Domande come questa ti aiutano a dimostrare che comprendi che l'accuratezza del modello non è l'elemento fondamentale delle prestazioni del modello. Q18: Qual è il punteggio F1? Come lo useresti? Risposta: Il punteggio F1 è una misura delle prestazioni di un modello. È una media ponderata della precisione e del richiamo di un modello, con risultati tendenti a 1 i migliori e quelli tendenti a 0 i peggiori. Lo useresti nei test di classificazione in cui i veri negativi non contano molto. Q19: Come gestiresti un set di dati sbilanciato? Risposta: Un set di dati sbilanciato si ha quando, ad esempio, si esegue un test di classificazione e il 90% dei dati si trova in una classe. Questo porta a problemi: un'accuratezza del 90% può essere distorta se non hai potere predittivo sull'altra categoria di dati! Ecco alcune tattiche per superare la gobba: Raccogli più dati anche per gli squilibri nel set di dati. Ricampiona il set di dati per correggere gli squilibri. Prova un algoritmo completamente diverso sul tuo set di dati. Ciò che è importante qui è che tu abbia un'idea acuta di quale danno può causare un set di dati sbilanciato e come bilanciarlo. Q20: Quando dovresti usare la classificazione rispetto alla regressione? Risposta: La classificazione produce valori discreti e set di dati in categorie rigorose, mentre la regressione fornisce risultati continui che consentono di distinguere meglio le differenze tra i singoli punti. Utilizzeresti la classificazione rispetto alla regressione se desideri che i tuoi risultati riflettano l'appartenenza dei punti dati nel tuo set di dati a determinate categorie esplicite (es: se desideri sapere se un nome è maschile o femminile piuttosto che solo quanto sono correlati con maschile e nomi femminili.) Q21: Citare un esempio in cui le tecniche d'insieme potrebbero essere utili. Risposta: Le tecniche di ensemble utilizzano una combinazione di algoritmi di apprendimento per ottimizzare le migliori prestazioni predittive. In genere riducono l'overfitting nei modelli e rendono il modello più robusto (è improbabile che venga influenzato da piccole modifiche nei dati di addestramento). Potresti elencare alcuni esempi di metodi di insieme (bagging, boosting, il metodo "bucket of models") e dimostrare come potrebbero aumentare il potere predittivo. Q22: Come ti assicuri di non essere sovradimensionato con un modello? Risposta: Questa è una semplice riaffermazione di un problema fondamentale nell'apprendimento automatico: la possibilità di sovraadattare i dati di addestramento e trasportare il rumore di quei dati attraverso il set di test, fornendo così generalizzazioni imprecise. Esistono tre metodi principali per evitare l'overfitting: Mantieni il modello più semplice: riduci la varianza tenendo conto di un minor numero di variabili e parametri, rimuovendo così parte del rumore nei dati di addestramento. Utilizzare tecniche di convalida incrociata come la convalida incrociata di k-fold. Utilizzare tecniche di regolarizzazione che penalizzano alcuni parametri del modello se possono causare overfitting. D23: Quali approcci di valutazione lavoreresti per valutare l'efficacia di un modello di apprendimento automatico? Risposta: devi prima dividere il set di dati in set di addestramento e test, o magari utilizzare tecniche di convalida incrociata per segmentare ulteriormente il set di dati in set compositi di set di addestramento e test all'interno dei dati. È possibile utilizzare misure come il punteggio F1, l'accuratezza e la matrice di confusione. L'importante qui è dimostrare di comprendere le sfumature di come viene misurato un modello e come scegliere le giuste misure di prestazione per le giuste situazioni. Q24: Come valuteresti un modello di regressione logistica? Risposta: una sottosezione della domanda precedente. Devi dimostrare di comprendere quali sono gli obiettivi tipici di una regressione logistica (classificazione, previsione, ecc.) e portare alcuni esempi e casi d'uso. Q25: Qual è il "trucco del kernel" e come è utile? Risposta: Il trucco del kernel coinvolge le funzioni del kernel che possono essere abilitate in spazi di dimensioni superiori senza calcolare esplicitamente le coordinate dei punti all'interno di quella dimensione: invece, le funzioni del kernel calcolano i prodotti interni tra le immagini di tutte le coppie di dati in uno spazio delle caratteristiche. Ciò consente loro l'utilissimo attributo di calcolare le coordinate di dimensioni maggiori pur essendo computazionalmente più economico del calcolo esplicito di dette coordinate. Molti algoritmi possono essere espressi in termini di prodotti interni. L'uso del trucco del kernel ci consente di eseguire efficacemente algoritmi in uno spazio ad alta dimensione con dati a dimensione inferiore. Domande del colloquio di apprendimento automatico: programmazione Queste domande del colloquio sull'apprendimento automatico mettono alla prova la tua conoscenza dei principi di programmazione necessari per implementare nella pratica i principi dell'apprendimento automatico. Le domande del colloquio di apprendimento automatico tendono a essere domande tecniche che mettono alla prova le tue capacità logiche e di programmazione: questa sezione si concentra maggiormente su quest'ultima. Q26: Come gestisci i dati mancanti o danneggiati in un set di dati? Risposta: potresti trovare dati mancanti/corrotti in un set di dati e eliminare quelle righe o colonne o decidere di sostituirli con un altro valore. In Pandas, ci sono due metodi molto utili: isnull() e dropna() che ti aiuteranno a trovare colonne di dati con dati mancanti o danneggiati e a eliminare quei valori. Se vuoi riempire i valori non validi con un valore segnaposto (ad esempio, 0), puoi usare il metodo fillna(). D27: Hai esperienza con Spark o strumenti per big data per l'apprendimento automatico? Risposta: Ti consigliamo di familiarizzare con il significato dei big data per le diverse aziende e con i diversi strumenti che vorranno. Spark è lo strumento per big data più richiesto ora, in grado di gestire immensi set di dati con velocità. Sii onesto se non hai esperienza con gli strumenti richiesti, ma dai un'occhiata anche alle descrizioni dei lavori e guarda quali strumenti vengono visualizzati: ti consigliamo di investire per familiarizzare con loro. Q28: Scegli un algoritmo. Scrivi lo pseudo-codice per un'implementazione parallela. Risposta: Questo tipo di domanda dimostra la tua capacità di pensare in parallelo e come potresti gestire la concorrenza nelle implementazioni di programmazione che si occupano di big data. Dai un'occhiata a framework di pseudocodice come Peril-L e strumenti di visualizzazione come Web Sequence Diagrams per aiutarti a dimostrare la tua capacità di scrivere codice che rifletta il parallelismo. Q29: Quali sono alcune differenze tra un elenco collegato e un array? Risposta: Un array è una raccolta ordinata di oggetti. Un elenco collegato è una serie di oggetti con puntatori che indicano come elaborarli in sequenza. Un array presuppone che ogni elemento abbia la stessa dimensione, a differenza dell'elenco collegato. Un elenco collegato può crescere più facilmente in modo organico: un array deve essere predefinito o ridefinito per la crescita organica. Mescolare un elenco collegato implica cambiare i punti diretti a dove, nel frattempo, mescolare un array è più complesso e richiede più memoria. Q30: Descrivi una tabella hash. Risposta: Una tabella hash è una struttura di dati che produce un array associativo. Una chiave viene mappata su determinati valori tramite l'uso di una funzione hash. Sono spesso usati per attività come l'indicizzazione del database. Q31: Quali librerie di visualizzazione dei dati utilizzi? Cosa ne pensi dei migliori strumenti di visualizzazione dei dati? Risposta: Ciò che è importante qui è definire le tue opinioni su come visualizzare correttamente i dati e le tue preferenze personali quando si tratta di strumenti. Gli strumenti popolari includono ggplot di R, seaborn e matplotlib di Python e strumenti come Plot.ly e Tableau. D32: Date due corde, A e B, della stessa lunghezza n, trova se è possibile tagliare entrambe le corde in un punto comune tale che la prima parte di A e la seconda parte di B formino un palindromo. Risposta: Riceverai spesso domande su algoritmi standard e strutture dati come parte del processo di colloquio come ingegnere di apprendimento automatico che potrebbe sembrare simile a un colloquio di ingegneria del software. In questo caso, questo deriva dal processo di intervista di Google. Esistono diversi modi per verificare la presenza di palindromi: un modo per farlo se si utilizza un linguaggio di programmazione come Python è invertire la stringa e verificare se è ancora uguale alla stringa originale, ad esempio. La cosa a cui prestare attenzione qui è la categoria di domande che puoi aspettarti, che sarà simile a domande di ingegneria del software che approfondiscono la tua conoscenza di algoritmi e strutture di dati . Assicurati di essere totalmente a tuo agio con la lingua che preferisci per esprimere quella logica. Q33: In che modo le chiavi primarie ed esterne sono correlate in SQL? Risposta: La maggior parte degli ingegneri dell'apprendimento automatico dovrà avere dimestichezza con molti formati di dati diversi. SQL è ancora uno dei principali utilizzati. La tua capacità di capire come manipolare i database SQL sarà qualcosa che molto probabilmente dovrai dimostrare. In questo esempio, puoi parlare di come le chiavi esterne ti consentono di abbinare e unire le tabelle sulla chiave primaria della tabella corrispondente, ma altrettanto utile è spiegare come penseresti di impostare le tabelle SQL e di interrogarle. Q34: Come si confrontano XML e CSV in termini di dimensioni? Risposta: In pratica, XML è molto più dettagliato dei CSV e occupa molto più spazio. I CSV utilizzano alcuni separatori per classificare e organizzare i dati in colonne ordinate. XML utilizza i tag per delineare una struttura ad albero per le coppie chiave-valore. Spesso riavrai XML come un modo per semi-strutturare i dati dalle API o dalle risposte HTTP. In pratica, ti consigliamo di importare dati XML e provare a elaborarli in un CSV utilizzabile. Questo tipo di domanda mette alla prova la tua dimestichezza con la manipolazione dei dati in formati di dati a volte disordinati. D35: Quali sono i tipi di dati supportati da JSON? Risposta: questo mette alla prova la tua conoscenza di JSON, un altro popolare formato di file che si avvolge con JavaScript. Esistono sei tipi di dati JSON di base che puoi manipolare: stringhe, numeri, oggetti, array, booleani e valori nulli. Q36: Come costruiresti una pipeline di dati? Risposta: le pipeline di dati sono il pane quotidiano degli ingegneri dell'apprendimento automatico, che prendono modelli di scienza dei dati e trovano modi per automatizzarli e ridimensionarli. Assicurati di conoscere gli strumenti per creare pipeline di dati (come Apache Airflow) e le piattaforme in cui puoi ospitare modelli e pipeline (come Google Cloud o AWS o Azure). Spiega i passaggi necessari in una pipeline di dati funzionante e parla della tua esperienza reale nella creazione e nel ridimensionamento in produzione. Domande del colloquio sull'apprendimento automatico: specifiche per azienda/settore Queste domande di intervista sull'apprendimento automatico trattano di come implementare le tue conoscenze generali sull'apprendimento automatico in base ai requisiti di un'azienda specifica. Ti verrà chiesto di creare casi di studio e ampliare la tua conoscenza dell'azienda e del settore per cui ti stai candidando con le tue capacità di apprendimento automatico. Q37: Quali pensi siano i dati più preziosi nella nostra attività? Risposta: Questa domanda o domande simili cercano davvero di metterti alla prova su due dimensioni. Il primo è la tua conoscenza del business e del settore stesso, nonché la tua comprensione del modello di business. Il secondo è se è possibile scegliere in che modo i dati sono correlati ai risultati aziendali in generale e quindi come applicare tale pensiero al contesto dell'azienda. Ti consigliamo di ricercare il modello di business e porre buone domande al tuo reclutatore e iniziare a pensare a quali problemi aziendali probabilmente vorranno risolvere di più con i loro dati. Q38: Come implementeresti un sistema di raccomandazione per gli utenti della nostra azienda? Risposta: Molte domande di questo tipo di interviste sull'apprendimento automatico comporteranno l'implementazione di modelli di apprendimento automatico per i problemi di un'azienda. Dovrai ricercare in modo approfondito l'azienda e il suo settore, in particolare i fattori di reddito che l'azienda ha e i tipi di utenti che l'azienda assume nel contesto del settore in cui si trova. Q39: Come possiamo utilizzare le tue capacità di apprendimento automatico per generare entrate? Risposta: Questa è una domanda difficile. La risposta ideale dimostrerebbe la conoscenza di ciò che guida l'azienda e di come le tue abilità potrebbero essere correlate. Ad esempio, se stavi intervistando per la startup di streaming musicale Spotify, potresti notare che le tue capacità nello sviluppo di un modello di raccomandazione migliore aumenterebbero la fidelizzazione degli utenti, il che aumenterebbe quindi le entrate a lungo termine. Le metriche di avvio di Slideshare collegate sopra ti aiuteranno a capire esattamente quali indicatori di performance sono importanti per le startup e le aziende tecnologiche mentre pensano alle entrate e alla crescita. Q40: Cosa ne pensi del nostro attuale processo di elaborazione dei dati? Risposta: Questo tipo di domanda richiede che tu ascolti attentamente e fornisca feedback in modo costruttivo e perspicace. Il tuo intervistatore sta cercando di valutare se saresti un membro prezioso del loro team e se cogli le sfumature del motivo per cui alcune cose sono impostate come sono nel processo dei dati dell'azienda in base alle condizioni specifiche dell'azienda o del settore. Stanno cercando di vedere se puoi essere un pari intellettuale. Agire in accordo con. Questa serie di domande del colloquio sull'apprendimento automatico tenta di valutare la tua passione e il tuo interesse per l'apprendimento automatico. Le risposte giuste serviranno come testimonianza del tuo impegno a essere uno studente permanente nell'apprendimento automatico. D41: Quali sono gli ultimi documenti sull'apprendimento automatico che hai letto? Risposta: Tenere il passo con l'ultima letteratura scientifica sull'apprendimento automatico è un must se vuoi dimostrare interesse per una posizione di apprendimento automatico. Questa panoramica del deep learning in Nature da parte degli stessi rampolli del deep learning (da Hinton a Bengio a LeCun) può essere un buon documento di riferimento e una panoramica di ciò che sta accadendo nel deep learning e del tipo di documento che potresti voler citare. Q42: Hai esperienza di ricerca nell'apprendimento automatico? Risposta: in relazione all'ultimo punto, la maggior parte delle organizzazioni che assumono per posizioni di machine learning cercherà la tua esperienza formale sul campo. Documenti di ricerca, co-autori o supervisionati da leader del settore, possono fare la differenza tra l'essere assunti e non. Assicurati di avere un riassunto della tua esperienza di ricerca e documenti pronti e una spiegazione per il tuo background e la mancanza di esperienza di ricerca formale se non lo fai. D43: Quali sono i tuoi casi d'uso preferiti dei modelli di machine learning? Risposta: Il thread di Quora di seguito contiene alcuni esempi, come alberi decisionali che classificano le persone in diversi livelli di intelligenza in base ai punteggi del QI. Assicurati di avere in mente alcuni esempi e descrivi cosa ti ha colpito. È importante dimostrare interesse per il modo in cui viene implementato l'apprendimento automatico. Q44: Come ti avvicineresti al concorso "Premio Netflix"? Risposta: Il Premio Netflix è stato un famoso concorso in cui Netflix ha offerto $ 1.000.000 per un migliore algoritmo di filtraggio collaborativo. La squadra che ha vinto, chiamata BellKor, ha avuto un miglioramento del 10% e ha utilizzato un insieme di metodi diversi per vincere. Una certa familiarità con il caso e la sua soluzione aiuterà a dimostrare che hai prestato attenzione all'apprendimento automatico per un po'. D45: Da dove vengono solitamente reperiti i set di dati? Risposta: Le domande del colloquio sull'apprendimento automatico come queste cercano di entrare nel vivo del tuo interesse per l'apprendimento automatico. Qualcuno che è veramente appassionato di apprendimento automatico avrà realizzato progetti collaterali da solo e avrà una buona idea di quali fantastici set di dati sono disponibili. Se te ne mancano, dai un'occhiata a Quandl per i dati economici e finanziari e alla raccolta di set di dati di Kaggle per un altro fantastico elenco. Q46: In che modo pensi che Google stia preparando i dati per le auto a guida autonoma? Risposta: Domande del colloquio di apprendimento automatico come questa mettono davvero alla prova la tua conoscenza dei diversi metodi di apprendimento automatico e la tua inventiva se non conosci la risposta. Google sta attualmente utilizzando recaptcha per ottenere dati etichettati su vetrine e segnali stradali. Stanno anche basandosi sui dati di allenamento raccolti da Sebastian Thrun su GoogleX, alcuni dei quali sono stati ottenuti dai suoi studenti laureati alla guida di passeggini sulle dune del deserto! Q47: Come simuleresti l'approccio adottato da AlphaGo per battere Lee Sedol a Go? Risposta: AlphaGo ha battuto Lee Sedol, il miglior giocatore umano di Go, in una serie al meglio di cinque, è stato un evento davvero fondamentale nella storia dell'apprendimento automatico e del deep learning. L'articolo di Nature sopra descrive come ciò è stato ottenuto con "la ricerca dell'albero di Monte-Carlo con reti neurali profonde che sono state addestrate dall'apprendimento supervisionato, dai giochi di esperti umani e dall'apprendimento per rinforzo dai giochi di auto-gioco". Q48: Cosa ne pensi del modello GPT-3 e OpenAI? Risposta: GPT-3 è un nuovo modello di generazione del linguaggio sviluppato da OpenAI. È stato contrassegnato come eccitante perché con pochissime modifiche nell'architettura e una tonnellata di dati in più, GPT-3 poteva generare quelli che sembravano essere pezzi di conversazione simili a quelli umani, fino a includere opere di dimensioni novelle e la capacità di creare codice da elementi naturali linguaggio. Ci sono molte prospettive su GPT-3 su Internet: se si presenta in un'ambientazione di intervista, preparati ad affrontare questo argomento (e argomenti di tendenza simili) in modo intelligente per dimostrare che segui gli ultimi progressi nell'apprendimento automatico. D49: Quali modelli alleni per divertimento e quale GPU/hardware usi? Risposta: Tali domande del colloquio di apprendimento automatico verificano se hai lavorato su progetti di apprendimento automatico al di fuori di un ruolo aziendale e se comprendi le basi su come utilizzare risorse per i progetti e allocare il tempo della GPU in modo efficiente. Aspettati che domande come questa provengano da manager che assumono che sono interessati a ottenere un maggiore senso dietro il tuo portafoglio e cosa hai fatto in modo indipendente. D50: Quali sono alcune delle tue API preferite da esplorare? Risposta: se hai lavorato con origini dati esterne, è probabile che tu abbia alcune API preferite che hai utilizzato. Puoi riflettere qui sui tipi di esperimenti e pipeline che hai eseguito in passato, insieme a come pensi alle API che hai utilizzato in precedenza. D51: In che modo pensi che il calcolo quantistico influirà sull'apprendimento automatico? Risposta: Con il recente annuncio di ulteriori scoperte nell'informatica quantistica, la domanda su come questo nuovo formato e modo di pensare attraverso l'hardware serva da utile proxy per spiegare l'informatica classica e l'apprendimento automatico e alcune delle sfumature hardware che potrebbero creare alcuni algoritmi molto più facile da fare su una macchina quantistica. Dimostrare alcune conoscenze in quest'area aiuta a dimostrare che sei interessato all'apprendimento automatico a un livello molto più elevato rispetto ai semplici dettagli di implementazione. Ci auguriamo che l'elenco delle domande del colloquio sull'apprendimento automatico di questo post del blog ti aiuti a prepararti per il tuo prossimo colloquio sull'apprendimento automatico. Parte 2 dell Articolo Prepararsi per un colloquio non è facile: c'è una notevole incertezza riguardo alle domande del colloquio sulla scienza dei dati che ti verranno poste. Non importa quanta esperienza lavorativa o quale certificato di scienza dei dati possiedi, un intervistatore può buttarti via con una serie di domande che non ti aspettavi. Durante un colloquio di scienza dei dati, l'intervistatore porrà domande su un'ampia gamma di argomenti, che richiedono sia una forte conoscenza tecnica che solide capacità comunicative da parte dell'intervistato. Le tue abilità statistiche, di programmazione e di modellazione dei dati saranno messe alla prova attraverso una varietà di domande e stili di domande progettati intenzionalmente per tenerti in piedi e costringerti a dimostrare come operi sotto pressione. La preparazione è la chiave del successo quando si intraprende una carriera nella scienza dei dati e ciò include il processo di intervista. Questa guida contiene tutte le domande del colloquio sulla scienza dei dati che dovresti aspettarti quando fai un colloquio per una posizione come scienziato dei dati. Come già immaginiamo, avrai letto e capito le domande e le risposte nella prima parte dell'articolo. In questa seconda parte abbiamo suddiviso le domande dell'intervista per i data scientist in sei diverse categorie: statistica, programmazione, modellazione, comportamento, cultura e risoluzione dei problemi. Statistica Programmazione Generale Big Data Pitone R SQL Modellazione Comportamentale Cultura Risoluzione dei problemi 1. Domande sulla statistica dei Colloqui Per Data Scientist Il calcolo statistico è il processo attraverso il quale i data scientist acquisiscono dati grezzi e creano previsioni e modelli. Senza una conoscenza avanzata delle statistiche è difficile avere successo come scienziato dei dati: di conseguenza, è probabile che un buon intervistatore cercherà di sondare la tua comprensione dell'argomento con domande di intervista sulla scienza dei dati orientate alla statistica. Preparati a rispondere ad alcune domande statistiche fondamentali come parte del tuo colloquio sulla scienza dei dati. Ecco alcuni esempi di domande statistiche rudimentali che abbiamo trovato: Qual è il teorema del limite centrale e perché è importante? “Supponiamo di essere interessati a stimare l'altezza media tra tutte le persone. La raccolta di dati per ogni persona nel mondo è impossibile. Anche se non possiamo ottenere una misurazione dell'altezza da tutta la popolazione, possiamo comunque campionare alcune persone. La domanda ora diventa: cosa possiamo dire dell'altezza media dell'intera popolazione data un singolo campione. Il teorema del limite centrale risponde esattamente a questa domanda. Che cos'è il campionamento? Quanti metodi di campionamento conosci? "Il campionamento dei dati è una tecnica di analisi statistica utilizzata per selezionare, manipolare e analizzare un sottoinsieme rappresentativo di punti dati per identificare modelli e tendenze nell'insieme di dati più ampio in esame". Cos'è la regressione lineare? Cosa significano i termini valore p, coefficiente e valore r-quadrato? Qual è il significato di ciascuna di queste componenti? Una regressione lineare è un buon strumento per una rapida analisi predittiva: ad esempio, il prezzo di una casa dipende da una miriade di fattori, come le sue dimensioni o la sua posizione. Per vedere la relazione tra queste variabili, abbiamo bisogno di costruire una regressione lineare, che preveda la linea di miglior adattamento tra di loro e possa aiutare a concludere se questi due fattori hanno o meno una relazione positiva o negativa. Quali sono le ipotesi richieste per la regressione lineare? Ci sono quattro ipotesi principali: 1. Esiste una relazione lineare tra le variabili dipendenti e i regressori, il che significa che il modello che stai creando si adatta effettivamente ai dati, 2. Gli errori o i residui dei dati sono normalmente distribuiti e indipendenti l'uno dall'altro, 3. C'è una multicollinearità minima tra variabili esplicative e 4. Omoscedasticità. Ciò significa che la varianza attorno alla retta di regressione è la stessa per tutti i valori della variabile predittore. Che cos'è un'interazione statistica? "Fondamentalmente, un'interazione è quando l'effetto di un fattore (variabile di input) sulla variabile dipendente (variabile di output) differisce tra i livelli di un altro fattore". Che cos'è il bias di selezione? “Il bias di selezione (o 'campionamento') si verifica in un senso 'attivo', quando i dati del campione che vengono raccolti e preparati per la modellazione hanno caratteristiche che non sono rappresentative della vera popolazione futura di casi che il modello vedrà. Cioè, la distorsione di selezione attiva si verifica quando un sottoinsieme di dati viene sistematicamente (cioè non casualmente) escluso dall'analisi". Qual è un esempio di set di dati con una distribuzione non gaussiana? "La distribuzione gaussiana fa parte della famiglia di distribuzioni Exponential, ma ce ne sono molte di più, con lo stesso tipo di facilità d'uso, in molti casi, e se la persona che esegue l'apprendimento automatico ha solide basi statistiche, possono essere utilizzati ove appropriato”. Qual è la formula di probabilità binomiale? "La distribuzione binomiale consiste nelle probabilità di ciascuno dei possibili numeri di successi su N prove per eventi indipendenti che hanno ciascuno una probabilità di π (la lettera greca pi) di verificarsi." 2. Domande sulla Programmazione dei Colloqui Per Data Scientist Per testare le tue capacità di programmazione, i datori di lavoro in genere includono due domande specifiche per il colloquio sulla scienza dei dati: ti chiederanno come risolveresti i problemi di programmazione in teoria senza scrivere il codice, e poi offriranno anche esercizi di lavagna per codificare sul posto . Per questi ultimi tipi di domande, forniremo alcuni esempi di seguito, ma se stai cercando una pratica approfondita per risolvere le sfide di codifica, visita HackerRank . Con una filosofia "impara facendo", ci sono sfide organizzate attorno a concetti fondamentali comunemente testati durante le interviste. 2.1 Generale Con quali linguaggi e ambienti di programmazione ti trovi più a tuo agio a lavorare? Quali sono alcuni pro e contro del tuo software statistico preferito? Parlami di un algoritmo originale che hai creato. Descrivi un progetto di scienza dei dati in cui hai lavorato con un componente di programmazione sostanziale. Cosa hai imparato da quell'esperienza? Contribuisci a progetti open source? Come puliresti un set di dati in (inserire la lingua qui)? Mi parli del coding che hai fatto durante il tuo ultimo progetto? 2.2 Big Data Quali sono i due componenti principali del framework Hadoop? Il file system distribuito Hadoop (HDFS), MapReduce e YARN.. Spiega come funziona MapReduce nel modo più semplice possibile. “MapReduce è un modello di programmazione che consente l'elaborazione distribuita di grandi set di dati su cluster di calcolo di hardware di base. Hadoop MapReduce esegue prima la mappatura che comporta la divisione di un file di grandi dimensioni in parti per creare un altro insieme di dati. Come ordineresti un ampio elenco di numeri? Supponiamo che ti venga fornito un set di dati di grandi dimensioni. Quale sarebbe il tuo piano per affrontare i valori anomali? Che ne dici di valori mancanti? E le trasformazioni? 2.3 Python Quali moduli/librerie conosci di più? Cosa ti piace o non ti piace di loro? In Python, come viene gestita la memoria? In Python, la memoria è gestita in uno spazio heap privato. Ciò significa che tutti gli oggetti e le strutture dati si troveranno in un heap privato. Tuttavia, il programmatore non potrà accedere a questo heap. Invece, l'interprete Python lo gestirà. Allo stesso tempo, l'API principale consentirà l'accesso ad alcuni strumenti Python per consentire al programmatore di iniziare a scrivere codice. Il gestore della memoria allocherà lo spazio dell'heap per gli oggetti Python mentre il Garbage Collector integrato riciclerà tutta la memoria che non viene utilizzata per aumentare lo spazio dell'heap disponibile. Quali sono i tipi di dati supportati in Python? “I tipi di dati integrati (o standard) di Python possono essere raggruppati in diverse classi. Attenendosi allo schema gerarchico utilizzato nella documentazione ufficiale di Python, si tratta di tipi numerici, sequenze, insiemi e mappature. Qual è la differenza tra una tupla e un elenco in Python? "Oltre al fatto che le tuple sono immutabili, c'è anche una distinzione semantica che dovrebbe guidarne l'utilizzo." 2.4 R Quali sono i diversi tipi di algoritmi di ordinamento disponibili nel linguaggio R? Esistono algoritmi di ordinamento per inserimento, bolla e selezione. Leggi di più qui . Quali sono i diversi oggetti dati in R? “Gli oggetti R possono memorizzare valori come diversi tipi di dati principali (indicati come modalità nel gergo R); questi includono numerici (interi e doppi), caratteri e logici. . Quali pacchetti conosci di più? Cosa ti piace o non ti piace di loro? Come si accede all'elemento nella 2a colonna e 4a riga di una matrice denominata M? “Possiamo accedere agli elementi di una matrice usando la parentesi quadra [metodo di indicizzazione. È possibile accedere agli elementi come var[row, column]." Qual è il comando utilizzato per memorizzare oggetti R in un file? salva (x, file="x.Rdata") Qual è il modo migliore per utilizzare insieme Hadoop e R per l'analisi? “Hadoop e R si completano abbastanza bene in termini di visualizzazione e analisi dei big data. Ci sono quattro modi diversi di usare insieme Hadoop e R." Come si divide una variabile continua in diversi gruppi/ranghi in R? Scrivi una funzione in linguaggio R per sostituire il valore mancante in un vettore con la media di quel vettore. 2.5 SQL Spesso, le domande SQL sono basate su casi, il che significa che un datore di lavoro ti incaricherà di risolvere un problema SQL per testare le tue abilità da un punto di vista pratico. Ad esempio, potresti ricevere una tabella e chiederti di estrarre i dati rilevanti, quindi filtrare e ordinare i dati come meglio credi e infine riportare i risultati. Se non ti senti pronto per farlo in un'ambientazione di intervista, Mode Analytics ha una deliziosa introduzione all'uso di SQL che ti insegnerà questi comandi attraverso un ambiente SQL interattivo. Qual è lo scopo delle funzioni di gruppo in SQL? Fornisci alcuni esempi di funzioni di gruppo. Le funzioni di gruppo sono necessarie per ottenere statistiche riassuntive di un set di dati. COUNT, MAX, MIN, AVG, SUM e DISTINCT sono tutte funzioni di gruppo. Dimmi la differenza tra inner join, left join/right join e union. "In un diagramma di Venn il join interno è quando entrambe le tabelle hanno una corrispondenza, un join sinistro è quando c'è una corrispondenza nella tabella di sinistra e la tabella di destra è nulla, un join destro è l'opposto di un join sinistro e un full join è tutti i dati combinati. Cosa fa UNION? Qual è la differenza tra UNION e UNION ALL? "UNION rimuove i record duplicati (dove tutte le colonne nei risultati sono uguali), UNION ALL no." Qual è la differenza tra SQL e MySQL o SQL Server? “SQL sta per Structured Query Language. È un linguaggio standard per l'accesso e la manipolazione dei database. MySQL è un sistema di gestione di database, come SQL Server, Oracle, Informix, Postgres, ecc." Se una tabella contiene righe duplicate, il risultato di una query visualizza i valori duplicati per impostazione predefinita? Come eliminare le righe duplicate dal risultato di una query? Sì. Un modo per eliminare le righe duplicate con la clausola DISTINCT. 3. 2. Domande sulla Modellazione dei Colloqui Per Data Scientist La modellazione dei dati è il luogo in cui un data scientist fornisce valore per un'azienda. Trasformare i dati in informazioni predittive e utilizzabili è difficile, parlarne con un potenziale datore di lavoro lo è ancora di più. Esercitati a descrivere le tue esperienze passate costruendo modelli: quali sono state le tecniche utilizzate, le sfide superate e i successi ottenuti nel processo? Il gruppo di domande di seguito è progettato per scoprire tali informazioni, nonché la tua formazione formale sulle diverse tecniche di modellazione. Se non riesci a descrivere la teoria e le ipotesi associate a un modello che hai utilizzato, non lascerà una buona impressione. Dai un'occhiata alle domande seguenti per esercitarti. Non tutte le domande saranno rilevanti per il tuo colloquio: non ci si aspetta che tu sia un maestro di tutte le tecniche. L'uso migliore di queste domande è familiarizzare di nuovo con le tecniche di modellazione che hai imparato in passato. Parlami di come hai progettato un modello per un datore di lavoro o cliente passato. Quali sono le tue tecniche di visualizzazione dei dati preferite? Come rappresentereste efficacemente i dati con 5 dimensioni? In che modo k-NN è diverso dal clustering di k-medie? k-NN, o k-nearest neighbors è un algoritmo di classificazione, dove k è un numero intero che descrive il numero di punti dati vicini che influenzano la classificazione di una data osservazione. K-means è un algoritmo di clustering, dove k è un numero intero che descrive il numero di cluster da creare dai dati forniti. Come creeresti un modello di regressione logistica? Hai usato un modello di serie storica? Capisci le correlazioni incrociate con i ritardi? Spiega la regola 80/20 e parlami della sua importanza nella convalida del modello. "Le persone di solito tendono a iniziare con una divisione dell'80-20% (80% set di allenamento - 20% set di test) e suddividere ancora una volta il set di allenamento in un rapporto dell'80-20% per creare il set di convalida". Leggi di più qui . Spiega cosa sono la precisione e il richiamo. Come si relazionano alla curva ROC? Recall descrive quale percentuale di veri positivi è descritta come positiva dal modello. La precisione descrive la percentuale di previsioni positive corrette. La curva ROC mostra la relazione tra richiamo del modello e specificità: la specificità è una misura della percentuale di veri negativi descritti come negativi dal modello. Il richiamo, la precisione e il ROC sono misure utilizzate per identificare l'utilità di un determinato modello di classificazione. Leggi di più qui . Spiegare la differenza tra i metodi di regolarizzazione L1 e L2. “Un modello di regressione che utilizza la tecnica di regolarizzazione L1 è chiamato Lasso Regression e il modello che utilizza L2 è chiamato Ridge Regression. La differenza fondamentale tra questi due è il termine di rigore". Che cos'è l'analisi della causa principale? “Tutti noi temiamo quell'incontro in cui il capo chiede 'perché le entrate sono diminuite?' L'unica cosa peggiore di quella domanda è non avere risposte! Ci sono molti cambiamenti che accadono nella tua azienda ogni giorno e spesso vorrai capire esattamente cosa sta guidando un determinato cambiamento, specialmente se è inaspettato. Comprendere le cause alla base del cambiamento è noto come analisi delle cause principali". Cosa sono le collisioni di tabelle hash? "Se l'intervallo dei valori delle chiavi è maggiore della dimensione della nostra tabella hash, cosa che di solito è sempre così, allora dobbiamo tenere conto della possibilità che due record diversi con due chiavi diverse possano eseguire l'hashing sullo stesso indice della tabella. Esistono diversi modi per risolvere questo problema. Nella lingua delle tabelle hash, questa soluzione implementata viene definita risoluzione delle collisioni". Che cos'è un test esatto? "In statistica, un test esatto (significativo) è un test in cui tutte le ipotesi, su cui si basa la derivazione della distribuzione della statistica test, sono soddisfatte rispetto a un test approssimativo (in cui l'approssimazione può essere fatta il più vicino possibile desiderato rendendo la dimensione del campione sufficientemente grande). Ciò risulterà in un test di significatività che avrà un tasso di falso rifiuto sempre uguale al livello di significatività del test. Ad esempio, un test esatto al livello di significatività del 5% a lungo termine rifiuterà le ipotesi nulle vere esattamente il 5% delle volte. Secondo te, cosa è più importante quando si progetta un modello di apprendimento automatico: prestazioni del modello o accuratezza del modello? Qual è un modo in cui gestiresti un set di dati sbilanciato che viene utilizzato per la previsione (ad esempio, classi molto più negative rispetto a classi positive)? Come convalideresti un modello che hai creato per generare un modello predittivo di una variabile di risultato quantitativa utilizzando la regressione multipla? Ho due modelli di accuratezza e prestazioni computazionali comparabili. Quale dovrei scegliere per la produzione e perché? Come affronti la scarsità? È meglio dedicare cinque giorni allo sviluppo di una soluzione accurata al 90 percento o 10 giorni per una precisione al 100 percento? Quali sono alcune situazioni in cui un modello lineare generale fallisce? Pensi che 50 piccoli alberi decisionali siano migliori di uno grande? Come mai? Quando modifichi un algoritmo, come fai a sapere che le tue modifiche sono un miglioramento rispetto al non fare nulla? È meglio avere troppi falsi positivi o troppi falsi negativi? 4. Comportamento e Personalità I datori di lavoro adorano le domande comportamentali. Rivelano informazioni sull'esperienza lavorativa dell'intervistato e sul suo comportamento e su come ciò potrebbe influenzare il resto del team. Da queste domande, un intervistatore vuole vedere come un candidato ha reagito a situazioni in passato, quanto bene può articolare quale fosse il suo ruolo e cosa ha imparato dalla sua esperienza. Esistono diverse categorie di domande comportamentali che ti verranno poste: Lavoro di squadra Comando Gestione dei conflitti Risoluzione dei problemi Fallimento Prima del colloquio, annota esempi di esperienze lavorative relative a questi argomenti per rinfrescare la memoria: dovrai ricordare esempi specifici per rispondere bene alle domande. Quando ti viene chiesto di un'esperienza precedente, assicurati di raccontare una storia. Essere in grado di creare in modo conciso e logico una storia per dettagliare le tue esperienze è importante. Ad esempio: "Mi è stato chiesto X, ho fatto A, B e C e ho deciso che la risposta era Y". Naturalmente, se puoi evidenziare le esperienze che hanno a che fare con la scienza dei dati, queste domande rappresentano una grande opportunità per mostrare un risultato unico come scienziato dei dati di cui potresti non aver discusso in precedenza. Ecco alcuni esempi di questo tipo di domande/richieste: Raccontami di una volta in cui hai preso l'iniziativa. Raccontami di una volta in cui hai dovuto superare un dilemma. Raccontami di una volta in cui hai risolto un conflitto. Raccontami di una volta in cui hai fallito e cosa hai imparato da essa. Parlami di (un lavoro nel tuo curriculum). Perché hai scelto di farlo e cosa ti piace di più? Parlami di una sfida che hai superato mentre lavoravi a un progetto di gruppo. Quando incontravi un compito noioso e noioso, come lo affronteresti e ti motiveresti a portarlo a termine? Cosa hai fatto in passato per rendere soddisfatto/felice un cliente? Cosa hai fatto nel tuo precedente lavoro di cui sei davvero orgoglioso? Cosa fai quando la tua vita personale sta sconfinando nella tua vita lavorativa? 5. Cultura Se un datore di lavoro ti fa una domanda in questo elenco, sta cercando di avere un'idea di chi sei e di come ti adatteresti all'azienda. Stanno cercando di valutare da dove viene il tuo interesse per la scienza dei dati e per la società di assunzione. Dai un'occhiata a questi esempi e pensa a quale sarebbe la tua migliore risposta, ma tieni presente che è importante essere onesti con queste risposte. Non c'è motivo per non essere te stesso. Non ci sono risposte giuste a queste domande, ma le risposte migliori vengono comunicate con sicurezza. Quali data scientist ammiri di più? Quali startup? Cosa pensi che renda un buon data scientist? Come ti sei interessato alla scienza dei dati? Fornisci alcuni esempi di "migliori pratiche" nella scienza dei dati. Qual è l'ultimo libro/articolo di data science che hai letto? Qual è l'ultima conferenza / webinar / classe / workshop / formazione sul data mining a cui hai partecipato? Qual è un progetto su cui vorresti lavorare nella nostra azienda? Quali abilità uniche pensi di portare alla squadra? Quali dati vorresti acquisire se non ci fossero limitazioni? Hai mai pensato di creare la tua startup? Intorno a quale idea/concetto? Cosa possono dirmi i tuoi hobby che il tuo curriculum non può? Quali sono le tue prime 5 previsioni per i prossimi 20 anni? Cosa hai fatto oggi? O cosa hai fatto questa settimana/la scorsa settimana? Se vincessi un milione di dollari alla lotteria, cosa faresti con i soldi? Qual è una cosa in cui credi che la maggior parte delle persone non crede? Con quali tratti della personalità ti sbatti? Di cosa (al di fuori della scienza dei dati) sei appassionato? 6. Risoluzione dei problemi Gli intervistatori, a un certo punto durante il processo di intervista, vorranno testare la tua capacità di risoluzione dei problemi attraverso domande di intervista sulla scienza dei dati. Spesso questi test verranno presentati come una domanda aperta: come faresti X? In generale, quella X sarà un'attività o un problema specifico dell'azienda con cui ti stai candidando. Ad esempio, un intervistatore di Yelp potrebbe chiedere a un candidato come creerebbe un sistema per rilevare le recensioni false su Yelp . Alcuni suggerimenti rapidi: non aver paura di fare domande. I datori di lavoro vogliono mettere alla prova le tue capacità di pensiero critico e porre domande che chiariscano i punti di incertezza è una caratteristica che ogni data scientist dovrebbe avere. Inoltre, se il problema offre l'opportunità di mettere in mostra le tue capacità di codifica sulla lavagna o di creare diagrammi schematici, sfruttalo a tuo vantaggio. Mostra abilità tecniche e aiuta a comunicare il tuo processo di pensiero attraverso una diversa modalità di comunicazione. Condividi sempre il tuo processo di pensiero: il processo è spesso più importante dei risultati stessi per l'intervistatore. Come trovare una soluzione per identificare il plagio? Quanti voti “utili” riceverà una recensione di Yelp? Come rilevi i singoli account a pagamento condivisi da più utenti? Stai per inviare un milione di email. Come si ottimizza la consegna? Come ottimizzi la risposta? Hai un set di dati contenente 100.000 righe e 100 colonne, con una di queste colonne che è la nostra variabile dipendente per un problema che vorremmo risolvere. Come possiamo identificare rapidamente quali colonne saranno utili per prevedere la variabile dipendente. Identifica due tecniche e spiegamele come se avessi 5 anni. Come riconosceresti le recensioni fasulle o gli account Facebook fasulli utilizzati per scopi errati? Questa è un'opportunità per mostrare la tua conoscenza degli algoritmi di apprendimento automatico; in particolare, algoritmi di analisi del sentimento e analisi del testo. Mostra la tua conoscenza del comportamento fraudolento : quali sono i comportamenti anormali che possono essere visti in genere da account fraudolenti? Come eseguiresti il ​​raggruppamento su un milione di parole chiave univoche, supponendo che tu abbia 10 milioni di punti dati, ciascuno composto da due parole chiave e una metrica che misura la somiglianza di queste due parole chiave? In primo luogo, come creeresti questa tabella di 10 milioni di punti dati? Come ottimizzeresti un web crawler per funzionare molto più velocemente, estrarre informazioni migliori e riassumere meglio i dati per produrre database più puliti? Conclusione Non esiste un unico modo "migliore" per prepararsi a un'intervista sulla scienza dei dati, ma si spera che, esaminando queste domande comuni per i data scientist, sarai in grado di entrare nelle tue interviste in modo ben praticato e sicuro. Se hai suggerimenti per domande, faccelo sapere nei commenti! Buona fortuna.

  • Migliori Citazioni sull'Intelligenza Artificiale - Citazioni Apprendimento Automatico e Profondo

    Quando si tratta delle possibilità e dei possibili pericoli dell'intelligenza artificiale (AI), dell'apprendimento e del ragionamento da parte delle macchine senza l'intervento dell'uomo, ci sono molte opinioni. Solo il tempo dirà quale di queste citazioni sarà la più vicina alla nostra realtà futura. Finché non ci arriviamo, è interessante capire chi potrebbe essere colui che prevede meglio la nostra realtà. Ecco le Migliori citazioni e frasi celebri sull' Intelligenza Artificiale “Lo sviluppo dell'intelligenza artificiale completa potrebbe significare la fine della razza umana... decollerebbe da sola e si riprogetterà a un ritmo sempre crescente. Gli umani, che sono limitati dalla lenta evoluzione biologica, non potrebbero competere e verrebbero superati". — Stephen Hawking ha detto alla BBC "Immagino un momento in cui saremo per i robot ciò che i cani sono per gli umani e faccio il tifo per le macchine". — Claude Shannon "L'intelligenza artificiale sarebbe la versione definitiva di Google. Il motore di ricerca definitivo che capisce tutto sul web. Capirebbe esattamente quello che vuoi e ti darebbe la cosa giusta. Non siamo neanche lontanamente vicini a farlo ora. Tuttavia, possiamo avvicinarci in modo incrementale a quello, e questo è fondamentalmente ciò su cui lavoriamo”. — Larry Page “Il ritmo del progresso nell'intelligenza artificiale (non mi riferisco all'IA ristretta) è incredibilmente veloce. A meno che tu non abbia un'esposizione diretta a gruppi come Deepmind, non hai idea di quanto velocemente stia crescendo a un ritmo vicino all'esponenziale. Il rischio che accada qualcosa di seriamente pericoloso è nell'arco di cinque anni. 10 anni al massimo.” — Elon Musk ha scritto in un commento su Edge.org “Gli sconvolgimenti [dell'intelligenza artificiale] possono intensificarsi rapidamente e diventare più spaventosi e persino catastrofici. Immagina come un robot medico, originariamente programmato per liberare il cancro, potrebbe concludere che il modo migliore per cancellare il cancro è sterminare gli umani che sono geneticamente inclini alla malattia. — Nick Bilton, editorialista tecnologico ha scritto sul New York Times "Non voglio davvero spaventarti, ma è stato allarmante quante persone con cui ho parlato che sono persone di alto livello nell'intelligenza artificiale che hanno ritiri(bunker) che sono una sorta di case 'bug out', in cui potrebbero fuggire se tutto andasse a rotoli." — James Barrat, autore di Our Final Invention: Artificial Intelligence and the End of the Human Era, ha dichiarato al Washington Post “Sono sempre più propenso a pensare che ci dovrebbe essere qualche svista normativa, magari a livello nazionale e internazionale, solo per essere sicuri di non fare una cosa molto stupida. Voglio dire, con l'intelligenza artificiale stiamo evocando il demone." — Elon Musk ha avvertito all'AeroAstro Centennial Symposium del MIT “La vera domanda è: quando redigeremo una carta dei diritti sull'intelligenza artificiale? In cosa consisterà? E chi potrà deciderlo?" —Gray Scott "Dobbiamo affrontare, individualmente e collettivamente, le questioni morali ed etiche sollevate dalla ricerca all'avanguardia nell'intelligenza artificiale e nelle biotecnologie, che consentiranno una significativa estensione della vita, bambini designer e l'estrazione della memoria". —Klaus Schwab “Alcune persone chiamano questa intelligenza artificiale, ma la realtà è che questa tecnologia ci migliorerà. Quindi, invece dell'intelligenza artificiale, penso che aumenteremo la nostra intelligenza". —Ginni Rometty “Sono più spaventato che interessato dall'intelligenza artificiale – in effetti, forse paura e interesse non sono lontani l'uno dall'altro. Le cose possono diventare reali nella tua mente, puoi essere ingannato e credere a cose che normalmente non avresti. Un mondo gestito da automi non sembra più del tutto irrealistico. Fa un po' freddo". —Gemma Whelan “Devi parlare di 'Terminator' se parli di intelligenza artificiale. In realtà penso che sia molto lontano. Non credo che un sistema di intelligenza artificiale dotato di un'intelligenza sovrumana sarà violento. Penso che sconvolgerà la nostra cultura”. —Gray Scott "Se il governo regola contro l'uso di droni o cellule staminali o intelligenza artificiale, tutto ciò significa che il lavoro e la ricerca lasciano i confini di quel paese e vanno da qualche altra parte". —Peter Diamandis "La chiave dell'intelligenza artificiale è sempre stata la rappresentazione". —Jeff Hawkins "Sarà interessante vedere come la società affronterà l'intelligenza artificiale, sarà sicuramente interessante". —Colin Angolo “Tutto ciò che potrebbe dare origine a un'intelligenza più intelligente di quella umana, sotto forma di intelligenza artificiale, interfacce cervello-computer o potenziamento dell'intelligenza umana basato sulle neuroscienze". —Eliezer Yudkowsky "L'intelligenza artificiale sta crescendo rapidamente, così come i robot le cui espressioni facciali possono suscitare empatia". —Diane Ackerman “Qualcuno in TV deve solo dire, 'Alexa', e lei si illumina. È sempre pronta all'azione, la donna perfetta, non dice mai: 'Non stasera, caro.'” —Sybil Sage, come citato in un articolo del New York Times "Alcune persone temono che l'intelligenza artificiale ci farà sentire inferiori, ma poi, chiunque sano di mente dovrebbe avere un complesso di inferiorità ogni volta che guarda un fiore". —Alan Kay "L'intelligenza artificiale raggiungerà i livelli umani intorno al 2029. Seguitelo oltre, diciamo, al 2045, avremo moltiplicato l'intelligenza, l'intelligenza della macchina biologica umana della nostra civiltà un miliardo di volte". —Ray Kurzweil “Nessuno la esprime in questo modo, ma penso che l'intelligenza artificiale sia quasi una disciplina umanistica. È davvero un tentativo di comprendere l'intelligenza umana e la cognizione umana”. —Sebastian Thrun “Un anno passato nell'intelligenza artificiale è sufficiente per far credere in Dio.” —Alan Perlis "Non c'è motivo e modo che una mente umana possa tenere il passo con una macchina di intelligenza artificiale entro il 2035". —Gray Scott "L'intelligenza artificiale è inferiore alla nostra intelligenza?" —Spike Jonze "Di gran lunga, il più grande pericolo dell'intelligenza artificiale è che le persone concludano troppo presto di capirlo". —Eliezer Yudkowsky "La cosa triste dell'intelligenza artificiale è che manca di artificio e quindi di intelligenza". —Jean Baudrillard "Dimentica l'intelligenza artificiale: nel nuovo, coraggioso mondo dei big data, è l'idiozia artificiale che dovremmo cercare." —Tom Chatfield "Prima di lavorare sull'intelligenza artificiale, perché non facciamo qualcosa contro la stupidità naturale?" —Steve Polyak Commenta la tua Preferita nei Commenti e se ti va, scrivine anche una tua Ti interessa l'intelligenza artificiale ma non sai da dove partire in modo gratuito ? Ebook Gratis Intelligenza Artificiale l'Introduzione che tutti devono conoscere Machine Learning la guida Ufficiale Deep Learning : è solo una questione di profondità Corsi Gratis Da zero a Data Scientist Corso Gratis 120 Lezioni Progetti python Gratis Quanto vale la tua macchina ? Il tuo primo programma di Machine Learning Previsione prezzo Bitcoin con il Machine Learning

  • PyTorch vs TensorFlow quale è meglio per creare modelli di deep learning

    In questo articolo ti guideremo e confronteremo l'usabilità del codice e la facilità d'uso di TensorFlow e PyTorch sul set di dati MNIST più utilizzato per classificare le cifre scritte a mano. Due delle librerie di deep learning basate su Python più popolari sono PyTorch e TensorFlow. Potrebbe essere difficile per un professionista del machine learning alle prime armi decidere quale utilizzare quando si lavora con un modello di deep learning. Potresti essere completamente inconsapevole delle distinzioni, rendendo impossibile per te prendere una decisione informata. Esamineremo alcune di queste differenze nella pratica in questo articolo creando un classificatore utilizzando entrambi i framework per la stessa risoluzione dei problemi. Infine, concluderemo come i modelli simili definiti per affrontare lo stesso problema ma che utilizzano infrastrutture diverse differiscono nei risultati. I punti principali da trattare in questo articolo sono elencati di seguito. Indice Articolo Informazioni sui dati delle cifre MNIST Breve introduzione su TensorFlow Breve introduzione su PyTorch Creazione di un modello di deep learning per la classificazione delle immagini Costruzione di modelli con TensorFlow Costruzione di modelli con PyTorch Confrontiamo le prestazioni Discutiamo prima il set di dati MNIST. Informazioni sui dati delle cifre MNIST Il set di dati Modified National Institute of Standards and Technology è l'acronimo di set di dati MNIST . È una raccolta di 60.000 piccole immagini quadrate in scala di grigi di singole cifre scritte a mano che vanno da 0 a 9. L'obiettivo è ordinare un'immagine di una cifra scritta a mano in una delle dieci classi che rappresentano valori interi che vanno da 0 a 9, inclusi. È un set di dati ampiamente utilizzato e ben compreso che è stato risolto per la maggior parte. Le reti neurali convoluzionali di deep learning sono i modelli con le prestazioni migliori, con un'accuratezza di classificazione di oltre il 99% e un tasso di errore compreso tra lo 0,4% e lo 0,2% sul set di dati del test di tenuta. Gli esempi riportati di seguito provengono dal set di dati di addestramento delle cifre MNIST caricate dall'API del set di dati Tensorflow. Breve introduzione su TensorFlow Google ha sviluppato TensorFlow, che è stato reso open source nel 2015. Si è evoluto dal software di apprendimento automatico interno di Google, che è stato rifattorizzato e ottimizzato per l'uso in produzione. Il termine "TensorFlow" si riferisce al modo in cui i dati sono organizzati ed elaborati. Un tensore è la struttura dati più basilare sia in TensorFlow che in PyTorch. Quando usi TensorFlow, crei un grafico del flusso di dati con stato, simile a un diagramma di flusso che ricorda gli eventi passati, per eseguire operazioni sui dati in questi tensori. TensorFlow è noto per essere una libreria di deep learning ad alte prestazioni. Ha una base di utenti ampia e attiva, oltre a una pletora di modelli, strumenti e piattaforme di formazione, distribuzione e servizio ufficiali e di terze parti. Breve introduzione su PyTorch PyTorch è uno dei framework di deep learning più recenti, sviluppato dal team di Facebook e rilasciato su GitHub nel 2017. PyTorch sta guadagnando popolarità grazie alla sua facilità d'uso, semplicità, grafico computazionale dinamico e utilizzo efficiente della memoria. È imperativo, il che significa che viene eseguito immediatamente e l'utente può testarlo per vedere se funziona prima di scrivere l'intero codice. Possiamo scrivere una sezione di codice ed eseguirla in tempo reale perché ha un'implementazione Python integrata per fornire compatibilità come piattaforma di deep learning. Ha rapidamente guadagnato popolarità grazie alla sua interfaccia intuitiva, spingendo il team di Tensorflow a incorporare le sue funzionalità più popolari in Tensorflow 2.0. Creazione di un modello di deep learning per la classificazione delle immagini In questa sezione, confronteremo l'usabilità del codice e la facilità d'uso di TensorFlow e PyTorch sul set di dati MNIST più utilizzato per classificare le cifre scritte a mano. Utilizzando entrambi i framework verificheremo le procedure minime da eseguire per avere un modello di classificazione adeguato. In entrambi i passaggi del modello da eseguire sono il caricamento dei dati, la preelaborazione, la creazione del modello, l'addestramento e la visualizzazione del risultato. Per entrambi i modelli, ho cercato di mantenere i livelli e le configurazioni di iperparametri uguali tra loro. Quindi ora iniziamo prima con Tensorflow. Creare modelli di deep learning con TensorFlow Costruiamo un modello di rete neurale convoluzionale per la classificazione delle immagini in TensorFlow. import tensorflow from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical from tensorflow.keras.layers import Conv2D, Flatten, Dense, MaxPooling2D from tensorflow.keras.models import Sequential import matplotlib.pyplot as plt Carica e preelabora i dati. Qui la preelaborazione non è altro che rimodellare le immagini da 28 x 28 a 28 x 28 x 1 i, abbiamo aggiunto il canale del colore e 1 indica il canale del grigio. Successivamente, abbiamo creato una rappresentazione binaria di ciascuna classe e, infine, abbiamo ridimensionato tutti i valori dei pixel. # Rimodelliamo e codifichiamo con onehot x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) x_test = x_test.reshape(x_test.shape[0], 28, 28, 1) y_train = to_categorical(y_train) y_test = to_categorical(y_test) # scaling x_train = x_train.astype('float32') x_test = x_test.astype('float32') x_train = x_train / 255.0 x_test = x_test / 255.0 Successivamente, costruiremo un modello. Questo modello sarà composto da 2 strati convoluzionali seguiti da uno strato di pooling e un classificatore Dense. La discesa del gradiente stocastico viene utilizzata come funzione di ottimizzazione con un tasso di apprendimento di 0,01 e l'entropia incrociata categoriale come funzione di perdita, il modello viene addestrato per 5 epoche. E questo viene mantenuto anche nel modello Pytorch. model = Sequential() model.add(Conv2D(32, (3,3), input_shape = (28,28,1), activation='relu')) model.add(Conv2D(64,(3,3), activation='relu')) model.add(MaxPooling2D((2,2))) model.add(Flatten()) model.add(Dense(1024, activation='relu')) model.add(Dense(10, activation='softmax')) # Compiliamo model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy']) # Alleniamo history = model.fit(x_train, y_train, validation_split=0.3, epochs=5) Fino a questo, questo è tutto il lavoro minimo richiesto per costruire un classificatore di immagini usando TensorFlow. Creare modelli di deep learning con Pytorch Costruiamo un modello di rete neurale convoluzionale per la classificazione delle immagini in PyTorch. #importiamo le librerie import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torchvision import datasets, transforms # preprocessiamo transform = transforms.Compose([ transforms.Resize((8, 8)), transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) # carichiamo i dati train_dataset = datasets.MNIST( 'data', train=True, download=True, transform=transform) test_dataset = datasets.MNIST( 'data', train=False, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=512) test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=512) # Costruisci un modello class CNNModel(nn.Module): def __init__(self): super(CNNModel, self).__init__() self.conv1 = nn.Conv2d(1, 32, 3, 1) self.conv2 = nn.Conv2d(32, 64, 3, 1) self.fc = nn.Linear(1024, 10) def forward(self, x): x = F.relu(self.conv1(x)) x = F.relu(self.conv2(x)) x = F.max_pool2d(x, 1) x = torch.flatten(x, 1) x = self.fc(x) output = F.log_softmax(x, dim=1) return output net = CNNModel() # Compiliamo optimizer = optim.SGD(net.parameters(), lr=0.01) criterion = nn.CrossEntropyLoss() Dopodiché, durante la fase di addestramento, dobbiamo creare un ciclo che ripercorre le nostre epoche e lotti. Elaboreremo le nostre immagini di conseguenza e utilizzeremo il passaggio in avanti per calcolare la nostra perdita. Confrontiamo le prestazioni Dai due grafici precedenti, la curva del modello TensorFlow sembra ripida e dopo la 3a epoca, la perdita sul set di convalida sembra aumentare. In breve, possiamo dire che la procedura di apprendimento nel modello TensorFlow è di natura ripida e possiamo aspettarci molti compromessi. Mentre nel modello PyTorch, anche la procedura di costruzione del modello sembra complessa, l'addestramento e la perdita osservati sono stati fluidi durante la procedura e la perdita di convalida ha seguito correttamente la perdita del test. Conclusioni A questo punto, abbiamo discusso brevemente TensorFlow e PyTorch e visto la procedura di modellazione minima per la classificazione delle immagini. Nel contesto dell'allenamento e delle prestazioni dei test dai due rispettivi grafici, possiamo dire che il processo di addestramento e valutazione è più fluido nel modello PyTorch e, in termini di elementi costitutivi, direi che TensorFlow è più adatto ai principianti grazie alla sua API semplificata .

  • Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step

    In questo articolo andremo a vedere passo passo come creare il tuo primo programma o progetto di deep learning, utilizzando Python e la libreria Keras. Panoramica della guida per la creazione di un programma di apprendimento profondo Non è richiesto molto codice, lo vedremo lentamente in modo che tu sappia come creare i tuoi modelli in futuro. Consigliamo sempre di salvare il post e rileggerlo più volte. I passaggi che vedremo in questo tutorial sono i seguenti: Caricare dati. Definire il modello Keras. Compilare il modello Keras. Allenare il modello Keras. Valutare il modello Keras. Legare tutto insieme. Fare previsioni Questo tutorial Keras ha alcuni requisiti: Se non sai perchè utilizzeremo python, clicca qui Se non hai ancora installato Python, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Se non sai cosa è un perceptron , clicca qui Sei pronto ? Iniziamo ! Crea un nuovo file chiamato prima_rete_neurale_con_IAITALIA.py e digita o copia e incolla il codice nel file mentre procedi. 1. Carica dati Il primo passo è definire le funzioni e le classi che intendiamo utilizzare in questo tutorial. Useremo la libreria NumPy per caricare il nostro set di dati e useremo due classi della libreria Keras per definire il nostro modello. Le importazioni richieste sono elencate di seguito. # Prima rete neurale con Python e keras from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense Ora possiamo caricare il nostro set di dati. In questo tutorial su Keras, utilizzeremo il set di dati sull'inizio del diabete degli indiani Pima. Questo è un set di dati di machine learning standard dal repository UCI Machine Learning. Descrive i dati delle cartelle cliniche dei pazienti per gli indiani Pima e se hanno avuto un'insorgenza di diabete entro cinque anni. In quanto tale, è un problema di classificazione binaria (inizio del diabete come 1 o non come 0). Tutte le variabili di input che descrivono ciascun paziente sono numeriche. Ciò lo rende facile da usare direttamente con le reti neurali che prevedono valori di input e output numerici e ideali per la nostra prima rete neurale in Keras. Il dataset è disponibile nella sezione progetti, insieme al codice dell'articolo. ma se vuoi scaricarlo singolarmente ecco a te il link Scarica il set di dati e inseriscilo nella tua directory di lavoro locale, nella stessa posizione del tuo file python. Salvalo con il nome del file: pima-indians-diabetes.csv Dai un'occhiata all'interno del file, dovresti vedere righe di dati come le seguenti: 6,148,72,35,0,33.6,0.627,50,1 1,85,66,29,0,26.6,0.351,31,0 8,183,64,0,0,23.3,0.672,32,1 1,89,66,23,94,28.1,0.167,21,0 0,137,40,35,168,43.1,2.288,33,1 Ora possiamo caricare il file come matrice di numeri usando la funzione NumPy loadtxt() . Sono disponibili otto variabili di input e una variabile di output (l'ultima colonna). Impareremo un modello per mappare righe di variabili di input (X) su una variabile di output (y), che spesso riassumiamo come y = f(X) . Le variabili possono essere così riassunte: Variabili di ingresso (X): Numero di volte incinta Concentrazione di glucosio plasmatico a 2 ore in un test di tolleranza al glucosio orale Pressione diastolica (mm Hg) Spessore della piega cutanea del tricipite (mm) Insulina sierica di 2 ore (mu U/ml) Indice di massa corporea (peso in kg/(altezza in m)^2) Funzione genealogica del diabete Età (anni) Variabili di uscita (y): Classe variabile (0 o 1) Una volta che il file CSV è stato caricato in memoria, possiamo dividere le colonne di dati in variabili di input e output. I dati verranno archiviati in un array 2D in cui la prima dimensione è righe e la seconda dimensione è colonne, ad esempio [righe, colonne]. Possiamo dividere l'array in due array selezionando sottoinsiemi di colonne usando l' operatore di NumPy ":" Possiamo selezionare le prime 8 colonne dall'indice 0 all'indice 7 tramite l'espressione 0:8. Possiamo quindi selezionare la colonna di output (la 9a variabile) tramite l'indice 8. ( Perchè ricordiamo che gli indici partono da zero non da 1 ) # Carichiamo il Dataset dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',') # dividiamo le variabili in input (X) e output (y) X = dataset[:,0:8] y = dataset[:,8] Siamo ora pronti per definire il nostro modello di rete neurale. Nota , il set di dati ha 9 colonne e l'intervallo 0:8 selezionerà le colonne da 0 a 7, fermandosi prima dell'indice 8. 2. Definire il modello Keras I modelli in Keras sono definiti come una sequenza di livelli. Creiamo un modello sequenziale e aggiungiamo livelli uno alla volta finché non siamo soddisfatti della nostra architettura di rete. La prima cosa da fare è assicurarsi che il livello di input abbia il giusto numero di funzioni di input. Questo può essere specificato quando si crea il primo livello con l' argomento input_dim e lo si imposta su 8 per le 8 variabili di input. Come facciamo a sapere il numero di strati e i loro tipi? Questa è una domanda molto difficile. In questo esempio, utilizzeremo una struttura di rete completamente connessa con tre livelli. I livelli completamente connessi vengono definiti utilizzando la classe Dense . Possiamo specificare il numero di neuroni o nodi nel livello come primo argomento e specificare la funzione di attivazione utilizzando l' argomento di attivazione . Useremo la funzione di attivazione dell'unità lineare rettificata denominata ReLU sui primi due strati e la funzione Sigmoid nello strato di output. In passato le funzioni di attivazione Sigmoid e Tanh erano preferite per tutti i livelli. Al giorno d'oggi, si ottengono prestazioni migliori utilizzando la funzione di attivazione ReLU. Usiamo un sigmoid sul livello di output per garantire che il nostro output di rete sia compreso tra 0 e 1 e sia facile da mappare su una probabilità di classe 1 o agganciare a una classificazione rigida di una delle classi con una soglia predefinita di 0,5. Possiamo mettere insieme il tutto aggiungendo ogni strato: Il modello prevede righe di dati con 8 variabili (l' argomento input_dim=8 ) Il primo livello nascosto ha 12 nodi e utilizza la funzione di attivazione di relu. Il secondo livello nascosto ha 8 nodi e utilizza la funzione di attivazione relu. Il livello di output ha un nodo e utilizza la funzione di attivazione sigmoidea. # Definiamo il modello di keras model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) Nota , la cosa più confusa qui è che la forma dell'input nel modello è definita come un argomento sul primo livello nascosto. Ciò significa che la riga di codice che aggiunge il primo livello Denso sta facendo 2 cose, definendo il livello di input o visibile e il primo livello nascosto. 3. Compila il modello Keras Ora che il modello è definito, possiamo compilarlo . La compilazione del modello utilizza le efficienti librerie numeriche sotto le coperte (i cosiddetti backend) come Theano o TensorFlow. Il backend sceglie automaticamente il modo migliore per rappresentare la rete per l'addestramento e fare previsioni da eseguire sul tuo hardware, come CPU o GPU . Durante la compilazione, è necessario specificare alcune proprietà aggiuntive richieste durante l'addestramento della rete. Ricorda che addestrare una rete significa trovare il miglior set di pesi per mappare gli input sugli output nel nostro set di dati. Dobbiamo specificare la funzione di perdita da utilizzare per valutare un insieme di pesi, l'ottimizzatore viene utilizzato per cercare diversi pesi per la rete ed eventuali metriche facoltative che vorremmo raccogliere e segnalare durante l'allenamento. In questo caso, useremo l'entropia incrociata come argomento di perdita . Questa perdita è per problemi di classificazione binaria ed è definita in Keras come " binary_crossentropy ". Definiremo l' ottimizzatore come l'efficiente algoritmo di discesa del gradiente stocastico “ adam ”. Questa è una versione popolare della discesa in pendenza perché si sintonizza automaticamente e dà buoni risultati in un'ampia gamma di problemi. Infine, poiché si tratta di un problema di classificazione, raccoglieremo e riporteremo l'accuratezza della classificazione, definita tramite l' argomento delle metriche . # compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 4. Alleniamo il modello di deep learning Abbiamo definito il nostro modello e lo abbiamo compilato pronto per un calcolo efficiente. Ora è il momento di eseguire il modello su alcuni dati. Possiamo addestrare o adattare il nostro modello ai nostri dati caricati chiamando la funzione fit() sul modello. L'addestramento avviene in epoche e ogni epoca è suddivisa in lotti. Epoch : un passaggio attraverso tutte le righe nel set di dati di addestramento. batch_size : uno o più campioni considerati dal modello entro un'epoch prima dell'aggiornamento dei pesi. Un'epoch è composta da uno o più lotti in , in base alla batch_size del lotto scelta e il modello è adatto per molte epoch. Il processo di addestramento verrà eseguito per un numero fisso di iterazioni attraverso il set di dati chiamato epochs, che dobbiamo specificare utilizzando l' argomento epochs . Dobbiamo anche impostare il numero di righe del set di dati che vengono considerate prima che i pesi del modello vengano aggiornati all'interno di ogni epoca, chiamata dimensione batch e impostata utilizzando l' argomento batch_size . Per questo problema, eseguiremo un numero limitato di epochh (150) e utilizzeremo una dimensione batch relativamente piccola di 10. Queste configurazioni possono essere scelte sperimentalmente per tentativi ed errori. Vogliamo addestrare il modello a sufficienza in modo che apprenda una buona (o abbastanza buona) mappatura di righe di dati di input alla classificazione di output. Il modello avrà sempre qualche errore, ma la quantità di errore si livellerà dopo un certo punto per una determinata configurazione del modello. Questo si chiama convergenza del modello. # Alleniamo la nostra rete model.fit(X, y, epochs=150, batch_size=10) È qui che avviene il lavoro sulla tua CPU o GPU 5. Valuta il modello Keras Abbiamo addestrato la nostra rete neurale sull'intero set di dati e possiamo valutare le prestazioni della rete sullo stesso set di dati. Questo ci darà solo un'idea di quanto bene abbiamo modellato il set di dati (es. precisione del treno), ma non abbiamo idea di quanto bene l'algoritmo potrebbe funzionare su nuovi dati. Lo abbiamo fatto per semplicità, ma idealmente potresti separare i tuoi dati in set di dati di training e test per il training e la valutazione del tuo modello. Puoi valutare il tuo modello sul tuo set di dati di addestramento usando la funzione Evaluation() sul tuo modello e passargli lo stesso input e output usati per addestrare il modello. Questo genererà una previsione per ogni coppia di input e output e raccoglierà i punteggi, inclusa la perdita media e tutte le metriche che hai configurato, come l'accuratezza. La funzione di evaluate() restituirà un elenco con due valori. Il primo sarà la perdita del modello sul set di dati e il secondo sarà l'accuratezza del modello sul set di dati. Siamo interessati solo a riportare l'accuratezza, quindi ignoreremo il valore della perdita. # Valutiamo le prestazioni della nostra rete _, accuracy = model.evaluate(X, y) print('Accuratezza: %.2f' % (accuracy*100)) 6. Mettiamo tutto insieme Hai appena visto come creare facilmente il tuo primo modello di rete neurale in Keras. Leghiamo tutto insieme in un esempio di codice completo. # la mia prima rete neurale from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense # lCarichiamo il Dataset dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',') # Dividiamo le variabili in input e output X = dataset[:,0:8] y = dataset[:,8] # definiamo 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')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamo il modello sul dataset model.fit(X, y, epochs=150, batch_size=10) #Vediamo come se la cava _, accuracy = model.evaluate(X, y) print('Accuratezza: %.2f' % (accuracy*100)) Puoi copiare tutto il codice nel tuo file Python e salvarlo come " prima_rete_neurale_con_IAITALIA.py " nella stessa directory del tuo file di dati " pima-indians-diabetes.csv ". È quindi possibile eseguire il file Python come script dalla riga di comando (prompt dei comandi) come segue: python3 prima_rete_neurale_con_IAITALIA.py Eseguendo questo esempio, dovresti vedere un messaggio per ciascuna delle 150 epoche che stampa la perdita e l'accuratezza, seguito dalla valutazione finale del modello addestrato sul set di dati di addestramento. Ci vogliono circa 10 secondi per l'esecuzione sulla mia workstation in esecuzione sulla CPU. Idealmente, vorremmo che la perdita andasse a zero e la precisione andasse a 1,0 (ad es. 100%). Questo non è possibile per nessuno ma per i più banali problemi di apprendimento automatico. Invece, avremo sempre qualche errore nel nostro modello. L'obiettivo è scegliere una configurazione del modello e una configurazione di addestramento che ottengano la perdita più bassa e la massima precisione possibile per un determinato set di dati. 768/768 [==============================] - 0s 63us/step - loss: 0.4817 - acc: 0.7708 Epoch 147/150 768/768 [==============================] - 0s 63us/step - loss: 0.4764 - acc: 0.7747 Epoch 148/150 768/768 [==============================] - 0s 63us/step - loss: 0.4737 - acc: 0.7682 Epoch 149/150 768/768 [==============================] - 0s 64us/step - loss: 0.4730 - acc: 0.7747 Epoch 150/150 768/768 [==============================] - 0s 63us/step - loss: 0.4754 - acc: 0.7799 768/768 [==============================] - 0s 38us/step Accuracy: 76.56 Nota, se provi a eseguire questo esempio in un notebook IPython o Jupyter potresti ricevere un errore. Il motivo sono le barre di avanzamento dell'output durante l'allenamento. Puoi facilmente disattivarli impostando verbose=0 nella chiamata alle funzioni fit() e Evaluation() , ad esempio: # Allenare il modello senza quelle barre di avanzamento fighissime model.fit(X, y, epochs=150, batch_size=10, verbose=0) # evaluate the keras model _, accuracy = model.evaluate(X, y, verbose=0) 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. Che punteggio hai ottenuto? Pubblica i tuoi risultati nei commenti qui sotto. Le reti neurali sono un algoritmo stocastico, il che significa che lo stesso algoritmo sugli stessi dati può addestrare un modello diverso con abilità diverse ogni volta che viene eseguito il codice. La varianza nelle prestazioni del modello significa che per ottenere un'approssimazione ragionevole delle prestazioni del modello, potrebbe essere necessario adattarlo più volte e calcolare la media dei punteggi di precisione. Ad esempio, di seguito sono riportati i punteggi di precisione della ripetizione dell'esempio 5 volte: Accuracy: 75.00 Accuracy: 77.73 Accuracy: 77.60 Accuracy: 78.12 Accuracy: 76.17 Possiamo vedere che tutti i punteggi di precisione sono intorno al 77% e la media è del 76,924%. 7. Come Fare previsioni dopo aver allenato il modello La domanda numero uno che ci viene fatta è: Dopo aver addestrato il mio modello, come posso usarlo per fare previsioni su nuovi dati? Ottima domanda. Possiamo adattare l'esempio sopra e usarlo per generare previsioni sul set di dati di addestramento, fingendo che sia un nuovo set di dati che non abbiamo mai visto prima. Fare previsioni è facile come chiamare la funzione predict() sul modello. Stiamo utilizzando una funzione di attivazione sigmoide sul livello di output, quindi le previsioni saranno una probabilità compresa tra 0 e 1. Possiamo facilmente convertirle in una previsione binaria nitida per questa attività di classificazione arrotondandole. Per esempio: # Facciamo previsioni usando il set di dati X predictions = model.predict(X) # round predictions rounded = [round(x[0]) for x in predictions] In alternativa, possiamo convertire la probabilità in 0 o 1 per prevedere direttamente classi nitide, ad esempio: # Creiamo una classe di previsione, che non fa altro di arrotondare a 1 (quindi paziente malato) se la previsione è maggiore allo 0.5 che corrisponde al 50% predictions = (model.predict(X) > 0.5).astype(int) L'esempio completo seguente effettua previsioni per ogni esempio nel set di dati, quindi stampa i dati di input, la classe prevista e la classe prevista per i primi 5 esempi nel set di dati. # la mia prima rete neurale from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense # lCarichiamo il Dataset dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',') # Dividiamo le variabili in input e output X = dataset[:,0:8] y = dataset[:,8] # definiamo 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')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamo il modello sul dataset model.fit(X, y, epochs=150, batch_size=10) #Vediamo come se la cava _, accuracy = model.evaluate(X, y) print('Accuratezza: %.2f' % (accuracy*100)) # Facciamo un previsione sul set di dati di X predictions = (model.predict(X) > 0.5).astype(int) # Stampiamo le prime 5 for i in range(5): print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i])) L'esecuzione dell'esempio non mostra la barra di avanzamento come prima poiché abbiamo impostato l'argomento dettagliato su 0. Dopo che il modello è stato adattato, vengono effettuate previsioni per tutti gli esempi nel set di dati e le righe di input e il valore della classe previsto per i primi 5 esempi vengono stampati e confrontati con il valore della classe previsto. Possiamo vedere che la maggior parte delle righe sono previste correttamente. In effetti, ci aspetteremmo che circa il 76,9% delle righe fosse previsto correttamente in base alle prestazioni stimate del modello nella sezione precedente. [6.0, 148.0, 72.0, 35.0, 0.0, 33.6, 0.627, 50.0] => 0 (expected 1) [1.0, 85.0, 66.0, 29.0, 0.0, 26.6, 0.351, 31.0] => 0 (expected 0) [8.0, 183.0, 64.0, 0.0, 0.0, 23.3, 0.672, 32.0] => 1 (expected 1) [1.0, 89.0, 66.0, 23.0, 94.0, 28.1, 0.167, 21.0] => 0 (expected 0) [0.0, 137.0, 40.0, 35.0, 168.0, 43.1, 2.288, 33.0] => 1 (expected 1) Riepilogo tutorial Keras In questo post, hai scoperto come creare il tuo primo modello di rete neurale utilizzando la potente libreria Keras Python per il deep learning. In particolare, hai appreso i sei passaggi chiave nell'utilizzo di Keras per creare una rete neurale o un modello di deep learning, passo dopo passo tra cui: Come caricare i dati. Come definire una rete neurale in Keras. Come compilare un modello Keras utilizzando l'efficiente backend numerico. Come addestrare un modello sui dati. Come valutare un modello sui dati. Come fare previsioni con il modello. Hai domande su Keras o su questo tutorial? Fai la tua domanda nei commenti e faremo del nostro meglio per rispondere. Estensioni del tutorial di Keras Ben fatto, hai sviluppato con successo la tua prima rete neurale utilizzando la libreria di deep learning Keras in Python. Questa sezione fornisce alcune estensioni a questo tutorial che potresti voler esplorare. Accorda il modello. Modificare la configurazione del modello o il processo di addestramento e vedere se è possibile migliorare le prestazioni del modello, ad esempio ottenere una precisione superiore al 76%. Salva il modello . Aggiorna il tutorial per salvare il modello su file, quindi caricalo in un secondo momento e utilizzalo per fare previsioni Set di dati di treno e test separati . Suddividi il set di dati caricato in un treno e un set di test (diviso in base alle righe) e usa un set per addestrare il modello e l'altro per stimare le prestazioni del modello sui nuovi dati. Curve di apprendimento della trama . La funzione fit() restituisce un oggetto cronologia che riassume la perdita e l'accuratezza alla fine di ogni epoca. Crea grafici lineari di questi dati, chiamati curve di apprendimento. Scopri un nuovo set di dati . Aggiorna il tutorial per utilizzare un set di dati tabulare diverso, magari dall'UCI Machine Learning Repository . Grazie per la lettura, qui sotto potrai lasciare commenti o leggere post correlati.

  • Come salvare e caricare il tuo modello di deep learning o apprendimento profondo

    Keras è una libreria Python semplice e potente per il deep learning. Dato che l'addestramento dei modelli di deep learning può richiedere ore, giorni e persino settimane, è importante sapere come salvarli e caricarli dal disco. In questo post scoprirai come salvare i tuoi modelli Keras su file e caricarli di nuovo per fare previsioni. Dopo aver letto questo tutorial saprai: Come salvare i pesi del modello e l'architettura del modello in file separati. Come salvare l'architettura del modello in formato YAML e JSON. Come salvare i pesi e l'architettura del modello in un unico file per un uso successivo. Prerequisiti Tutorial: Se non sai perchè utilizzeremo python, clicca qui Se non conosci gli algoritmi , clicca qui Se non sai creare reti neurali , clicca qui Se non sai cosa è un perceptron , clicca qui Se non conosci le principali libreire di python , clicca qui Se non hai ancora installato Python, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Introduzione Keras separa le preoccupazioni relative al salvataggio dell'architettura del modello e al salvataggio del peso del modello. I pesi dei modelli vengono salvati nel formato HDF5 . Questo è un formato griglia ideale per memorizzare matrici di numeri multidimensionali. La struttura del modello può essere descritta e salvata utilizzando due diversi formati: JSON e YAML. In questo post esamineremo due esempi di salvataggio e caricamento del modello su file: Salva modello in JSON. Salva modello in YAML. Ogni esempio dimostrerà anche il salvataggio e il caricamento dei pesi del modello su file formattati HDF5. Gli esempi utilizzeranno la stessa semplice rete addestrata sull'inizio del set di dati di classificazione binaria del diabete da parte degli indiani Pima. Questo è un piccolo set di dati che contiene tutti i dati numerici ed è facile da lavorare. Puoi scaricare questo set di dati e inserirlo nella tua directory di lavoro con il nome del file " pima-indians-diabetes.csv " ( scarica da qui ). Nota : il salvataggio dei modelli richiede l'installazione della libreria h5py. Puoi installarlo facilmente come segue: sudo pip install h5py #se hai python <3 sudo pip3 install h5py #se hai python >=3 !pip install h5py #se stai lavorando su Coolab Salva il tuo modello di rete neurale in JSON JSON è un semplice formato di file per descrivere i dati in modo gerarchico. Keras offre la possibilità di descrivere qualsiasi modello utilizzando il formato JSON con una funzione to_json() . Questo può essere salvato su file e successivamente caricato tramite la funzione model_from_json() che creerà un nuovo modello dalla specifica JSON. I pesi vengono salvati direttamente dal modello utilizzando la funzione save_weights() e successivamente caricati utilizzando la funzione load_weights() simmetrica . L'esempio seguente addestra e valuta un modello semplice sul set di dati degli indiani Pima. Il modello viene quindi convertito in formato JSON e scritto in model.json nella directory locale. I pesi di rete vengono scritti in model.h5 nella directory locale. I dati del modello e del peso vengono caricati dai file salvati e viene creato un nuovo modello. È importante compilare il modello caricato prima che venga utilizzato. In questo modo le previsioni effettuate utilizzando il modello possono utilizzare il calcolo efficiente appropriato dal backend Keras. Il modello viene valutato allo stesso modo stampando lo stesso punteggio di valutazione. # Salviamo il nostro modello from keras.models import Sequential from keras.layers import Dense from keras.models import model_from_json import numpy import os # fissiamo un seme per essere in grado di replicare i nostri output numpy.random.seed(7) # Carichiamo il Dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") #dividiamo le variabili in input (X) e output (Y) X = dataset[:,0:8] Y = dataset[:,8] # Creiamo il nostro modellino 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, Y, epochs=150, batch_size=10, verbose=0) # Valutiamo il modello scores = model.evaluate(X, Y, verbose=0) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) # Modello ->> file json model_json = model.to_json() with open("model.json", "w") as json_file: json_file.write(model_json) # Pesi Modello ->> fil h5 model.save_weights("model.h5") print("Saved model to disk") # per ricaricarli quando ti serviranno... # Carichiamo il file json json_file = open('mdel.json', 'r') loaded_model_json = json_file.read() json_file.close() loaded_model = model_from_json(loaded_model_json) # Carichiamo i pesi loaded_model.load_weights("model.h5") print("Loaded model from disk") # Rivalutiamo il modello loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) score = loaded_model.evaluate(X, Y, verbose=0) print("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*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 esempio fornisce l'output seguente. acc: 78.78% Saved model to disk Loaded model from disk acc: 78.78% Salva il tuo modello di rete neurale su YAML Questo esempio è più o meno lo stesso dell'esempio JSON precedente, tranne per il fatto che il formato YAML viene utilizzato per la specifica del modello. Nota, questo esempio presuppone che tu abbia installato PyYAML 5, ad esempio: 1sudo pip install PyYAML In questo esempio, il modello viene descritto utilizzando YAML, salvato nel file model.yaml e successivamente caricato in un nuovo modello tramite la funzione model_from_yaml() . I pesi vengono gestiti come sopra nel formato HDF5 come model.h5 . # Salviamo il nostro modello from keras.models import Sequential from keras.layers import Dense from keras.models import model_from_json import numpy import os # fissiamo un seme per essere in grado di replicare i nostri output numpy.random.seed(7) # Carichiamo il Dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") #dividiamo le variabili in input (X) e output (Y) X = dataset[:,0:8] Y = dataset[:,8] # Creiamo il nostro modellino 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, Y, epochs=150, batch_size=10, verbose=0) # Valutiamo il modello scores = model.evaluate(X, Y, verbose=0) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) # Modello ->> file YAML model_yaml = model.to_yaml() with open("model.yaml", "w") as yaml_file: yaml_file.write(model_yaml) # Pesi Modello ->> file HDF5 model.save_weights("model.h5") print("Saved model to disk") # per ricaricarli quando ti serviranno... # Carichiamo il file YAML yaml_file = open('model.yaml', 'r') loaded_model_yaml = yaml_file.read() yaml_file.close() loaded_model = model_from_yaml(loaded_model_yaml) # Carichiamo i nostri pesi loaded_model.load_weights("model.h5") print("Loaded model from disk") # Rivalutiamo il modello loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) score = loaded_model.evaluate(X, Y, verbose=0) print("%s: %.2f%%" % (loaded_model.metrics_names[1], score[1]*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 dell'esempio mostra il seguente output. acc: 78.78% Saved model to disk Loaded model from disk acc: 78.78% Salva insieme pesi e architettura del modello Keras supporta anche un'interfaccia più semplice per salvare insieme i pesi del modello e l'architettura del modello in un unico file H5. Il salvataggio del modello in questo modo include tutto ciò che dobbiamo sapere sul modello, tra cui: Pesi del modello. Architettura del modello. Dettagli della compilazione del modello (perdita e metriche). Stato dell'ottimizzatore del modello. Ciò significa che possiamo caricare e utilizzare direttamente il modello, senza doverlo ricompilare come abbiamo fatto negli esempi precedenti. Nota : questo è il modo preferito per salvare e caricare il tuo modello Keras. Come salvare un modello Keras Puoi salvare il tuo modello chiamando la funzione save() sul modello e specificando il nome del file. L'esempio seguente lo dimostra adattando prima un modello, valutandolo e salvandolo nel file model.h5 . # Salviamo il nostro modello from keras.models import Sequential from keras.layers import Dense from keras.models import model_from_json import numpy import os # fissiamo un seme per essere in grado di replicare i nostri output numpy.random.seed(7) # Carichiamo il Dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") #dividiamo le variabili in input (X) e output (Y) X = dataset[:,0:8] Y = dataset[:,8] # Creiamo il nostro modellino 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, Y, epochs=150, batch_size=10, verbose=0) # Valutiamo il modello scores = model.evaluate(X, Y, verbose=0) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) # Salviamo modello e architettura della rete in un unico file model.save("model.h5") print("Saved model to disk") 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 si adatta al modello, riassume le prestazioni del modello sul set di dati di addestramento e salva il modello su file. acc: 77.73% Saved model to disk Successivamente possiamo caricare questo modello da file e usarlo. Come caricare un modello Keras Il tuo modello salvato può quindi essere caricato in un secondo momento chiamando la funzione load_model() e passando il nome del file. La funzione restituisce il modello con la stessa architettura e pesi. In questo caso, carichiamo il modello, riassumiamo l'architettura e la valutiamo sullo stesso set di dati per confermare che i pesi e l'architettura siano gli stessi. # Importiamo le libreire per caricare il modello from numpy import loadtxt from keras.models import load_model # Ricarichiamo il modello salvata model = load_model('model.h5') # Stampiamo li info base del modello model.summary() # Carichiamo il dataset dataset = loadtxt("pima-indians-diabetes.csv", delimiter=",") # Dividiamo input e output X = dataset[:,0:8] Y = dataset[:,8] # Valutiamo il modello score = model.evaluate(X, Y, verbose=0) print("%s: %.2f%%" % (model.metrics_names[1], score[1]*100)) L'esecuzione dell'esempio carica prima il modello, stampa un riepilogo dell'architettura del modello, quindi valuta il modello caricato sullo stesso set di dati. Considera di eseguire l'esempio alcune volte e confrontare il risultato medio. Il modello ottiene lo stesso punteggio di accuratezza che in questo caso è del 77%. _________________________________________________________________ Layer (type) Output Shape Param # ================================================= dense_1 (Dense) (None, 12) 108 _________________________________________________________________ dense_2 (Dense) (None, 8) 104 _________________________________________________________________ dense_3 (Dense) (None, 1) 9 ================================================= Total params: 221 Trainable params: 221 Non-trainable params: 0 _________________________________________________________________ acc: 77.73% Riepilogo In questo post, hai scoperto come serializzare i tuoi modelli di deep learning Keras. Hai imparato come salvare i tuoi modelli addestrati su file e in seguito caricarli e usarli per fare previsioni. Hai anche appreso che i pesi del modello possono essere facilmente archiviati utilizzando il formato HDF5 e che la struttura di rete può essere salvata in formato JSON o YAML. Hai domande sul salvataggio dei tuoi modelli di deep learning o su questo post? Poni le tue domande nei commenti e faremo del nostro meglio per risponderti.

  • Guida Completa Algoritmi di Machine Learning

    Gli algoritmi sono una parte molto importante del machine learning. Devi capire come funzionano per fare progressi nel campo. In questo post scoprirai un mini corso di algoritmi di apprendimento automatico diviso in 14 parti che puoi seguire per comprendere finalmente gli algoritmi di apprendimento automatico. Copriremo molto terreno in questo corso e ti divertirai un mondo. Il nostro consiglio è quello di leggere una lezione al giorno e rifletterci su. Magari approfondirla leggendo articoli correlati sul nostro blog utilizzando la barra di ricerca. A chi è rivolto questo corso? Prima di iniziare, assicuriamoci che tu sia nel posto giusto. Questo corso è per principianti curiosi di conoscere gli algoritmi di machine learning. Questo corso non presuppone che tu sappia come scrivere codice. Questo corso non presuppone un background in matematica. Questo corso non presuppone un background in teoria dell'apprendimento automatico. Questo mini-corso ti porterà in un tour guidato degli algoritmi di apprendimento automatico dalle basi e attraverso 10 tecniche principali. Visiteremo ogni algoritmo per darti un'idea di come funziona, ma non approfondire troppo per mantenere le cose in movimento. Se stai cercando guide più avanzate clicca qui Panoramica del mini-corso Diamo un'occhiata a cosa tratteremo nelle prossime 14 lezioni. Potrebbe essere necessario tornare su questo post ancora e ancora, quindi potresti volerlo aggiungere ai segnalibri. Questo mini-corso è suddiviso in quattro parti: Fondamenti di algoritmi, Algoritmi lineari, Algoritmi non lineari e Algoritmi di insieme. Fondamenti di algoritmi Lezione 1 : Come parlare di dati in Machine Learning Lezione 2 : Principio alla base di tutti gli algoritmi Lezione 3 : Algoritmi parametrici e non parametrici Lezione 4 : Bias, varianza e trade-off Algoritmi lineari Lezione 5 : Regressione lineare Lezione 6 : Regressione logistica Lezione 7 : Analisi discriminante lineare Algoritmi non lineari Lezione 8 : Classificazione e alberi di regressione Lezione 9 : Bayes Lezione 10 : kNN Lezione 11 : Imparare la quantizzazione dei vettori Lezione 12 : SVM Algoritmi d'insieme Lezione 13 : foresta casuale Lezione 14 : Boosting e AdaBoost Lezione 1: Come parlare di dati in Machine Learning I dati svolgono un ruolo importante nell'apprendimento automatico. È importante comprendere e utilizzare la terminologia corretta quando si parla di dati. Come pensi ai dati? Pensa a un foglio di calcolo. Hai colonne, righe e celle. La prospettiva statistica dell'apprendimento automatico inquadra i dati nel contesto di un'ipotetica funzione (f) che l'algoritmo di apprendimento automatico mira ad apprendere. Date alcune variabili di input (Input) la funzione risponde alla domanda su quale sia la variabile di output prevista (Output). Uscita = funzione_magica(Ingresso) Gli ingressi e le uscite possono essere chiamati variabili o vettori. La prospettiva dell'informatica utilizza una riga di dati per descrivere un'entità (come una persona) o un'osservazione su un'entità. In quanto tali, le colonne di una riga sono spesso denominate attributi dell'osservazione e le righe stesse sono chiamate istanze. Lezione 2: Il principio alla base di tutti gli algoritmi Esiste un principio comune alla base di tutti gli algoritmi di apprendimento automatico supervisionati per la modellazione predittiva. Gli algoritmi di apprendimento automatico sono descritti come l'apprendimento di una funzione target (f) che mappa al meglio le variabili di input (X) su una variabile di output (Y). Y = f(X) Questo è un compito di apprendimento generale in cui vorremmo fare previsioni in futuro (Y) dati nuovi esempi di variabili di input (X). Non sappiamo che aspetto abbia la funzione (f) o la sua forma. Se lo facessimo, lo useremmo direttamente e non avremmo bisogno di impararlo dai dati usando algoritmi di apprendimento automatico. Il tipo più comune di machine learning consiste nell'apprendere la mappatura Y = f(X) per fare previsioni di Y per il nuovo X. Questo è chiamato modellazione predittiva o analisi predittiva e il nostro obiettivo è fare le previsioni più accurate possibili. Lezione 3: Algoritmi parametrici e non parametrici Che cos'è un algoritmo di apprendimento automatico parametrico e in che cosa è diverso da un algoritmo di apprendimento automatico non parametrico? I presupposti possono semplificare notevolmente il processo di apprendimento, ma possono anche limitare ciò che può essere appreso. Gli algoritmi che semplificano la funzione in una forma nota sono chiamati algoritmi di apprendimento automatico parametrici. Gli algoritmi prevedono due passaggi: Seleziona un modulo per la funzione. Impara i coefficienti per la funzione dai dati di addestramento. Alcuni esempi di algoritmi di apprendimento automatico parametrici sono la regressione lineare e la regressione logistica. Gli algoritmi che non fanno ipotesi solide sulla forma della funzione di mappatura sono chiamati algoritmi di apprendimento automatico non parametrici. Non facendo supposizioni, sono liberi di apprendere qualsiasi forma funzionale dai dati di allenamento. I metodi non parametrici sono spesso più flessibili, ottengono una migliore precisione ma richiedono molti più dati e tempo di addestramento. Esempi di algoritmi non parametrici includono Support Vector Machines, Neural Networks e Decision Trees. Lezione 4: Bias, varianza e trade-off Gli algoritmi di apprendimento automatico possono essere meglio compresi attraverso la lente del compromesso tra bias e varianza. I bias sono le ipotesi semplificative fatte da un modello per rendere più facile l'apprendimento della funzione target. Generalmente gli algoritmi parametrici hanno un'elevata distorsione che li rende veloci da apprendere e più facili da capire ma generalmente meno flessibili. A loro volta hanno prestazioni predittive inferiori su problemi complessi che non soddisfano le ipotesi semplificative del bias degli algoritmi. Gli alberi decisionali sono un esempio di algoritmo a bassa polarizzazione, mentre la regressione lineare è un esempio di algoritmo ad alta distorsione. La varianza è la quantità che cambierà la stima della funzione target se sono stati utilizzati dati di addestramento diversi. La funzione target viene stimata dai dati di addestramento da un algoritmo di apprendimento automatico, quindi dovremmo aspettarci che l'algoritmo abbia una varianza, non zero. L'algoritmo k-Nearest Neighbors è un esempio di algoritmo a varianza elevata, mentre l'analisi discriminante lineare è un esempio di algoritmo a bassa varianza. L'obiettivo di qualsiasi algoritmo di machine learning di modellazione predittiva è ottenere una bassa distorsione e una bassa varianza. A sua volta, l'algoritmo dovrebbe ottenere buone prestazioni di previsione. La parametrizzazione degli algoritmi di apprendimento automatico è spesso una battaglia per bilanciare pregiudizi e varianze. Aumentando la distorsione diminuirà la varianza. Aumentando la varianza si riduce la distorsione. Lezione 5: Algoritmo di regressione lineare La regressione lineare è forse uno degli algoritmi più conosciuti e ben compresi nella statistica e nell'apprendimento automatico. Non è una tecnica della statistica? La modellazione predittiva riguarda principalmente la minimizzazione dell'errore di un modello o la realizzazione delle previsioni più accurate possibili, a scapito della spiegabilità. Prenderemo in prestito, riutilizzeremo e ruberemo algoritmi da molti campi diversi, comprese le statistiche, e li utilizzeremo a questi fini. La rappresentazione della regressione lineare è un'equazione che descrive una retta che meglio si adatta alla relazione tra le variabili di input (x) e le variabili di output (y), trovando pesi specifici per le variabili di input detti coefficienti (B). Per esempio: y = B0 + B1 * x Prevediamo y dato l'input x e l'obiettivo dell'algoritmo di apprendimento della regressione lineare è trovare i valori per i coefficienti B0 e B1. Diverse tecniche possono essere utilizzate per apprendere il modello di regressione lineare dai dati, come una soluzione di algebra lineare per i minimi quadrati ordinari e l'ottimizzazione della discesa del gradiente. La regressione lineare esiste da più di 200 anni ed è stata ampiamente studiata. Alcune buone regole pratiche quando si utilizza questa tecnica sono rimuovere variabili molto simili (correlate) e rimuovere il rumore dai dati, se possibile. È una tecnica veloce e semplice e un buon primo algoritmo da provare. Lezione 6: Algoritmo di regressione logistica La regressione logistica è un'altra tecnica presa in prestito dall'apprendimento automatico dal campo della statistica. È il metodo di riferimento per i problemi di classificazione binaria (problemi con due valori di classe). La regressione logistica è come la regressione lineare in quanto l'obiettivo è trovare i valori per i coefficienti che ponderano ciascuna variabile di input. A differenza della regressione lineare, la previsione per l'output viene trasformata utilizzando una funzione non lineare chiamata funzione logistica. La funzione logistica ha l'aspetto di una grande S e trasformerà qualsiasi valore nell'intervallo da 0 a 1. Ciò è utile perché possiamo applicare una regola all'output della funzione logistica per agganciare i valori a 0 e 1 (ad esempio IF inferiore a 0,5 quindi output 1) e prevedere un valore di classe. A causa del modo in cui viene appreso il modello, le previsioni fatte dalla regressione logistica possono essere utilizzate anche come probabilità di una data istanza di dati appartenente alla classe 0 o alla classe 1. Ciò può essere utile su problemi per i quali è necessario fornire più motivazioni per una predizione. Come la regressione lineare, la regressione logistica funziona meglio quando si rimuovono attributi non correlati alla variabile di output e attributi molto simili (correlati) tra loro. È un modello veloce da imparare ed efficace sui problemi di classificazione binaria. Lezione 7: Algoritmo di analisi discriminante lineare La regressione logistica è un algoritmo di classificazione tradizionalmente limitato a soli problemi di classificazione a due classi. Se hai più di due classi, l'algoritmo di analisi discriminante lineare è la tecnica di classificazione lineare preferita. La rappresentazione di LDA è piuttosto semplice. Consiste in proprietà statistiche dei tuoi dati, calcolate per ogni classe. Per una singola variabile di input questo include: Il valore medio per ciascuna classe. La varianza calcolata tra tutte le classi. Le previsioni vengono effettuate calcolando un valore discriminante per ciascuna classe ed effettuando una previsione per la classe con il valore maggiore. La tecnica presuppone che i dati abbiano una distribuzione gaussiana (curva a campana), quindi è una buona idea rimuovere in anticipo i valori anomali dai dati. È un metodo semplice e potente per classificare i problemi di modellazione predittiva. Lezione 8: Classificazione e alberi di regressione Gli alberi decisionali sono un tipo importante di algoritmo per l'apprendimento automatico della modellazione predittiva. La rappresentazione per il modello dell'albero decisionale è un albero binario. Questo è il tuo albero binario da algoritmi e strutture dati, niente di troppo sofisticato. Ogni nodo rappresenta una singola variabile di input (x) e un punto di divisione su quella variabile (supponendo che la variabile sia numerica). I nodi foglia dell'albero contengono una variabile di output (y) che viene utilizzata per fare una previsione. Le previsioni vengono fatte percorrendo le divisioni dell'albero fino ad arrivare a un nodo foglia e produrre il valore della classe in quel nodo foglia. Gli alberi sono veloci da imparare e molto veloci da fare previsioni. Sono inoltre spesso accurati per un'ampia gamma di problemi e non richiedono alcuna preparazione speciale per i dati. Gli alberi decisionali hanno un'elevata varianza e possono fornire previsioni più accurate se utilizzati in un insieme, un argomento che tratteremo nella lezione 13 e nella lezione 14. Lezione 9: Algoritmo Naive Bayes Naive Bayes è un algoritmo semplice ma sorprendentemente potente per la modellazione predittiva. Il modello è composto da due tipi di probabilità che possono essere calcolate direttamente dai dati di allenamento: La probabilità di ogni classe. La probabilità condizionata per ogni classe dato ogni valore x. Una volta calcolato, il modello di probabilità può essere utilizzato per fare previsioni per nuovi dati utilizzando il teorema di Bayes. Quando i tuoi dati sono a valori reali, è comune assumere una distribuzione gaussiana (curva a campana) in modo da poter stimare facilmente queste probabilità. Naive Bayes è chiamato ingenuo perché presuppone che ogni variabile di input sia indipendente. Questo è un presupposto forte e non realistico per i dati reali, tuttavia, la tecnica è molto efficace su una vasta gamma di problemi complessi. Lezione 10: Algoritmo K-Nearest Neighbors L'algoritmo KNN è molto semplice e molto efficace. La rappresentazione del modello per KNN è l'intero set di dati di addestramento. Semplice vero? Le previsioni per un nuovo punto dati vengono effettuate cercando nell'intero set di addestramento le K istanze più simili (le vicine) e riassumendo la variabile di output per quelle K istanze. Per la regressione questa potrebbe essere la variabile di output media, nella classificazione potrebbe essere il valore della classe mode (o più comune). Il trucco sta nel come determinare la somiglianza tra le istanze di dati. La tecnica più semplice se i tuoi attributi sono tutti della stessa scala (tutti in pollici per esempio) consiste nell'utilizzare la distanza euclidea, un numero che puoi calcolare direttamente in base alle differenze tra ciascuna variabile di input. KNN può richiedere molta memoria o spazio per archiviare tutti i dati, ma esegue un calcolo (o apprende) solo quando è necessaria una previsione, appena in tempo. Puoi anche aggiornare e curare le tue istanze di formazione nel tempo per mantenere le previsioni accurate. L'idea di distanza o vicinanza può scomporsi in dimensioni molto elevate (molte variabili di input) che possono influire negativamente sulle prestazioni dell'algoritmo sul tuo problema. Questa è chiamata la maledizione della dimensionalità. Suggerisce di utilizzare solo quelle variabili di input che sono più rilevanti per prevedere la variabile di output. Lezione 11: Apprendimento della quantizzazione dei vettori Uno svantaggio di K-Nearest Neighbors è che è necessario aggrapparsi all'intero set di dati di addestramento. L' algoritmo di quantizzazione del vettore di apprendimento (o LVQ in breve) è un algoritmo di rete neurale artificiale che consente di scegliere a quante istanze di addestramento aggrapparsi e di apprendere esattamente come dovrebbero apparire tali istanze. Il vicino più simile (vettore la migliore corrispondenza) viene trovato calcolando la distanza tra ciascun vettore e la nuova istanza di dati. Il valore della classe o (valore reale in caso di regressione) per la migliore unità di corrispondenza viene quindi restituito come previsione. I risultati migliori si ottengono ridimensionando i dati in modo che abbiano lo stesso intervallo, ad esempio tra 0 e 1. Se scopri che KNN dà buoni risultati sul tuo set di dati, prova a utilizzare LVQ per ridurre i requisiti di memoria per l'archiviazione dell'intero set di dati di addestramento. Lezione 12: Supportare le macchine vettoriali Support Vector Machines sono forse uno degli algoritmi di machine learning più popolari e discussi. Un iperpiano è una linea che divide lo spazio della variabile di input. In SVM, viene selezionato un iperpiano per separare al meglio i punti nello spazio delle variabili di input in base alla loro classe, classe 0 o classe 1. In due dimensioni puoi visualizzarlo come una linea e supponiamo che tutti i nostri punti di input possano essere completamente separati da questa linea. L'algoritmo di apprendimento SVM trova i coefficienti che si traducono nella migliore separazione delle classi dall'iperpiano. La distanza tra l'iperpiano ei punti dati più vicini viene definita margine. L'iperpiano migliore o ottimale che può separare le due classi è la linea che ha il margine più grande. Solo questi punti sono rilevanti nella definizione dell'iperpiano e nella costruzione del classificatore. Questi punti sono chiamati vettori di supporto. Supportano o definiscono l'iperpiano. In pratica, viene utilizzato un algoritmo di ottimizzazione per trovare i valori dei coefficienti che massimizzano il margine. SVM potrebbe essere uno dei classificatori pronti all'uso più potenti e vale la pena provare sul tuo set di dati. Lezione 13: foresta casuale Random Forest è uno degli algoritmi di machine learning più popolari e più potenti. È un tipo di algoritmo di apprendimento automatico dell'insieme chiamato Bootstrap Aggregation o bagging. Il bootstrap è un potente metodo statistico per stimare una quantità da un campione di dati. Come un mezzo. Prendi molti campioni dei tuoi dati, calcola la media, quindi fai la media di tutti i tuoi valori medi per darti una stima migliore del vero valore medio. Nel bagging, viene utilizzato lo stesso approccio, ma invece per stimare interi modelli statistici, più comunemente alberi decisionali. Vengono prelevati più campioni dei dati di addestramento, quindi vengono costruiti modelli per ciascun campione di dati. Quando è necessario fare una previsione per nuovi dati, ogni modello effettua una previsione e la media delle previsioni viene calcolata per fornire una stima migliore del vero valore di output. La foresta casuale è una modifica a questo approccio in cui vengono creati alberi decisionali in modo che, anziché selezionare punti di divisione ottimali, vengano effettuate divisioni non ottimali introducendo la casualità. I modelli creati per ciascun campione di dati sono quindi più diversi di quanto non sarebbero altrimenti, ma pur sempre accurati nei loro modi unici e diversi. Combinando le loro previsioni si ottiene una migliore stima del vero valore di output sottostante. Se si ottengono buoni risultati con un algoritmo con varianza elevata (come gli alberi decisionali), spesso è possibile ottenere risultati migliori insaccando quell'algoritmo. Lezione 14: Potenziamento e AdaBoost Il boosting è una tecnica d'insieme che tenta di creare un classificatore forte da un numero di classificatori deboli. Questo viene fatto costruendo un modello dai dati di addestramento, quindi creando un secondo modello che tenta di correggere gli errori del primo modello. I modelli vengono aggiunti fino a quando il training set non viene previsto perfettamente o viene aggiunto un numero massimo di modelli. AdaBoost è stato il primo algoritmo di potenziamento di grande successo sviluppato per la classificazione binaria. È il miglior punto di partenza per comprendere il potenziamento. I moderni metodi di potenziamento si basano su AdaBoost, in particolare le macchine di potenziamento del gradiente stocastico. AdaBoost viene utilizzato con alberi decisionali brevi. Dopo aver creato il primo albero, le prestazioni dell'albero su ciascuna istanza di addestramento vengono utilizzate per valutare quanta attenzione l'albero successivo creato dovrebbe prestare a ciascuna istanza di addestramento. Ai dati di allenamento difficili da prevedere viene assegnato più peso, mentre alle istanze facili da prevedere viene assegnato meno peso. I modelli vengono creati in sequenza uno dopo l'altro, ciascuno aggiornando i pesi sulle istanze di addestramento che influiscono sull'apprendimento eseguito dall'albero successivo nella sequenza. Dopo che tutti gli alberi sono stati costruiti, vengono fatte previsioni per i nuovi dati e le prestazioni di ciascun albero vengono ponderate in base alla precisione dei dati di addestramento. Poiché viene prestata così tanta attenzione alla correzione degli errori da parte dell'algoritmo, è importante disporre di dati puliti con i valori anomali rimossi. Conclusioni del mini-corso Ce l'hai fatta. Molto bene! Prenditi un momento e guarda cosa hai imparato: Hai scoperto come parlare di dati nell'apprendimento automatico e dei principi alla base di tutti gli algoritmi di modellazione predittiva. Hai scoperto la differenza tra algoritmi parametrici e non parametrici e la differenza tra l'errore introdotto da bias e varianza. Hai scoperto tre algoritmi di apprendimento automatico lineare: regressione lineare, regressione logistica e analisi discriminante lineare. Sono stati introdotti 5 algoritmi non lineari: Classification and Regression Trees, Naive Bayes, K-Nearest Neighbors, Learning Vector Quantiization e Support Vector Machines. Infine, hai scoperto due degli algoritmi di ensemble più popolari: Bagging con Decision Trees e Boosting con AdaBoost. Non prendertela alla leggera, hai fatto molta strada in poco tempo. Questo è solo l'inizio del tuo viaggio con gli algoritmi di apprendimento automatico. Continua a esercitarti e a sviluppare le tue abilità. Ti è piaciuto questo mini-corso? Hai domande o punti critici? Condividilo con un tuo amico o collega. Lascia un commento e facci sapere.

  • Come costruire il tuo portfolio da data scientist

    Prerequisiti : Se non sai cosa è un datas cientist, clicca qui Se non sai come diventare data scientist freelance , clicca qui Se non conosci le librerie più usate nella data science, clicca qui Se non sai come diventare Data Scientist, clicca qui Completa piccoli progetti mirati e dimostra le tue abilità Un portfolio viene in genere utilizzato da web designer e architetti per mostrare esempi di lavori precedenti a potenziali clienti e datori di lavoro. Design, arte e fotografia sono esempi in cui il prodotto del lavoro è creativo ed empirico, dove dire a qualcuno che puoi farlo non ha lo stesso valore di mostrarlo. In questo post, ti convincerò che la creazione di un portfolio di machine learning ha valore per te, per gli altri e per la community. Scoprirai cos'è esattamente un portfolio di machine learning , i tipi di progetti che possono essere inclusi e come fare in modo che il tuo portfolio funzioni davvero per te. Noi del Team di I.A. Italia vogliamo sottolineare quanto sia importante avere una bacheca progetti, da inserire anche nel curriculum, quindi segui attentamente la guida. Vantaggi dell'avere portfolio di Data Science o Machine Learning Se hai appena iniziato come principiante nell'apprendimento automatico o sei un veterano incallito, un portfolio di apprendimento automatico può tenerti in carreggiata e dimostrare le tue abilità. La creazione di un portfolio di machine learning è un esercizio prezioso per te e per gli altri. Portfolio di Data Science : Vantaggi per te La creazione di una raccolta di progetti di apprendimento automatico completati può mantenerti concentrato, motivato e sfruttare i progetti futuri. Focus : ogni progetto ha uno scopo e un punto finale ben definiti. I piccoli progetti limitati negli sforzi e nelle risorse possono mantenere alta la velocità. Base di conoscenza : il corpus di progetti completati fornisce una base di conoscenza su cui riflettere e sfruttare mentre si spinge in progetti più lontani dalle zone di comfort. Traiettoria : ci sono così tante cose brillanti su cui indagare, ricordando a te stesso che stai cercando una raccolta coerente, i progetti possono essere usati come leva per tenerti in carreggiata. Portfolio di Data Science : Vantaggi per gli altri Un portafoglio di progetti completati può essere utilizzato da altri come indicatore di abilità specifiche, capacità di comunicare e dimostrazione di impulso. Competenze : un progetto può dimostrare le tue capacità in relazione a un dominio specifico del problema, uno strumento, uno stack tecnologico di libreria o un algoritmo. Comunicazione : un progetto deve essere compreso almeno in termini di scopo e risultati. La cura di un buon portfolio richiede ottime capacità comunicative che dimostrino tautologicamente la tua capacità di comunicare bene argomenti tecnici. Motivazione : lavorare e completare progetti collaterali, indipendentemente dalle dimensioni dell'ambito, richiede un certo livello di autodisciplina. Il fatto che tu sia riuscito a mettere insieme un portfolio è un monumento al tuo interesse per l'argomento e alla capacità di gestire il tuo tempo. Portfolio di Data Science : Vantaggi per la Comunità La condivisione dei tuoi progetti in pubblico estende i vantaggi alla più ampia comunità di machine learning. Coinvolgimento : un progetto pubblico può ottenere feedback da terze parti che possono fornire estensioni e miglioramenti da cui sia tu che la comunità stessa potete imparare. Punto di partenza : un progetto di portfolio pubblico può fornire il punto di partenza da cui gli altri possono imparare e costruire, magari per il loro piccolo progetto o qualcosa di serio. Caso di studio : un progetto pubblico può fornire un punto di studio forse per un comportamento di un algoritmo unico o interessante o per la scomposizione di un problema, la vera fonte di innovazione. Spero di averti convinto che la creazione di un portfolio di machine learning ha alcuni vantaggi che ti interessano. Successivamente, esamineremo cos'è esattamente un portfolio di machine learning. Come creare un portfolio di Data science o machine learning Un portfolio di data science è una raccolta di progetti indipendenti completati, ognuno dei quali utilizza in qualche modo l'apprendimento automatico. Il folio presenta la raccolta di progetti e consente la revisione dei singoli progetti. Cinque proprietà di un efficace portfolio di machine learning includono: Accessibile : sostengo di rendere pubblico il portfolio sotto forma di una pagina Web pubblicamente accessibile o di una raccolta di repository di codice pubblico. Vuoi che le persone trovino, leggano, commentino e utilizzino il tuo lavoro, se possibile. Piccolo : ogni progetto dovrebbe avere una portata ridotta in termini di impegno, risorse e, soprattutto, tempo (10-20 ore). Sei impegnato ed è difficile mantenere la concentrazione. Vedi la mia metodologia per i piccoli progetti. Completato : i piccoli progetti ti aiutano ad avere progetti finiti. Stabilisci un obiettivo di progetto modesto e raggiungilo. Come i mini-esperimenti, presenti i risultati dei tuoi successi e dei tuoi fallimenti, sono tutti insegnamenti utili. Indipendente : ogni progetto dovrebbe essere indipendente in modo che possa essere compreso isolatamente. Questo non significa che non puoi sfruttare il lavoro precedente, significa che il progetto ha senso da solo come pezzo di lavoro autonomo. Comprensibile : ogni progetto deve comunicare in modo chiaro ed efficace il suo scopo e i suoi risultati (almeno). Dedica un po' di tempo e assicurati che un nuovo paio di occhi capisca cosa hai fatto e perché è importante. Quattro tipi di idee per piccoli progetti che potrebbero ispirarti includono: Esaminare una proprietà di uno strumento di apprendimento automatico o di una libreria. Indagare il comportamento di un algoritmo di apprendimento automatico. Indagare e caratterizzare un set di dati o un problema di apprendimento automatico. Implementa un algoritmo di apprendimento automatico nel tuo linguaggio di programmazione preferito. Alcune idee per progetti che probabilmente non pensavi fossero pezzi di portfolio includono: Lavori del corso : la presentazione chiara degli appunti e dei compiti per un corso relativo all'apprendimento automatico (come un MOOC). Revisione del libro : la presentazione chiara degli appunti dalla lettura e dalla revisione di un libro di apprendimento automatico. Revisione del software : la tua presentazione chiara ed esempi funzionanti per l'utilizzo di uno strumento o una libreria software relativi all'apprendimento automatico. Partecipazione alla competizione : vengono presentati chiaramente note e risultati per la partecipazione a una competizione di apprendimento automatico, come Kaggle . Commento : un saggio in risposta a un post sul blog a tema di apprendimento automatico o la tua risposta dettagliata a una domanda relativa all'apprendimento automatico su un sito di domande e risposte come Quora o sul nostro forum Ora che sai cos'è un portfolio di machine learning e hai alcune idee sui progetti, diamo un'occhiata a come dare vita a cose straordinarie nel tuo portfolio. Come Rendere fantastico il tuo portfolio da datascientist Per far brillare il tuo portfolio, devi fare un po' di marketing leggero. Non preoccuparti, non è niente di viscido, è solo il buon vecchio stile che passa la voce. portafolio Data science : Utilizza un Archivio per il del codice Prendi in considerazione l'utilizzo di un repository di codice sorgente pubblico come GitHub o BitBucket che elenca naturalmente i tuoi progetti pubblici. Questi siti ti incoraggiano a fornire un file readme nella radice di ogni progetto che descriva di cosa tratta il progetto. Utilizzare questa funzione per descrivere chiaramente lo scopo e i risultati di ciascun progetto. Non aver paura di includere immagini, grafici, video e link. Fornire istruzioni univoche per scaricare il progetto e ricreare i risultati (se sono coinvolti codice o sperimentazione). Vuoi che le persone eseguano nuovamente il tuo lavoro, lo rendano il più semplice possibile (cioè digita questo per scaricare, quindi digita questo per compilarlo ed eseguirlo). portafolio Data science : Progetti curati Puoi mettere insieme qualsiasi vecchio progetto su GitHub, ma includere solo il tuo lavoro migliore, più chiaro e interessante nel tuo portfolio di machine learning. Cura i tuoi progetti come una galleria. Scegli quelli che dimostrano al meglio le tue capacità, interessi e capacità. Mostra quello che sai fare e quello che hai fatto. Queste idee di autopromozione possono alimentare i progetti che potresti voler affrontare. Sii chiaro nella tua visione, dove vuoi essere e quali progetti vuoi affrontare che ti aiuteranno ad arrivarci. portafolio Data science : Risultati presenti Dedica molto tempo a scrivere i risultati. Spiega come si relazionano con gli obiettivi del progetto. Spiega l'impatto che hanno o potrebbero avere nel dominio. Elenca le opportunità per le estensioni che vorresti o potresti esplorare se avessi un altro mese o un anno per approfondire il progetto. Crea tabelle, grafici e qualsiasi altra bella immagine che ti aiuti a raccontare la tua storia. Scrivi le tue scoperte come un post sul blog. Per i punti bonus, crea un breve cast dello schermo che mostra come hai ottenuto i risultati e una piccola presentazione in power point per cosa significa, pubblicalo su YouTube. Questo video può essere incorporato nel tuo post sul blog e collegato al file readme del repository del tuo progetto. A seconda dei risultati che hai e di quanto sono importanti per te (come fare bene in una competizione Kaggle), puoi considerare di creare un rapporto tecnico e caricarlo su scribd e caricare le tue diapositive su SlideShare. portafolio Data science : Promuovi il tuo lavoro Puoi condividere i dettagli di ogni progetto mentre lo finisci. Potresti completarne uno a settimana a seconda del numero di ore libere che puoi trovare per studio e/o lavoro. La condivisione di link sui social media è un buon inizio, come twitter, facebook e Google+. Ti esorto ad aggiungere ogni progetto (o solo i tuoi migliori progetti) come " progetti " su LinkedIn. Esempi di Portfolio da data scientist Che tu sia un analista di dati appena qualificato o un esperto di dati, avrai bisogno di un portafoglio che si apre. Sebbene i portafogli di analisi dei dati tradizionalmente mettano in risalto il tuo lavoro, devono anche mostrare la tua personalità, le tue capacità comunicative e il tuo marchio personale. Abbiamo per questo raccolto quelli che secondo noi sono i migliori portfolio di vari Data Scientist : Claudia ten Hoope Harrison Jansma Naledi Hollbruegge Tim Hopper Ger Inberg James Le Yan Holtz Anubhav Gupta Jessie-Raye Bauer Ti basterà cercarli su google per vedere sempre il loro portfolio aggiornato Il futuro dei Data scientist freelance L'idea di un portfolio di codici non è nuova, è stata inserita in GitHub. Ciò che è interessante è che nelle recenti interviste con data scientist e manager , vengono richiesti portfolio anche desiderati insieme alla partecipazione a concorsi di machine learning e al completamento della formazione online. Come il codice di esempio nelle interviste di programmazione, i portafogli di Machine Learning stanno diventando una parte seria delle assunzioni. Cerca esempi di portfolio di apprendimento automatico validi (o almeno compilati). Cerca persone che ottengono buoni risultati nelle competizioni di apprendimento automatico, in genere hanno una straordinaria raccolta di progetti descritti sui loro blog e nei loro repository di codice pubblici. Cerca collaboratori per progetti di apprendimento automatico open source, possono avere tutorial, applicazioni ed estensioni straordinarie per il software sui loro blog e repository di codice pubblico. Inizia ora. Scava tra i tuoi progetti e mettili insieme in una storia che spieghi le tue conoscenze, interessi o abilità che possiedi nell'apprendimento automatico. Grazie per la lettura Hai completato un progetto di machine learning o hai un portfolio di progetti? Lascia un commento e mostrali.

bottom of page