Risultati Ricerca Intelligenza Artificiale Italia
452 risultati trovati per "intelligenza-artificlae"
- Come utilizzare i dati per guidare la tua strategia di marketing?
La combinazione di big data e analisi basata sull'intelligenza artificiale consente ai professionisti Come utilizzare le informazioni basate sui dati nel marketing La business intelligence raccolta dal marketing Aaprendimento automatico e Iintelligenza artificiale nel marketing L'apprendimento automatico e altre tecniche di intelligenza artificiale vengono utilizzate per automatizzare alcune operazioni di marketing
- 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
- Modelli di Machine Learning per Principianti con codice python
Alimentati dai dati, i modelli di machine learning (ML) sono i motori matematici dell'intelligenza artificiale Ad esempio, un modello ML per la visione artificiale potrebbe essere in grado di identificare automobili
- Esempi di Algebra Lineare nel Machine Learning o Apprendimento Automatico
e Fotografie Forse sei più abituato a lavorare con immagini o fotografie in applicazioni di visione artificiale In molti metodi che coinvolgono coefficienti, come i metodi di regressione e le reti neurali artificiali Apprendimento profondo Le reti neurali artificiali sono algoritmi di apprendimento automatico non lineari Il deep learning è la recente rinascita nell'uso di reti neurali artificiali con metodi più recenti e Letture consigliate su " Esempi di algebra lineare nell'apprendimento automatico " : Intelligenza Artificiale
- Migliori Alternative Open Source a Chat GPT e Bard
L'intelligenza artificiale ha fatto grandi progressi negli ultimi anni e oggi ci sono molte tecnologie
- Cosa sono i Big data
Ad esempio, i Big Data possono essere utilizzati per analizzare i dati provenienti da contatori intelligenti Apprendimento automatico e intelligenza artificiale: l'apprendimento automatico e l'intelligenza artificiale Una delle tendenze chiave nel futuro dei Big Data è il crescente utilizzo delle tecnologie di intelligenza artificiale (AI) e machine learning (ML).
- Come fare il Finetuning di Llama2 e Mistral con Python
trasformazione di un podcast noto per le sue discussioni approfondite in un set di addestramento che permette a un'intelligenza artificiale di imitare il modo di parlare di Lex. from datasets import load_dataset import json # Carica Ciò potrebbe essere utilizzato per addestrare un'intelligenza artificiale a generare nuovi mondi fantasy Desideri sfruttare al massimo il potenziale dell'Intelligenza Artificiale per il tuo progetto?
- Data engineer vs data scientist: quale carriera devi scegliere ?
Lavorano anche alla creazione e all'implementazione di algoritmi basati sull'intelligenza artificiale
- Apprendimento non Supervisionato con Python
Yan Lecun, vicepresidente e scienziato capo dell'intelligenza artificiale di Facebook, ha affermato che GAN) Mappe auto-organizzanti Letture consigliate su " Apprendimento non Supervisionato con Python " : Intelligenza Artificiale (IA) e Python Come si Relazionano?
- 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.
- Che cosa è il Deep Learning (DL)
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
- Google Gemini API , come usare l'IA di google nei tuoi progetti
Risposte Multiple Testare il Modello con Query Non Sicure Google è conosciuta per stabilire le basi dell'Intelligenza Artificiale Responsabile e come azienda che mette la Responsabilità e l'Uso Sicuro dell'IA al primo Gemini In conclusione, le API di Google Gemini si rivela un'entusiasmante innovazione nel panorama dell'Intelligenza Artificiale, presentando versatilità nella generazione di testi, nella gestione di conversazioni e nell'elaborazione
- 10 Migliori Librerie Python Che i DataScientist (Scienziati dei dati) dovrebbero conoscere nel 2023
e non Spiegazione della più semplice rete neurale per principianti Prerequisiti per le carriere di Intelligenza Artificiale - Machine Learning PyScript, come usare Python nel browser! Programmazione per la Data Science Che cosa è il Machine Learning (ML) Migliori progetti Open Source Python di Intelligenza Artificiale Il tuo Primo Programma di Machine Learning con Python e Google Colab Come Analizzare Un
- I 10 migliori progetti di machine learning per principianti da fare con python
migliori progetti di machine learning per principianti da fare con python" Come Iniziare a Utilizzare l'Intelligenza Artificiale (I.A.) Nella Tua Azienda Migliori progetti Open Source Python di Intelligenza Artificiale Come Creare Un Dataset
- 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