Risultati Ricerca Intelligenza Artificiale Italia
203 elementi trovati per ""
- Che cosa è il Deep Learning ( DL )
Mi dispiace iniziare con questa definizione ma ci tengo a smentire subito un mito sul Deep Learning, ossia quello che si può trovare su altri siti web. Gli attuali modelli di Deep Learning funzionano come i modelli di apprendimento del cervello Questa affermazione è totalmente priva di senso e non ha nessun supporto scientifico. D'altronde se ciò fosse vero saremmo in una situazione apocalittica. Facciamo un passo indietro. Dopo aver visto e capito cosa è il Machine Learning e come esso è suddiviso, possiamo andare ancora più affondo e concentrarci su una sotto-branca del ML, il Deep Learning. Per chi è alle prime armi inizierei con il dire che il deep learning è una famiglia di algoritmi, spesso e volentieri complessi, i quali basandosi sui concetti base delle reti neurali riescono a creare dei modelli matematici per fare previsioni o classificare dei dati nuovi. Fino a quì sembra molto simile al Machine Learning. La differenza sottile ma fondamentale tra Machine Learning e Deep Learning sta proprio nel termine Deep. Il termine "Deep Learning" in italiano viene tradotto come " apprendimento profondo" ma la qualifica "deep/profondo" non fa riferimento ad una comprensione più profonda, anche se ad oggi è la branca più avanzata dell'intelligenza artificiale, ma si riferisce all'idea di aggiungere un numero maggiore di 2/3 Layer (o Livelli di raffinazione dei dati) . Confuso? Al prossimo Step chiariamo Tutto !! Non Arrenderti.
- Differenza Base Deep Learning e Machine Learning
Gli algoritmi di Machine Learning che utilizzano reti neurali solitamente si basano su 3 Layer o Livelli : input elaborazione/hidden output Negli algoritmi di Deep Learning arriviamo ad avere anche alcune centinaia di Layer o Livelli Ti propongo una semplice animazione per comprendere meglio i "super-poteri " del deep learning. Ma proviamo a capire il motivo per il quale gli algoritmi di Deep Learning utilizzano un numero maggiore di Layer e quale sia il vantaggio nell'usare più Livelli se un problema potrebbe essere risolto anche con meno Livelli. Quando ci troviamo a dover analizzare un problema reale per arrivare alla costruzione di un modello in grado di classificare o stimare il nostro problema, prima del Deep Learning, la prima cosa che avremmo dovuto fare è la Feature Extraction. In altre parole ci saremmo messi noi a capire quali sono le variabili che riteniamo più importanti per stimare o classificare il nostro problema, solo dopo questo passaggio le avremmo passate al nostro algoritmo che costruiva il modello. Ma qui sorge un problema, se avessimo centinaia di variabili che noi reputiamo importanti ma in realtà ne basterebbero solo dieci per arrivare a classificare o stimare il nostro output oppure se ritenessimo che basterebbero dieci variabili ma ne servirebbero cento ? Questo è uno dei motivi fondamentali per il quale è nato il Deep Learning. La potenza del Deep Learning sta nella capacità di individuare in modo autonomo le variabili che influenzano il nostro output finale, eliminando quindi tutta la parte di Feature Extraction.
- Un'Altra Differenza
Quando ci troviamo a dover analizzare un problema reale per arrivare alla costruzione di un modello in grado di classificare o stimare il nostro problema, prima del Deep Learning, la prima cosa che avremmo dovuto fare è la Feature Extraction. In altre parole ci saremmo messi noi a capire quali sono le variabili che riteniamo più importanti per stimare o classificare il nostro problema, solo dopo questo passaggio le avremmo passate al nostro algoritmo che costruiva il modello. Ma qui sorge un problema, se avessimo centinaia di variabili che noi reputiamo importanti ma in realtà ne basterebbero solo dieci per arrivare a classificare o stimare il nostro output oppure se ritenessimo che basterebbero dieci variabili ma ne servirebbero cento ? Questo è uno dei motivi fondamentali per il quale è nato il Deep Learning. La potenza del Deep Learning sta nella capacità di individuare in modo autonomo le variabili che influenzano il nostro output finale, eliminando quindi tutta la parte di Feature Extraction. L'eliminazione di questo passaggio in alcuni campi ha fatto una differenza ENORME. Pensa un attimo ai problemi della computer-vision ad esempio creare un algoritmo che sia in grado di classificare un immagine in base alla presenza o meno di un animale. Saresti capace di identificare tutte le variabili che potrebbero portare un algoritmo ad essere in grado di fare una tale classificazione? Grazie al Deep Learning ci basterebbe raccogliere un grande insieme di immagini, una buona parte con la presenza di animali e un altra parte senza la presenza di animali. Una volta pre-classificate le immagini e fatto allenare l'algoritmo di DL sulle nostre foto questo avrà creato un modello in grado di distinguere se in una nuova foto è presente o meno un animale.
- La differenza tra Reti Neurali e Deep Learning?
Sebbene fosse implicito nella spiegazione delle reti neurali, vale la pena sottolinearlo in modo più esplicito. Il "profondo" nell'apprendimento profondo si riferisce alla profondità degli strati in una rete neurale. Una rete neurale composta da più di tre livelli, che includerebbero gli input e l'output, può essere considerata un algoritmo di deep learning. Questo è generalmente rappresentato utilizzando il diagramma seguente: La maggior parte delle reti neurali profonde sono feed-forward, nel senso che fluiscono in una sola direzione dall'input all'output. Tuttavia, puoi anche addestrare il tuo modello tramite backpropagation; ovvero, spostarsi in direzione opposta dall'output all'input. La backpropagation ci consente di calcolare e attribuire l'errore associato a ciascun neurone, permettendoci di regolare e adattare l'algoritmo in modo appropriato.
- Media, Mediana e Moda
Cosa possiamo imparare guardando un gruppo di numeri? Nel Machine Learning (e nella matematica) sono spesso tre i valori che ci interessano: Media - Il valore medio Mediana - Il valore del punto medio Moda - Il valore più comune Esempio: abbiamo registrato la velocità di 13 auto: speed = [99,86,87,88,111,86,103,87,94,78,77,85,86] Qual è il valore di velocità medio, medio o più comune? Media Per calcolare la media, trova la somma di tutti i valori e dividi la somma per il numero di valori: (99+86+87+88+111+86+103+87+94+78+77+85+86) / 13 = 89.77 Per calcolarla utilizzando Python useremo il seguente codice : ( Premi Play per far eseguire il codice e divertiti a modificarlo ! ) Mediana Il valore mediano è il valore nel mezzo, dopo aver ordinato tutti i valori: 77, 78, 85, 86, 86, 86, 87, 87, 88, 94, 99, 103, 111 È importante che i numeri siano ordinati prima di poter trovare la mediana. Il modulo NumPy ha un metodo per questo: ( Premi Play per far eseguire il codice e divertiti a modificarlo ! ) Moda Il valore Mode è il valore che appare il maggior numero di volte: 99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86 = 86 Il modulo SciPy ha un metodo per questo. ( Premi Play per far eseguire il codice e divertiti a modificarlo ! )
- Grafici a dispersione o Scatterplot
Un grafico a dispersione è un diagramma in cui ogni valore nel set di dati è rappresentato da un punto. Il modulo Matplotlib ha un metodo per disegnare grafici a dispersione, ha bisogno di due array della stessa lunghezza, uno per i valori dell'asse x e uno per i valori dell'asse y: x = [5,7,8,7,2,17,2,9,4,11,12,9,6] y = [99,86,87,88,111,86,103,87,94,78,77,85,86] L' xarray rappresenta l'età di ogni auto. L' yarray rappresenta la velocità di ogni auto. Utilizzare il scatter()metodo per disegnare un diagramma a dispersione: Spiegazione del grafico a dispersione L'asse x rappresenta le età e l'asse y rappresenta le velocità. Quello che possiamo leggere dal diagramma è che le due auto più veloci avevano entrambe 2 anni e l'auto più lenta aveva 12 anni. Nota: sembra che più l'auto è nuova, più è veloce, ma potrebbe essere una coincidenza, dopotutto abbiamo registrato solo 13 auto. Distribuzioni casuali di dati In Machine Learning i set di dati possono contenere migliaia o addirittura milioni di valori. Potresti non avere dati del mondo reale quando stai testando un algoritmo, potresti dover usare valori generati casualmente. Come abbiamo appreso nel capitolo precedente, il modulo NumPy può aiutarci in questo! Creiamo due array che sono entrambi riempiti con 1000 numeri casuali da una normale distribuzione di dati. Il primo array avrà la media impostata su 5,0 con una deviazione standard di 1,0. Il secondo array avrà la media impostata su 10.0 con una deviazione standard di 2.0: Spiegazione del grafico a dispersione Possiamo vedere che i punti sono concentrati attorno al valore 5 sull'asse x e 10 sull'asse y. Possiamo anche vedere che lo spread è più ampio sull'asse y che sull'asse x.
- Introduzione
Questa può essere una sfida per i principianti nell'apprendimento automatico e nella scienza dei dati perché i dati provengono da fonti diverse con tipi di dati diversi. Pertanto non è possibile applicare lo stesso metodo di pulizia ed elaborazione a diversi tipi di dati. "Le informazioni possono essere estratte dai dati così come l'energia può essere estratta dal petrolio."- Adeola Adesina Devi imparare e applicare metodi a seconda dei dati che hai. Dopo aver letto questo articolo, saprai: Che cos'è l'ingegneria delle funzionalità e la selezione delle funzionalità. Diversi metodi per gestire i dati mancanti nel tuo set di dati. Diversi metodi per gestire le funzionalità continue. Diversi metodi per gestire le caratteristiche categoriche. Diversi metodi per la selezione delle caratteristiche. Cominciamo.🚀
- Cancellazione variabile
Cancellazione variabile L'eliminazione delle variabili comporta l'eliminazione delle variabili (colonne) con valori mancanti caso per caso. Questo metodo ha senso quando ci sono molti valori mancanti in una variabile e se la variabile è di importanza relativamente minore. L'unico caso in cui può valere la pena eliminare una variabile è quando i suoi valori mancanti superano il 60% delle osservazioni. # importa packages import numpy as np import pandas as pd # leggi dataset data = pd.read_csv('path/to/data') #setta threshold threshold = 0.7 # droppa colonne con i valori mancani più alti del threshold data = data[data.columns[data.isnull().mean() < threshold]] Nello snippet di codice sopra, puoi vedere come utilizzo NumPy e panda per caricare il set di dati e impostare una soglia su 0.7 . Ciò significa che qualsiasi colonna con valori mancanti superiori al 70% delle osservazioni verrà eliminata dal set di dati. Ti consiglio di impostare il valore di soglia in base alla dimensione del tuo set di dati.
- Valore più comune
Questo metodo sostituisce i valori mancanti con il valore massimo verificato in una colonna/funzione. Questa è una buona opzione per la gestione di colonne/funzioni categoriali . # Sostituisci i valori nulli con la media delle colonne di appartenenza data['column_name'].fillna(data['column_name'].value_counts().idxmax(). inplace=True) Qui utilizziamo il metodo value_counts() di panda per contare l'occorrenza di ciascun valore univoco nella colonna e quindi riempire il valore mancante con il valore più comune.
- Come gestire le funzioni continue
Le feature continue nel set di dati hanno un intervallo di valori diverso. Esempi comuni di funzionalità continue sono età, stipendio, prezzi e altezza. È molto importante gestire le funzionalità continue nel set di dati prima di addestrare gli algoritmi di apprendimento automatico. Se si addestra il modello con un intervallo di valori diverso, il modello non funzionerà bene. Cosa intendo quando dico un diverso intervallo di valori? Supponiamo che tu abbia un set di dati con due funzioni continue, età e stipendio . La fascia di età sarà diversa dalla fascia di stipendio e ciò può causare problemi. Nei prossimi step capirai di più e ci metteremo all'opera
- Normalizzazione Min-Max in Python
Per ogni valore in una caratteristica, la normalizzazione Min-Max sottrae il valore minimo nella caratteristica e quindi divide per il suo intervallo. L'intervallo è la differenza tra il massimo originale e il minimo originale. Infine, ridimensiona tutti i valori in un intervallo fisso tra 0 e 1. È possibile utilizzare il metodo MinMaxScaler di Scikit -learn che trasforma le funzionalità ridimensionando ciascuna funzionalità in un determinato intervallo: from sklearn.preprocessing import MinMaxScaler import numpy as np data = np.array([[4, 6], [11, 34], [10, 17], [1, 5]]) # creiamo lo scaler method scaler = MinMaxScaler(feature_range=(0,1)) # Scaliamo e trasformiamo i dati scaled_data = scaler.fit_transform(data) print(scaled_data) # [[0.3 0.03448276] # [1. 1. ] # [0.9 0.4137931 ] # [0. 0. ]] Come puoi vedere, i nostri dati sono stati trasformati e l'intervallo è compreso tra 0 e 1 .
- Come gestire le caratteristiche categoriche
Le caratteristiche categoriali rappresentano tipi di dati che possono essere suddivisi in gruppi. Ad esempio, generi e livelli di istruzione. Tutti i valori non numerici devono essere convertiti in numeri interi o float per essere utilizzati nella maggior parte delle librerie di machine learning. I metodi comuni per gestire le caratteristiche categoriali li vedremo nei prossimi step...
- Codifica one-hot
Il modo di gran lunga più comune per rappresentare le variabili categoriali è utilizzare la codifica one-hot, o metodi di codifica uno-su-N, noti anche come variabili fittizie. L'idea alla base delle variabili fittizie è sostituire una variabile categoriale con una o più nuove funzionalità che possono avere i valori 0 e 1. Nell'esempio seguente, utilizzeremo gli encoder della libreria Scikit-learn. LabelEncoder ci aiuterà a creare una codifica intera di etichette dai nostri dati eOneHotEncoder creerà una codifica one-hot di valori con codifica intera. import numpy as np from sklearn.preprocessing import OneHotEncoder, LabelEncoder # definiamo un esempio data = np.array(['cold', 'cold', 'warm', 'cold', 'hot', 'hot', 'warm', 'cold', 'warm', 'hot']) # creiamo integer encode label_encoder = LabelEncoder() # alleniamo e trasformia i dati integer_encoded = label_encoder.fit_transform(data) print(integer_encoded) # creiamo one-hot encode onehot_encoder = OneHotEncoder(sparse=False) # effttuiamo il reshape dei dati integer_encoded = integer_encoded.reshape(len(integer_encoded), 1) # alleniamo e trasformia i dati onehot_encoded = onehot_encoder.fit_transform(integer_encoded) print(onehot_encoded) Questo è l' output di integer_encoded dal metodo LabelEncoder : [0 0 2 0 1 1 2 0 2 1] E questo è l'output di onehot_encoded dal metodo OneHotEncoder : [[1. 0. 0.] [1. 0. 0.] [0. 0. 1.] [1. 0. 0.] [0. 1. 0.] [0. 1. 0.] [0. 0. 1.] [1. 0. 0.] [0. 0. 1.] [0. 1. 0.]]
- Conclusione
I metodi che ho spiegato in questo articolo ti aiuteranno a preparare la maggior parte dei set di dati strutturati che hai. Ma se stai lavorando su set di dati non strutturati come immagini, testo e audio, dovrai imparare diversi metodi che non sono spiegati in questo articolo.
- Ricapitoliamo quanto visto fino ad ora
Probabilmente stiamo vivendo nel periodo più decisivo della storia umana. Il periodo in cui l'informatica è passata dai grandi mainframe ai PC al cloud. Ma ciò che lo rende determinante non è ciò che è successo, ma ciò che accadrà negli anni a venire. Ciò che rende questo periodo emozionante e avvincente per uno come me è la democratizzazione dei vari strumenti e tecniche, che ha seguito l'impulso nell'informatica. Benvenuto nel mondo della scienza dei dati ! Oggi, come scienziato dei dati, posso costruire macchine per l'elaborazione dei dati con algoritmi complessi per pochi dollari all'ora. Ma arrivare qui non è stato facile! Ho avuto i miei giorni e le mie notti buie. In linea di massima, ci sono 3 tipi di algoritmi di apprendimento automatico 1. Apprendimento supervisionato Come funziona: questo algoritmo consiste in una variabile obiettivo/risultato (o variabile dipendente) che deve essere prevista da un determinato insieme di predittori (variabili indipendenti). Usando questo insieme di variabili, generiamo una funzione che mappa gli input agli output desiderati. Il processo di addestramento continua finché il modello non raggiunge il livello di accuratezza desiderato sui dati di addestramento. Esempi di apprendimento supervisionato: regressione, albero decisionale , foresta casuale , KNN, regressione logistica ecc. 2. Apprendimento senza supervisione Come funziona: in questo algoritmo non abbiamo alcun obiettivo o variabile di risultato da prevedere/stimare. Viene utilizzato per raggruppare la popolazione in diversi gruppi, che è ampiamente utilizzato per segmentare i clienti in diversi gruppi per interventi specifici. Esempi di apprendimento non supervisionato: algoritmo Apriori, K-means. 3. Apprendimento per rinforzo Come funziona: utilizzando questo algoritmo, la macchina viene addestrata a prendere decisioni specifiche. Funziona così: la macchina è esposta a un ambiente in cui si allena continuamente per tentativi ed errori. Questa macchina impara dall'esperienza passata e cerca di acquisire la migliore conoscenza possibile per prendere decisioni aziendali accurate. Esempio di apprendimento per rinforzo: processo decisionale di Markov Elenco Principali Algoritmi di apprendimento automatico o Machine Learning Ecco l'elenco degli algoritmi di apprendimento automatico comunemente usati. Questi algoritmi possono essere applicati a quasi tutti i problemi di dati: Regressione lineare Regressione logistica Albero decisionale SVM Naive Bayes kNN K-Means Foresta casuale Algoritmi di riduzione della dimensionalità Algoritmi di aumento del gradiente ( XGboost ) Partiamo e vediamoli uno ad uno con la relativa implementazione in Python.