top of page

Risultati Ricerca Intelligenza Artificiale Italia

461 risultati trovati per "intelligenza artificiale aziendale"

  • Lo strumento “ mente "

    Dopo i due articoli precedenti: Dal processo al “giudizio” ( l’intelligenza artificiale vista da un vecchio ridurre tutto quanto in formule, si potrebbe dire questo se parlassimo di macchine evolute dove tutto è artificiale LA SOVRAPPOSIZIONE DEGLI EFFETTI LA CURIOSITA` ATTIVITA‘ PERCETTIVE LA COGNIZIONE LA CONCENTRAZIONE L’

  • Come risolvere l'Overfitting con Python e Capire cosa è l' Overfitting

    L'overfitting è una grande preoccupazione per qualsiasi azienda che utilizza modelli di deep learning Ad esempio, se un'azienda desidera prevedere la fidelizzazione dei clienti, un modello di overfit può Ad esempio, una caratteristica debole può essere ancora utile come leva per un'azienda. L'overfitting può avere un impatto significativo sui ricavi di un'azienda se non preso in considerazione Questa imprecisione può far sì che le aziende sprechino una notevole quantità di denaro e risorse mirando

  • Le Reti Neurali nel Trading

    il totale risulta superiore all’insieme dei suoi componenti 6 , principio ispiratore del concetto di intelligenza con questo la capacità di un gruppo di agire in modo che il risultato delle loro azioni sembri essere intelligente Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale

  • IL SISTEMA INFERENZIALE + Regalo fine Serie

    La sovrapposizione degli effetti La Curiosità Le attività percettive La cognizione La concentrazione L'Intelligenza 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 fondamentale per ottenere un risultato funzionale, ma questo comporta che vi sia una compartecipazione intelligente

  • La vera differenza tra statistica e machine learning

    L'apprendimento automatico è incentrato sui risultati, è probabile che funzioni in un'azienda in cui Allo stesso modo, l'apprendimento automatico non è la stessa cosa dell'intelligenza artificiale.

  • AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading

    argomento caldo che ha molte applicazioni possibili, come la previsione del tempo, la pianificazione aziendale Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale

  • I 60 migliori set di dati gratuiti per l'apprendimento automatico e profondo

    dati finanziari ed economici per l'apprendimento automatico Set di dati di immagini per la visione artificiale Set di dati di immagini per la visione artificiale Chiunque desideri addestrare applicazioni di visione artificiale come veicoli autonomi, riconoscimento facciale e tecnologia di imaging medico avrà bisogno l'apprendimento automatico è già annotato, il che lo rende pronto e pronto per qualsiasi applicazione di visione artificiale LISA: Laboratory for Intelligent & Safe Automobiles, UC San Diego Datasets : set di dati con informazioni

  • Cosa sono l'Overfitting e l'Underfitting? E come puoi limitarli nel Machine Learning

    Questa è una domanda frequente nei colloqui per le posizioni di Data Scientist, Quindi leggi con attenzione questo articolo! La causa delle scarse prestazioni nell'apprendimento automatico è l'overfitting o l'underfitting dei dati. In questo post scoprirai il concetto di generalizzazione nell'apprendimento automatico e i problemi di overfitting e underfitting che lo accompagnano. Rendiamo semplice il machine Learning per un minuto L'apprendimento automatico supervisionato è meglio inteso come approssimazione di una funzione target (f) che mappa le variabili di input (X) su una variabile di output (Y). Y = f(X) Questa caratterizzazione descrive la gamma di problemi di classificazione e previsione e gli algoritmi della macchina che possono essere utilizzati per affrontarli. Una considerazione importante nell'apprendimento della funzione target dai dati di addestramento è la capacità di generalizzazione del modello ai nuovi dati. La generalizzazione è importante perché i dati che raccogliamo sono solo un campione, sono incompleti e rumorosi. Cos'è una Generalizzazione nel Machine Learning? In machine learning descriviamo l'apprendimento della funzione target dai dati di training come apprendimento induttivo. L'induzione si riferisce all'apprendimento di concetti generali da esempi specifici che è esattamente il problema che i problemi di apprendimento automatico supervisionati mirano a risolvere. Questo è diverso dalla deduzione che è il contrario e cerca di apprendere concetti specifici dalle regole generali. La generalizzazione si riferisce al modo in cui i concetti appresi da un modello di apprendimento automatico si applicano a esempi specifici non visti dal modello durante l'apprendimento. L'obiettivo di un buon modello di apprendimento automatico è generalizzare bene dai dati di addestramento a tutti i dati del dominio del problema. Questo ci permette di fare previsioni in futuro su dati che il modello non ha mai visto. Esiste una terminologia utilizzata nell'apprendimento automatico quando si parla di quanto bene un modello di apprendimento automatico apprenda e si generalizzi a nuovi dati, vale a dire overfitting e underfitting. Overfitting e underfitting sono le due principali cause di scarse prestazioni degli algoritmi di apprendimento automatico. Adattamento statistico nel Machine Learning Nelle statistiche, un adattamento si riferisce a quanto bene si approssima una funzione target. Questa è una buona terminologia da utilizzare nell'apprendimento automatico, perché gli algoritmi di apprendimento automatico supervisionati cercano di approssimare la funzione di mappatura sottostante sconosciuta per le variabili di output date le variabili di input. Le statistiche spesso descrivono la bontà dell'adattamento che si riferisce alle misure utilizzate per stimare quanto bene l'approssimazione della funzione corrisponde alla funzione target. Alcuni di questi metodi sono utili nell'apprendimento automatico (ad esempio il calcolo degli errori residui), ma alcune di queste tecniche presuppongono che conosciamo la forma della funzione target che stiamo approssimando, il che non è il caso dell'apprendimento automatico. Se conoscessimo la forma della funzione target, la useremmo direttamente per fare previsioni, invece di cercare di apprendere un'approssimazione da campioni di dati di addestramento rumorosi. Cos'è l'Overfitting nell'apprendimento automatico? L'overfitting si riferisce a un modello che modella troppo bene i dati di allenamento. L'overfitting si verifica quando un modello apprende i dettagli e il rumore nei dati di addestramento nella misura in cui influisce negativamente sulle prestazioni del modello sui nuovi dati. Ciò significa che il rumore o le fluttuazioni casuali nei dati di addestramento vengono rilevati e appresi come concetti dal modello. Il problema è che questi concetti non si applicano ai nuovi dati e influiscono negativamente sulla capacità dei modelli di generalizzare. L'overfitting è più probabile con modelli non parametrici e non lineari che hanno maggiore flessibilità durante l'apprendimento di una funzione target. Pertanto, molti algoritmi di apprendimento automatico non parametrici includono anche parametri o tecniche per limitare e vincolare la quantità di dettagli che il modello apprende. Ad esempio, gli alberi decisionali sono un algoritmo di apprendimento automatico non parametrico che è molto flessibile ed è soggetto a dati di training overfitting. Questo problema può essere affrontato potando un albero dopo che ha appreso per rimuovere alcuni dei dettagli che ha raccolto. Cos'è l'Underfitting nell'apprendimento automatico? Underfitting si riferisce a un modello che non può né modellare i dati di addestramento né generalizzare a nuovi dati. Un modello di apprendimento automatico non idoneo non è un modello adatto e sarà ovvio in quanto avrà scarse prestazioni sui dati di addestramento. L'underfitting spesso non viene discusso in quanto è facile da rilevare data una buona metrica delle prestazioni. Il rimedio è andare avanti e provare algoritmi alternativi di apprendimento automatico. Tuttavia, fornisce un buon contrasto con il problema dell'overfitting. Un buon adattamento all'apprendimento automatico Idealmente, si desidera selezionare un modello che sia una via di mezzo tra underfitting e overfitting. Questo è l'obiettivo, ma è molto difficile da realizzare in pratica. Per comprendere questo obiettivo, possiamo esaminare le prestazioni di un algoritmo di apprendimento automatico nel tempo mentre apprende i dati di addestramento. Possiamo tracciare sia l'abilità sui dati di addestramento che l'abilità su un set di dati di test che abbiamo trattenuto dal processo di addestramento. Nel tempo, man mano che l'algoritmo apprende, l'errore per il modello sui dati di addestramento diminuisce, così come l'errore nel set di dati di test. Se ci alleniamo troppo a lungo, le prestazioni sul set di dati di addestramento potrebbero continuare a diminuire perché il modello si adatta eccessivamente e apprende i dettagli irrilevanti e il rumore nel set di dati di addestramento. Allo stesso tempo, l'errore per il set di test inizia a salire di nuovo al diminuire della capacità del modello di generalizzare. Il punto debole è il punto appena prima che l'errore sul set di dati di test inizi ad aumentare in cui il modello ha buone capacità sia sul set di dati di addestramento che sul set di dati di test invisibile. Puoi eseguire questo esperimento con i tuoi algoritmi di apprendimento automatico preferiti. Questa tecnica spesso non è utile nella pratica, perché scegliendo il punto di arresto per l'allenamento utilizzando l'abilità sul set di dati del test significa che il set di test non è più "non visibile" o una misura oggettiva autonoma. Alcune conoscenze (molte conoscenze utili) su quei dati sono trapelate nella procedura di addestramento. Esistono due tecniche aggiuntive che puoi utilizzare per trovare il punto debole nella pratica: metodi di ricampionamento e un set di dati di convalida. Come limitare l'overfitting Sia l'overfitting che l'underfitting possono portare a scarse prestazioni del modello. Ma il problema di gran lunga più comune nell'apprendimento automatico applicato è l'overfitting. L'overfitting è un tale problema perché la valutazione degli algoritmi di apprendimento automatico sui dati di addestramento è diversa dalla valutazione a cui teniamo di più, ovvero quanto bene l'algoritmo si comporta su dati invisibili. Esistono due tecniche importanti che puoi utilizzare durante la valutazione degli algoritmi di apprendimento automatico per limitare l'overfitting: Utilizzare una tecnica di ricampionamento per stimare l'accuratezza del modello. Trattieni un set di dati di convalida. La tecnica di ricampionamento più popolare è la convalida incrociata k-fold. Ti consente di addestrare e testare il tuo modello k-volte su diversi sottoinsiemi di dati di addestramento e di creare una stima delle prestazioni di un modello di apprendimento automatico su dati invisibili. Un set di dati di convalida è semplicemente un sottoinsieme dei dati di addestramento che trattieni dagli algoritmi di apprendimento automatico fino alla fine del tuo progetto. Dopo aver selezionato e ottimizzato gli algoritmi di machine learning sul set di dati di addestramento, puoi valutare i modelli appresi sul set di dati di convalida per avere un'idea oggettiva finale di come i modelli potrebbero funzionare su dati invisibili. L'uso della convalida incrociata è un gold standard nell'apprendimento automatico applicato per la stima dell'accuratezza del modello su dati invisibili. Se si dispone dei dati, anche l'utilizzo di un set di dati di convalida è un'ottima pratica. Conclusione In questo post, hai scoperto che l'apprendimento automatico risolve i problemi con il metodo dell'induzione. Hai imparato che la generalizzazione è una descrizione di come i concetti appresi da un modello si applicano ai nuovi dati. Infine, hai appreso la terminologia della generalizzazione nell'apprendimento automatico di overfitting e underfitting: Overfitting : Buone prestazioni sui dati di allenamento, scarsa generalizzazione su altri dati. Underfitting : Scarse prestazioni sui dati di allenamento e scarsa generalizzazione ad altri dati Hai domande su overfitting, underfitting o questo post? Lascia un commento e fai la tua domanda e faremo del nostro meglio per rispondere.

  • Python e Machine Learning per la SEO Guida Completa

    Aziende tra cui Google, YouTube, Netflix, NASA, Spotify e IBM hanno dichiarato pubblicamente che Python L'apprendimento automatico è essenzialmente "un'applicazione dell'intelligenza artificiale che fornisce La visione artificiale viene anche utilizzata per aiutare con l'esperienza dell'utente, identificando

  • Decision tree e Alberi Decisionali , cosa sono e come implementarli con python

    Gli alberi decisionali sono un algoritmo ampiamente utilizzato per attività di classificazione, in cui l'obiettivo è prevedere una variabile target in base a un insieme di funzionalità di input. Gli alberi decisionali utilizzano una struttura ad albero per fare previsioni, in cui ogni nodo dell'albero rappresenta una decisione o una divisione basata sul valore di una caratteristica di input e ogni foglia dell'albero rappresenta una classe o un valore previsto. In questo articolo, spiegheremo in dettaglio l'algoritmo dell'albero decisionale e mostreremo come implementare e addestrare un albero decisionale con Python. Tratteremo due diversi approcci alla costruzione e all'addestramento di alberi decisionali con Python: l'utilizzo della libreria scikit-learn e l'implementazione dell'algoritmo da zero. Discuteremo anche dei vantaggi e dei limiti degli alberi decisionali e forniremo alcuni esempi di come utilizzare gli alberi decisionali nelle applicazioni del mondo reale. Indice Articolo sull'Algoritmo di machine learning decision tree Definizione e principi dell'algoritmo dell'albero decisionale In che modo gli alberi decisionali effettuano previsioni e suddividono i dati Creare e allenare un albero decisionale con Python e scikit-learn Creare e allenare un albero decisionale con Python senza libreire Misure di accuratezza e performance per alberi decisionali Vantaggi e limiti degli alberi decisionali Esempi di applicazioni dell'albero decisionale in scenari reali Conclusione e direzioni future per la ricerca e lo sviluppo dell'albero decisionale. Cos'è un Decision tree o Albero Decisionale? Un albero decisionale è un tipo di algoritmo di apprendimento automatico utilizzato per attività di classificazione e regressione, in cui l'obiettivo è prevedere una variabile di destinazione in base a un set di funzionalità di input. Gli alberi decisionali sono chiamati "alberi" o "tree" perché hanno una struttura ad albero, in cui ogni nodo rappresenta una decisione o una divisione basata sul valore di una caratteristica di input e ogni foglia rappresenta una classe o un valore previsto. L'algoritmo dell'albero decisionale è un algoritmo di apprendimento supervisionato, il che significa che richiede un set di dati di addestramento etichettato, in cui la variabile target è nota per ogni punto dati. L'obiettivo dell'algoritmo dell'albero decisionale è apprendere un modello dai dati di addestramento che può essere utilizzato per fare previsioni per punti dati nuovi e invisibili. La matematica dietro al Decision tree Gli alberi decisionali si basano sul principio del partizionamento ricorsivo, in cui i dati vengono ripetutamente suddivisi in sottoinsiemi sempre più piccoli in base ai valori delle funzionalità di input. Questo processo continua fino a quando i dati non vengono partizionati in sottoinsiemi omogenei, in cui tutti i punti dati all'interno di ogni sottoinsieme hanno la stessa classe o valore previsto. Il processo di suddivisione dei dati in sottoinsiemi omogenei si basa su una misura di omogeneità o impurità, come l'entropia o l'impurità di Gini. L'algoritmo dell'albero decisionale cerca di trovare la migliore suddivisione in ciascun nodo che massimizza l'omogeneità dei sottoinsiemi risultanti. Questo viene fatto iterando su tutte le possibili suddivisioni per ciascuna caratteristica di input e selezionando la suddivisione che risulta nella minore impurità. Una volta trovata la suddivisione migliore, i dati vengono partizionati in due sottoinsiemi e il processo viene ripetuto per ogni sottoinsieme fino a quando i dati non sono completamente partizionati in sottoinsiemi omogenei. La struttura ad albero risultante può essere utilizzata per fare previsioni per nuovi punti dati attraversando l'albero dalla radice a una foglia e selezionando la classe o il valore previsto alla foglia. Gli alberi decisionali hanno diversi vantaggi, come la loro semplicità, interpretabilità e capacità di gestire dati sia numerici che categorici. Tuttavia, gli alberi decisionali hanno anche alcune limitazioni, come la loro sensibilità al rumore e ai valori anomali e la loro tendenza a sovradimensionare i dati. Nonostante queste limitazioni, gli alberi decisionali sono ancora un algoritmo ampiamente utilizzato ed efficace per molte applicazioni pratiche. Come gli alberi decisionali effettuano previsioni? Gli alberi decisionali effettuano previsioni attraversando la struttura ad albero dalla radice a una foglia e selezionando la classe o il valore previsto nella foglia. Il processo di attraversare l'albero e fare una previsione è chiamato "inferenza". Per fare una previsione per un nuovo punto dati, l'algoritmo dell'albero decisionale controlla prima il valore della caratteristica di input nel nodo radice. Se il valore della funzione è minore o uguale alla soglia di suddivisione, l'algoritmo segue il ramo sinistro e si sposta sul nodo figlio sinistro. Se il valore della funzione è maggiore della soglia di suddivisione, l'algoritmo segue il ramo destro e si sposta sul nodo figlio destro. (in linea teorica poi è possibile trovare tantissime varianti) Questo processo viene ripetuto in ogni nodo, fino a quando l'algoritmo raggiunge un nodo foglia, dove è memorizzata la classe o il valore previsto. Ad esempio, se l'albero decisionale viene utilizzato per la classificazione, il nodo foglia può contenere una distribuzione di probabilità sulle classi o un'etichetta di classe maggioritaria. Se l'albero decisionale viene utilizzato per la regressione, il nodo foglia può contenere il valore medio o mediano della variabile di destinazione per i punti dati nella foglia. Il processo di creazione di una previsione con un albero decisionale è simile al processo di costruzione dell'albero, tranne per il fatto che l'albero è già stato creato e le divisioni e le soglie sono fisse. L'algoritmo dell'albero decisionale utilizza la stessa strategia di partizionamento ricorsivo per fare previsioni, seguendo le divisioni e le decisioni prese durante la fase di addestramento. In sintesi, gli alberi decisionali effettuano previsioni suddividendo in modo iterativo i dati in base ai valori delle caratteristiche di input e selezionando la classe o il valore previsto nei nodi foglia dell'albero. Ciò consente agli alberi delle decisioni di catturare la struttura e i modelli sottostanti dei dati e di fare previsioni accurate e interpretabili. Creare e allenare un albero decisionale con Python e scikit-learn Per costruire e addestrare un albero decisionale con Python, possiamo usare la libreria scikit-learn, che è una libreria di apprendimento automatico ampiamente utilizzata per Python. Scikit-learn fornisce una classe DecisionTreeClassifier per le attività di classificazione e una classe DecisionTreeRegressor per le attività di regressione. Nell'esempio seguente, utilizzeremo la classe DecisionTreeClassifier per creare e addestrare un albero decisionale per una semplice attività di classificazione. Useremo il set di dati Iris, che è un noto set di dati che contiene le misurazioni di 150 fiori di iris, insieme alle specie di ciascun fiore. L'obiettivo è prevedere la specie di un fiore in base alle sue misurazioni. Innanzitutto, dobbiamo importare i moduli e le classi necessari da scikit-learn: from sklearn import datasets from sklearn.tree import DecisionTreeClassifier Successivamente, dobbiamo caricare il set di dati Iris e suddividerlo in set di addestramento e test: iris = datasets.load_iris() X = iris.data y = iris.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) Ora possiamo creare un'istanza della classe DecisionTreeClassifier e addestrarla sui dati di addestramento: clf = DecisionTreeClassifier() clf.fit(X_train, y_train) Una volta addestrato il modello, possiamo valutare le sue prestazioni sul set di test chiamando il metodo score, che restituisce l'accuratezza del modello sul set di test: accuracy = clf.score(X_test, y_test) print("Accuracy:", accuracy) Ecco fatto hai appena creato il tuo primo Albero decisionale Per fare previsioni con un modello di albero decisionale addestrato, possiamo usare il metodo predict della classe DecisionTreeClassifier. Questo metodo accetta come input i dati del test e restituisce le classi previste per ogni punto dati. Ecco un esempio di come utilizzare il metodo predict per effettuare previsioni con un modello di albero decisionale: # Previsioni suli dati di test predictions = clf.predict(X_test) # Stampiamo le previsioni print("Predictions:", predictions) In alternativa, possiamo usare il metodo predict_proba per ottenere le probabilità previste per ogni classe per ogni punto dati nel set di test. Questo metodo restituisce una matrice di forma (n_samples, n_classes), dove n_samples è il numero di punti dati nel set di test e n_classes è il numero di classi nel set di dati. Ecco un esempio di come utilizzare il metodo predict_proba per ottenere le probabilità previste per ogni classe: #Previsione probabilità suli dati di test probabilities = clf.predict_proba(X_test) # Stampiamo le previsioni print("Probabilities:", probabilities) In sintesi, per fare previsioni con un modello di albero decisionale addestrato, possiamo utilizzare il metodo predict o predict_proba, a seconda che desideriamo le classi o le probabilità previste per ogni punto dati nel set di test. Questi metodi ci consentono di applicare il modello dell'albero decisionale a dati nuovi e sconosciuti e di fare previsioni accurate e interpretabili. Creare e allenare un albero decisionale con Python senza librerie Per creare e addestrare un albero decisionale con Python senza utilizzare alcuna libreria, possiamo implementare l'algoritmo dell'albero decisionale da zero utilizzando solo i moduli Python integrati. Questo approccio può essere utile per comprendere il funzionamento interno dell'algoritmo o per implementare varianti personalizzate dell'algoritmo che non sono supportate dalle librerie esistenti. Ecco una semplice implementazione dell'algoritmo dell'albero decisionale in Python, utilizzando un semplice set di dati e i moduli NumPy e pandas: Innanzitutto, dobbiamo importare i moduli e le classi necessari: import numpy as np import pandas as pd Successivamente, dobbiamo caricare il set di dati e suddividerlo in set di addestramento e test. Per semplicità, possiamo utilizzare un piccolo set di dati che contiene solo quattro punti dati e due funzionalità: X = np.array([ [0, 1], [1, 0], [1, 1], [0, 0] ]) y = np.array([0, 1, 1, 0]) X_train = X y_train = y X_test = X y_test = y Ora possiamo definire una funzione chiamata fit_decision_tree che addestra un modello di albero decisionale sui dati di addestramento. Questa funzione accetta come input i dati di addestramento e la variabile di destinazione e restituisce un modello di albero decisionale addestrato: def fit_decision_tree(X, y): pass Per addestrare il modello dell'albero decisionale, dobbiamo implementare la funzione fit_decision_tree. Questa funzione prende come input i dati di addestramento e la variabile di destinazione e addestra il modello dell'albero delle decisioni trovando la suddivisione migliore in ogni nodo. Ecco una possibile implementazione della funzione fit_decision_tree, usando l'entropia come misura dell'impurità: def fit_decision_tree(X, y): # Calcola l'entropia della variabile target classes, counts = np.unique(y, return_counts=True) total_count = counts.sum() entropy = 0 for c in classes: p = counts[c] / total_count entropy += -p * np.log2(p) # Itera su ogni feature e trova la migliore divisione best_split = None best_gain = 0 for i in range(X.shape[1]): values = X[:, i] unique_values = np.unique(values) for value in unique_values: mask = values == value left_X = X[mask] left_y = y[mask] right_X = X[~mask] right_y = y[~mask] left_classes, left_counts = np.unique(left_y, return_counts=True) left_total_count = left_counts.sum() left_entropy = 0 for c in left_classes: p = left_counts[c] / left_total_count left_entropy += -p * np.log2(p) right_classes, right_counts = np.unique(right_y, return_counts=True) right_total_count = right_counts.sum() right_entropy = 0 for c in right_classes: p = right_counts[c] / right_total_count right_entropy += -p * np.log2(p) gain = entropy - (left_entropy * (len(left_X) / len(X)) + right_entropy * (len(right_X) / len(X))) if gain > best_gain: best_gain = gain best_split = { 'feature': i, 'value': value, 'left_X': left_X, 'left_y': left_y, 'right_X': right_X, 'right_y': right_y } return best_split Per testare questa funzione, possiamo usare il seguente codice: X = np.array([ [0, 1], [1, 0], [1, 1], [0, 0] ]) y = np.array([0, 1, 1, 0]) best_split = fit_decision_tree(X, y) print(best_split) Questo dovrebbe produrre la migliore suddivisione trovata dalla funzione fit_decision_tree, che dovrebbe assomigliare a questa: { 'feature': 0, 'value': 1, 'left_X': array([[1, 0], [1, 1]]), 'left_y': array([1, 1]), 'right_X': array([[0, 1], [0, 0]]), 'right_y': array([0, 0]) } Ciò indica che la migliore suddivisione trovata dalla funzione consiste nel suddividere i dati sulla prima caratteristica (con indice 0) . Misure di accuratezza e performance per alberi decisionali Quando si valutano le prestazioni di un modello di albero decisionale, è possibile utilizzare diverse misurazioni dell'accuratezza e delle prestazioni. Queste misurazioni possono aiutarci a capire quanto bene il modello è in grado di fare previsioni su dati sconosciuti e possono guidarci nella scelta del modello migliore per un dato problema. Una misura comune dell'accuratezza per gli alberi decisionali è l'accuratezza della classificazione. Questa è la percentuale di previsioni corrette effettuate dal modello sul set di test e viene calcolata dividendo il numero di previsioni corrette per il numero totale di previsioni. Ad esempio, se il modello esegue 100 previsioni sul set di test e 75 di esse sono corrette, l'accuratezza della classificazione è del 75%. Un'altra importante misura dell'accuratezza per gli alberi decisionali è la matrice di confusione. Questa è una tabella che mostra il numero di previsioni vere positive, vere negative, false positive e false negative fatte dal modello sul set di test. Ad esempio, se il modello prevede la probabilità che una persona abbia una determinata malattia sulla base di una serie di sintomi, la matrice di confusione mostrerà il numero di veri positivi (persone con la malattia identificate correttamente dal modello), veri negativi (persone senza la malattia che sono state correttamente identificate dal modello), false positive (persone senza la malattia che sono state erroneamente identificate come affette dalla malattia) e false negative (persone con la malattia che sono state erroneamente identificate come non affette dalla malattia) previsioni realizzato dal modello. Un'altra misura importante delle prestazioni per gli alberi decisionali è il tempo di addestramento e il tempo di previsione. Il tempo di addestramento è il tempo impiegato dal modello per apprendere dai dati di addestramento e costruire l'albero decisionale. Il tempo di previsione è il tempo serve al modello per fare previsioni su nuovi dati Queste misurazioni sono importanti perché possono indicare quanto sia efficiente e scalabile il modello dell'albero decisionale. Ad esempio, se il tempo di addestramento e il tempo di previsione sono entrambi molto bassi, il modello può essere addestrato su set di dati di grandi dimensioni e utilizzato per previsioni in tempo reale senza influire sulle prestazioni del sistema. Oltre a queste misurazioni dell'accuratezza e delle prestazioni, esistono anche diverse metriche che possono essere utilizzate per valutare la qualità di un modello di albero decisionale. Alcune delle metriche più comuni per gli alberi decisionali includono l'indice di Gini, il guadagno di informazioni e il punteggio F1. L'indice di Gini è una misura di impurità che indica la probabilità che un elemento scelto a caso dall'insieme venga classificato in modo errato. Il guadagno di informazioni è una misura della diminuzione dell'entropia dopo che i dati sono stati suddivisi su una determinata caratteristica. Il punteggio F1 è la media armonica di precisione e richiamo e viene utilizzato per bilanciare il compromesso tra falsi positivi e falsi negativi. Per scegliere il miglior modello di albero decisionale per un dato problema, possiamo confrontare l'accuratezza e le misurazioni delle prestazioni di diversi modelli utilizzando queste metriche. Ad esempio, se stiamo cercando di prevedere la probabilità che una persona abbia una determinata malattia sulla base di una serie di sintomi, potremmo addestrare più modelli di alberi decisionali utilizzando metriche diverse e confrontare la loro accuratezza di classificazione, matrice di confusione, tempo di addestramento e tempo di previsione . Sulla base di queste misurazioni, possiamo scegliere il modello che offre le prestazioni migliori sul set di test e ha il tempo di addestramento e previsione più basso. Vantaggi e limiti degli alberi decisionali Uno dei principali vantaggi degli alberi decisionali è la loro interpretabilità. A differenza di molti altri algoritmi di apprendimento automatico, gli alberi decisionali sono facili da capire e spiegare. La struttura ad albero del modello fornisce una rappresentazione chiara e intuitiva delle relazioni tra le caratteristiche e la variabile target, e le regole decisionali in ogni nodo possono essere facilmente comprese dagli esseri umani. Ciò rende gli alberi decisionali una buona scelta per le applicazioni in cui il modello deve essere spiegato alle parti interessate o utilizzato da utenti non tecnici. Un altro vantaggio degli alberi decisionali è la loro capacità di gestire dati sia numerici che categorici. A differenza di altri algoritmi che richiedono che i dati siano pre-elaborati o trasformati, gli alberi decisionali possono gestire i dati nella loro forma grezza. Ciò li rende una buona scelta per le applicazioni in cui i dati sono rumorosi o presentano valori mancanti. Inoltre, gli alberi decisionali sono abbastanza facili da addestrare e fare previsioni. Il tempo di addestramento per gli alberi decisionali è in genere molto basso e anche il tempo di previsione è rapido perché il modello può essere applicato a nuovi dati utilizzando un algoritmo semplice ed efficiente. Ciò rende gli alberi decisionali una buona scelta per le applicazioni in cui il modello deve essere addestrato e utilizzato in tempo reale. Tuttavia, gli alberi decisionali hanno anche alcune limitazioni che dovrebbero essere considerate quando li si utilizza. Una limitazione è che sono inclini all'overfitting, in particolare quando i dati sono rumorosi o hanno un gran numero di funzioni. L'overfitting può verificarsi quando il modello apprende il rumore nei dati di addestramento e non è in grado di generalizzare a dati invisibili, il che può portare a prestazioni scadenti sul set di test. Esempi di applicazioni del Decision tree : Alcuni esempi di applicazioni degli alberi decisionali includono: Rilevamento delle frodi: gli alberi decisionali possono essere utilizzati per identificare le transazioni fraudolente imparando i modelli e le caratteristiche delle transazioni fraudolente e non fraudolente. Il modello dell'albero decisionale può essere addestrato su un set di dati di transazioni etichettate e utilizzato per fare previsioni su nuove transazioni. Diagnosi medica: gli alberi decisionali possono essere utilizzati per diagnosticare condizioni mediche in base a sintomi, risultati di test medici e altri fattori. Il modello dell'albero decisionale può essere addestrato su un set di dati di cartelle cliniche etichettate e utilizzato per fare previsioni su nuovi pazienti. Segmentazione dei clienti: gli alberi decisionali possono essere utilizzati per segmentare i clienti in diversi gruppi in base alle loro caratteristiche, preferenze e comportamento. Il modello dell'albero decisionale può essere addestrato su un set di dati di dati dei clienti e utilizzato per fare previsioni sui nuovi clienti. Punteggio di credito: gli alberi decisionali possono essere utilizzati per prevedere la probabilità che un cliente sia inadempiente rispetto a un prestito in base alla storia creditizia, al reddito e ad altri fattori. Il modello dell'albero decisionale può essere addestrato su un set di dati di domande di prestito etichettate e utilizzato per fare previsioni sui nuovi richiedenti. Previsione dell'abbandono: gli alberi decisionali possono essere utilizzati per prevedere la probabilità che un cliente abbandoni (ovvero, annulli il proprio servizio o passi a un concorrente) in base al suo comportamento, ai modelli di utilizzo e ad altri fattori. Il modello dell'albero delle decisioni può essere addestrato su un set di dati di dati dei clienti etichettati e utilizzato per fare previsioni sui nuovi clienti. Nel complesso, gli alberi decisionali sono un algoritmo di apprendimento automatico potente e ampiamente utilizzato che può essere applicato a molti scenari del mondo reale in cui è richiesta la classificazione o la regressione. Conclusione e direzioni future per la ricerca e lo sviluppo dell'albero decisionale Nonostante i loro numerosi punti di forza, gli alberi decisionali presentano anche alcuni limiti, come la tendenza a sovradimensionarsi su dati rumorosi o complessi. Per affrontare queste limitazioni e migliorare le prestazioni degli alberi decisionali, ci sono diverse direzioni per la ricerca e lo sviluppo futuri. Un'area di ricerca è lo sviluppo di algoritmi e tecniche per prevenire l'overfitting negli alberi decisionali. Ciò può includere metodi per regolarizzare la struttura ad albero, potare l'albero per rimuovere nodi ridondanti o irrilevanti e combinare più alberi decisionali in un insieme per migliorare la generalizzabilità del modello. Un'altra area di ricerca è lo sviluppo di nuove metriche e tecniche per valutare le prestazioni degli alberi decisionali. Ciò può includere l'uso di metriche più sofisticate per misurare l'accuratezza, come il punteggio F1, e l'uso di tecniche per confrontare le prestazioni di diversi alberi decisionali, come la convalida incrociata e il bootstrap. Infine, ci sono anche opportunità per migliorare l'interpretabilità degli alberi decisionali. Ciò può includere lo sviluppo di nuove tecniche di visualizzazione per visualizzare la struttura ad albero e le regole decisionali, nonché l'uso di algoritmi di generazione del linguaggio naturale per generare spiegazioni del modello in forma leggibile dall'uomo. Nel complesso, gli alberi decisionali sono un algoritmo di apprendimento automatico prezioso e ampiamente utilizzato che ha molte applicazioni in scenari reali. Con la continua ricerca e sviluppo, gli alberi decisionali hanno il potenziale per diventare ancora più potenti e ampiamente utilizzati in futuro.

  • Deep Learning con Python e PyTorch , la guida pratica

    sorprendenti in una vasta gamma di applicazioni, come il riconoscimento del linguaggio naturale, la visione artificiale Questa libreria fornisce molte funzioni utili per i progetti di visione artificiale, come la trasformazione tua esperienza di programmazione con PyTorch e ad aumentare la qualità dei tuoi progetti di visione artificiale Gli elementi costitutivi delle reti neurali sono i neuroni artificiali o percettroni. In questa libreria sono presenti funzioni specializzate per l'immagine e la visione artificiale.

  • Come rimuovere e gestire i valori anomali con python nel machine learning

    Durante la modellazione, è importante pulire il campione di dati per garantire che le osservazioni rappresentino al meglio il problema. A volte un set di dati può contenere valori estremi che sono al di fuori dell'intervallo di ciò che è previsto e diversi dagli altri dati. Questi sono chiamati valori anomali e spesso la modellazione dell'apprendimento automatico e l'abilità dei modelli in generale possono essere migliorati comprendendo e persino rimuovendo questi valori anomali. In questo tutorial scoprirai i valori anomali e come identificarli e rimuoverli dal tuo set di dati di machine learning. Dopo aver completato questo tutorial, saprai: Che un valore anomalo sia un'osservazione improbabile in un set di dati e possa avere una delle molte cause. Come utilizzare semplici statistiche univariate come la deviazione standard e l'intervallo interquartile per identificare e rimuovere valori anomali da un campione di dati. Come utilizzare un modello di rilevamento dei valori anomali per identificare e rimuovere righe da un set di dati di addestramento al fine di migliorare le prestazioni della modellazione predittiva. Panoramica sulla gestione dei valori anomali con python Questo tutorial è diviso in cinque parti : Cosa sono i valori anomali? Test set di dati Gestire i valori anomali con il Metodo di deviazione standard Gestire i valori anomali con il Metodo dell'intervallo interquartile Rilevamento automatico dei valori anomali Cosa sono i valori anomali? Un valore anomalo è un'osservazione che è diversa dalle altre osservazioni. È raro, o distinto, o non si adatta in qualche modo. Generalmente definiremo valori anomali come campioni eccezionalmente lontani dal mainstream dei dati. I valori anomali possono avere molte cause, come ad esempio: Errore di misurazione o input. Corruzione dei dati. Vera osservazione anomala (ad es. Michael Jordan nel basket). Non esiste un modo preciso per definire e identificare i valori anomali in generale a causa delle specificità di ciascun set di dati. Invece, tu o un esperto di dominio dovete interpretare le osservazioni grezze e decidere se un valore è un valore anomalo o meno. Anche con una comprensione approfondita dei dati, i valori anomali possono essere difficili da definire. […] Bisogna fare molta attenzione a non rimuovere o modificare frettolosamente i valori, soprattutto se la dimensione del campione è piccola. Tuttavia, possiamo utilizzare metodi statistici per identificare osservazioni che sembrano essere rare o improbabili dati i dati disponibili. L'identificazione di valori anomali e dati errati nel set di dati è probabilmente una delle parti più difficili della pulizia dei dati e richiede tempo per essere corretta. Anche se hai una profonda conoscenza delle statistiche e di come i valori anomali potrebbero influenzare i tuoi dati, è sempre un argomento da esplorare con cautela. Ciò non significa che i valori identificati siano valori anomali e debbano essere rimossi. Tuttavia, gli strumenti descritti in questo tutorial possono essere utili per far luce su eventi rari che potrebbero richiedere una seconda occhiata. Un buon consiglio è prendere in considerazione la possibilità di tracciare i valori anomali identificati, magari nel contesto di valori non anomali per vedere se esistono relazioni o schemi sistematici con i valori anomali. Se c'è, forse non sono valori anomali e possono essere spiegati, o forse gli stessi valori anomali possono essere identificati in modo più sistematico. Test set di dati Prima di esaminare i metodi di identificazione dei valori anomali, definiamo un set di dati che possiamo utilizzare per testare i metodi. Genereremo una popolazione di 10.000 numeri casuali estratti da una distribuzione gaussiana con una media di 50 e una deviazione standard di 5. I numeri estratti da una distribuzione gaussiana avranno valori anomali. Cioè, in virtù della distribuzione stessa, ci saranno alcuni valori che saranno molto lontani dai valori medi e rari che possiamo identificare come valori anomali. Useremo la funzione randn() per generare valori gaussiani casuali con una media di 0 e una deviazione standard di 1, quindi moltiplichiamo i risultati per la nostra deviazione standard e aggiungiamo la media per spostare i valori nell'intervallo preferito. Il generatore di numeri pseudocasuali viene seminato per garantire che otteniamo lo stesso campione di numeri ogni volta che viene eseguito il codice. # generiamo dei dati from numpy.random import seed from numpy.random import randn from numpy import mean from numpy import std # impostiamo il seed seed(1) # generiamo delle osservazioni data = 5 * randn(10000) + 50 # riassumiamo print('mean=%.3f stdv=%.3f' % (mean(data), std(data))) L'esecuzione dell'esempio genera il campione e quindi stampa la media e la deviazione standard. Come previsto, i valori sono molto vicini ai valori attesi. mean=50.049 stdv=4.994 Grstire gli outliers con il Metodo di deviazione standard Se sappiamo che la distribuzione dei valori nel campione è gaussiana o simile a quella gaussiana, possiamo utilizzare la deviazione standard del campione come cut-off per identificare i valori anomali. La distribuzione gaussiana ha la proprietà che la deviazione standard dalla media può essere utilizzata per riassumere in modo affidabile la percentuale di valori nel campione. Ad esempio, entro una deviazione standard della media coprirà il 68% dei dati. Quindi, se la media è 50 e la deviazione standard è 5, come nel set di dati del test sopra, tutti i dati nel campione tra 45 e 55 rappresenteranno circa il 68% del campione di dati. Possiamo coprire più del campione di dati se espandiamo l'intervallo come segue: 1 Deviazione standard dalla media: 68% 2 Deviazioni standard dalla media: 95% 3 deviazioni standard dalla media: 99,7% Un valore che non rientra in 3 deviazioni standard fa parte della distribuzione, ma è un evento raro o improbabile a circa 1 su 370 campioni. Tre deviazioni standard dalla media sono un limite comune in pratica per identificare i valori anomali in una distribuzione gaussiana o simile a quella gaussiana. Per campioni di dati più piccoli, può essere utilizzato forse un valore di 2 deviazioni standard (95%) e per campioni più grandi, può essere utilizzato forse un valore di 4 deviazioni standard (99,9%). I Dati mu e sigma, un modo semplice per identificare i valori anomali è calcolare uno z-score per ogni xi, che è definito come il numero di deviazioni standard da xi è dalla media […] Valori di dati che hanno uno z-score sigma maggiore di una soglia, ad esempio di tre, sono dichiarati valori anomali. Rendiamolo concreto con un esempio. A volte, i dati vengono prima standardizzati (ad es. su un punteggio Z con media zero e varianza unitaria) in modo che il rilevamento dei valori anomali possa essere eseguito utilizzando valori di cut-off del punteggio Z standard. Questa è una comodità e non è richiesta in generale, ed eseguiremo i calcoli nella scala originale dei dati qui per chiarire le cose. Possiamo calcolare la media e la deviazione standard di un dato campione, quindi calcolare il cut-off per identificare i valori anomali come più di 3 deviazioni standard dalla media. # calcoliamo le statistiche di base data_mean, data_std = mean(data), std(data) # identifichiamo gli outl cut_off = data_std * 3 lower, upper = data_mean - cut_off, data_mean + cut_off Possiamo quindi identificare i valori anomali come quegli esempi che cadono al di fuori dei limiti inferiore e superiore definiti. # identifichiamo gli outliers outliers = [x for x in data if x < lower or x > upper] In alternativa, possiamo filtrare dal campione quei valori che non rientrano nei limiti definiti. # rimuoviamo gli outliers outliers_removed = [x for x in data if x > lower and x < upper] Possiamo mettere tutto questo insieme al nostro set di dati di esempio preparato nella sezione precedente. L'esempio completo è elencato di seguito. from numpy.random import seed from numpy.random import randn from numpy import mean from numpy import std seed(1) data = 5 * randn(10000) + 50 data_mean, data_std = mean(data), std(data) cut_off = data_std * 3 lower, upper = data_mean - cut_off, data_mean + cut_off outliers = [x for x in data if x < lower or x > upper] print('Identified outliers: %d' % len(outliers)) outliers_removed = [x for x in data if x >= lower and x <= upper] print('Non-outlier observations: %d' % len(outliers_removed)) Copia e incolla il codice sul nostro editor Python online preconfigurato per il machine learning e data science L'esecuzione dell'esempio stamperà prima il numero di valori anomali identificati e quindi il numero di osservazioni che non sono valori anomali, dimostrando come identificare e filtrare rispettivamente i valori anomali. Identified outliers: 29 Non-outlier observations: 9971 Finora abbiamo parlato solo di dati univariati con una distribuzione gaussiana, ad esempio una singola variabile. È possibile utilizzare lo stesso approccio se si dispone di dati multivariati, ad esempio dati con più variabili, ciascuna con una distribuzione gaussiana diversa. Puoi immaginare limiti in due dimensioni che definirebbero un'ellisse se hai due variabili. Le osservazioni che non rientrano nell'ellisse sarebbero considerate valori anomali. In tre dimensioni, questo sarebbe un ellissoide e così via in dimensioni superiori. In alternativa, se si conosce meglio il dominio, è possibile che venga identificato un valore anomalo superando i limiti di una o di un sottoinsieme delle dimensioni dei dati. Metodo dell'intervallo interquartile Non tutti i dati sono normali o abbastanza normali da considerarli come tratti da una distribuzione gaussiana. Una buona statistica per riassumere un campione di dati con distribuzione non gaussiana è l'Interquartile Range, o IQR in breve. L'IQR viene calcolato come la differenza tra il 75° e il 25° percentile dei dati. Ricorda che i percentili possono essere calcolati ordinando le osservazioni e selezionando i valori in base a indici specifici. Il 50° percentile è il valore medio, o la media dei due valori medi per un numero pari di esempi. Se avessimo 10.000 campioni, il 50° percentile sarebbe la media dei valori 5000 e 5001. Ci riferiamo ai percentili come quartili (" quart " significa 4) perché i dati sono divisi in quattro gruppi tramite i valori 25, 50 e 75. L'IQR definisce il 50% centrale dei dati o il corpo dei dati. Le tecniche di rilevamento dei valori anomali basati su statistiche presuppongono che i punti dati normali appaiano nelle regioni ad alta probabilità di un modello stocastico, mentre i valori anomali si verificherebbero nelle regioni a bassa probabilità di un modello stocastico. L'IQR può essere utilizzato per identificare i valori anomali definendo limiti sui valori del campione che sono un fattore k dell'IQR al di sotto del 25° percentile o al di sopra del 75° percentile. Il valore comune per il fattore k è il valore 1,5. Un fattore k di 3 o più può essere utilizzato per identificare valori che sono valori anomali estremi o " lontani " . Questi limiti sono disegnati come recinzioni sui baffi (o sulle linee) che vengono tracciati dalla scatola. I valori che non rientrano in questi valori vengono disegnati come punti. Possiamo calcolare i percentili di un set di dati usando la funzione percentile() NumPy che prende il set di dati e la specifica del percentile desiderato. L'IQR può quindi essere calcolato come la differenza tra il 75° e il 25° percentile. # calcoliamo il rancge interquartile q25, q75 = percentile(data, 25), percentile(data, 75) iqr = q75 - q25 Possiamo quindi calcolare il limite per i valori anomali come 1,5 volte l'IQR e sottrarre questo limite dal 25° percentile e aggiungerlo al 75° percentile per fornire i limiti effettivi sui dati. # calcoliamo gli outlier cutoff cut_off = iqr * 1.5 lower, upper = q25 - cut_off, q75 + cut_off Possiamo quindi utilizzare questi limiti per identificare i valori anomali. # adesso identifichiamo gli outliers outliers outliers = [x for x in data if x < lower or x > upper] Possiamo anche utilizzare i limiti per filtrare i valori anomali dal set di dati. # rimuoviamo gli outliers outliers_removed = [x for x in data if x > lower and x < upper] Possiamo collegare tutto questo insieme e dimostrare la procedura sul set di dati di test. L'esempio completo è elencato di seguito. from numpy.random import seed from numpy.random import randn from numpy import percentile seed(1) data = 5 * randn(10000) + 50 q25, q75 = percentile(data, 25), percentile(data, 75) print('Percentiles: 25th=%.3f, 75th=%.3f, IQR=%.3f' % (q25, q75, iqr)) cut_off = iqr * 1.5 lower, upper = q25 - cut_off, q75 + cut_off outliers = [x for x in data if x < lower or x > upper] print('Identified outliers: %d' % len(outliers)) outliers_removed = [x for x in data if x >= lower and x <= upper] print('Non-outlier observations: %d' % len(outliers_removed)) Copia e incolla il codice sul nostro editor Python online preconfigurato per il machine learning e data science, senza dover perdere tempo per installare le librerie. L'esecuzione dell'esempio stampa prima il 25° e il 75° percentile identificato e l'IQR calcolato. Viene stampato il numero di outlier individuato seguito dal numero di osservazioni non outlier. Percentiles: 25th=46.685, 75th=53.359, IQR=6.674 Identified outliers: 81 Non-outlier observations: 9919 L'approccio può essere utilizzato per dati multivariati calcolando a turno i limiti di ciascuna variabile nel set di dati e prendendo i valori anomali come osservazioni che cadono al di fuori del rettangolo o dell'iper-rettangolo. Rilevamento automatico dei valori anomali Nell'apprendimento automatico, un approccio per affrontare il problema del rilevamento dei valori anomali è la classificazione a una classe . La classificazione di una classe, o OCC in breve, implica l'adattamento di un modello sui dati " normali " e la previsione se i nuovi dati sono normali o un'anomalia/anomalia. Un classificatore a una classe mira a catturare le caratteristiche delle istanze di formazione, in modo da essere in grado di distinguerle dai potenziali valori anomali che appaiono. Un classificatore a una classe è adatto a un set di dati di addestramento che contiene solo esempi della classe normale. Una volta preparato, il modello viene utilizzato per classificare nuovi esempi come normali o non normali, ovvero valori anomali o anomalie. Un approccio semplice per identificare i valori anomali consiste nell'individuare quegli esempi che sono lontani dagli altri esempi nello spazio delle caratteristiche. Questo può funzionare bene per gli spazi delle caratteristiche con una bassa dimensionalità (poche funzioni), sebbene possa diventare meno affidabile all'aumentare del numero di funzioni, indicato come la maledizione della dimensionalità. Il fattore anomalo locale, o LOF in breve, è una tecnica che tenta di sfruttare l'idea dei vicini più vicini per il rilevamento dei valori anomali. A ogni esempio viene assegnato un punteggio di quanto sia isolato o quanto sia probabile che siano valori anomali in base alle dimensioni del suo quartiere locale. È più probabile che gli esempi con il punteggio più alto siano valori anomali. Introduciamo un outlier locale (LOF) per ogni oggetto nel set di dati, indicando il suo grado di outlier-ness. La libreria scikit-learn fornisce un'implementazione di questo approccio nella classe LocalOutlierFactor . Possiamo dimostrare il metodo LocalOutlierFactor su un set di dati di modellazione predittiva. Useremo il problema della regressione immobiliare di Boston che ha 13 input e un target numerico e richiede l'apprendimento della relazione tra le caratteristiche dei sobborghi e i prezzi delle case. Puoi trovare qualsiasi dataset tu abbia in mente per provare qui Guardando nel set di dati, dovresti vedere che tutte le variabili sono numeriche. 0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98,24.00 0.02731,0.00,7.070,0,0.4690,6.4210,78.90,4.9671,2,242.0,17.80,396.90,9.14,21.60 0.02729,0.00,7.070,0,0.4690,7.1850,61.10,4.9671,2,242.0,17.80,392.83,4.03,34.70 0.03237,0.00,2.180,0,0.4580,6.9980,45.80,6.0622,3,222.0,18.70,394.63,2.94,33.40 0.06905,0.00,2.180,0,0.4580,7.1470,54.20,6.0622,3,222.0,18.70,396.90,5.33,36.20 ... Non è necessario scaricare il set di dati, lo scaricheremo automaticamente. Innanzitutto, possiamo caricare il set di dati come un array NumPy, separarlo in variabili di input e output e quindi dividerlo in set di dati di training e test. L'esempio completo è elencato di seguito. from pandas import read_csv from sklearn.model_selection import train_test_split url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv' df = read_csv(url, header=None) data = df.values X, y = data[:, :-1], data[:, -1] print(X.shape, y.shape) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape) L'esecuzione dell'esempio carica il set di dati e prima riporta il numero totale di righe e colonne nel set di dati, quindi il numero di dati degli esempi allocati al treno e ai set di dati di test. (506, 13) (506,) (339, 13) (167, 13) (339,) (167,) È un problema di modellazione predittiva di regressione, il che significa che prevediamo un valore numerico. Tutte le variabili di input sono anche numeriche. In questo caso, adatteremo un algoritmo di regressione lineare e valuteremo le prestazioni del modello addestrando il modello sul set di dati del test ed effettuando una previsione sui dati del test e valuteremo le previsioni utilizzando l'errore medio assoluto (MAE). L'esempio completo di valutazione di un modello di regressione lineare sul set di dati è elencato di seguito. from pandas import read_csv from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_absolute_error url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv' df = read_csv(url, header=None) data = df.values X, y = data[:, :-1], data[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) model = LinearRegression() model.fit(X_train, y_train) mae = mean_absolute_error(y_test, yhat) print('MAE: %.3f' % mae) L'esecuzione dell'esempio adatta e valuta il modello, quindi segnala il MAE. Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Esegui l'esempio alcune volte e confrontare il risultato medio. In questo caso, possiamo vedere che il modello ha raggiunto un MAE di circa 3.417. MAE: 3.417 Successivamente, possiamo provare a rimuovere i valori anomali dal set di dati di addestramento. L'aspettativa è che i valori anomali inducano il modello di regressione lineare ad apprendere un pregiudizio o una comprensione distorta del problema e che la rimozione di questi valori anomali dal set di addestramento consentirà di apprendere un modello più efficace. Possiamo raggiungere questo obiettivo definendo il modello LocalOutlierFactor e utilizzandolo per fare una previsione sul set di dati di addestramento, contrassegnando ogni riga nel set di dati di addestramento come normale (1) o un valore anomalo (-1). Utilizzeremo gli iperparametri predefiniti per il modello di rilevamento dei valori anomali, sebbene sia una buona idea ottimizzare la configurazione in base alle specifiche del set di dati. lof = LocalOutlierFactor() yhat = lof.fit_predict(X_train) Possiamo quindi utilizzare queste previsioni per rimuovere tutti i valori anomali dal set di dati di addestramento. # seleziona tutte le righe che non sono valori anomali mask = yhat != -1 X_train, y_train = X_train[mask, :], y_train[mask] Possiamo quindi adattare e valutare il modello come di consueto. L'esempio aggiornato di valutazione di un modello di regressione lineare con valori anomali eliminati dal set di dati di addestramento è elencato di seguito. from pandas import read_csv from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.neighbors import LocalOutlierFactor from sklearn.metrics import mean_absolute_error url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv' df = read_csv(url, header=None) data = df.values X, y = data[:, :-1], data[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=1) print(X_train.shape, y_train.shape) lof = LocalOutlierFactor() yhat = lof.fit_predict(X_train) mask = yhat != -1 X_train, y_train = X_train[mask, :], y_train[mask] print(X_train.shape, y_train.shape) model = LinearRegression() model.fit(X_train, y_train) yhat = model.predict(X_test) mae = mean_absolute_error(y_test, yhat) print('MAE: %.3f' % mae) L'esecuzione dell'esempio adatta e valuta il modello di regressione lineare con valori anomali eliminati dal set di dati di addestramento. Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considera di eseguire l'esempio alcune volte e confrontare il risultato medio. In primo luogo, possiamo vedere che il numero di esempi nel set di dati di addestramento è stato ridotto da 339 a 305, il che significa che sono state identificate ed eliminate 34 righe contenenti valori anomali. Possiamo anche vedere una riduzione del MAE da circa 3,417 da un adattamento del modello sull'intero set di dati di addestramento, a circa 3,356 su un adattamento del modello sul set di dati con i valori anomali rimossi. (339, 13) (339,) (305, 13) (305,) MAE: 3.356 La libreria Scikit-Learn fornisce altri algoritmi di rilevamento anomali che possono essere utilizzati allo stesso modo dell'algoritmo IsolationForest. Estensioni Questa sezione elenca alcune idee per estendere il tutorial che potresti voler esplorare. Sviluppa il tuo set di dati di test gaussiano e traccia i valori anomali e non anomali su un istogramma. Testare il metodo basato su IQR su un set di dati univariato generato con una distribuzione non gaussiana. Scegli un metodo e crea una funzione che filtrerà i valori anomali per un determinato set di dati con un numero arbitrario di dimensioni. Se esplori una di queste estensioni, ci piacerebbe saperlo nei commenti

  • Corso Gratis su Python e Machine Learning

    approfondire la LEZIONE 2 Trucchi Python per la data science Manipolazione Dati con Python e Pandas Intelligenza Artificiale (IA) e Python Come si Relazionano? implementare l'algoritmo Perceptron da zero in Python Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Come creare una semplice intelligenza artificiale Classificatore vs Regressione quale usare

  • Etica nella scienza dei dati e corretto uso dei dati

    In che modo le aziende possono acquisire, conservare e utilizzare i dati in modo etico? Alcune pratiche etiche devono essere seguite dal personale aziendale che si occupa della gestione dei discipline diverse come scienze mediche, città intelligenti e trasporti. Queste aziende hanno i nostri dati personali. Incorpora i dati dei sistemi IoT e AI che sono alla base delle vere reti di città intelligenti, nonché

  • Scegliere l'algoritmo di clustering giusto per i tuoi dati

    Applicare un algoritmo di clustering è molto più semplice di selezionare quello migliore. Ogni tipo offre vantaggi e svantaggi che devono essere considerati se stai cercando una struttura di cluster ordinata. In questo articolo ti spiegheremo come scegliere l'algoritmo di clustering giusto per i tuoi dati. Il clustering dei dati è un passaggio essenziale nella predisposizione di un modello di dati corretto e completo. Per completare un'analisi, il volume delle informazioni dovrebbe essere ordinato in base ai punti in comune. La domanda principale è quale parametro di comunanza fornisce i migliori risultati e cosa è implicato nella definizione di "migliore" Introduzione sulla scelta dell'algoritmo di clustering giusto per i tuoi dati Questo articolo dovrebbe essere utile per i data scientist alle prime armi o per gli esperti che desiderano rinfrescare la propria memoria sull'argomento. Include gli algoritmi di clustering più diffusi e la loro revisione approfondita. A seconda delle particolarità di ciascun metodo, vengono fornite le raccomandazioni che considerano la loro applicazione. Che cosa sono gli algoritmi di clustering? Gli algoritmi di clustering vengono utilizzati per raggruppare i dati in gruppi di elementi simili. I cluster sono utili perché consentono di trovare modelli e tendenze nei dati. Sono disponibili molti diversi algoritmi di clustering tra cui scegliere. Il miglior algoritmo di clustering da utilizzare dipenderà dal tuo set di dati specifico. Dipenderà anche da cosa stai cercando di ottenere con il tuo set di dati. Vantaggio degli algoritmi di clustering Gli algoritmi di clustering sono un ottimo modo per raggruppare punti dati simili in un set di dati. Un algoritmo di clustering è uno strumento matematico che fornisce un modo per raggruppare dati simili. Ciò è utile perché quando si raggruppano dati simili, è possibile trovare facilmente schemi nei dati. Puoi utilizzare algoritmi di clustering per fare molte cose, come trovare modelli nei dati, identificare valori anomali o trovare dati simili ai dati che hai. Gli algoritmi di clustering sono utilizzati in una varietà di campi, come la biologia e l'astronomia. Vengono utilizzati anche per trovare elementi simili in un set di dati. Ad esempio, un algoritmo di clustering può essere utilizzato per trovare articoli simili in un set di dati di abbigliamento per proporre unj nuovo acquisto al cliente. Gli algoritmi di clustering sono davvero utili e sono disponibili in una varietà di forme diverse, Come scegliere l'algoritmo di clustering giusto? Quattro algoritmi di base e come sceglierne uno A seconda dei modelli di clusterizzazione, si differenziano quattro classi comuni di algoritmi. Ci sono non meno di 100 algoritmi in generale, ma la loro popolarità è piuttosto moderata, così come il loro campo di applicazione. Come scegliere l'algoritmo di clustering giusto 1. Clustering basato sulla connettività La clusterizzazione, basata sul calcolo delle distanze tra gli oggetti dell'intero set di dati, è chiamata basata sulla connettività o gerarchica. A seconda della "direzione" dell'algoritmo, può unire o, inversamente, dividere l'array di informazioni: i nomi agglomerati e divisivi sono apparsi da questa esatta variazione. Il tipo più diffuso e ragionevole è quello agglomerato, dove si inizia inserendo il numero di punti dati, che poi vengono uniti in cluster sempre più grandi, fino al raggiungimento del limite. L'esempio più importante di clusterizzazione basata sulla connettività è la classificazione delle piante. L '"albero" del set di dati inizia con una specie particolare e termina con alcuni regni di piante, ciascuno costituito da ammassi ancora più piccoli (phyla, classi, ordini, ecc.) Dopo aver applicato uno degli algoritmi basati sulla connettività, ricevi un dendrogramma di dati, che ti presenta la struttura delle informazioni piuttosto che la sua distinta separazione sui cluster. Tale caratteristica può avere sia il vantaggio che il danno: la complessità dell'algoritmo può risultare eccessiva o semplicemente inapplicabile per set di dati con una gerarchia minima o nulla. Mostra anche scarse prestazioni: a causa dell'abbondanza di iterazioni, l'elaborazione completa richiederà una quantità di tempo irragionevole. Inoltre, non otterrai una struttura precisa usando l'algoritmo gerarchico. Allo stesso tempo, i dati in ingresso richiesti dal contatore si riducono al numero di punti dati, che non influenza sostanzialmente il risultato finale, o alla metrica di distanza preimpostata, che è anche grossolana e approssimativa. Come scegliere l'algoritmo di clustering giusto 2. Clustering basato su centroide Il clustering basato su centroide, dalla mia esperienza, è il modello più frequente grazie alla sua semplicità comparativa. Il modello ha lo scopo di classificare ogni oggetto del set di dati in un particolare cluster. Il numero di cluster ( k ) è scelto casualmente, che è probabilmente la più grande “debolezza” del metodo. Questo algoritmo k - mean è particolarmente popolare nell'apprendimento automatico grazie alla somiglianza con il metodo k-nearest neighbors (kNN). Il processo di calcolo consiste in più passaggi. In primo luogo, vengono scelti i dati in entrata, che è il numero approssimativo dei cluster in cui dovrebbe essere suddiviso il set di dati. I centri dei cluster dovrebbero essere situati il ​​più lontano possibile l'uno dall'altro, ciò aumenterà l'accuratezza del risultato. In secondo luogo, l'algoritmo trova le distanze tra ogni oggetto del set di dati e ogni cluster. La coordinata più piccola (se stiamo parlando di rappresentazione grafica) determina in quale cluster viene spostato l'oggetto. Successivamente, il centro del cluster viene ricalcolato in base alla media delle coordinate di tutti gli oggetti. Il primo passaggio dell'algoritmo si ripete, ma con un nuovo centro del cluster che è stato ricalcolato. Tali iterazioni continuano a meno che non vengano raggiunte determinate condizioni. Ad esempio, l'algoritmo potrebbe terminare quando il centro del cluster non si è spostato o si è spostato in modo insignificante rispetto all'iterazione precedente. Nonostante la semplicità, sia matematica che di codifica, k-means ha alcuni inconvenienti che non mi consentono di usarlo ovunque possibile. Quello include: un bordo negligente di ogni cluster, perché le priorità sono fissate al centro del cluster, non ai suoi confini; l'impossibilità di creare una struttura di un set di dati con oggetti che possono essere classificati in più cluster in egual misura; la necessità di indovinare il numero k ottimale o la necessità di eseguire calcoli preliminari per specificare questo indicatore. Esempio Python: Come scegliere l'algoritmo di clustering giusto 3. Clustering di massimizzazione delle aspettative L'algoritmo di massimizzazione delle aspettative , allo stesso tempo, consente di evitare tali complicazioni fornendo un livello di accuratezza ancora più elevato. In poche parole, calcola la probabilità di relazione di ciascun punto del set di dati con tutti i cluster che abbiamo specificato. Il principale "strumento" utilizzato per questo modello di clusterizzazione è il Gaussian Mixture Models (GMM) , il presupposto che i punti del set di dati generalmente seguano la distribuzione gaussiana . L'algoritmo k-mean è, fondamentalmente, una versione semplificata del principio EM. Entrambi richiedono l'immissione manuale del numero dei cluster e questa è la principale complessità dei metodi. A parte questo, i principi del calcolo (o per GMM o k-mean) sono semplici: l'intervallo approssimativo del cluster viene specificato gradualmente ad ogni nuova iterazione. A differenza dei modelli basati sul centroide, l'algoritmo EM consente di classificare i punti per due o più cluster: ti presenta semplicemente la possibilità di ciascun evento, utilizzando il quale puoi condurre ulteriori analisi. Inoltre, i bordi di ogni ammasso compongono ellissoidi di misure diverse a differenza delle k-medie, dove l'ammasso è rappresentato visivamente come un cerchio. Tuttavia, l'algoritmo semplicemente non funzionerebbe per set di dati in cui gli oggetti non seguono la distribuzione gaussiana. Questo è il principale svantaggio del metodo: è più applicabile a problemi teorici piuttosto che alle misurazioni o osservazioni effettive. Come scegliere l'algoritmo di clustering giusto 4. Clustering basato sulla densità Infine, arriva il clustering basato sulla densità , il preferito non ufficiale dei cuori degli scienziati dei dati . Il nome comprende il punto principale del modello: per dividere il set di dati in cluster, il contatore immette il parametro ε, la distanza di "quartiere". Se l'oggetto si trova all'interno del cerchio (sfera) del raggio ε, quindi si riferisce all'ammasso. Passo dopo passo, l'algoritmo DBSCAN (Density-Based Spatial Clustering of Applications with Noise) controlla ogni oggetto, cambia il suo stato in "visualizzato", lo classifica nel cluster OR noise, fino a quando l'intero set di dati non viene elaborato. I cluster determinati con DBSCAN possono avere forme arbitrarie, quindi sono estremamente accurati. Inoltre, l'algoritmo non ti fa calcolare il numero di cluster: viene determinato automaticamente. Tuttavia, anche un capolavoro come DBSCAN ha uno svantaggio. Se il set di dati è costituito da cluster a densità variabile, il metodo mostra scarsi risultati. Potrebbe anche non essere una tua scelta se il posizionamento degli oggetti è troppo vicino e il parametro ε non può essere stimato facilmente. Conclusione sulla scelta l'algoritmo di clustering giusto per i tuoi dati Riassumendo, non esiste un algoritmo scelto male: alcuni di essi sono semplicemente più adatti per le particolari strutture del set di dati. Per scegliere sempre l'algoritmo migliore (leggi - più adatto), è necessario avere una comprensione completa dei loro vantaggi, svantaggi e peculiarità. Alcuni algoritmi potrebbero essere esclusi fin dall'inizio se, ad esempio, non corrispondono alle specifiche del set di dati. Per evitare lavori strani, puoi dedicare un po' di tempo a memorizzare le informazioni invece di scegliere il percorso per tentativi ed errori e imparare dai tuoi stessi errori. Ti auguriamo di scegliere sempre il miglior algoritmo all'inizio.

bottom of page