Trading algoritmico con Python - pagina 21

 

Backtesting.py - Corso completo su Python



Backtesting.py - Corso completo su Python

Durante il tutorial, l'istruttore discute gli aspetti positivi e negativi dell'utilizzo di backtesting.py come libreria per il backtest delle strategie di trading. La libreria è progettata per concentrarsi esclusivamente sugli elementi essenziali del backtesting, omettendo funzionalità come una libreria di indicatori o l'integrazione con broker o altre piattaforme. Questa semplicità consente alla libreria di essere leggera e semplice da usare. La documentazione fornita è chiara e di facile comprensione, consentendo agli utenti di comprendere rapidamente i concetti e le funzionalità della libreria.

Un vantaggio significativo di backtesting.py è la sua velocità, soprattutto quando si testano singole strategie. La libreria è ottimizzata per le prestazioni, consentendo agli utenti di eseguire backtest in modo efficiente e ottenere risultati in modo tempestivo. Questa velocità è vantaggiosa durante l'iterazione di più strategie o combinazioni di parametri per trovare le impostazioni ottimali.

Tuttavia, ci sono alcune limitazioni da considerare quando si utilizza backtesting.py. In primo luogo, la libreria non supporta il trading con più risorse. È progettato principalmente per testare strategie su un singolo asset o titolo. Inoltre, backtesting.py non fornisce supporto per le quote frazionarie, il che potrebbe essere uno svantaggio per gli utenti interessati a fare trading con posizioni di dimensioni inferiori.

Nonostante queste limitazioni, backtesting.py rimane una scelta eccellente per coloro che vogliono concentrarsi esclusivamente sul backtest delle proprie strategie di trading. La sua semplicità e la sua natura leggera lo rendono facile da capire e da integrare nei flussi di lavoro esistenti.

Nel tutorial, l'istruttore dimostra l'utilizzo di backtesting.py seguendo i passaggi per creare un ambiente virtuale e installare le dipendenze necessarie. Importando i componenti richiesti, come i dati di test per i prezzi delle azioni Google dal 2006 al 2013, l'istruttore pone le basi per l'esecuzione di un backtest.

L'istruttore procede quindi alla creazione di una classe strategica in cui vengono definite le due funzioni essenziali, __init__ e next. Nella funzione __init__, l'istruttore calcola il valore dell'indicatore del Relative Strength Index (RSI). La funzione successiva viene utilizzata per valutare i criteri di acquisto in base ai valori RSI.

Successivamente, l'istruttore spiega come implementare una semplice strategia di crossover utilizzando valori precalcolati inseriti nella funzione successiva. La libreria crossover da backtesting.py viene importata per confrontare l'RSI con i valori limite superiore e inferiore. Quando l'RSI supera un certo valore, viene generato un segnale di vendita e quando scende al di sotto di un altro valore, viene attivato un segnale di acquisto. L'istruttore definisce i valori limite superiore e inferiore e li assegna alla classe per l'accesso nella funzione successiva.

Per testare la strategia, l'istruttore imposta un backtest fornendo i dati, selezionando l'importo iniziale di denaro e stampando le statistiche. L'istruttore sottolinea la facilità di tracciare i risultati del backtesting utilizzando backtesting.py ed evidenzia come le caselle rosse e verdi sullo schermo indicano i mesi.

L'istruttore procede a fornire una panoramica della dashboard backtesting.py, che offre una visione completa delle informazioni commerciali, profitti e perdite, valore del portafoglio e indicatori, tra le altre metriche utili. L'istruttore dimostra come è possibile ottenere l'ottimizzazione della strategia utilizzando backtesting.py definendo intervalli diversi per i limiti superiore e inferiore della finestra RSI. L'ottimizzatore genera statistiche come il rapporto Sharpe e simula varie combinazioni per trovare la funzione più preziosa. L'istruttore sottolinea che gli utenti possono definire metriche personalizzate e applicare vincoli per migliorare i risultati di ottimizzazione.

Inoltre, l'istruttore spiega come applicare i vincoli per selezionare un sottoinsieme di valori utilizzando funzioni lambda che restituiscono true o false in base a parametri specifici. Il video mostra come ottimizzare la strategia utilizzando la funzione di ottimizzazione per massimizzare il rapporto Sharpe e come definire la funzione di ottimizzazione come una normale funzione Python. L'istruttore discute anche la creazione di una metrica per massimizzare i profitti riducendo al minimo il tempo trascorso nel mercato.

Nel tutorial, l'istruttore aggiunge un numero minimo di filtri di operazioni alla funzione di ottimizzazione per evitare l'overfitting. Includendo questo filtro, la funzione di backtesting è costretta a guardare oltre un singolo periodo di oscillazione, aumentando le possibilità di scoprire combinazioni di parametri più redditizie. Inoltre, l'istruttore mostra come creare file HTML dei risultati del backtest, che possono essere utili quando si eseguono più backtest e devono tenere traccia delle diverse combinazioni di parametri. L'istruttore fornisce anche indicazioni sulla denominazione e l'organizzazione dei file generati per evitare di ingombrare la directory di lavoro.

Il tutorial esplora ulteriormente l'uso della funzione di ottimizzazione in backtesting.py per ottimizzare una strategia in modo efficiente senza dover testare ogni possibile combinazione. Impostando un numero massimo di tentativi, il programma esegue una ricerca a griglia randomizzata delle combinazioni, riducendo il tempo dedicato al backtesting e il rischio di overfitting. L'istruttore dimostra come generare mappe di calore per visualizzare gli effetti di diversi valori sulla strategia variando i limiti superiore e inferiore. Viene utilizzata un'istruzione pandas group by per raggruppare le colonne in base ai limiti superiore e inferiore e viene calcolata la media per ottenere valori medi per ciascuna combinazione.

L'oratore spiega come la funzione in backtesting.py trova tutte le combinazioni univoche delle colonne specificate, come i limiti superiore e inferiore. Queste combinazioni vengono quindi raggruppate insieme e viene applicata una funzione di aggregazione, come la media. L'output risultante è una mappa termica che può essere tracciata utilizzando il modulo Seaborn. L'istruttore dimostra l'ottimizzazione per il rapporto Sharpe e la modifica della mappa dei colori per la mappa termica. Inoltre, l'istruttore mostra come utilizzare la funzione integrata plot_heat_maps per tracciare più mappe di calore per più di due parametri.

L'istruttore dimostra come utilizzare le mappe di calore per l'ottimizzazione dei parametri e l'implementazione di strategie multi-time frame utilizzando la funzione resample apply dalla libreria backtesting.py. Le mappe di calore forniscono una rappresentazione visiva di come le variazioni nei diversi parametri influenzano le strategie di trading. Combinando diversi intervalli di tempo utilizzando la funzione resample apply, i trader possono costruire strategie più complesse che prendono in considerazione diverse condizioni di mercato.

L'istruttore spiega come diversi intervalli di tempo possono essere utilizzati in una strategia di trading utilizzando la libreria backtesting.py. Effettuando il downsampling e applicando le funzioni, la libreria può eseguire il forward fill e reindicizzare l'intervallo di tempo più piccolo, facilitando l'analisi di diversi intervalli di tempo. Nell'esempio fornito, la strategia prevede l'utilizzo dell'RSI giornaliero e settimanale per attivare le negoziazioni solo quando si verifica un crossover e l'RSI è al di sopra o al di sotto di una certa soglia. L'istruttore afferma che la strategia può essere ottimizzata regolando i parametri e che la libreria supporta la sperimentazione con diversi tipi di ordine, come stop loss e take profit.

Il presentatore mostra come aprire una posizione short quando l'RSI scende al di sotto del limite inferiore e chiudere eventuali posizioni short al momento dell'acquisto. Allo stesso modo, il presentatore dimostra che quando l'RSI supera il limite superiore, vende eventuali posizioni lunghe e avvia una posizione corta. Tuttavia, il presentatore osserva che non esiste un codice per impedire al programma di assumere più posizioni, il che porta il programma a perdere l'80% del capitale investito. Il presentatore spiega come risolvere questo problema aggiungendo una clausola per avviare una nuova operazione solo se non esiste una posizione corrente o se esiste una posizione lunga/corta nel portafoglio.

L'istruttore dimostra come utilizzare gli ordini stop-loss e take-profit in backtesting.py. Impostando uno stop-loss a una percentuale specifica al di sotto del prezzo corrente, la strategia può limitare le perdite su ogni operazione, mentre l'impostazione di un livello di take-profit consente di uscire dalle negoziazioni a un certo livello di profitto. L'istruttore mostra anche come regolare il parametro della dimensione nel processo di acquisto per allocare una percentuale specifica di fondi disponibili per ogni operazione. Sebbene ci siano alcuni problemi con le tattiche di vendita nell'esempio, il video fornisce utili spunti sull'utilizzo di backtesting.py per creare e testare strategie di trading.

Il video discute diversi modi per implementare il dimensionamento della posizione nel backtesting. Un approccio consiste nell'acquistare e vendere un'azione alla volta anziché una percentuale della liquidità disponibile. Questo approccio può essere utile per le strategie che implicano il laddering in una posizione o la media del costo in dollari. Il video mostra la modifica di una strategia crossover in una strategia basata sull'indicatore RSI. In questa strategia modificata, le negoziazioni vengono eseguite quando l'ultimo valore RSI è inferiore al limite inferiore. Il video evidenzia inoltre che le negoziazioni possono essere estratte dal backtest come dataframe panda, comprese le date di ingresso e di uscita e altre metriche importanti. Questi dati commerciali possono essere esportati in altri strumenti di visualizzazione, come Excel o altri script Python, per ulteriori analisi ed esami.

Il creatore di backtesting.py introduce la funzione "barre da", che è un potente strumento per ottimizzare le strategie ed evitare la necessità di scrivere numerose istruzioni if per confrontare i dati dei giorni precedenti. La funzione consente agli utenti di determinare il numero di barre dall'ultima volta che è stata soddisfatta una particolare condizione di trading. Questa funzione fornisce un modo conveniente per ottimizzare le strategie basate su specifiche condizioni basate sul tempo. Inoltre, il creatore sottolinea la natura open source di backtesting.py, incoraggiando gli utenti a personalizzare la libreria in base alle proprie esigenze e preferenze specifiche.

In conclusione, il tutorial su backtesting.py si conclude con l'istruttore che incoraggia gli spettatori a contattare qualsiasi domanda o dubbio. L'istruttore augura loro buona fortuna nei loro sforzi di backtesting e ricorda loro di divertirsi mentre esplorano le possibilità del backtesting e dell'ottimizzazione delle strategie di trading utilizzando backtesting.py. L'istruttore sottolinea l'importanza di fare riferimento alla documentazione backtesting.py per maggiori dettagli e per scoprire funzionalità aggiuntive disponibili per la creazione e l'ottimizzazione dell'infrastruttura di backtesting.

Nel complesso, il tutorial fornisce una panoramica completa di backtesting.py, dei suoi vantaggi, limitazioni e varie funzionalità. Guida gli utenti attraverso il processo di creazione di un ambiente di backtest, implementazione di strategie, ottimizzazione dei parametri, utilizzo di mappe di calore per l'analisi, incorporazione di più intervalli temporali e applicazione di tecniche di dimensionamento della posizione. Seguendo il tutorial, gli spettatori ottengono preziose informazioni e conoscenze pratiche che possono aiutarli a testare e perfezionare efficacemente le loro strategie di trading utilizzando backtesting.py.

  • 00:00:00 L'istruttore discute gli aspetti positivi e negativi di backtesting.py. La libreria si concentra solo sugli elementi essenziali del backtesting e non include una libreria di indicatori o l'integrazione con broker o altre piattaforme. La documentazione è semplice e di facile comprensione. Inoltre, è molto veloce, soprattutto quando si testano singole strategie. Al ribasso, non consente il trading con più asset o frazioni di azioni. Nel complesso, la libreria è leggera e semplice, il che la rende una scelta eccellente per coloro che desiderano concentrarsi esclusivamente sul backtesting. L'istruttore inoltre segue i passaggi per creare un ambiente virtuale e installare le dipendenze necessarie per il tutorial.

  • 00:05:00 Vediamo l'autore della libreria backtesting.py importare i componenti necessari per eseguire un backtest, come i dati di test per i prezzi delle azioni Google dal 2006 al 2013 e la creazione di una classe di strategia in cui le due funzioni , init e next sono definiti. In init, calcoliamo il valore dell'indicatore di RSI e la funzione next viene utilizzata per valutare i criteri per l'acquisto, in base al calcolo dei valori per l'RSI.

  • 00:10:00 L'istruttore spiega come implementare una semplice strategia di crossover utilizzando valori precalcolati che verranno inseriti nel prossimo anno. Importano la libreria crossover da backtesting.py per confrontare l'RSI con i valori limite superiore e inferiore. Quando l'RSI supera un certo valore, vende e quando scende al di sotto, acquista. Definiscono inoltre i valori limite superiore e inferiore e li assegnano alla classe per accedervi nella funzione. L'istruttore quindi imposta un backtest per la strategia e fornisce i dati, seleziona la quantità di denaro e stampa le statistiche. Spiegano come il backtesting può essere facilmente tracciato e come le caselle rosse e verdi sullo schermo indicano i mesi.

  • 00:15:00 Il relatore fornisce una panoramica della dashboard che può essere utilizzata per visualizzare i risultati del backtesting utilizzando backtesting.py. La dashboard fornisce informazioni su operazioni, profitti e perdite, valore del portafoglio e indicatori, tra le altre cose. Il relatore dimostra anche come si può ottenere l'ottimizzazione della strategia utilizzando backtesting.py definendo diversi intervalli di valori per i limiti superiore e inferiore e la finestra RSI. L'ottimizzatore genera statistiche come il rapporto Sharpe e simula varie combinazioni per trovare la funzione con il valore più alto. Il relatore osserva che gli utenti possono definire metriche personalizzate per ottimizzare e applicare vincoli per generare risultati di ottimizzazione migliori.

  • 00:20:00 L'istruttore spiega come applicare i vincoli per selezionare un sottoinsieme di valori e creare funzioni lambda che restituiscono vero o falso in base a qualsiasi parametro. Il video mostra come ottimizzare la strategia, come utilizzare la funzione di ottimizzazione per massimizzare il rapporto nitido e come definire la funzione di ottimizzazione come una normale funzione Python. L'istruttore discute anche su come creare una metrica che capisca come guadagnare di più rimanendo sul mercato per il minor tempo possibile.

  • 00:25:00 L'istruttore spiega come aggiungere un numero minimo di filtri di operazioni alla funzione di ottimizzazione per evitare l'overfitting. Aggiungendo questo filtro, la funzione di backtesting è costretta a guardare oltre un singolo periodo di oscillazione, aumentando le possibilità di scoprire combinazioni di parametri più redditizie. L'istruttore mostra anche come creare file HTML dei risultati del backtest, che possono essere utili quando si eseguono più backtest e devono tenere traccia delle diverse combinazioni di parametri utilizzate. Infine, l'istruttore discute come denominare e organizzare i file generati per evitare di intasare la directory di lavoro.

  • 00:30:00 L'istruttore spiega come utilizzare la funzione di ottimizzazione in backtesting.py per ottimizzare rapidamente una strategia senza dover eseguire ogni possibile combinazione. Impostando un numero massimo di tentativi, il programma esegue una ricerca a griglia randomizzata delle combinazioni, riducendo il tempo dedicato al backtesting e il rischio di overfitting. L'istruttore dimostra anche come generare mappe di calore per visualizzare i diversi valori e i loro effetti sulla strategia quando si variano i limiti superiore e inferiore. Viene utilizzata un'istruzione pandas group by per raggruppare le colonne in base ai limiti superiore e inferiore e la media viene presa per calcolare i valori medi per ciascuna combinazione.

  • 00:35:00 L'oratore spiega come la funzione trova tutte le combinazioni univoche delle colonne menzionate, come i limiti superiore e inferiore. La funzione quindi raggruppa queste combinazioni e applica una funzione di aggregazione, in questo caso la media. L'output risultante è una mappa termica che può essere tracciata utilizzando il modulo Seaborn. Il relatore mostra come ottimizzare il rapporto Sharpe e modificare la mappa dei colori per la mappa termica. Infine, il relatore mostra come utilizzare una funzione integrata, plot_heat_maps, per tracciare più heatmap per più di due parametri.

  • 00:40:00 L'istruttore dimostra come utilizzare le mappe di calore per l'ottimizzazione dei parametri e come implementare strategie multi-time frame utilizzando la funzione resample apply dalla libreria di backtesting. Utilizzando le mappe di calore, gli utenti possono visualizzare in che modo le variazioni di diversi parametri influenzano le loro strategie di trading. La funzione resample apply consente agli utenti di ricampionare i dati in intervalli di tempo diversi, come settimanali e giornalieri, per utilizzarli insieme in una strategia multi-time frame. Combinando diversi intervalli di tempo, i trader possono costruire strategie più complesse che tengono conto delle diverse condizioni di mercato.

  • 00:45:00 L'istruttore spiega come utilizzare diversi intervalli di tempo in una strategia di trading utilizzando la libreria backtesting.py. Effettuando il downsampling e applicando le funzioni, la libreria può eseguire il riempimento in avanti e reindicizzare l'intervallo di tempo più piccolo, semplificando l'analisi di intervalli di tempo diversi. La strategia in questo esempio prevede l'utilizzo dell'RSI giornaliero e settimanale per attivare le negoziazioni solo quando si verifica un crossover e l'RSI è al di sopra o al di sotto di una certa soglia. La strategia potrebbe essere ottimizzata modificando i parametri e la libreria potrebbe essere utilizzata per sperimentare diversi tipi di ordine come stop loss e take profit.

  • 00:50:00 Il presentatore mostra come aprire una posizione short quando l'RSI scende al di sotto del limite inferiore e poi chiude eventuali posizioni short al momento dell'acquisto. Allo stesso modo, dimostra che quando l'RSI supera il limite superiore e vende eventuali posizioni lunghe, anche il programma avvia una posizione corta. Tuttavia, non esiste alcun codice per impedire al programma di assumere più posizioni, il che porta il programma a perdere l'80% del capitale investito. Il presentatore spiega come risolvere questo problema aggiungendo una clausola per avviare una nuova operazione solo se non esiste una posizione corrente o esiste una posizione lunga/corta nel portafoglio.

  • 00:55:00 L'istruttore dimostra come utilizzare gli ordini stop-loss e take-profit in backtesting.py. Impostando lo stop-loss a una percentuale specifica al di sotto del prezzo corrente, la strategia può evitare di perdere più di un certo importo su ogni operazione, mentre l'impostazione del take-profit consente di uscire dalle negoziazioni a un certo livello di profitto. L'istruttore mostra anche come regolare il parametro della dimensione nel processo di acquisto per allocare una percentuale specifica di fondi disponibili per ogni operazione. Sebbene in questo esempio ci siano alcuni problemi con le tattiche di vendita, il video fornisce utili spunti sull'utilizzo di backtesting.py per creare e testare strategie di trading.

  • 01:00:00 Il video discute diversi modi per implementare il dimensionamento della posizione nel backtesting. Un modo è acquistare e vendere un'azione alla volta piuttosto che una percentuale di denaro disponibile, che può essere utile per entrare in una posizione o per calcolare la media del costo in dollari. Il video mostra la modifica di una strategia di crossover in una strategia basata sull'indicatore RSI, che acquista quando l'ultimo valore RSI è inferiore alla banda inferiore. Il video mostra anche che le negoziazioni possono essere estratte dal backtest come dataframe panda, comprese le date di ingresso e di uscita e altre metriche importanti. Le operazioni possono essere esportate in altri strumenti di visualizzazione, come Excel o altri script Python.

  • 01:05:00 Il creatore introduce la funzione "barre da" in backtesting.py, che può essere utilizzata per determinare il numero di barre dall'ultima volta che una particolare condizione di trading è stata soddisfatta. Questa funzione può essere un ottimo strumento per ottimizzare le strategie e prevenire la necessità di scrivere molte istruzioni if per confrontare i dati dei giorni precedenti. Il creatore utilizza l'esempio della vendita solo quando l'rsi giornaliero è al di sopra del limite superiore per tre giorni consecutivi. Inoltre, discute su come estrarre i dati commerciali grezzi per ulteriori analisi e su come la natura open source di backtesting.py rende facile per gli utenti personalizzare la libreria per le loro esigenze specifiche. La conclusione del tutorial invita gli studenti a esplorare la documentazione backtesting.py per scoprire maggiori dettagli e funzionalità disponibili per costruire e ottimizzare la propria infrastruttura di backtesting.

  • 01:10:00 Il relatore conclude il corso su backtesting.py incoraggiando gli spettatori a contattarlo per qualsiasi domanda o dubbio. Inoltre augura loro buona fortuna nei loro sforzi di backtesting e ricorda loro di divertirsi.
Backtesting.py - Full course in python
Backtesting.py - Full course in python
  • 2022.04.26
  • www.youtube.com
A full course covering all you need to know about the backtesting.py python library. Backtesting.py is a lightweight backtesting framework in the style of Ba...
 

Effettua facilmente il backtest della tua strategia di costo medio in dollari in Python



Effettua facilmente il backtest della tua strategia di costo medio in dollari in Python

Nei prossimi 20 minuti circa, implementeremo una strategia di media del costo in dollari in Python. Questa strategia ti consentirà di valutare la performance della media del costo in dollari per un asset o un indice specifico in un determinato periodo di tempo. Useremo uno strumento chiamato backtesting.py per implementare questa strategia. Backtesting.py è un framework intuitivo in Python che è meno intimidatorio rispetto ad altre librerie come Vectorbt o Backtrader. Se sei nuovo in Python, questa sarà un'ottima opzione per te.

La strategia di calcolo della media del costo in dollari che implementeremo è relativamente semplice, ma ti mostrerò anche come estenderla. La nostra strategia prevede l'acquisto di un importo fisso in dollari di un particolare asset ogni lunedì o martedì e la ripetizione di questo processo finché non esauriamo i dati. Per iniziare, apri un terminale e configura un nuovo ambiente virtuale per garantire un ambiente pulito per la nostra implementazione. Dopo aver configurato l'ambiente virtuale, installa il pacchetto di backtesting utilizzando pip:

pip install backtesting

Dopo aver installato il pacchetto, possiamo procedere con il nostro file Python. Avremo bisogno di importare alcuni moduli e dati necessari. Dal backtesting, importa i moduli backtest e strategia. Inoltre, importa alcuni dati fittizi da backtesting.test, in particolare i dati di Google. Avremo anche bisogno del modulo panda per la manipolazione dei dati.

Ora, definiamo la nostra classe strategica. Crea una classe chiamata DCA (Dollar Cost Average) che eredita dalla classe della strategia. All'interno di questa classe, imposteremo una variabile di classe denominata amount_to_invest, che rappresenta l'importo fisso in dollari che vogliamo investire. Inizialmente, impostalo su 10.

Successivamente, dobbiamo definire due funzioni all'interno di questa classe: __init__ e next. La funzione __init__ viene chiamata durante l'inizializzazione e viene utilizzata per pre-calcolare eventuali valori di cui potremmo aver bisogno in seguito. Nel nostro caso, creeremo un indicatore che ci dia il giorno della settimana. Per fare ciò, utilizzeremo il metodo self.indicator fornito da backtesting.py. Possiamo definire il nostro indicatore come self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek). Questo indicatore restituirà un array dei valori del giorno della settimana (0-6, dove lunedì è 0 e domenica è 6) per i nostri dati.

Passiamo ora alla funzione successiva, che è dove implementiamo la nostra logica di trading. Questa funzione viene richiamata per ogni barra di dati e ci consente di prendere decisioni in base ai dati correnti. Nel nostro caso, verificheremo se il giorno della settimana è uguale a 1 (martedì) utilizzando if self.day_of_week == 1:. Se è martedì, attiveremo un segnale di acquisto. Per eseguire l'ordine di acquisto, utilizzeremo la funzione self.buy fornita da backtesting.py. Possiamo calcolare la dimensione dell'ordine di acquisto dividendo l'importo_da_investire per l'attuale prezzo di chiusura dell'asset. Per assicurarci di acquistare un numero intero di azioni, possiamo utilizzare math.floor per arrotondare il risultato per difetto.

Per gestire le frazioni di azioni, possiamo dividere le azioni moltiplicando l'asset per un piccolo numero, ad esempio 10 ** -6. Questo dividerà le azioni in microcondivisioni, che possono essere successivamente riconvertite nell'importo effettivo di azioni acquistate dividendo per lo stesso piccolo numero.

Infine, dobbiamo eseguire il backtest ed estrarre le statistiche. Per fare ciò, possiamo usare bt.run() e assegnare il risultato a una variabile chiamata stats. Possiamo anche tracciare i risultati usando bt.plot().

Poiché non abbiamo ancora implementato la logica di vendita, la trama appare come una linea continua senza alcun punto di vendita. Lo risolveremo presto. Ma prima di farlo, estraiamo alcune statistiche dai risultati del backtest.

Per fare questo, useremo la variabile stats che abbiamo definito in precedenza. Possiamo stampare varie statistiche come il rendimento totale, il rendimento annualizzato, il prelievo massimo e altro ancora.

Sentiti libero di aggiungere altre statistiche se sei interessato a esplorare ulteriori metriche sul rendimento.

Ora passiamo all'implementazione della logica di vendita. Poiché utilizziamo una strategia di media del costo in dollari, venderemo lo stesso importo fisso in dollari ogni settimana. Nel nostro caso, venderemo il venerdì.

Qui, controlliamo se il giorno della settimana è 4 (venerdì) utilizzando l'indicatore day_of_week che abbiamo creato in precedenza. Se è venerdì, vendiamo lo stesso importo in dollari che abbiamo acquistato in precedenza dividendo amount_to_invest per il prezzo di chiusura corrente. Ciò garantisce che vendiamo il numero appropriato di azioni per corrispondere all'importo del nostro investimento.

Ora, quando eseguiamo il backtest, dovremmo vedere i punti di vendita sul grafico, indicando i venerdì in cui vendiamo la nostra posizione.

Sentiti libero di sperimentare diverse varianti di questa strategia, come regolare i giorni di acquisto/vendita o implementare condizioni aggiuntive basate sui movimenti dei prezzi. Questo framework ti consente di estendere e personalizzare facilmente la tua strategia in base alle tue esigenze.

Ricorda di regolare la variabile amount_to_invest ed esplorare diversi dati sugli asset per vedere come si comporta la strategia.

Spero che questo ti aiuti a implementare ed esplorare la strategia di media del costo in dollari utilizzando la libreria backtesting.py in Python. Fammi sapere se hai altre domande!

Backtest Your Dollar Cost Average Strategy easily in Python
Backtest Your Dollar Cost Average Strategy easily in Python
  • 2022.06.29
  • www.youtube.com
We backtest a simple dollar cost averaging strategy in backtesting.py. Backtesting.py is a super easy to use framework for beginners to python or to backtest...
 

Indicatori personalizzati in Backtesting.py - Python Deep Dive



Indicatori personalizzati in Backtesting.py - Python Deep Dive

In questo video, esploreremo il processo di creazione di indicatori personalizzati nella libreria backtesting.py. Questa funzionalità ci consentirà di eseguire facilmente il backtest di qualsiasi strategia di trading creando indicatori e traducendo le funzioni Python in un formato compatibile con l'ecosistema backtesting.py.

Prima di approfondire i dettagli della creazione dell'indicatore, si consiglia di dare un'occhiata a un corso disponibile gratuitamente su YouTube che copre la maggior parte degli aspetti di backtesting.py. Questo corso fornirà una comprensione di alto livello della libreria, che sarà utile quando si esplora la creazione di indicatori in questo video.

In questo video, ci concentreremo su tre diversi esempi per coprire varie idee sugli indicatori. Il primo esempio prevede l'utilizzo di segnali generati in un programma Python esterno e la loro integrazione in backtesting.py. Questo approccio è utile quando si dispone già di segnali di acquisto e vendita da una fonte esterna e si desidera incorporarli nel processo di backtesting.

Il secondo esempio dimostrerà l'uso della libreria pandas-ta per restituire più valori per ciascun indicatore. Nello specifico, lavoreremo con l'indicatore Bollinger Bands e mostreremo come restituire un frame di dati contenente sia la banda inferiore che quella superiore, invece di un semplice array numpy. Questo esempio evidenzierà la versatilità della creazione di indicatori con più valori.

Infine, codificheremo a mano una strategia di momentum per dimostrare come è possibile creare indicatori personalizzati utilizzando Python puro. Questo esempio mostrerà la flessibilità della creazione di indicatori utilizzando la programmazione Python, consentendo possibilità illimitate nella progettazione degli indicatori.

Per seguire gli esempi, assicurati di aver installato le librerie necessarie, inclusi backtesting, panda e pandas-ta. Dopo aver installato queste librerie, crea un file Python per gli esempi di codice.

La parte iniziale del codice imposta il boilerplate necessario quando si utilizza backtesting.py. Importa le classi richieste, "backtest" e "strategia" e importa i dati di esempio per le azioni di Google da backtesting.py. I dati importati sono un frame di dati panda contenente dati sui prezzi giornalieri, inclusi apertura, massimo, minimo, chiusura e volume, con un indice datetime.

Per il primo esempio, assumiamo che tu abbia già generato alcuni segnali in un programma esterno e desideri trasferirli a backtesting.py. Per dimostrarlo, creiamo segnali casuali utilizzando numpy e li aggiungiamo al data frame di Google. Questi segnali potrebbero rappresentare qualsiasi indicatore programmato in Python, dove -1 indica un segnale di vendita, 0 indica nessuna azione e 1 rappresenta un segnale di acquisto.

Successivamente, definiamo una classe strategica chiamata "SignalStrategy" che eredita dalla classe "Strategy" importata in precedenza. Questa classe sarà responsabile dell'implementazione della logica di acquisto e vendita basata sui segnali. La classe include la funzione di inizializzazione " init " e la funzione "next".

Nella funzione " init ", non abbiamo molto da fare in questo particolare esempio, ma è buona norma includerla. La funzione "successiva" è dove verrà implementata la logica di acquisto e vendita in base ai segnali.

Per eseguire il backtest, creiamo un'istanza della classe backtest, passando il data frame di Google e la classe "SignalStrategy". Impostiamo anche il valore della cache su 10.000. Quindi, eseguiamo il backtest e memorizziamo i risultati nella variabile "stats". Infine, stampiamo le statistiche per vedere le prestazioni della strategia.

L'esecuzione del codice a questo punto non produrrà alcuna operazione perché non abbiamo ancora implementato la logica di acquisto e vendita. Tuttavia, possiamo accedere ai valori del segnale utilizzando "self.data.signal" all'interno della funzione "next", che ci fornirà l'ultimo valore del segnale.

Per implementare la logica di acquisto e vendita, controlliamo il valore del segnale corrente e la posizione corrente. Se il segnale è 1 (segnale di acquisto) e non esiste alcuna posizione esistente, eseguiamo un ordine di acquisto utilizzando "self.buy". Se il segnale è -1 (segnale di vendita) e c'è una posizione long esistente, eseguiamo un ordine di vendita utilizzando "self.sell".

  1. Strategia di segnale esterno:

    • Genera segnali casuali o ottieni segnali da un programma esterno.
    • Definire una classe SignalStrategy che eredita da Strategy.
    • Implementa il metodo successivo per eseguire ordini di acquisto o vendita in base ai segnali.
    • Usa i metodi self.buy() e self.sell() per eseguire gli ordini.
    • Crea un'istanza di un oggetto Backtest con i dati, la strategia, il capitale iniziale e la commissione.
    • Eseguire il backtest utilizzando bt.run() e analizzare i risultati.

  2. Utilizzo di pandas-ta per gli indicatori personalizzati:

    • Importa la libreria pandas_ta (installala con pip install pandas_ta).
    • Utilizzare la funzione indicatore desiderata da pandas_ta per calcolare l'indicatore.
    • Aggiungi l'indicatore calcolato al frame di dati.
    • Definire una classe di strategia che eredita da Strategy.
    • Implementa il metodo successivo per eseguire ordini di acquisto o vendita in base ai valori dell'indicatore.
    • Utilizzare le condizioni desiderate per determinare quando acquistare o vendere.
    • Crea un'istanza di un oggetto Backtest con i dati, la strategia, il capitale iniziale e la commissione.
    • Eseguire il backtest utilizzando bt.run() e analizzare i risultati.

Ricorda di sostituire i segnaposto come GOOG con i tuoi dati effettivi e personalizzare le strategie in base alle tue esigenze specifiche.

Custom Indicators In Backtesting.py - Python Deep Dive
Custom Indicators In Backtesting.py - Python Deep Dive
  • 2022.07.30
  • www.youtube.com
Learn how to make your own custom indicators in backtesting.py. We show how you can integrate libraries like pandas-ta, ta-lib, etc. as well as write your ow...
 

Stop Loss in Backtesting.py



Stop Loss in Backtesting.py

In questo video esploreremo il concetto di stop loss nella libreria "backtesting.py". Il video coprirà tre esempi di crescente complessità e profondità, fornendo una comprensione completa degli stop loss in "backtesting.py". Il presentatore presuppone una conoscenza preliminare di "backtesting.py" e consiglia di guardare un corso gratuito su YouTube per principianti prima di approfondire questo argomento avanzato.

Per iniziare, apri un terminale e assicurati che "backtesting.py" sia installato eseguendo il comando "pip install backtesting". Questo installerà tutti i pacchetti necessari. Quindi, crea un nuovo file Python, chiamiamolo "example.py" e importa i moduli richiesti: "backtest" e "strategy" da "backtesting" e "googledale" da "backtesting.test". "googledale" è un set di dati di test fornito con "backtesting.py".

Successivamente, definisci la classe strategica creando una classe chiamata "Strats" che eredita dalla classe "strategia". Implementare le due funzioni richieste: " init " e "next". A questo punto, siamo pronti per eseguire il nostro backtest. Inizializza un nuovo oggetto backtest, "bt", utilizzando la funzione "backtest". Passa i dati "googledale" e la classe di strategia che abbiamo appena definito. Imposta il valore in contanti iniziale a $ 10.000. Infine, esegui il backtest utilizzando il metodo "bt.run" e traccia i risultati utilizzando "bt.plot".

Inizialmente, la classe di strategia non esegue alcuna azione di trading. Per dimostrare un semplice esempio di stop loss, aggiungeremo alcune logiche di acquisto e vendita di base. Se abbiamo una posizione esistente, non intraprenderemo alcuna azione. Tuttavia, se non abbiamo una posizione, inseriremo un ordine di acquisto utilizzando il metodo "self.to_buy", specificando la dimensione della posizione (es. 1 azione). Inoltre, aggiungeremo uno stop loss e un take profit. Lo stop loss sarà fissato a 10 unità al di sotto dell'attuale prezzo di chiusura, mentre il take profit sarà fissato a 20 unità al di sopra dell'attuale prezzo di chiusura.

L'esecuzione del backtest genererà un gran numero di operazioni. Non appena un trade viene chiuso, un nuovo trade verrà aperto sulla barra successiva a meno che non venga attivato lo stop loss o il take profit. È importante capire come "backtesting.py" gestisce stop loss e take profit. Nei casi in cui sia lo stop loss che il take profit vengono attivati nella stessa barra, la libreria presuppone che lo stop loss venga attivato per primo. Questo comportamento può portare a risultati imprevisti, soprattutto quando si ha a che fare con dati giornalieri che possono presentare lacune significative.

Per gestire gli stop loss in modo più efficace, possiamo estendere la classe di strategia e utilizzare la "strategia di trailing" fornita da "backtesting.py". Importa i moduli necessari, inclusi "crossover" e "trailing strategy" da "backtesting.lib". Nella nuova classe strategica, eredita dalla "strategia finale" anziché dalla classe "strategia" di base. Sovrascrivi la funzione " init " per chiamare la funzione " init " della classe genitore usando "super". Quindi, utilizza la funzione "set_trailing_stop_loss" dalla classe genitore per impostare un valore di trailing stop loss.

Nella sezione successiva del video, il presentatore spiega in modo più dettagliato come funziona la "strategia di trascinamento" e come personalizzarla per esigenze specifiche. Tuttavia, in questa sezione, l'attenzione è rivolta all'utilizzo della "strategia di trascinamento" nel nostro codice. Chiamando la funzione " init " della classe genitore e utilizzando la funzione "set_trailing_stop_loss", possiamo sfruttare la funzionalità di trailing stop loss nel nostro backtest.

Nel complesso, il video fornisce una spiegazione dettagliata dell'implementazione degli stop loss in "backtesting.py". Copre esempi semplici così come concetti più avanzati come il trascinamento di un valore di 10, il che significa che il nostro stop loss trascinerà il prezzo di 10 unità.

Ora che abbiamo impostato la nostra funzione di inizializzazione, passiamo alla funzione successiva. È qui che verrà implementata la maggior parte della nostra logica di trading. All'interno della funzione next, chiameremo prima la funzione next della classe genitore usando super().next(). Ciò garantisce che la funzionalità di trailing stop loss venga eseguita insieme all'altra logica di trading.

Successivamente, aggiungeremo del codice per regolare il nostro trailing stop loss. Useremo un'istruzione condizionale per verificare se abbiamo una posizione aperta (self.position non è None). Se abbiamo una posizione, aggiorneremo il trailing stop loss utilizzando il metodo update_trailing_sl fornito dalla classe trailing_strategy. Questo metodo prende il prezzo corrente come argomento e aggiorna lo stop loss di conseguenza.

Stop Losses in Backtesting.py
Stop Losses in Backtesting.py
  • 2022.08.19
  • www.youtube.com
In this video we go in-depth on how to use stop-losses in backtesting.py. We cover both static and trailing stop losses and how backtesting.py executes them ...
 

Convalida backtest in Python (imbrogliata dalla casualità)



Convalida backtest in Python (imbrogliata dalla casualità)

Ci siamo trovati tutti in quella situazione in cui creiamo una strategia di trading, la testiamo a posteriori e, quando finalmente la implementiamo, non funziona come previsto. Uno dei motivi principali di questa delusione è l'overfitting della strategia su un insieme specifico di dati storici utilizzati nel backtest. In questo video, dimostrerò una strategia per combattere l'overfitting e assicurarti di non fare affidamento su strategie prive di solide basi o farti ingannare dalla casualità.

Facciamo un esempio specifico. Ho condotto un backtest su una semplice strategia basata su RSI utilizzando Bitcoin come risorsa. La strategia prevede la vendita quando l'RSI è alto e l'acquisto quando l'RSI è basso. I risultati del backtest hanno mostrato un modesto rendimento di circa il tre percento, nonostante Bitcoin abbia registrato un calo del 15 percento nel periodo testato. A prima vista, può sembrare una strategia promettente per i mercati ribassisti.

Tuttavia, è fondamentale esaminare le prestazioni della strategia in vari intervalli di tempo per determinare se identifica costantemente opportunità redditizie o se è semplicemente stata fortunata con i valori dei parametri scelti durante il backtest. Per raggiungere questo obiettivo, ho condotto più backtest di 30 giorni, coprendo diversi periodi durante l'anno.

Tracciando la distribuzione dei rendimenti di questi backtest, possiamo ottenere informazioni sull'efficacia della strategia. Il grafico mostra ogni finestra di 30 giorni come un punto, che rappresenta i rendimenti ottenuti durante quel periodo. Il diagramma a scatola allegato mostra il rendimento mediano, i quartili, i valori massimo e minimo. Analizzando il grafico, diventa evidente che il rendimento medio su un periodo di 30 giorni è del -8,5%. Inoltre, la distribuzione dei rendimenti sembra essere casuale, simile ai risultati che ci si aspetterebbe da un generatore di numeri casuali impostato tra -35 e 15. Questi risultati indicano fortemente che la strategia non è unica o efficace al di là dei dati storici specifici utilizzati nel retrotest.

Per convalidare la strategia e mitigare l'influenza dell'overfitting, dobbiamo condurre test retrospettivi su una gamma più ampia di dati. A tale scopo, ho scaricato più file di dati che coprono l'intero anno, dall'inizio del 2022 alla fine del 2022. Ho combinato questi file in un CSV master contenente i dati delle candele di un minuto per l'intero periodo.

Nel codice di convalida, ho apportato alcune modifiche minori per accogliere il set di dati esteso. La strategia di base rimane la stessa, concentrandosi sulla logica di trading basata su RSI. Tuttavia, ho introdotto un ciclo per condurre backtest su finestre di 30 giorni in tutti i dati. Ogni backtest calcola i rendimenti, che vengono poi aggiunti a un elenco per ulteriori analisi.

Generando un box plot utilizzando i rendimenti raccolti, possiamo visualizzare la distribuzione della performance della strategia in varie finestre di 30 giorni. Questo grafico rivela la variabilità dei rendimenti e fornisce un quadro più chiaro di come si comporta la strategia su diversi intervalli di tempo. In questo esempio specifico, il grafico indica rendimenti prevalentemente negativi per quasi tutti i mesi, suggerendo che la strategia manca di redditività costante.

Queste tecniche per convalidare e verificare le strategie di trading possono essere applicate a qualsiasi framework di backtesting di tua scelta. Il codice fornito utilizza la libreria backtesting.py, ma puoi adattarlo ad altre librerie come vectorbt o backtrader. L'idea chiave è garantire che la tua strategia dimostri robustezza in diversi intervalli di tempo e non sia semplicemente un prodotto dell'overfitting di un insieme specifico di dati storici.

Seguendo questi passaggi di convalida, puoi ridurre il rischio di fare affidamento su strategie che non sono radicate nella realtà o di cadere vittima di risultati casuali. È essenziale andare oltre le prestazioni del backtest e considerare l'efficacia della strategia in diverse condizioni di mercato per prendere decisioni informate durante l'implementazione delle strategie di trading.

Dopo aver analizzato i risultati del backtest e la distribuzione dei rendimenti su diversi intervalli di tempo, abbiamo scoperto che la performance della strategia era essenzialmente casuale. Non ha fornito una redditività costante al di fuori del periodo di tempo specifico utilizzato per i test retrospettivi. Ciò indica che la strategia soffriva di overfitting e mancava di robustezza.

Per evitare di cadere nella trappola dell'overfitting e aumentare le possibilità di sviluppare strategie di trading affidabili, ecco alcuni consigli:

  1. Usa dati sufficienti e diversificati: assicurati che il tuo backtest incorpori una quantità significativa di dati storici per coprire varie condizioni di mercato. Questo aiuta a catturare una gamma più ampia di scenari e riduce la probabilità di overfitting a specifiche condizioni di mercato.

  2. Convalida su più tempi: invece di fare affidamento esclusivamente su un singolo periodo di tempo per il backtesting, testa la tua strategia su diversi tempi. Ciò fornisce informazioni sulla sua performance in varie condizioni di mercato e aiuta a identificare se la strategia ha una redditività costante o se i risultati osservati sono dovuti alla casualità.

  3. Implementa test fuori campione: riserva una parte dei tuoi dati storici per test fuori campione. Dopo aver condotto il tuo backtest primario sul set di dati iniziale, convalida la strategia sui dati riservati che il modello non ha visto prima. Questo aiuta a valutare la capacità della strategia di adattarsi a condizioni di mercato invisibili e fornisce una valutazione più realistica della sua performance.

  4. Attenzione all'adattamento della curva: evitare un'ottimizzazione eccessiva o l'ottimizzazione dei parametri per adattare troppo la strategia ai dati storici. Le strategie troppo adattate a modelli di dati specifici hanno maggiori probabilità di fallire nel trading nel mondo reale. Mira alla robustezza piuttosto che inseguire prestazioni eccezionali solo sui dati storici.

  5. Prendi in considerazione l'analisi walk-forward: invece di fare affidamento esclusivamente su backtest statici, considera l'utilizzo dell'analisi walk-forward. Ciò comporta una riottimizzazione periodica e un nuovo test della strategia man mano che diventano disponibili nuovi dati. Ti consente di adattare e perfezionare continuamente la tua strategia, migliorandone le prestazioni in condizioni di mercato mutevoli.

  6. Usa test di significatività statistica: applica test statistici per valutare la significatività della performance della tua strategia. Questo aiuta a determinare se i risultati osservati sono statisticamente significativi o semplicemente dovuti al caso. I test statistici comuni utilizzati nel backtesting includono t-test, test bootstrap e simulazioni Monte Carlo.

Seguendo queste linee guida, puoi ridurre il rischio di sviluppare strategie eccessivamente adattate ai dati storici e aumentare la probabilità di creare approcci di trading solidi e affidabili.

Ricorda, l'obiettivo è sviluppare strategie di trading che dimostrino una redditività costante in diverse condizioni di mercato, piuttosto che strategie che si limitano a dare buoni risultati sui dati storici.

Backtest Validation in Python (Fooled By Randomness)
Backtest Validation in Python (Fooled By Randomness)
  • 2022.09.14
  • www.youtube.com
In this video we go through a method that I've found helpful for validating my backtests before I go live with a strategy. Looking at the distribution of ret...
 

Un'introduzione rapida a Python per ingegneri di machine learning



Un'introduzione rapida a Python per ingegneri di machine learning

L'istruttore del corso inizia introducendo il concetto di modellazione predittiva e il suo significato nel settore. La modellazione predittiva si concentra sullo sviluppo di modelli in grado di effettuare previsioni accurate, anche se potrebbero non fornire una spiegazione del motivo per cui tali previsioni vengono effettuate. Il docente sottolinea che il corso si concentrerà in modo specifico sui dati tabulari, come fogli di calcolo o database. L'obiettivo è guidare gli studenti dall'essere sviluppatori interessati all'apprendimento automatico in Python a diventare esperti nel lavorare con nuovi set di dati, sviluppare modelli predittivi end-to-end e sfruttare Python e la libreria SCIPy per attività di apprendimento automatico.

Per iniziare, l'istruttore fornisce un corso accelerato sulla sintassi di Python. Coprono concetti fondamentali come variabili e assegnazioni, chiarendo la distinzione tra il segno di "uguale" utilizzato per l'assegnazione e il segno di "doppio uguale" utilizzato per i confronti di uguaglianza. L'istruttore dimostra come utilizzare Jupyter Notebook per la codifica Python e fornisce suggerimenti per la navigazione, come la creazione di un nuovo notebook, l'utilizzo di alias per le librerie, l'esecuzione di celle e la copia o lo spostamento di celle. Spiegano anche la funzione di salvataggio automatico e il salvataggio manuale dei taccuini. Infine, il video tocca brevemente l'arresto dell'esecuzione del kernel.

Andando avanti, l'istruttore spiega come utilizzare la barra degli strumenti in Jupyter Notebook per la navigazione del motore Python e come annotare i notebook utilizzando Markdown. Il video illustra le istruzioni essenziali per il controllo del flusso, incluse le condizioni if-then-else, i cicli for e i cicli while. Queste istruzioni consentono il processo decisionale e la ripetizione all'interno del codice Python. L'istruttore introduce quindi tre strutture dati cruciali per l'apprendimento automatico: tuple, elenchi e dizionari. Queste strutture di dati forniscono modi efficienti per archiviare e manipolare i dati. Inoltre, il video include un corso intensivo su NumPy, una libreria che consente operazioni numeriche in Python. Copre la creazione di array, l'accesso ai dati e l'esecuzione di operazioni aritmetiche con gli array.

Il video procede con la discussione di due librerie essenziali, Matplotlib e Pandas, comunemente utilizzate nell'apprendimento automatico per l'analisi e la visualizzazione dei dati. Matplotlib consente agli utenti di creare vari grafici e grafici, facilitando la visualizzazione dei dati. Pandas, d'altra parte, fornisce strutture dati e funzioni per la manipolazione e l'analisi dei dati, in particolare attraverso strutture di serie e frame di dati. Il video evidenzia l'importanza della funzione read_csv di Pandas per il caricamento di file CSV, il formato più comune nelle applicazioni di machine learning. Sottolinea inoltre l'utilità delle funzioni di Pandas per riassumere e tracciare i dati per ottenere approfondimenti e preparare i dati per le attività di machine learning. Le statistiche descrittive in Python sono menzionate come uno strumento cruciale per comprendere le caratteristiche e la natura dei dati.

Il video approfondisce specifiche tecniche di visualizzazione dei dati che possono aiutare l'analisi dei dati prima di applicare le tecniche di machine learning. Istogrammi, grafici di densità e box plot vengono introdotti come modi per osservare la distribuzione degli attributi e identificare potenziali valori anomali. Le matrici di correlazione e le matrici dei grafici a dispersione sono presentate come metodi per identificare le relazioni tra coppie di attributi. Il video sottolinea l'importanza di ridimensionare, standardizzare, normalizzare e binarizzare i dati come passaggi di pre-elaborazione necessari per preparare i dati per gli algoritmi di machine learning. Il metodo di adattamento e trasformazione è spiegato come un approccio comune per la pre-elaborazione dei dati.

Il prossimo argomento discusso sono le tecniche di preelaborazione dei dati nell'apprendimento automatico. Il video tratta la normalizzazione e la standardizzazione come due tecniche importanti. La normalizzazione implica il ridimensionamento degli attributi in modo che abbiano la stessa scala, mentre la standardizzazione implica la trasformazione degli attributi in modo che abbiano una media pari a zero e una deviazione standard pari a uno. Viene anche spiegata la binarizzazione, che limita i dati per creare attributi binari o valori nitidi. Viene sottolineata l'importanza della selezione delle funzionalità, poiché funzionalità irrilevanti o parzialmente irrilevanti possono influire negativamente sulle prestazioni del modello. Il video introduce la selezione univariata come un approccio statistico alla selezione delle caratteristiche e mette in evidenza l'uso dell'eliminazione ricorsiva delle caratteristiche e dei metodi di importanza delle caratteristiche che utilizzano insiemi di alberi decisionali come foreste casuali o alberi extra. L'analisi delle componenti principali (PCA) è anche discussa come una tecnica di riduzione dei dati che può comprimere il set di dati in un numero minore di dimensioni utilizzando l'algebra lineare.

Il video sottolinea l'importanza dei metodi di ricampionamento per valutare le prestazioni degli algoritmi di machine learning su dati invisibili. Mette in guardia contro la valutazione di algoritmi sullo stesso set di dati utilizzato per l'addestramento, in quanto può portare a overfitting e scarsa generalizzazione a nuovi dati. Tecniche come gli split set di train-test, la convalida incrociata k-fold, la convalida incrociata tralasciata e le ripetute suddivisioni casuali dei test vengono spiegate come modi per ottenere stime affidabili delle prestazioni dell'algoritmo. Il video si conclude con una discussione di varie metriche delle prestazioni per gli algoritmi di machine learning, come l'accuratezza della classificazione, la perdita logaritmica, l'area sotto la curva, la matrice di confusione e il rapporto di classificazione.

Il video approfondisce le metriche delle prestazioni utilizzate per valutare le previsioni fatte dai modelli di machine learning. Copre l'accuratezza della classificazione, la perdita logaritmica (per valutare le probabilità), l'area sotto la curva delle caratteristiche operative del ricevitore (ROC) (per problemi di classificazione binaria), la matrice di confusione (per valutare l'accuratezza del modello con più classi) e il rapporto di classificazione (che fornisce precisione , richiamo, punteggio F1 e supporto per ogni classe). Inoltre, il video spiega tre metriche di regressione comuni: errore assoluto medio, errore quadratico medio e R-quadrato. Vengono dimostrati esempi pratici per illustrare come calcolare queste metriche usando Python.

Il relatore introduce il concetto di controllo a campione per determinare quali algoritmi di apprendimento automatico funzionano bene per un problema specifico. Il controllo a campione comporta la valutazione di più algoritmi e il confronto delle loro prestazioni. Il video mostra il controllo puntuale di sei diversi modelli di machine learning, inclusi algoritmi lineari e non lineari, utilizzando Python con la libreria scikit-learn. Il relatore sottolinea che i risultati possono variare a causa della natura stocastica dei modelli. La sezione si conclude con un'introduzione ai modelli di machine learning di regressione, preparando gli spettatori per la prossima sezione sul controllo a campione di tali modelli.

Successivamente, il relatore introduce modelli di machine learning lineari e non lineari utilizzando come esempio il set di dati sui prezzi delle case di Boston. Viene utilizzato un test harness con convalida incrociata di 10 volte per dimostrare come controllare ogni modello e l'errore quadratico medio viene utilizzato come indicatore di prestazione (invertito a causa di una stranezza nella funzione di punteggio incrociato). Viene discusso il modello di regressione lineare, assumendo una distribuzione gaussiana per le variabili di input e la loro rilevanza per la variabile di output. Viene anche spiegata la regressione della cresta, una modifica della regressione lineare che minimizza la complessità del modello. Il relatore sottolinea l'importanza di comprendere la pipeline o il processo piuttosto che rimanere coinvolti nell'implementazione del codice specifico in questa fase.

Il video esplora il processo di comprensione e visualizzazione delle variabili di input per un problema di machine learning. Suggerisce di utilizzare grafici univariati come grafici a scatola e baffi e istogrammi per comprendere la distribuzione delle variabili di input. Per l'analisi multivariata, i grafici a dispersione possono aiutare a identificare le relazioni strutturali tra le variabili di input e rivelare correlazioni elevate tra coppie di attributi specifici. Il video illustra anche il processo di valutazione, utilizzando un test harness con convalida incrociata 10 volte per valutare le prestazioni del modello. Viene sottolineata l'importanza di creare un set di dati di convalida per valutare in modo indipendente l'accuratezza del modello migliore. Vengono valutati sei diversi modelli di machine learning e viene selezionato quello più accurato per fare previsioni. Il rapporto di classificazione, la matrice di confusione e la stima dell'accuratezza vengono utilizzati per valutare le previsioni. Infine, il video tocca la regressione di regolarizzazione, evidenziando la costruzione di modelli Lasso ed Elastic Net per ridurre la complessità dei modelli di regressione.

Il video introduce un problema di classificazione binaria nell'apprendimento automatico, con l'obiettivo di prevedere il metallo dal rock utilizzando il set di dati Sonar Mines versus Rocks. Il set di dati contiene 208 istanze con 61 attributi, incluso l'attributo class. Le statistiche descrittive vengono analizzate, indicando che sebbene i dati siano nello stesso intervallo, mezzi diversi suggeriscono che la standardizzazione dei dati potrebbe essere vantaggiosa. Le visualizzazioni di dati unimodali e multimodali, come istogrammi, grafici di densità e visualizzazioni di correlazione, vengono esplorate per ottenere informazioni dettagliate sui dati. Viene creato un set di dati di convalida e viene stabilita una linea di base per le prestazioni del modello testando vari modelli, tra cui regressione lineare, regressione logistica, analisi discriminante lineare, alberi di regressione di classificazione, macchine vettoriali di supporto (SVM), Bayes ingenuo e k-vicini più vicini ( KNN). L'accuratezza di ciascun algoritmo viene calcolata utilizzando la convalida incrociata 10 volte e confrontata.

Nel segmento seguente, il video illustra come valutare diversi algoritmi di machine learning utilizzando dati e messa a punto standardizzati. La standardizzazione comporta la trasformazione dei dati, quindi ogni attributo ha una media di 0 e una deviazione standard di 1, che può migliorare le prestazioni di determinati modelli. Per evitare perdite di dati durante il processo di trasformazione, si consiglia una pipeline che standardizzi i dati e crei il modello per ogni ripiegamento del cablaggio di test di convalida incrociata. Il video illustra le tecniche di ottimizzazione per k-nearest neighbors (KNN) e Support Vector Machines (SVM) utilizzando una griglia di ricerca con convalida incrociata di 10 volte sulla copia standardizzata del set di dati di addestramento. Vengono identificate le configurazioni ottimali per KNN e SVM e viene valutata l'accuratezza dei modelli. Infine, il video discute brevemente KNN, regressione dell'albero delle decisioni e SVM come modelli di machine learning non lineari.

  • 00:00:00 L'istruttore del corso introduce il concetto di modellazione predittiva e la sua rilevanza per il settore. A differenza della modellazione statistica che tenta di comprendere i dati, la modellazione predittiva si concentra sullo sviluppo di modelli che fanno previsioni più accurate a scapito della spiegazione del motivo per cui vengono fatte le previsioni. Il corso si concentra su dati tabulari, come fogli di calcolo o database. L'istruttore guida gli studenti dall'essere sviluppatori interessati all'apprendimento automatico in Python ad avere le risorse e le capacità per lavorare su nuovi set di dati end-to-end utilizzando Python e sviluppare modelli predittivi accurati. Gli studenti imparano come completare tutte le attività secondarie di un problema di modellazione predittiva con Python, integrare tecniche nuove e diverse in Python e SCIPy, imparare Python e ottenere aiuto con l'apprendimento automatico. La conferenza copre anche un corso intensivo su Python che evidenzia i dettagli chiave sulla sintassi del linguaggio, inclusi l'assegnazione, il controllo del flusso, le strutture dei dati e le funzioni.

  • 00:05:00 Il video copre la sintassi di base di Python, comprese variabili e assegnazioni, e spiega la differenza tra "uguale" per assegnazione e "doppio uguale" per uguaglianza. Il docente mostra quindi come utilizzare Jupyter Notebook per la codifica Python e spiega alcuni suggerimenti di navigazione di base, ad esempio come creare un nuovo notebook, utilizzare alias per le librerie, eseguire celle e spostare o copiare celle. Il docente spiega anche la funzione di salvataggio automatico e come salvare manualmente il taccuino. Il video si conclude con una breve spiegazione di come fermare l'esecuzione del kernel.

  • 00:10:00 L'istruttore spiega come utilizzare la barra degli strumenti per navigare nel motore Python e come annotare i taccuini con markdown. Quindi, il video copre le istruzioni di controllo del flusso come le condizioni if-then-else, i cicli for e i cicli while. Successivamente, l'istruttore spiega le tre principali strutture dati necessarie per l'apprendimento automatico: tuple, elenchi e dizionari. Infine, il video fornisce un corso intensivo su NumPy, che include la creazione di array, l'accesso ai dati e l'utilizzo di array in aritmetica.

  • 00:15:00 Viene discusso il corso intensivo su Matplotlib e Pandas per l'apprendimento automatico. Matplotlib è una libreria che può essere utilizzata per creare grafici e grafici. I panda forniscono strutture di dati e funzionalità per manipolare e analizzare i dati con l'aiuto di strutture di dati di serie e frame di dati. Questi sono importanti per caricare i file csv, che è il formato più comune utilizzato per le applicazioni di machine learning. Inoltre, funzioni flessibili come Pandas read_csv possono aiutare a caricare i dati e restituire un frame di dati Pandas per riepilogare e tracciare i dati per disegnare approfondimenti e idee iniziali per la pre-elaborazione e la gestione dei dati nelle attività di apprendimento automatico. Infine, ottenere approfondimenti dai dati attraverso statistiche descrittive in Python non può essere sostituito e può aiutare a comprendere meglio le caratteristiche e la natura dei dati.

  • 00:20:00 Pandas DataFrame semplifica la creazione di istogrammi con la funzione hist(). Un altro modo per visualizzare i dati è utilizzare i grafici di densità, che possono essere creati con la funzione plot(). I grafici di densità mostrano la funzione di densità di probabilità dei dati e possono fornire informazioni sulla forma della distribuzione. I grafici a scatola e baffi sono utili anche per visualizzare la distribuzione dei dati e identificare i valori anomali. Nel complesso, la visualizzazione dei dati è un passaggio fondamentale per comprendere le caratteristiche di un set di dati e può aiutare a selezionare algoritmi di apprendimento automatico appropriati.

  • 00:25:00 Il video spiega vari grafici e diagrammi che possono essere utili per l'analisi dei dati prima di applicare le tecniche di machine learning. Istogrammi, grafici di densità e grafici a riquadri vengono utilizzati per osservare la distribuzione degli attributi mentre le matrici di correlazione e le matrici di grafici a dispersione vengono utilizzate per identificare la relazione tra coppie di attributi. Anche il ridimensionamento, la standardizzazione, la normalizzazione e la binarizzazione dei dati sono discussi come passaggi di preelaborazione necessari per preparare i dati per gli algoritmi di apprendimento automatico e il video spiega il metodo di adattamento e trasformazione come approccio comune per la preelaborazione dei dati.

  • 00:30:00 Il video illustra le tecniche per la pre-elaborazione dei dati nell'apprendimento automatico. In primo luogo, vengono spiegate le tecniche di normalizzazione e standardizzazione. La normalizzazione implica il ridimensionamento degli attributi per avere la stessa scala e la standardizzazione implica la modifica degli attributi per avere una media pari a zero e una deviazione standard pari a uno. La binarizzazione, o soglia dei dati, è un'altra tecnica discussa, che può essere utile per aggiungere nuovi attributi binari o trasformare le probabilità in valori nitidi. Quindi, viene spiegata l'importanza della selezione delle funzionalità, poiché funzionalità irrilevanti o parzialmente irrilevanti possono influire negativamente sulle prestazioni del modello. La selezione univariata è un approccio statistico alla selezione delle caratteristiche, utilizzando i punteggi dei test statistici. Anche i metodi ricorsivi di eliminazione delle caratteristiche e di importanza delle caratteristiche che utilizzano insiemi di alberi decisionali come foreste casuali o alberi extra possono essere utili per la selezione delle caratteristiche. Infine, l'analisi delle componenti principali (PCA) è una tecnica di riduzione dei dati che utilizza l'algebra lineare per trasformare il set di dati in una forma compressa con un numero minore di dimensioni.

  • 00:35:00 Viene spiegata l'importanza dei metodi di ricampionamento per valutare le prestazioni degli algoritmi di machine learning su dati invisibili. Si evidenzia che la valutazione dell'algoritmo sullo stesso set di dati utilizzato per l'addestramento può portare a overfitting, con conseguente punteggio perfetto sul set di dati di addestramento ma scarse previsioni sui nuovi dati. Tecniche come gli split set di train-test, la convalida incrociata k-fold, la convalida incrociata tralasciata e le ripetute suddivisioni casuali dei test vengono quindi presentate come modi per creare stime utili delle prestazioni dell'algoritmo. La sezione termina con una discussione di varie metriche delle prestazioni dell'algoritmo di apprendimento automatico, come l'accuratezza della classificazione, la perdita logaritmica, l'area sotto la curva, la matrice di confusione e il rapporto di classificazione.

  • 00:40:00 Il video copre diverse metriche delle prestazioni per valutare le previsioni fatte da un modello di apprendimento automatico. Questi includono l'accuratezza della classificazione, la perdita di registro per la valutazione delle probabilità, l'area sotto la curva ROC per i problemi di classificazione binaria, la matrice di confusione per valutare l'accuratezza del modello con due o più classi e il rapporto di classificazione per valutare la precisione, il richiamo, il punteggio F1 e il supporto per ogni classe. Inoltre, il video copre tre metriche di regressione comuni: errore assoluto medio, errore quadratico medio e R-quadrato e mostra esempi di come calcolare queste metriche utilizzando Python.

  • 00:45:00 Il relatore spiega il concetto di utilizzo del controllo a campione per scoprire quali algoritmi di apprendimento automatico funzionano bene per un determinato problema. Dimostra il controllo a campione per sei diversi modelli di apprendimento automatico, inclusi algoritmi lineari e non lineari, utilizzando Python con la libreria scikit-learn. Sottolinea inoltre che i risultati possono variare a causa della natura stocastica del modello. Infine, il relatore introduce i modelli di apprendimento automatico della regressione e prepara gli spettatori per la prossima sezione su come controllare quei modelli.

  • 00:50:00 Il relatore introduce modelli di machine learning lineari e non lineari utilizzando il set di dati sui prezzi delle case di Boston. Viene utilizzato un test harness con convalida incrociata di 10 volte per dimostrare come bloccare il controllo di ciascun modello e vengono utilizzati i numeri di errore quadratico medio per indicare le prestazioni, che sono invertite a causa di una stranezza nella funzione di punteggio incrociato. Il modello di regressione lineare presuppone una distribuzione gaussiana per le variabili di input e che siano rilevanti per la variabile di output e non altamente correlate tra loro. La regressione della cresta, una modifica della regressione lineare, minimizza la complessità del modello misurata dal valore della somma dei quadrati dei valori dei coefficienti o norma L2. L'oratore sottolinea la comprensione della pipeline o del processo e non farsi prendere dalla comprensione del codice a questo punto.

  • 00:55:00 Il video illustra il processo di comprensione e visualizzazione delle variabili di input per un problema di machine learning. Il video suggerisce di utilizzare grafici univariati come grafici a scatola e baffi e istogrammi per comprendere la distribuzione delle variabili di input. Per i grafici multivariati, i grafici a dispersione possono aiutare a individuare le relazioni strutturali tra le variabili di input e identificare un'elevata correlazione tra determinate coppie di attributi. Il video passa quindi a discutere il processo di valutazione dei modelli attraverso un test harness utilizzando la convalida incrociata 10 volte, in cui il set di dati viene suddiviso in 10 parti e addestrato e testato su diverse suddivisioni. Il video evidenzia l'importanza di creare un set di dati di convalida per avere una seconda e indipendente idea di quanto accurato possa essere il modello migliore. Il video valuta sei diversi modelli di machine learning e seleziona quello più accurato per fare previsioni, valutando le previsioni attraverso il rapporto di classificazione, la matrice di confusione e la stima dell'accuratezza. La sezione termina con una discussione sulla regressione di regolarizzazione e sulla costruzione di modelli Lasso ed Elastic Net per ridurre al minimo la complessità del modello di regressione.

  • 01:00:00 Ci viene presentato un problema di classificazione binaria nell'apprendimento automatico in cui l'obiettivo è prevedere il metallo dalla roccia utilizzando il set di dati sonar mine versus rocks. Il set di dati contiene 208 istanze con 61 attributi incluso l'attributo class. Dopo aver analizzato i dati e aver esaminato le statistiche descrittive, vediamo che i dati sono nello stesso intervallo ma mezzi diversi indicano che la standardizzazione dei dati può essere vantaggiosa. Diamo anche uno sguardo alle visualizzazioni di dati unimodali e multimodali inclusi istogrammi, grafici di densità e visualizzazioni di correlazione tra attributi. Quindi prepariamo un set di dati di convalida e creiamo una linea di base per le prestazioni di diversi modelli, tra cui regressione lineare, regressione logistica, analisi discriminante lineare, alberi di regressione di classificazione, SVM, Bayes ingenuo e k-vicini più vicini. Confrontiamo l'accuratezza di ciascun algoritmo calcolato attraverso la convalida incrociata di 10 volte.

  • 01:05:00 Il video illustra come valutare diversi algoritmi di apprendimento automatico utilizzando dati e messa a punto standardizzati. La standardizzazione trasforma i dati in modo che ogni attributo abbia una media pari a 0 e una deviazione standard pari a 1, il che può migliorare l'abilità di alcuni modelli. Per evitare perdite di dati durante il processo di trasformazione, si consiglia una pipeline che standardizzi i dati e crei il modello per ogni ripiegamento del cablaggio di test di convalida incrociata. Il video mostra come ottimizzare i vicini più vicini (KNN) e supportare le macchine vettoriali (SVM) utilizzando una ricerca a griglia con convalida incrociata di 10 volte sulla copia standardizzata del set di dati di addestramento. Vengono identificate le configurazioni ottimali per KNN e SVM e viene valutata l'accuratezza dei modelli. Infine, il video discute brevemente KNN, regressione dell'albero delle decisioni e SVM come modelli di machine learning non lineari.
A Fast Track Introduction to Python for Machine Learning Engineers
A Fast Track Introduction to Python for Machine Learning Engineers
  • 2022.03.23
  • www.youtube.com
Complete Course on Machine Learning with Python
 

Statistiche applicate per ingegneri di Machine Learning


Statistiche applicate per ingegneri di Machine Learning

L'istruttore nel video introduce il campo della statistica e ne evidenzia l'importanza nel lavorare con problemi di modellazione predittiva nell'apprendimento automatico. Spiegano che la statistica offre una gamma di tecniche, a partire da semplici statistiche riassuntive fino a test di ipotesi e statistiche di stima. Il corso è progettato per fornire una base passo dopo passo nei metodi statistici, con esempi pratici in Python. Copre sei aspetti fondamentali delle statistiche per l'apprendimento automatico e si concentra sulle applicazioni del mondo reale, rendendolo adatto agli ingegneri dell'apprendimento automatico.

L'istruttore sottolinea la stretta relazione tra apprendimento automatico e statistica e suggerisce che i programmatori possono trarre vantaggio dal miglioramento delle proprie capacità statistiche attraverso questo corso. Classificano il campo della statistica in due categorie: statistica descrittiva e statistica inferenziale. Le statistiche descrittive implicano il riepilogo e la descrizione dei dati utilizzando misurazioni come medie e rappresentazioni grafiche. Le statistiche inferenziali, d'altra parte, vengono utilizzate per fare inferenze su una popolazione più ampia sulla base di dati campione.

Viene inoltre evidenziata l'importanza di un corretto trattamento dei dati, compresa la gestione della perdita, del danneggiamento e degli errori dei dati. Il video approfondisce quindi i vari passaggi coinvolti nella preparazione dei dati per i modelli di machine learning. Ciò include la pulizia dei dati, la selezione dei dati, il campionamento dei dati e la trasformazione dei dati utilizzando metodi statistici come la standardizzazione e la normalizzazione. Viene anche enfatizzata la valutazione dei dati e il video discute la progettazione sperimentale, il ricampionamento dei dati e la selezione del modello per stimare l'abilità di un modello. Per prevedere nuovi dati, il video consiglia di utilizzare le statistiche di stima.

Il video spiega le diverse scale di misurazione utilizzate nelle statistiche, vale a dire scale nominali, ordinali, di intervallo e di rapporto. Discute le tecniche statistiche applicabili a ciascuna scala e come possono essere implementate nell'apprendimento automatico. Viene sottolineata l'importanza di comprendere e segnalare l'incertezza nella modellazione, soprattutto quando si lavora con set di campioni. Il video si concentra quindi sulla distribuzione normale, che è comunemente osservata in vari set di dati. Dimostra come generare dati di esempio e valutarne visivamente l'adattamento a una distribuzione gaussiana utilizzando un istogramma. Sebbene la maggior parte dei set di dati non abbia una distribuzione gaussiana perfetta, spesso presentano proprietà simili a quelle gaussiane.

Viene evidenziata l'importanza di selezionare un modo granulare di suddividere i dati per esporre la distribuzione gaussiana sottostante. Vengono esplorate le misure di tendenza centrale, come la media e la mediana, insieme alla varianza e alla deviazione standard come misure della diffusione della distribuzione. La casualità è discussa come uno strumento essenziale nell'apprendimento automatico, aiutando gli algoritmi a diventare più robusti e accurati. Vengono spiegate varie fonti di casualità, inclusi errori di dati e rumore.

Il video spiega che gli algoritmi di machine learning spesso sfruttano la casualità per ottenere prestazioni migliori e generare modelli più ottimali. La casualità consente agli algoritmi di esplorare diverse possibilità e trovare migliori mappature dei dati. Vengono discusse le fonti di casualità controllabili e incontrollabili e viene spiegato l'uso della funzione seme per rendere la casualità coerente all'interno di un modello. Il video fornisce un esempio utilizzando il modulo casuale Python per la generazione di numeri casuali ed evidenzia la differenza tra il generatore di numeri pseudocasuali della libreria numpy e il generatore di numeri pseudocasuali della libreria standard. Vengono anche discussi due casi su quando eseguire il seeding del generatore di numeri casuali, vale a dire durante la preparazione dei dati e le suddivisioni dei dati.

Vengono enfatizzati la suddivisione coerente dei dati e l'utilizzo di generatori di numeri pseudocasuali durante la valutazione di un algoritmo. Il video consiglia di valutare il modello in modo da incorporare l'incertezza misurata e le prestazioni dell'algoritmo. La valutazione di un algoritmo su più suddivisioni dei dati fornisce informazioni su come le sue prestazioni variano con diversi dati di addestramento e test. La valutazione di un algoritmo più volte sulle stesse suddivisioni di dati aiuta a capire come le sue prestazioni variano da sole. Il video introduce anche la legge dei grandi numeri e il teorema del limite centrale, evidenziando che avere più dati migliora le prestazioni del modello e che all'aumentare della dimensione del campione, la distribuzione della media si avvicina a una distribuzione gaussiana.

Il video dimostra il teorema del limite centrale usando i tiri dei dadi e il codice, mostrando come le medie del campione approssimano una distribuzione gaussiana all'aumentare della dimensione del campione.

Il video sottolinea l'importanza di valutare i modelli di apprendimento automatico e comprendere l'incertezza implicita nelle loro previsioni. Introduce metriche di valutazione come accuratezza, precisione, richiamo e punteggio F1, comunemente utilizzate per valutare le prestazioni dei modelli di classificazione. Il video spiega che l'accuratezza misura la correttezza complessiva delle previsioni, la precisione misura la proporzione di vere previsioni positive su tutte le previsioni positive, il ricordo misura la proporzione di vere previsioni positive su tutte le istanze effettivamente positive e il punteggio F1 combina precisione e richiamo in un'unica metrica. Discute anche il concetto di matrice di confusione, che fornisce una visione più dettagliata delle prestazioni di un modello di classificazione mostrando il numero di previsioni vero positivo, vero negativo, falso positivo e falso negativo.

Il relatore dimostra come calcolare queste metriche di valutazione utilizzando la libreria scikit-learn di Python. Mostra come importare i moduli necessari, suddividere i dati in set di addestramento e test, addestrare un modello di classificazione, fare previsioni sul set di test e valutare le prestazioni del modello utilizzando accuratezza, precisione, richiamo e punteggio F1. Il video evidenzia l'importanza di valutare i modelli su dati invisibili per garantirne le capacità di generalizzazione.

Inoltre, il video introduce il concetto di curve caratteristiche operative del ricevitore (ROC) e area sotto la curva (AUC) come metriche di valutazione per i modelli di classificazione binaria. Le curve ROC tracciano il tasso di veri positivi rispetto al tasso di falsi positivi a varie soglie di classificazione, fornendo una rappresentazione visiva delle prestazioni del modello attraverso diversi valori di soglia. L'AUC rappresenta l'area sotto la curva ROC e fornisce un'unica metrica per confrontare le prestazioni di diversi modelli. Il video spiega come tracciare una curva ROC e calcolare l'AUC utilizzando la libreria scikit-learn di Python.

Il concetto di overfitting viene discusso come un problema comune nell'apprendimento automatico, in cui un modello funziona bene sui dati di addestramento ma non riesce a generalizzare a nuovi dati invisibili. Il video spiega che l'overfitting si verifica quando un modello diventa troppo complesso e apprende schemi specifici per i dati di addestramento che non sono validi nella popolazione generale. Il video mostra come visualizzare l'overfitting confrontando le prestazioni di addestramento e test di un modello. Spiega che un modello overfit avrà un errore di addestramento basso ma un errore di test elevato, indicando una scarsa generalizzazione. Il video suggerisce tecniche di regolarizzazione come la regressione della cresta e la regressione del lazo come modi per mitigare l'overfitting aggiungendo un termine di penalità alla funzione obiettivo del modello.

Viene introdotto il concetto di convalida incrociata come tecnica per valutare le prestazioni e la generalizzazione dei modelli di machine learning. Il video spiega che la convalida incrociata comporta la suddivisione dei dati in più sottoinsiemi, l'addestramento del modello su una parte dei dati e la valutazione delle sue prestazioni sulla parte rimanente. Questo processo viene ripetuto più volte, con diversi sottoinsiemi utilizzati per l'addestramento e il test, e viene calcolata la media dei risultati per fornire una stima delle prestazioni del modello. Il video mostra come eseguire la convalida incrociata utilizzando la libreria scikit-learn di Python, in particolare il metodo di convalida incrociata K-fold.

Successivamente, il video discute il concetto di selezione delle funzionalità e l'importanza nell'apprendimento automatico. Spiega che la selezione delle funzionalità implica l'identificazione delle funzionalità o delle variabili più rilevanti che contribuiscono alle prestazioni del modello. Il video evidenzia l'importanza di selezionare caratteristiche informative per migliorare l'accuratezza del modello, ridurre l'overfitting e migliorare l'interpretabilità. Introduce diverse tecniche di selezione delle caratteristiche, come la selezione univariata, l'eliminazione ricorsiva delle caratteristiche e i punteggi di importanza delle caratteristiche. Il video mostra come implementare la selezione delle funzionalità utilizzando la libreria scikit-learn di Python.

Il concetto di riduzione della dimensionalità è anche discusso come tecnica per affrontare la maledizione della dimensionalità nell'apprendimento automatico. Il video spiega che la riduzione della dimensionalità comporta la riduzione del numero di caratteristiche o variabili in un set di dati preservando la maggior parte delle informazioni rilevanti. Introduce l'analisi delle componenti principali (PCA) come tecnica di riduzione della dimensionalità comunemente usata. PCA mira a trasformare i dati in uno spazio dimensionale inferiore identificando le direzioni di massima varianza nei dati. Il video spiega che PCA crea nuove funzionalità, chiamate componenti principali, che sono combinazioni lineari delle funzionalità originali. Questi componenti principali acquisiscono le informazioni più importanti nei dati e possono essere utilizzati come input per i modelli di machine learning.

Il video mostra come eseguire PCA utilizzando la libreria scikit-learn di Python. Mostra come importare i moduli necessari, standardizzare i dati, inizializzare un oggetto PCA, adattare il modello PCA ai dati e trasformare i dati nello spazio dimensionale inferiore. Il video spiega anche come determinare il numero ottimale di componenti principali da conservare in base al rapporto di varianza spiegato.

Viene introdotto il concetto di ensemble learning come tecnica per migliorare le prestazioni dei modelli di machine learning combinando più modelli individuali. Il video spiega che l'apprendimento d'insieme sfrutta la saggezza delle folle, in cui ogni singolo modello contribuisce con le proprie previsioni e la previsione finale viene determinata sulla base di un meccanismo di voto o di media. Il video discute due popolari metodi di apprendimento dell'ensemble: bagging e boosting. Il bagging comporta l'addestramento di più modelli su diversi sottoinsiemi di dati e l'aggregazione delle loro previsioni, mentre il potenziamento si concentra sui modelli di addestramento in sequenza, con ogni modello che dà maggiore importanza alle istanze che sono state classificate erroneamente dai modelli precedenti.

Il video mostra come implementare l'apprendimento dell'ensemble utilizzando la libreria scikit-learn di Python. Mostra come importare i moduli necessari per il bagging e il boosting, inizializzare i modelli di ensemble, adattarli ai dati e fare previsioni utilizzando i modelli di ensemble. Il video sottolinea che l'apprendimento d'insieme può spesso migliorare le prestazioni complessive e la robustezza dei modelli di machine learning.

Infine, il video tocca brevemente argomenti avanzati nel machine learning, come il deep learning e l'elaborazione del linguaggio naturale (NLP). Menziona che il deep learning implica l'addestramento di reti neurali profonde con più livelli per apprendere schemi complessi nei dati. La PNL si concentra sullo sviluppo di modelli e tecniche per comprendere ed elaborare il linguaggio umano, abilitando applicazioni come la classificazione del testo, l'analisi del sentimento e la traduzione automatica. Il video si conclude evidenziando che il machine learning è un campo vasto e in rapida evoluzione con numerose applicazioni e opportunità di ulteriore esplorazione e apprendimento.

Il video offre una panoramica completa dei concetti e delle tecniche essenziali nell'apprendimento automatico, tra cui la valutazione del modello, l'overfitting, la regolarizzazione, la convalida incrociata, la selezione delle funzionalità, la riduzione della dimensionalità, l'apprendimento d'insieme e un'introduzione al deep learning e alla PNL. Dimostra implementazioni pratiche utilizzando Python e la libreria scikit-learn, rendendolo una risorsa preziosa per i principianti e coloro che desiderano migliorare la loro comprensione dell'apprendimento automatico.

  • 00:00:00 L'istruttore introduce il campo della statistica e il suo significato nell'elaborazione di problemi di modellazione predittiva con l'apprendimento automatico. Spiega la gamma di tecniche statistiche disponibili da semplici statistiche riassuntive a test di ipotesi e statistiche di stima. Il corso è progettato per fornire una base dettagliata per metodi statistici con esempi eseguibili in Python, coprendo sei aspetti fondamentali della statistica per l'apprendimento automatico. L'istruttore sottolinea inoltre che il corso è incentrato sull'applicazione e fornisce esempi di utilizzo del mondo reale, rendendolo adatto agli ingegneri dell'apprendimento automatico.

  • 00:05:00 Si sottolinea che l'apprendimento automatico è strettamente correlato alla statistica e il corso si presenta come una buona opzione per i programmatori che desiderano migliorare le proprie capacità statistiche. Il campo della statistica è classificato in 2 categorie, la prima è la statistica descrittiva e la seconda è la statistica inferenziale. La statistica descrittiva viene utilizzata per descrivere i dati utilizzando misurazioni come medie e rappresentazioni grafiche, mentre la statistica inferenziale viene utilizzata per fare inferenze dai dati per una popolazione più ampia. Infine, viene sottolineata l'importanza del trattamento dei dati, inclusa la perdita di dati, la corruzione e gli errori.

  • 00:10:00 Il video illustra i vari passaggi coinvolti nella preparazione dei dati per i modelli di machine learning. Ciò include la pulizia dei dati, la selezione dei dati, il campionamento dei dati e la trasformazione dei dati utilizzando metodi statistici come la standardizzazione e la normalizzazione. Anche la valutazione dei dati è importante e per stimare l'abilità di un modello è necessario eseguire la progettazione sperimentale, inclusi il ricampionamento dei dati e la selezione del modello. Per prevedere nuovi dati, il video consiglia l'approccio delle statistiche di stima. Inoltre, il video spiega le diverse scale di misurazione utilizzate nelle statistiche e le caratteristiche della distribuzione normale.

  • 00:15:00 Il relatore spiega le diverse scale di misura: nominale, ordinale, intervallo e rapporto. Proseguono discutendo le statistiche applicabili a ciascuna scala e come possono essere implementate nell'apprendimento automatico. Dato che lavoriamo quasi sempre con set di campioni, l'autore sottolinea che dobbiamo comprendere e segnalare l'incertezza coinvolta nella modellazione. La discussione si sposta quindi su una distribuzione normale campionaria che è molto comune in vari insiemi di dati. Infine, dimostrano come possiamo generare dati di esempio e applicarli a un istogramma per vedere se si adatta alla distribuzione gaussiana. L'autore spiega che mentre la maggior parte dei set di dati non avrà una distribuzione gaussiana perfetta, avranno proprietà simili a quelle gaussiane.

  • 00:20:00 Viene evidenziata l'importanza di selezionare un modo più granulare di suddividere i dati per esporre meglio la distribuzione gaussiana sottostante e vengono esplorate le misure di tendenza centrale come la media e la mediana, con la varianza e la deviazione standard discusse anche come misura della diffusione della distribuzione. La casualità è uno strumento essenziale nell'apprendimento automatico e viene utilizzata per aiutare gli algoritmi a essere più robusti e accurati. Vengono spiegate varie fonti di casualità, come errori nei dati e rumore che possono oscurare le relazioni.

  • 00:25:00 Viene spiegato che gli algoritmi di apprendimento automatico utilizzano spesso la casualità per ottenere una mappatura dei dati più performante. La casualità consente agli algoritmi di generare un modello più ottimale. Questa sezione discute le fonti di casualità, sia controllabili che incontrollabili e come l'uso della funzione seme può rendere coerente la casualità in un modello. Viene fornito un esempio utilizzando il modulo casuale Python per la generazione di numeri casuali e la libreria numpy per lavorare in modo efficiente con vettori e matrici di numeri. Il generatore di numeri pseudocasuali numpy è diverso dal generatore di numeri pseudocasuali della libreria standard di Python e deve essere utilizzato separatamente. Infine, vengono discussi due casi su quando eseguire il seeding del generatore di numeri casuali, inclusa la preparazione dei dati e le suddivisioni dei dati.

  • 00:30:00 Viene discussa l'importanza di suddividere in modo coerente i dati e l'uso di generatori di numeri pseudocasuali durante la valutazione di un algoritmo. Si consiglia di valutare il modello in modo tale che le prestazioni riportate includano l'incertezza misurata e le prestazioni dell'algoritmo. La valutazione di un algoritmo su più suddivisioni dei dati fornirà informazioni su come le prestazioni dell'algoritmo variano con le modifiche ai dati di addestramento e test, mentre la valutazione di un algoritmo più volte nelle stesse suddivisioni di dati contribuirà a fornire informazioni su come le prestazioni dell'algoritmo variano da sole . Vengono discussi anche la legge dei grandi numeri e il teorema del limite centrale, evidenziando che più dati abbiamo, migliori sono le prestazioni del nostro modello e che all'aumentare della dimensione di un campione, la distribuzione della media approssimerà una distribuzione gaussiana .

  • 00:35:00 Il teorema del limite centrale è dimostrato usando i tiri di dado e il codice. La dimostrazione mostra che all'aumentare della dimensione del campione, le medie campionarie approssimeranno una distribuzione gaussiana. L'interpretazione dei dati è fondamentale nelle statistiche per scoprire il significato. I test di ipotesi statistica o i test di significatività vengono utilizzati nell'apprendimento automatico per fare affermazioni sulla distribuzione dei dati o per confrontare due campioni. L'ipotesi 0 o ipotesi nulla è il presupposto predefinito che non è cambiato nulla e un test di ipotesi statistica può restituire un valore p o un valore critico. Il valore p è una quantità utilizzata per interpretare il risultato di un test di ipotesi e rifiutare o non rifiutare l'ipotesi nulla, mentre il valore critico viene utilizzato per confrontare la statistica del test con la sua distribuzione campionaria per determinare se ci sono prove sufficienti per respingere l'ipotesi nulla.

  • 00:40:00 Viene chiarito il concetto di rifiuto dell'ipotesi nulla, con l'ipotesi nulla che afferma che non vi è alcuna differenza statisticamente significativa. Se il risultato di un test statistico rifiuta l'ipotesi nulla, significa che qualcosa è statisticamente significativo. Viene discussa anche la distribuzione gaussiana, che descrive il raggruppamento o la densità delle osservazioni ed è spesso indicata come distribuzione normale. La distribuzione è una funzione matematica che descrive la relazione delle osservazioni con uno spazio campionario. Le funzioni di densità, comprese le funzioni di densità di probabilità e le funzioni di densità cumulativa, vengono utilizzate per descrivere la probabilità delle osservazioni in una distribuzione. Infine, viene sottolineata l'importanza di verificare se un campione di dati è casuale e vengono fornite le caratteristiche dei campioni normalmente distribuiti.

  • 00:45:00 Il relatore ha discusso la distribuzione normale (gaussiana), le sue proprietà tra cui la funzione di distribuzione di probabilità (pdf) e la funzione di distribuzione cumulativa (cdf) e la regola 68, 95 e 99,7 associata alle deviazioni standard. Il relatore ha anche introdotto la distribuzione t, che è simile alla distribuzione normale ma viene utilizzata per piccoli campioni. Successivamente, l'articolo ha introdotto la distribuzione del chi quadrato, il suo utilizzo per la bontà di adattamento e la sua relazione con la distribuzione t. Infine, il relatore ha dimostrato l'uso del modulo stats chi 2 in Scipy per il calcolo delle statistiche per una distribuzione chi quadrato.

  • 00:50:00 Viene spiegato il concetto di valori critici nel test di ipotesi statistiche. Un valore critico è una soglia utilizzata per determinare se un'ipotesi nulla viene accettata o rifiutata. Assume una distribuzione normale o gaussiana e ha una regione di accettazione e una regione di rifiuto. La linea che separa queste regioni è il valore critico. I test a una coda determinano se la media è maggiore o minore di un'altra media ma non entrambe, mentre i test a due code determinano se le due medie sono diverse l'una dall'altra. Il valore critico consente di quantificare l'incertezza delle statistiche o degli intervalli stimati, come gli intervalli di confidenza e tolleranza.

  • 00:55:00 Viene discusso l'uso di test a due code, che tengono conto sia degli effetti positivi che negativi di un prodotto. L'esempio fornito è quello di un farmaco generico rispetto a un prodotto di marca, in cui un test a due code può determinare se il prodotto generico è equivalente o peggiore del prodotto di marca. L'uso delle funzioni punto percentuale, o funzioni quantile, viene inoltre spiegato e dimostrato con esempi che utilizzano tre distribuzioni comunemente utilizzate: la distribuzione gaussiana standard, la distribuzione t di Student standard e la distribuzione chi quadrato standard. Infine, viene discusso il concetto di correlazione e la sua importanza nel determinare la relazione tra due variabili, così come il potenziale problema della multicollinearità e come può influenzare le prestazioni dell'algoritmo.

  • 01:00:00 Il video mostra una rapida dimostrazione per mostrare una forte correlazione positiva tra due variabili utilizzando un set di dati artificioso con ciascuna variabile estratta da una distribuzione gaussiana e correlata linearmente. La demo calcola e stampa la matrice di covarianza, mostrando una covarianza positiva tra le due variabili suggerendo che cambiano nella stessa direzione. Tuttavia, un problema con la covarianza come strumento statistico da solo è che è difficile da interpretare, portando al coefficiente di correlazione di Pearson. Il video spiega come il coefficiente di correlazione r di Pearson può riassumere la forza della relazione lineare tra due campioni di dati calcolando la covarianza delle due variabili divisa per il prodotto della deviazione standard di ciascun campione e che il coefficiente di correlazione può essere utilizzato per valutare relazione tra più di due variabili.

  • 01:05:00 Il video discute l'uso di test parametrici di significatività statistica, che presuppongono che i dati siano stati ricavati da una distribuzione gaussiana con la stessa media e la stessa deviazione standard. Un set di dati di test viene definito e utilizzato per dimostrare il test t di Student per campioni indipendenti e accoppiati, nonché l'analisi del test della varianza. Il video mostra come questi test possono essere implementati in Python utilizzando le funzioni Scipy appropriate. Gli esempi illustrano come questi test possono essere utilizzati per determinare se diversi campioni di dati hanno la stessa distribuzione.

  • 01:10:00 Il concetto di dimensione dell'effetto in statistica è discusso come un modo per quantificare l'entità delle differenze tra gruppi o associazioni tra variabili, che possono integrare i risultati ottenuti dai test di ipotesi statistiche. I metodi di dimensione dell'effetto sono divisi in associazione e differenza e possono essere standardizzati, unità originali o privi di unità, a seconda dello scopo dell'interpretazione e della misura statistica utilizzata. Il coefficiente di correlazione di Pearson è una misura standardizzata comunemente usata per determinare le associazioni lineari, che è priva di unità e può essere calcolata usando la funzione pearsonr() di Python. Anche la potenza statistica, che è influenzata dalla dimensione dell'effetto, dalla dimensione del campione, dalla significatività e dal livello di potenza, è spiegata come un fattore cruciale nella progettazione sperimentale e può essere stimata attraverso l'analisi della potenza per determinare la dimensione minima del campione necessaria per un esperimento.

  • 01:15:00 Il video discute l'importanza del campionamento e del ricampionamento dei dati nella modellazione predittiva, spiegando che il campionamento comporta la selezione di un sottoinsieme di una popolazione, mentre il ricampionamento comporta la stima dei parametri della popolazione più volte da un campione di dati per migliorare l'accuratezza e quantificare l'incertezza. Il video descrive i metodi comuni di campionamento, classificati come campionamento probabilistico o non probabilistico, e mette in evidenza tre tipi di campionamento che è probabile che gli ingegneri del machine learning incontrino: campionamento casuale semplice, campionamento sistemico e campionamento stratificato. Inoltre, il video avverte dei potenziali errori che possono essere introdotti nel processo di campionamento e sottolinea la necessità di inferenza statistica e attenzione quando si traggono conclusioni su una popolazione. Il video prosegue spiegando i metodi di campionamento comunemente usati nell'apprendimento automatico, vale a dire la convalida incrociata k-fold e il bootstrap, con quest'ultimo che è computazionalmente costoso, pur fornendo stime affidabili della popolazione.

  • 01:20:00 Il metodo bootstrap viene discusso come uno strumento per stimare quantità su una popolazione calcolando la media delle stime da più piccoli campioni di dati. I campioni vengono costruiti estraendo osservazioni da grandi set di dati uno alla volta e restituendoli al campione originale dopo essere stati prelevati. Questo approccio è chiamato campionamento con sostituzione. La funzione resample, fornita nella libreria SciPy, può essere utilizzata per creare un singolo campione bootstrap e, sebbene non includa alcun meccanismo per raccogliere facilmente osservazioni out-of-bag che potrebbero essere utilizzate per valutare modelli di adattamento, out-of- le osservazioni della borsa possono ancora essere raccolte usando la comprensione dell'elenco di Python. Inoltre, viene spiegato il processo di convalida incrociata k-fold, in quanto si tratta di una procedura di ricampionamento utilizzata per valutare i modelli di machine learning su dati limitati. La classe di apprendimento del ciclo K-fold può essere utilizzata per questa procedura e vengono menzionate quattro varianti comunemente utilizzate della convalida incrociata k-fold.

  • 01:25:00 Il relatore discute due approcci al ricampionamento nell'apprendimento automatico: convalida incrociata k-fold e suddivisione del test di addestramento. Sebbene la convalida incrociata k-fold sia il gold standard, la suddivisione del test di addestramento può essere più facile da comprendere e implementare. Il relatore dimostra come utilizzare l'approccio split train-test in Python e menziona anche l'uso delle statistiche di stima, che mirano a quantificare la dimensione e l'incertezza di un risultato e stanno diventando sempre più popolari nella letteratura di ricerca. Le tre classi principali di statistiche di stima includono la dimensione dell'effetto, la stima dell'intervallo e la meta-analisi. Il passaggio alle statistiche di stima si sta verificando perché sono più facili da analizzare e interpretare nel contesto delle domande di ricerca.

  • 01:30:00 Vengono discussi i diversi metodi per misurare la dimensione dell'effetto e la stima dell'intervallo. La dimensione dell'effetto può essere misurata attraverso l'associazione, che è il grado in cui i campioni cambiano insieme, o la differenza, che è il grado in cui i campioni differiscono. Nel frattempo, la stima dell'intervallo consente la quantificazione dell'incertezza nelle osservazioni e può essere eseguita tramite intervalli di tolleranza, intervalli di confidenza o intervalli di previsione. Gli intervalli di tolleranza specificano i limiti superiore e inferiore entro i quali ricade una certa percentuale dell'output del processo, mentre gli intervalli di confidenza forniscono i limiti per le stime di un parametro della popolazione. Infine, viene data una dimostrazione su come calcolare gli intervalli di tolleranza per un campione di osservazioni tratte da una distribuzione gaussiana.

  • 01:35:00 Viene discusso il concetto di intervallo di confidenza, che è la statistica dell'intervallo utilizzata per quantificare l'incertezza su una stima. L'intervallo di confidenza fornisce limiti su un parametro della popolazione, come media, deviazione standard o simili. Il valore di un intervallo di confidenza è la capacità di quantificare l'incertezza di una stima. Un intervallo di confidenza più piccolo equivale a una stima più precisa, mentre un intervallo di confidenza più ampio è una stima meno precisa. Inoltre, viene discusso il concetto di accuratezza o errore di classificazione, che è una proporzione o un rapporto utilizzato per descrivere la proporzione di previsioni corrette o errate effettuate dal modello. L'errore di classificazione o l'accuratezza possono essere utilizzati per calcolare facilmente l'intervallo di confidenza assumendo una distribuzione gaussiana della proporzione.

  • 01:40:00 Viene spiegato il concetto di intervalli di confidenza, dal calcolo di un intervallo di confidenza per l'errore di classificazione di un modello all'utilizzo del ricampionamento bootstrap come metodo non parametrico per stimare gli intervalli di confidenza. Il metodo di ricampionamento bootstrap prevede l'estrazione di campioni con sostituzione da un set di dati finito fisso per stimare i parametri della popolazione. Inoltre, viene introdotto il concetto di intervalli di previsione come stima dell'intervallo in cui le osservazioni future cadranno con un certo livello di confidenza, utile per fare previsioni o previsioni con modelli di regressione.

  • 01:45:00 Il concetto di intervalli di previsione è spiegato come una stima dell'intervallo in cui cadrà un'osservazione futura con un certo livello di confidenza, dati i dati osservati in precedenza. Si differenzia da un intervallo di confidenza, che quantifica l'incertezza relativa a una variabile campionaria della popolazione. Gli intervalli di previsione vengono in genere utilizzati nei modelli di previsione o di previsione. L'articolo presenta un semplice esempio di regressione lineare in un set di dati a due variabili, in cui la relazione tra le variabili è visibile da un grafico a dispersione. Il modello di regressione lineare viene quindi utilizzato per effettuare una singola previsione, con un intervallo previsto del 95% di certezza e rispetto al valore atteso noto. Viene sottolineata la differenza tra intervalli di previsione e intervalli di confidenza, nonché il fatto che gli intervalli di previsione sono generalmente più ampi degli intervalli di confidenza a causa dell'incertezza associata all'errore.
Applied Statistics for Machine Learning Engineers
Applied Statistics for Machine Learning Engineers
  • 2022.03.24
  • www.youtube.com
Complete Course on Applied Statistics for Machine Learning Engineers. It's all the statistics you'll need to know for a career in machine learning.
 

Algebra lineare applicata per ingegneri di Machine Learning



Algebra lineare applicata per ingegneri di Machine Learning

Il video sottolinea l'importanza dell'apprendimento dell'algebra lineare per gli ingegneri dell'apprendimento automatico, in quanto funge da elemento fondamentale per la comprensione del calcolo e della statistica, che sono essenziali nell'apprendimento automatico. Avere una comprensione più profonda dell'algebra lineare fornisce ai professionisti una migliore intuizione di come funzionano i metodi di apprendimento automatico, consentendo loro di personalizzare gli algoritmi e svilupparne di nuovi.

Il corso adotta un approccio top-down per insegnare le basi dell'algebra lineare, utilizzando esempi concreti e strutture dati per dimostrare operazioni su matrici e vettori. L'algebra lineare è descritta come la matematica delle matrici e dei vettori, che fornisce un linguaggio per la manipolazione dei dati e consente la creazione di nuove colonne o matrici di numeri attraverso operazioni su queste strutture di dati. Inizialmente sviluppata alla fine del 1800 per risolvere sistemi di equazioni lineari, l'algebra lineare è diventata un prerequisito fondamentale per comprendere l'apprendimento automatico.

Il relatore introduce il concetto di algebra lineare numerica, che implica l'applicazione dell'algebra lineare nei computer. Ciò include l'implementazione di operazioni di algebra lineare e l'affrontare le sfide che sorgono quando si lavora con una precisione in virgola mobile limitata nei computer digitali. L'algebra lineare numerica svolge un ruolo cruciale nell'apprendimento automatico, in particolare negli algoritmi di apprendimento profondo che si basano fortemente su unità di elaborazione grafica (GPU) per eseguire calcoli di algebra lineare in modo efficiente. Varie librerie di algebra lineare numerica open source, con librerie basate su Fortran come base, sono comunemente utilizzate per calcolare operazioni di algebra lineare, spesso in combinazione con linguaggi di programmazione come Python.

Viene evidenziato il significato dell'algebra lineare nella statistica, in particolare nell'analisi statistica multivariata, nell'analisi delle componenti principali e nella risoluzione di problemi di regressione lineare. Il video menziona anche l'ampia gamma di applicazioni dell'algebra lineare in campi come l'elaborazione dei segnali, la computer grafica e persino la fisica, con esempi come la teoria della relatività di Albert Einstein che utilizza tensori e calcolo tensoriale, un tipo di algebra lineare.

Il video esplora ulteriormente l'applicazione pratica dell'algebra lineare nelle attività di machine learning. Introduce il concetto di utilizzo di operazioni di algebra lineare, come ritaglio, ridimensionamento e taglio, per manipolare le immagini, dimostrando come la notazione e le operazioni di algebra lineare possono essere impiegate in questo contesto. Inoltre, il video spiega la popolare tecnica di codifica chiamata codifica one-hot per variabili categoriche. Viene introdotta la struttura dati principale utilizzata nell'apprendimento automatico, array N-dimensionali o array ND, con la libreria NumPy in Python discussa come un potente strumento per creare e manipolare questi array. Il video copre funzioni importanti, come v-stack e stacking orizzontale, che consentono la creazione di nuovi array da array esistenti.

Viene spiegato come manipolare e accedere ai dati negli array NumPy, comunemente usati per rappresentare i dati di machine learning. Il video mostra come convertire elenchi unidimensionali in array utilizzando la funzione array e creare array di dati bidimensionali utilizzando elenchi di elenchi. Copre anche le operazioni di indicizzazione e sezionamento negli array NumPy, incluso l'uso dell'operatore due punti per il sezionamento e l'indicizzazione negativa. Viene evidenziata l'importanza dell'affettamento nello specificare le variabili di input e output nell'apprendimento automatico.

Le tecniche per lavorare con set di dati multidimensionali nell'apprendimento automatico sono discusse nel video. Inizia con l'affettatura unidimensionale e passa all'affettatura bidimensionale, oltre a separare i dati in valori di input e output per l'addestramento e il test. Viene trattato il rimodellamento dell'array, spiegando come rimodellare gli array unidimensionali in array bidimensionali con una colonna e trasformare i dati bidimensionali in array tridimensionali per algoritmi che richiedono più campioni di una o più fasi temporali e caratteristiche. Viene introdotto il concetto di array broadcasting, che consente di utilizzare array con dimensioni diverse nelle operazioni aritmetiche, consentendo l'elaborazione efficace di set di dati con dimensioni variabili.

Il video tocca anche i limiti dell'aritmetica degli array in NumPy, in particolare che le operazioni aritmetiche possono essere eseguite solo su array con le stesse dimensioni e dimensioni con le stesse dimensioni. Tuttavia, questa limitazione è superata dalla funzione di trasmissione integrata di NumPy, che replica l'array più piccolo lungo l'ultima dimensione non corrispondente, consentendo l'aritmetica tra array con forme e dimensioni diverse. Il video fornisce tre esempi di trasmissione, tra cui array scalari e unidimensionali, scalare in un array bidimensionale e array unidimensionale in un array bidimensionale. Si noti che la trasmissione segue una regola rigida, affermando che l'aritmetica può essere eseguita solo quando la forma di ciascuna dimensione negli array è uguale o uno di essi ha una dimensione di uno.

Proseguendo, il relatore introduce il concetto di vettori, che sono tuple di uno o più valori chiamati scalari. I vettori sono spesso rappresentati utilizzando caratteri minuscoli come "v" e possono essere visti come punti o coordinate in uno spazio n-dimensionale, dove "n" rappresenta il numero di dimensioni. Viene spiegata la creazione di vettori come array NumPy in Python. Il video copre anche le operazioni aritmetiche vettoriali, come l'addizione e la sottrazione di vettori, che vengono eseguite in base agli elementi per vettori di uguale lunghezza, risultando in un nuovo vettore della stessa lunghezza. Inoltre, il relatore spiega come i vettori possono essere moltiplicati per gli scalari per ridimensionare la loro grandezza e dimostra come eseguire queste operazioni utilizzando gli array NumPy in Python. Viene anche discusso il prodotto scalare di due vettori, che produce uno scalare e può essere utilizzato per calcolare la somma ponderata di un vettore.

L'attenzione si sposta quindi sulle norme vettoriali e sulla loro importanza nell'apprendimento automatico. Le norme vettoriali si riferiscono alla dimensione o alla lunghezza di un vettore e sono calcolate utilizzando una misura che riassume la distanza del vettore dall'origine dello spazio vettoriale. Si sottolinea che le norme vettoriali sono sempre positive, ad eccezione di un vettore di tutti i valori zero. Il video introduce quattro calcoli di norme vettoriali comuni utilizzati nell'apprendimento automatico. Inizia con la norma del vettore L1, seguita dalla norma L2 (norma euclidea) e dalla norma max. La sezione definisce anche le matrici e spiega come manipolarle in Python. Viene discussa l'aritmetica delle matrici, inclusa la moltiplicazione matrice-matrice (prodotto scalare), la moltiplicazione matrice-vettore e la moltiplicazione scalare. Una matrice è descritta come un array bidimensionale di scalari con una o più colonne e una o più righe, tipicamente rappresentate da lettere maiuscole come "A".

Successivamente, viene introdotto il concetto di operazioni con matrici per l'apprendimento automatico. Ciò include la moltiplicazione di matrici, la divisione di matrici e la moltiplicazione scalare di matrici. La moltiplicazione di matrici, nota anche come prodotto scalare di matrici, richiede che il numero di colonne nella prima matrice sia uguale al numero di righe nella seconda matrice. Il video menziona che la funzione punto in NumPy può essere utilizzata per implementare questa operazione. Viene anche spiegato il concetto di trasposizione della matrice, in cui viene creata una nuova matrice invertendo il numero di righe e colonne della matrice originale. Infine, viene discusso il processo di inversione della matrice, che comporta la ricerca di un'altra matrice che, moltiplicata con la matrice originale, risulta in una matrice identità.

Continuando dalla discussione sull'inversione della matrice, il video esplora ulteriormente questo concetto. L'inversione di una matrice è indicata da un apice 1 negativo accanto alla matrice. Il video spiega che l'inversione di matrici comporta la ricerca di metodi numerici efficienti. Viene introdotta l'operazione trace di una matrice quadrata, che calcola la somma degli elementi diagonali e può essere calcolata utilizzando la funzione trace in NumPy. Il determinante di una matrice quadrata è definito come una rappresentazione scalare del volume della matrice e può anche essere calcolato utilizzando la funzione det in NumPy. Viene brevemente menzionato il rango di una matrice, che stima il numero di righe o colonne linearmente indipendenti nella matrice ed è comunemente calcolato utilizzando la decomposizione del valore singolare. Infine, viene spiegato il concetto di matrici sparse, evidenziando che esse contengono prevalentemente valori zero e possono essere computazionalmente costose da rappresentare e lavorare.

Il video approfondisce quindi le matrici sparse, che sono matrici composte principalmente da valori zero e differiscono dalle matrici dense che hanno per lo più valori diversi da zero. La scarsità viene quantificata calcolando il punteggio di scarsità, che è il numero di valori zero diviso per il numero totale di elementi nella matrice. Il video sottolinea due problemi principali associati alla scarsità: la complessità dello spazio e la complessità del tempo. Si noti che rappresentare e lavorare con matrici sparse può essere computazionalmente costoso.

Per affrontare queste sfide, il video menziona che Scipy fornisce strumenti per creare e manipolare matrici sparse. Inoltre, evidenzia che molte funzioni di algebra lineare in NumPy e Scipy possono operare su matrici sparse, consentendo calcoli e operazioni efficienti su dati sparsi.

Le matrici sparse sono comunemente utilizzate nell'apprendimento automatico applicato per l'osservazione dei dati e la preparazione dei dati. La loro scarsità consente un'archiviazione e un'elaborazione più efficienti di set di dati di grandi dimensioni con un numero significativo di valori zero. Sfruttando la struttura di scarsità, gli algoritmi di machine learning possono beneficiare di un ridotto utilizzo della memoria e di calcoli più veloci.

Andando avanti, il video discute diversi tipi di matrici comunemente usate nell'algebra lineare, in particolare quelle rilevanti per l'apprendimento automatico. Vengono introdotte le matrici quadrate, dove il numero di righe è uguale al numero di colonne. Vengono anche menzionate matrici rettangolari, che hanno un numero diverso di righe e colonne. Il video spiega la diagonale principale di una matrice quadrata, che consiste di elementi con gli stessi indici di riga e colonna. Viene trattato anche l'ordine di una matrice quadrata, definito come il numero di righe o colonne.

Inoltre, il video introduce le matrici simmetriche, che sono matrici quadrate uguali alla loro trasposizione. Vengono spiegate le matrici triangolari, comprese le matrici triangolari superiori e inferiori. Vengono discusse anche le matrici diagonali, in cui tutti gli elementi non diagonali sono zero. Le matrici di identità, che sono matrici quadrate con uno sulla diagonale principale e zeri altrove, sono spiegate nel contesto del loro ruolo di identità moltiplicative. Vengono anche introdotte le matrici ortogonali, formate quando due vettori hanno un prodotto scalare uguale a zero.

Il video procede discutendo matrici e tensori ortogonali. Una matrice ortogonale è un tipo specifico di matrice quadrata in cui le colonne e le righe sono vettori unitari ortogonali. Queste matrici sono computazionalmente efficienti e stabili per il calcolo della loro inversa, rendendole utili in varie applicazioni, inclusi i modelli di deep learning. Il video menziona inoltre che in TensorFlow i tensori sono una struttura dati fondamentale e una generalizzazione di vettori e matrici. I tensori sono rappresentati come array multidimensionali e possono essere manipolati in Python utilizzando array n-dimensionali, simili alle matrici. Il video evidenzia che le operazioni tensoriali basate sugli elementi, come l'addizione e la sottrazione, possono essere eseguite su tensori, matrici e vettori, fornendo un'intuizione per dimensioni superiori.

Successivamente, il video introduce la decomposizione della matrice, che è un metodo per scomporre una matrice nelle sue parti costituenti. La decomposizione delle matrici semplifica le complesse operazioni matriciali e consente calcoli efficienti. Vengono trattate due tecniche di decomposizione di matrici ampiamente utilizzate: la decomposizione LU (Lower-Upper) per matrici quadrate e la decomposizione QR (QR-factorization) per matrici rettangolari.

La decomposizione LU può semplificare le equazioni lineari nel contesto di problemi di regressione lineare e facilitare calcoli come determinante e inversa di una matrice. La decomposizione QR ha applicazioni nella risoluzione di sistemi di equazioni lineari. Entrambi i metodi di decomposizione possono essere implementati utilizzando le funzioni integrate nel pacchetto NumPy in Python, fornendo soluzioni efficienti e affidabili per vari problemi di algebra lineare.

Inoltre, il video discute la decomposizione di Cholesky, utilizzata specificamente per matrici simmetriche e definite positive. La decomposizione di Cholesky è rappresentata da una matrice triangolare inferiore ed è considerata quasi due volte più efficiente della decomposizione LU per la decomposizione di matrici simmetriche.

Il video menziona brevemente che i metodi di decomposizione della matrice, inclusa la decomposizione Eigen, sono impiegati per semplificare operazioni complesse. La decomposizione Eigen decompone una matrice nei suoi autovettori e autovalori. Gli autovettori sono coefficienti che rappresentano le direzioni, mentre gli autovalori sono scalari. Sia gli autovettori che gli autovalori hanno applicazioni pratiche, come la riduzione della dimensionalità e l'esecuzione di complesse operazioni con matrici.

Infine, il video tocca il concetto di decomposizione del valore singolare (SVD) e le sue applicazioni nell'apprendimento automatico. SVD viene utilizzato in varie operazioni di matrice e metodi di riduzione dei dati nell'apprendimento automatico. Svolge un ruolo cruciale nei calcoli come la regressione lineare dei minimi quadrati, la compressione delle immagini e i dati di denoising.

Il video spiega che SVD consente di scomporre una matrice in tre matrici separate: U, Σ e V. La matrice U contiene i vettori singolari di sinistra, Σ è una matrice diagonale contenente i valori singolari e V contiene i vettori singolari di destra. Ricostruendo la matrice originale da questi componenti, si può ottenere un'approssimazione dei dati originali riducendone la dimensionalità.

Una delle principali applicazioni di SVD è la riduzione della dimensionalità. Selezionando un sottoinsieme dei valori singolari più significativi e dei corrispondenti vettori singolari, è possibile rappresentare i dati in uno spazio dimensionale inferiore senza perdere informazioni cruciali. Questa tecnica è particolarmente utile nei casi in cui i dati hanno un'elevata dimensionalità, poiché consente una memorizzazione e un calcolo più efficienti.

Il video evidenzia che SVD è stato applicato con successo nell'elaborazione del linguaggio naturale utilizzando una tecnica chiamata analisi semantica latente (LSA) o indicizzazione semantica latente (LSI). Rappresentando i documenti di testo come matrici ed eseguendo SVD, LSA può catturare la struttura semantica sottostante dei documenti, consentendo attività come la somiglianza dei documenti e la modellazione degli argomenti.

Inoltre, il video introduce la classe SVD troncata, che implementa direttamente la capacità di ridurre la dimensionalità di una matrice. Con l'SVD troncato, diventa possibile trasformare la matrice originale in una rappresentazione a dimensione inferiore preservando le informazioni più importanti. Questa tecnica è particolarmente vantaggiosa quando si ha a che fare con set di dati di grandi dimensioni, in quanto consente un'elaborazione e un'analisi più efficienti.

In sintesi, il video ha trattato vari argomenti relativi all'algebra lineare per l'apprendimento automatico. Ha sottolineato l'importanza dell'apprendimento dell'algebra lineare come elemento fondamentale per comprendere il calcolo e la statistica nel contesto dell'apprendimento automatico. Il video ha discusso le applicazioni dell'algebra lineare nell'apprendimento automatico, come la personalizzazione e lo sviluppo di algoritmi, l'algebra lineare numerica, l'analisi statistica e vari altri campi come l'elaborazione del segnale e la computer grafica.

Inoltre, il video ha esplorato i concetti chiave dell'algebra lineare, inclusi vettori, matrici, operazioni con matrici, norme vettoriali, tecniche di decomposizione di matrici e matrici sparse. Ha spiegato come questi concetti vengono utilizzati nell'apprendimento automatico e ha fornito approfondimenti sulle loro applicazioni pratiche.

Comprendendo l'algebra lineare, i professionisti del machine learning possono acquisire un'intuizione più profonda dei fondamenti matematici alla base degli algoritmi di machine learning e applicarli efficacemente ai problemi del mondo reale. L'algebra lineare funge da potente strumento per la manipolazione dei dati, la riduzione della dimensionalità e l'ottimizzazione, consentendo soluzioni di machine learning efficienti ed efficaci.

  • 00:00:00 Viene evidenziata l'importanza dell'apprendimento dell'algebra lineare per gli ingegneri dell'apprendimento automatico, in quanto è considerato un elemento fondamentale per comprendere il calcolo e la statistica richiesti nell'apprendimento automatico. Una comprensione più approfondita dell'algebra lineare fornisce ai professionisti dell'apprendimento automatico una migliore intuizione di come funzionano i metodi, consentendo loro di personalizzare gli algoritmi e idearne di nuovi. In questo corso vengono insegnate le basi dell'algebra lineare con un approccio dall'alto verso il basso, utilizzando esempi concreti e strutture di dati per dimostrare operazioni su matrici e vettori. L'algebra lineare è la matematica delle matrici e dei vettori, che fornisce un linguaggio per i dati e consente la creazione di nuove colonne o matrici di numeri utilizzando operazioni su queste strutture di dati. L'algebra lineare è stata sviluppata alla fine del 1800 per risolvere sistemi sconosciuti di equazioni lineari ed è ora un prerequisito fondamentale per comprendere l'apprendimento automatico.

  • 00:05:00 L'oratore discute l'algebra lineare numerica, che è l'applicazione dell'algebra lineare nei computer. Ciò include l'implementazione di operazioni di algebra lineare e la gestione dei potenziali problemi che sorgono quando si lavora con una precisione in virgola mobile limitata nei computer digitali. L'algebra lineare numerica è uno strumento essenziale nell'apprendimento automatico poiché molti algoritmi di apprendimento profondo si basano sulla capacità delle unità di elaborazione grafica di calcolare rapidamente operazioni di algebra lineare. Diverse popolari librerie di algebra lineare numerica open source vengono utilizzate per calcolare operazioni di algebra lineare, con librerie di algebra lineare basate su Fortran che forniscono la base per la maggior parte delle implementazioni moderne utilizzando linguaggi di programmazione come Python. L'algebra lineare è essenziale anche in statistica, specialmente nell'analisi statistica multivariata, nell'analisi delle componenti principali e nella risoluzione di problemi di regressione lineare. Inoltre, il relatore discute le varie applicazioni dell'algebra lineare in campi come l'elaborazione del segnale, la computer grafica e persino la fisica, con la teoria della relatività di Albert Einstein che utilizza tensori e calcolo tensoriale, un tipo di algebra lineare.

  • 00:10:00 Viene introdotto il concetto di utilizzare operazioni di algebra lineare su immagini come ritaglio, ridimensionamento e taglio utilizzando la notazione e le operazioni di algebra lineare. Inoltre, viene spiegata la popolare tecnica di codifica per le variabili categoriche chiamata una codifica a caldo. Inoltre, viene discussa la struttura dati principale utilizzata nell'apprendimento automatico, gli array N-dimensionali o gli array ND e come crearli e manipolarli utilizzando la libreria NumPy in Python. Infine, vengono spiegate due delle funzioni più popolari per la creazione di nuovi array da array esistenti, v-stack e stacking orizzontale.

  • 00:15:00 Il relatore discute su come manipolare e accedere ai dati in array numpy, che vengono generalmente utilizzati per rappresentare i dati di machine learning. Un elenco unidimensionale può essere convertito in un array utilizzando la funzione array e un array di dati bidimensionale può essere creato utilizzando un elenco di elenchi. L'accesso ai dati tramite l'indicizzazione è simile ad altri linguaggi di programmazione, ma gli array numpy possono anche essere suddivisi utilizzando l'operatore due punti. È anche possibile l'indicizzazione negativa e lo slicing può essere utilizzato per specificare le variabili di input e output nell'apprendimento automatico.

  • 00:20:00 Il video illustra le tecniche per lavorare con set di dati multidimensionali comuni nell'apprendimento automatico. Inizia con l'affettamento unidimensionale e passa all'affettamento bidimensionale e alla separazione dei dati in valori di input e output per l'addestramento e il test. Il video copre quindi il rimodellamento dell'array, incluso il rimodellamento di array unidimensionali in array bidimensionali con una colonna e il rimodellamento di dati bidimensionali in un array tridimensionale per algoritmi che prevedono più campioni di uno o più passaggi temporali e una o più funzionalità . Infine, il video copre la trasmissione di array, che consente di aggiungere, sottrarre o utilizzare in aritmetica array con dimensioni diverse, utile per set di dati con dimensioni variabili.

  • 00:25:00 Vengono discusse le limitazioni dell'aritmetica degli array in numpy, che includono solo l'esecuzione di operazioni aritmetiche su array con le stesse dimensioni e dimensioni con le stesse dimensioni. Tuttavia, questa limitazione è superata dalla funzione di trasmissione incorporata di numpy che replica l'array più piccolo lungo l'ultima dimensione non corrispondente. Questo metodo consente l'aritmetica tra matrici con forme e dimensioni diverse. Vengono forniti tre esempi di trasmissione, tra cui array scalari e unidimensionali, scalare in un array bidimensionale e array unidimensionale in un array bidimensionale. Vengono inoltre notate le limitazioni della trasmissione, inclusa la rigida regola che deve essere soddisfatta per eseguire la trasmissione, affermando che l'aritmetica può essere eseguita solo dalla forma di ciascuna dimensione negli array sono uguali o uno ha la dimensione di uno.

  • 00:30:00 Il relatore introduce il concetto di vettori, che sono tuple di uno o più valori chiamati scalari e sono spesso rappresentati usando un carattere minuscolo come "v". I vettori possono essere pensati come punti o coordinate in uno spazio n-dimensionale dove n è il numero di dimensioni e possono essere creati come un array numpy in Python. L'oratore discute anche operazioni aritmetiche vettoriali come l'addizione e la sottrazione di vettori, che vengono eseguite in base agli elementi per vettori di uguale lunghezza risultando in un nuovo vettore della stessa lunghezza. Inoltre, il relatore spiega che i vettori possono essere moltiplicati per uno scalare per ridimensionarne la grandezza e come eseguire queste operazioni utilizzando gli array numpy in Python. Infine, il relatore parla del prodotto scalare di due vettori, che dà uno scalare, e di come può essere utilizzato per calcolare la somma ponderata di un vettore.

  • 00:35:00 L'attenzione si concentra sulle norme vettoriali e sulla loro importanza nell'apprendimento automatico. Le norme vettoriali si riferiscono alla dimensione o alla lunghezza di un vettore, calcolata utilizzando una misura che riassume la distanza del vettore dall'origine dello spazio vettoriale. La norma è sempre un numero positivo, ad eccezione di un vettore di tutti i valori zero. Vengono introdotti quattro calcoli di norme vettoriali comuni utilizzati nell'apprendimento automatico, a partire dalla norma vettoriale L1, seguita dalle norme L2 e max. La sezione definisce anche le matrici e come manipolarle in Python, discutendo l'aritmetica delle matrici, la moltiplicazione matrice-matrice (prodotto scalare), la moltiplicazione matrice-vettore e la moltiplicazione scalare. Una matrice è un array bidimensionale di scalari con una o più colonne e una o più righe, ed è spesso rappresentata da una lettera maiuscola, come A.

  • 00:40:00 Viene introdotto il concetto di operazioni matriciali per l'apprendimento automatico, tra cui moltiplicazione di matrici, divisione di matrici e moltiplicazione scalare di matrici. La moltiplicazione di matrici, nota anche come prodotto scalare di matrici, richiede che il numero di colonne nella prima matrice sia uguale al numero di righe nella seconda matrice. La funzione punto in numpy può essere utilizzata per implementare questa operazione. Viene inoltre introdotto il concetto di trasposizione della matrice, in cui viene creata una nuova matrice invertendo il numero di righe e colonne della matrice originale. Infine, viene discusso il processo di inversione della matrice, che trova un'altra matrice che si moltiplicherà con la matrice risultando in una matrice identità.

  • 00:45:00 Viene trattato il concetto di inversione di matrice, dove l'inversione di una matrice è indicata da un apice 1 negativo accanto alla matrice. L'operazione di inversione di matrice comporta la ricerca di una serie di metodi numerici efficienti. Viene anche discussa l'operazione di traccia di una matrice quadrata, che può essere calcolata utilizzando la funzione di traccia in numpy. Il determinante di una matrice quadrata è definito come una rappresentazione scalare del volume di una matrice e può anche essere calcolato utilizzando la funzione det in numpy. Inoltre, viene introdotto il rango di una matrice, che stima il numero di righe o colonne linearmente indipendenti nella matrice ed è comunemente calcolato utilizzando la decomposizione del valore singolare. Infine, viene spiegato il concetto di matrici sparse, che sono matrici contenenti per lo più valori zero e sono computazionalmente costose da rappresentare e lavorare.

  • 00:50:00 Apprendiamo le matrici sparse, che sono matrici che sono per lo più costituite da valori zero e sono diverse dalle matrici dense che hanno per lo più valori diversi da zero. La scarsità può essere quantificata calcolando il punteggio, che è il numero di valori zero diviso per il numero totale di elementi nella matrice. Impariamo anche i due grandi problemi con la scarsità: la complessità dello spazio e la complessità del tempo. Scipy fornisce strumenti per la creazione di matrici sparse e molte funzioni di algebra lineare numpy e scipy possono operare su di esse. Le matrici sparse sono comunemente utilizzate nell'apprendimento automatico applicato per l'osservazione dei dati e la preparazione dei dati.

  • 00:55:00 Vengono discussi i diversi tipi di matrici comunemente usati nell'algebra lineare, particolarmente rilevanti per l'apprendimento automatico. Vengono introdotte matrici quadrate, dove il numero di righe è uguale al numero di colonne, insieme a matrici rettangolari. Vengono trattati anche la diagonale principale e l'ordine di una matrice quadrata. Inoltre, vengono spiegate matrici simmetriche, matrici triangolari (incluse superiore e inferiore), matrici diagonali, matrici identità e matrici ortogonali. Si noti che una matrice ortogonale si forma quando due vettori hanno un prodotto scalare uguale a zero.

  • 01:00:00 Impariamo a conoscere matrici e tensori ortogonali. Una matrice ortogonale è un tipo di matrice quadrata le cui colonne e righe sono vettori unitari ortogonali. Queste matrici sono computazionalmente economiche e stabili per calcolare la loro inversa e possono essere utilizzate nei modelli di deep learning. In Tensorflow, i tensori sono una struttura dati cardine e una generalizzazione di vettori e matrici, rappresentati come array multidimensionali. I tensori possono essere manipolati in Python utilizzando array n-dimensionali, simili alle matrici, con operazioni tensoriali basate sugli elementi come addizione e sottrazione. Inoltre, le operazioni del prodotto tensoriale possono essere eseguite su tensori, matrici e vettori, consentendo un'intuizione di dimensioni superiori.

  • 01:05:00 Il video introduce la decomposizione della matrice, un metodo per ridurre una matrice nelle sue parti costitutive e semplificare le operazioni matriciali più complesse che possono essere eseguite sulla matrice di decomposizione. Due tecniche di decomposizione di matrici ampiamente utilizzate e trattate nelle prossime lezioni sono la decomposizione di matrici LU per matrici quadrate e la decomposizione di matrici QR per matrici rettangolari. La decomposizione LU può essere utilizzata per semplificare le equazioni lineari nel problema della regressione lineare e per calcolare il determinante e l'inverso di una matrice, mentre la decomposizione QR ha applicazioni nella risoluzione di sistemi di equazioni lineari. Entrambe le scomposizioni possono essere implementate utilizzando le funzioni incorporate nel pacchetto NumPy in Python.

  • 01:10:00 Il video discute la decomposizione di Cholesky, utilizzata per matrici simmetriche e definite positive. Questo metodo è quasi due volte più efficiente della decomposizione LU ed è preferito per la decomposizione di matrici simmetriche. La decomposizione di Cholesky è rappresentata da una matrice triangolare inferiore, a cui è possibile accedere facilmente tramite la funzione Cholosky in NumPy. Il video menziona anche che i metodi di decomposizione della matrice, inclusa Eigendecomposition, vengono utilizzati per semplificare operazioni complesse e la decomposizione Eigen decompone una matrice in autovettori e autovalori. Infine, il video rileva che gli autovettori sono vettori unitari, mentre gli autovalori sono scalari, ed entrambi sono utili per ridurre la dimensionalità ed eseguire complesse operazioni matriciali.

  • 01:15:00 Viene discusso il concetto di decomposizione di eigen e il suo calcolo utilizzando un efficiente algoritmo iterativo. La scomposizione dell'auto è un metodo per scomporre una matrice quadrata nei suoi autovalori e autovettori, che sono rispettivamente coefficienti e direzioni. L'autocomposizione può essere calcolata in NumPy utilizzando la funzione eig e si possono eseguire test per confermare che un vettore è effettivamente un autovettore di una matrice. La matrice originale può anche essere ricostruita dagli autovalori e dagli autovettori. La sezione introduce anche brevemente la decomposizione del valore singolare (SVD) come metodo di decomposizione della matrice per ridurre la matrice nelle sue parti costituenti per rendere più semplici alcuni successivi calcoli della matrice e le sue applicazioni in vari campi come la compressione, il denoising e la riduzione dei dati.

  • 01:20:00 Vengono discussi il concetto di decomposizione del valore singolare (SVD) e le sue applicazioni nell'apprendimento automatico. SVD viene utilizzato nel calcolo di altre operazioni con matrici e metodi di riduzione dei dati nell'apprendimento automatico, come la regressione lineare ai minimi quadrati, la compressione delle immagini e il denoising dei dati. La matrice originale può essere ricostruita dagli elementi u, sigma e v restituiti dall'SVD. Un'applicazione popolare di SVD è per la riduzione della dimensionalità, in cui i dati possono essere ridotti a un sottoinsieme più piccolo di caratteristiche che sono le più rilevanti per il problema di previsione. Questo è stato applicato con successo nell'elaborazione del linguaggio naturale utilizzando una tecnica chiamata analisi semantica latente o indicizzazione semantica latente. Viene discussa la classe SVD troncata che implementa direttamente questa capacità e la sua applicazione viene dimostrata utilizzando una matrice definita seguita da una versione di trasformazione.
Applied Linear Algebra for Machine Learning Engineers
Applied Linear Algebra for Machine Learning Engineers
  • 2022.03.26
  • www.youtube.com
This course will cover everything you need to know about linear algebra for your career as a machine learning engineer.
 

Un'introduzione completa a XGBoost per ingegneri di Machine Learning


Un'introduzione completa a XGBoost per ingegneri di Machine Learning

Nel video, l'istruttore fornisce un'introduzione completa a XGBoost per gli ingegneri del machine learning. Spiegano che XGBoost è una libreria di apprendimento automatico open source nota per la sua capacità di creare rapidamente modelli di classificazione e regressione estremamente accurati. Ha guadagnato popolarità come scelta migliore per la creazione di modelli del mondo reale, in particolare quando si tratta di set di dati altamente strutturati. XGBoost è stato creato da Taiki Chen e si basa sulla tecnica degli alberi decisionali del gradient boost, che consente la costruzione di modelli in modo rapido ed efficiente.

L'istruttore sottolinea che XGBoost supporta più interfacce, incluse le implementazioni Python e scikit-learn. Procedono a dare una dimostrazione di XGBoost, mostrando vari moduli per il caricamento dei dati e la costruzione di modelli.

Il video si concentra quindi sulla preparazione del set di dati per l'addestramento di un modello XGBoost. L'istruttore sottolinea l'importanza di separare i dati in set di addestramento e test. Identificano la variabile target come un problema di classificazione binaria e spiegano il processo di impostazione degli iperparametri necessari per il modello XGBoost. Una volta addestrato il modello sui dati di addestramento, ne valutano l'accuratezza sui dati di test utilizzando il punteggio di accuratezza come metrica.

Per fornire una migliore comprensione di XGBoost, l'istruttore approfondisce il concetto di potenziamento del gradiente e il suo ruolo nella categoria più ampia dei tradizionali modelli di apprendimento automatico. Spiegano che il gradient boosting è una tecnica che combina un modello debole con altri modelli dello stesso tipo per creare un modello più accurato. In questo processo, ogni albero successivo viene costruito per i residui di predizione dell'albero precedente. L'istruttore sottolinea che gli alberi decisionali vengono utilizzati nel potenziamento del gradiente, in quanto forniscono una rappresentazione grafica delle possibili soluzioni decisionali basate su determinate condizioni. Dicono anche che la progettazione di un albero decisionale richiede un processo di pensiero ben documentato per identificare efficacemente le potenziali soluzioni.

Il video esplora ulteriormente la creazione di alberi decisionali binari utilizzando la divisione binaria ricorsiva. Questo processo comporta la valutazione di tutte le variabili di input e dei punti di divisione in modo avido per ridurre al minimo una funzione di costo che misura la prossimità dei valori previsti ai valori effettivi. L'istruttore spiega che viene scelta la suddivisione con il costo più basso e che i gruppi risultanti possono essere ulteriormente suddivisi in modo ricorsivo. Sottolineano che l'algoritmo utilizzato è avido, poiché si concentra sul prendere la decisione migliore in ogni fase. Tuttavia, è preferibile disporre di alberi decisionali con meno suddivisioni per garantire una migliore comprensibilità e ridurre il rischio di overfitting dei dati. L'istruttore sottolinea che XGBoost fornisce meccanismi per prevenire l'overfitting, come la limitazione della profondità massima di ciascun albero e la potatura dei rami irrilevanti. Inoltre, trattano la codifica delle etichette e dimostrano il caricamento del set di dati dell'iride utilizzando scikit-learn.

Andando avanti, il video copre il processo di codifica dell'etichetta di destinazione come variabile numerica utilizzando il metodo del codificatore di etichette. Dopo aver suddiviso i dati in set di dati di addestramento e test, l'istruttore definisce e addestra il classificatore XGBoost sui dati di addestramento. Quindi utilizzano il modello addestrato per fare previsioni sul set di dati di test, ottenendo un'accuratezza del 90%. Il concetto di apprendimento dell'insieme viene introdotto come metodo per combinare più modelli per migliorare l'accuratezza della previsione, migliorando in ultima analisi l'efficienza dell'algoritmo di apprendimento. L'istruttore sottolinea l'importanza di selezionare il modello giusto per i problemi di classificazione o regressione per ottenere risultati ottimali.

Il video approfondisce il concetto di bias e varianza nei modelli di machine learning e sottolinea la necessità di un equilibrio tra i due. L'apprendimento d'insieme è presentato come una tecnica per affrontare questo equilibrio combinando gruppi di studenti deboli per creare modelli più complessi. Vengono introdotte due tecniche di ensemble, bagging e boosting. Il bagging mira a ridurre la varianza creando sottoinsiemi di dati per addestrare alberi decisionali e creare un insieme di modelli con alta varianza e bassa distorsione. Il potenziamento, d'altra parte, comporta l'apprendimento sequenziale di modelli con alberi decisionali, consentendo la correzione degli errori commessi dai modelli precedenti. L'istruttore sottolinea che il gradient boosting è un tipo specifico di boosting che ottimizza una funzione di perdita differenziabile utilizzando studenti deboli sotto forma di alberi di regressione.

Il video spiega in dettaglio il concetto di potenziamento del gradiente, delineandone il processo in tre fasi. Il primo passo prevede l'aggiunta iterativa di studenti deboli (ad esempio, alberi decisionali) per ridurre al minimo le perdite. Il secondo passaggio è l'aggiunta sequenziale di alberi e il passaggio finale si concentra sulla riduzione dell'errore del modello attraverso ulteriori iterazioni. Per dimostrare il processo, il video mostra l'uso della convalida incrociata k-fold per segmentare i dati. Tramite XGBoost si ottengono i punteggi per ogni piega. L'istruttore sceglie gli alberi decisionali come studenti deboli, garantendo una profondità ridotta per evitare l'overfitting. Infine, una funzione di perdita è definita come una misura di quanto bene il modello di apprendimento automatico si adatta ai dati.

Vengono spiegati i passaggi fondamentali del potenziamento del gradiente, che includono l'ottimizzazione della funzione di perdita, l'utilizzo di studenti deboli (spesso alberi decisionali) e la combinazione di più studenti deboli in modo additivo attraverso l'apprendimento d'insieme. Il video copre anche gli aspetti pratici dell'utilizzo di XGBoost, come la gestione dei valori mancanti, il salvataggio dei modelli su disco e l'utilizzo dell'arresto anticipato. Vengono fornite dimostrazioni utilizzando il codice Python per illustrare vari casi d'uso di XGBoost. Inoltre, il video sottolinea l'importanza della pulizia dei dati, comprese le tecniche per la gestione dei valori mancanti, come l'attribuzione del valore medio.

L'oratore discute l'importanza di pulire correttamente i dati piuttosto che affidarsi esclusivamente agli algoritmi per svolgere il lavoro. Dimostrano come l'eliminazione di valori vuoti può migliorare l'accuratezza del modello e mettere in guardia contro gli algoritmi che gestiscono valori vuoti. Il concetto di pickling, che prevede il salvataggio su disco di modelli addestrati per un uso successivo, viene introdotto utilizzando la libreria pickle in Python. Il relatore mostra come salvare e caricare i modelli. Mostrano anche come tracciare l'importanza di ciascun attributo in un set di dati utilizzando la funzione di importanza del grafico in XGBoost e la libreria matplotlib.

Il relatore discute l'importanza di analizzare e testare diversi scenari durante la creazione di modelli di machine learning, sottolineando che i punteggi di importanza delle funzionalità di XGBoost potrebbero non riflettere sempre l'impatto effettivo di una funzionalità sull'accuratezza del modello. Usano l'esempio del set di dati Titanic per dimostrare come l'aggiunta dell'attributo "sesso" migliori l'accuratezza del modello, nonostante siano classificati in basso nei punteggi di importanza delle caratteristiche. Il relatore sottolinea l'importanza di testare vari scenari e non basarsi esclusivamente sui punteggi di importanza delle funzionalità. Menzionano anche che XGBoost può valutare e segnalare le prestazioni di un set di test durante l'allenamento.

Il video spiega come monitorare le prestazioni di un modello XGBoost durante l'addestramento specificando una metrica di valutazione e passando un array di coppie x e y. Le prestazioni del modello su ogni set di valutazione vengono archiviate e rese disponibili dopo l'addestramento. Il video copre le curve di apprendimento, che forniscono informazioni sul comportamento del modello e aiutano a prevenire l'overfitting interrompendo l'apprendimento in anticipo. L'interruzione anticipata viene introdotta come tecnica per interrompere l'addestramento dopo un numero fisso di epoche se non si osserva alcun miglioramento nel punteggio di convalida.

Il video copre l'uso dei turni di arresto anticipato in XGBoost e dimostra la costruzione di un modello di regressione per valutare i prezzi delle case a Boston. Vengono discussi i vantaggi del parallelismo nel potenziamento del gradiente, concentrandosi sulla costruzione di singoli alberi e sulla preparazione efficiente dei dati di input. Il video fornisce una dimostrazione del supporto multithreading, che utilizza tutti i core del sistema per eseguire calcoli simultaneamente, con conseguente esecuzione più rapida del programma. Sebbene XGBoost sia principalmente orientato ai problemi di classificazione, il video evidenzia la sua capacità di eccellere anche nella creazione di modelli di regressione.

Il relatore crea un elenco per contenere il numero di iterazioni per un esempio e utilizza un ciclo for per testare la velocità di esecuzione del modello in base al numero di thread. Stampano la velocità della build per ogni iterazione e tracciano i risultati, mostrando come la velocità del modello diminuisce all'aumentare del numero di thread. Il relatore discute quindi l'ottimizzazione degli iperparametri, che comporta la regolazione dei parametri in un modello per migliorarne le prestazioni. Esplorano i parametri predefiniti per XGBoost e scikit-learn e menzionano che l'ottimizzazione degli iperparametri è essenziale per ottimizzare le prestazioni di un modello XGBoost. Il video spiega che gli iperparametri sono impostazioni che non vengono apprese dai dati ma vengono impostate manualmente dall'utente. L'ottimizzazione degli iperparametri comporta la ricerca sistematica della migliore combinazione di valori dei parametri che determinano le massime prestazioni del modello.

Per eseguire l'ottimizzazione degli iperparametri, il video introduce due approcci comuni: la ricerca su griglia e la ricerca casuale. La ricerca della griglia implica la definizione di una griglia di valori di iperparametri e la valutazione esaustiva di ogni combinazione. La ricerca casuale, d'altra parte, campiona casualmente le combinazioni di iperparametri da uno spazio di ricerca predefinito. Il video consiglia di utilizzare la ricerca casuale quando lo spazio di ricerca è ampio o il numero di iperparametri è elevato.

Il video mostra l'ottimizzazione degli iperparametri utilizzando la classe RandomizedSearchCV di scikit-learn. Definiscono una griglia di parametri contenente valori diversi per iperparametri come velocità di apprendimento, profondità massima e rapporto del sottocampione. La classe RandomizedSearchCV esegue una ricerca casuale con convalida incrociata, valutando le prestazioni di ogni combinazione di parametri. Dopo l'ottimizzazione, vengono selezionati i migliori iperparametri e il modello viene addestrato con questi valori ottimali.

Il relatore spiega che l'ottimizzazione degli iperparametri aiuta a trovare il miglior compromesso tra underfitting e overfitting. È importante trovare un equilibrio ed evitare l'overfitting selezionando attentamente gli iperparametri in base al set di dati specifico e al problema in questione.

Oltre all'ottimizzazione degli iperparametri, il video illustra l'importanza delle funzionalità nei modelli XGBoost. L'importanza delle funzionalità fornisce informazioni su quali funzionalità hanno l'impatto più significativo sulle previsioni del modello. Il relatore spiega che l'importanza della caratteristica è determinata dal guadagno medio, che misura il miglioramento della funzione di perdita apportata da una caratteristica quando viene utilizzata in un albero decisionale. Un guadagno medio più alto indica una maggiore importanza.

Il video mostra come estrarre e visualizzare l'importanza delle funzionalità utilizzando la libreria XGBoost. Tracciano un grafico a barre che mostra le caratteristiche principali e i punteggi di importanza corrispondenti. Il relatore osserva che l'importanza delle caratteristiche può aiutare nella selezione delle caratteristiche, nella riduzione della dimensionalità e nell'ottenere informazioni sul problema sottostante.

Verso la fine del video, il relatore menziona brevemente altri argomenti avanzati relativi a XGBoost. Toccano la gestione di set di dati sbilanciati regolando l'iperparametro scale_pos_weight, gestendo i valori mancanti utilizzando la funzionalità integrata di XGBoost e gestendo le variabili categoriali attraverso la codifica one-hot o utilizzando il supporto integrato per le funzionalità categoriche in XGBoost.

Il video fornisce una panoramica completa di XGBoost, coprendo i concetti chiave, l'implementazione, l'ottimizzazione degli iperparametri e l'analisi dell'importanza delle funzionalità. Le dimostrazioni e gli esempi di codice aiutano a illustrare gli aspetti pratici del lavoro con XGBoost in Python. Serve come risorsa preziosa per gli ingegneri di machine learning che desiderano utilizzare XGBoost per le loro attività di classificazione e regressione.

  • 00:00:00 L'istruttore fornisce un'introduzione a XGBoost per gli ingegneri dell'apprendimento automatico. XGBoost è una libreria di machine learning open source utilizzata per creare rapidamente modelli di classificazione e regressione altamente accurati, rendendola la scelta migliore per la creazione di modelli del mondo reale rispetto a set di dati altamente strutturati. L'autore di XGBoost è Taiki Chen, ed è un'implementazione di alberi decisionali di aumento del gradiente per velocità e prestazioni. L'istruttore sottolinea inoltre che XGBoost supporta diverse interfacce come le implementazioni Python e scikit-learn e fornisce una demo di XGBoost utilizzando diversi moduli per caricare dati e costruire modelli.

  • 00:05:00 L'istruttore spiega come preparare il set di dati per l'addestramento di un modello XGBoost, concentrandosi sulla separazione dei dati in set di addestramento e test. La variabile di destinazione viene identificata come problema di classificazione binaria e vengono impostati gli iperparametri necessari per il modello XGBoost. Il modello viene addestrato sui dati di addestramento e l'accuratezza del modello viene valutata sui dati di test utilizzando il punteggio di accuratezza come metrica. L'istruttore fornisce anche una panoramica del potenziamento del gradiente, il concetto alla base di XGBoost e come si inserisce nella categoria più ampia dei tradizionali modelli di apprendimento automatico.

  • 00:10:00 Impariamo la scissione binaria ricorsiva e l'apprendimento dell'insieme, che combina più modelli deboli per migliorare l'accuratezza delle previsioni. Il potenziamento del gradiente è una tecnica per costruire modelli predittivi combinando un modello debole con altri modelli dello stesso tipo per produrre un modello più accurato. Ogni albero successivo è costruito per i residui di predizione dell'albero precedente. Gli alberi decisionali vengono utilizzati nel potenziamento del gradiente e comportano una rappresentazione grafica di tutte le possibili soluzioni a una decisione basata su determinate condizioni. La progettazione di un albero decisionale richiede un processo di pensiero ben documentato che aiuti a formalizzare il processo di brainstorming in modo da poter identificare più potenziali soluzioni.

  • 00:15:00 Il video spiega come vengono creati gli alberi decisionali binari. Il processo è chiamato scissione binaria ricorsiva e comporta la valutazione di tutte le variabili di input e dei punti di divisione in modo avido per ridurre al minimo una funzione di costo che misura la vicinanza dei valori previsti ai corrispondenti valori reali. Viene scelta la suddivisione con il costo più basso ei gruppi risultanti possono essere suddivisi in modo ricorsivo. L'algoritmo è avido e si concentra sul prendere la decisione migliore in ogni fase. Sono preferiti alberi decisionali con meno suddivisioni, in quanto sono più facili da comprendere e hanno meno probabilità di sovradimensionare i dati. Per prevenire l'overfitting, l'algoritmo XGBoost consente un meccanismo per arrestare la crescita degli alberi, come limitare la profondità massima di ciascun albero e potare i rami irrilevanti. Il video copre anche la codifica delle etichette e il caricamento del set di dati dell'iride utilizzando scikit-learn.

  • 00:20:00 Il video illustra il processo di codifica di un'etichetta di destinazione come variabile numerica, utilizzando il metodo del codificatore di etichette. Una volta che i dati sono stati suddivisi in set di dati di addestramento e test, il classificatore XGBoost viene definito e addestrato sui dati di addestramento. Il modello viene quindi utilizzato per fare previsioni sul set di dati di test con una precisione del 90%. L'apprendimento d'insieme viene quindi introdotto come metodo per combinare più modelli per migliorare l'accuratezza delle previsioni, consentendo un algoritmo di apprendimento più efficiente. Il video sottolinea l'importanza di scegliere il modello giusto per i problemi di classificazione o regressione quando si cerca di ottenere i migliori risultati.

  • 00:25:00 Viene discusso il concetto di distorsione e varianza nei modelli di apprendimento automatico e viene sottolineata la necessità di un equilibrio tra i due. L'apprendimento d'insieme viene presentato come una tecnica utilizzata per affrontare questo equilibrio combinando gruppi di studenti deboli per creare modelli più complessi. Il bagging e il boosting sono due tecniche di ensemble, con il bagging utilizzato per ridurre la varianza creando diversi sottoinsiemi di dati per addestrare alberi decisionali e creare un insieme di modelli con alta varianza e bassa distorsione. Il potenziamento implica l'apprendimento sequenziale dei modelli con alberi decisionali, consentendo la correzione degli errori dei modelli precedenti, e si ottiene con il lavoro di squadra tra gli studenti deboli per classificare correttamente l'input. Il potenziamento del gradiente è un tipo specifico di potenziamento che implica l'ottimizzazione di una funzione di perdita differenziabile e l'utilizzo di studenti deboli sotto forma di alberi di regressione.

  • 00:30:00 È stato introdotto il concetto di potenziamento del gradiente ed è stato spiegato il suo processo in tre fasi. Il primo passaggio prevede l'aggiunta di studenti deboli come alberi decisionali in un processo iterativo per ridurre al minimo le perdite. Il secondo passaggio è l'aggiunta sequenziale di alberi, mentre il passaggio finale mira a ridurre l'errore del modello attraverso più iterazioni. La dimostrazione ha comportato l'uso della convalida incrociata k-fold per segmentare i dati e, tramite XGBoost, sono stati ottenuti punteggi per ogni piega. L'albero decisionale è stato utilizzato come studente debole di scelta, con una profondità ridotta per evitare l'overfitting. Infine, è stata definita una funzione di perdita come misura di quanto bene il modello di apprendimento automatico si adatta ai dati di un particolare fenomeno.

  • 00:35:00 Vengono spiegati i passaggi fondamentali del potenziamento del gradiente, che includono l'ottimizzazione della funzione di perdita, l'utilizzo di uno studente debole (di solito un albero decisionale) e la combinazione di molti studenti deboli in modo additivo attraverso l'apprendimento d'insieme. La sezione copre anche vari aspetti pratici dell'utilizzo di XGBoost, come la gestione dei valori mancanti, il salvataggio dei modelli su disco e l'utilizzo dell'arresto anticipato. In questa sezione viene adottato un approccio basato sul codice, con numerose demo fornite per mostrare i vari usi di XGBoost. Inoltre, la sezione esplora l'importanza della pulizia dei dati, incluso come sostituire i valori mancanti con l'attribuzione del valore medio.

  • 00:40:00 Il relatore discute l'importanza di ripulire i propri dati e di non fare affidamento sugli algoritmi per fare il lavoro per te. Dimostrano come l'eliminazione di valori vuoti può migliorare l'accuratezza del modello e mettere in guardia dal consentire agli algoritmi di gestire valori vuoti. Il relatore introduce anche il concetto di pickling, che è un modo per salvare i modelli addestrati su disco per un uso successivo, e dimostra come utilizzare la libreria pickle per salvare e caricare i modelli in Python. Infine, mostrano come tracciare l'importanza di ciascun attributo in un set di dati utilizzando la funzione di importanza del grafico in XGBoost e matplotlib.

  • 00:45:00 Il relatore discute i punteggi di importanza delle funzionalità determinati da XGBoost e l'importanza di analizzare e testare diversi scenari durante la creazione di modelli di machine learning. Usano l'esempio del set di dati Titanic e mostrano come l'aggiunta dell'attributo "sesso" migliora l'accuratezza del modello, nonostante sia classificato in basso nei punteggi di importanza delle caratteristiche. Il relatore sottolinea l'importanza di testare vari scenari e non fare affidamento esclusivamente sui punteggi di importanza delle funzionalità. Menzionano anche la capacità di XGBoost di valutare e segnalare le prestazioni di un set di test durante l'allenamento.

  • 00:50:00 Il video illustra come monitorare le prestazioni del modello XGBoost durante l'addestramento specificando una metrica di valutazione e passando un array di coppie x e y. Le prestazioni del modello su ogni set di valutazione vengono archiviate e rese disponibili dopo l'addestramento. Utilizzando queste misure delle prestazioni, è possibile creare curve di apprendimento per ottenere ulteriori informazioni sul comportamento del modello e potenzialmente interrompere l'apprendimento in anticipo per evitare l'overfitting. Il video copre anche l'arresto anticipato, una tecnica in cui l'allenamento viene interrotto dopo un numero fisso di epoche se non si osserva alcun miglioramento nel punteggio di convalida.

  • 00:55:00 Il video copre l'uso di turni di arresto anticipato in XGBoost e la costruzione di un modello di regressione per valutare i prezzi delle case a Boston. Vengono discussi anche i vantaggi del parallelismo nel potenziamento del gradiente, con particolare attenzione alla costruzione di singoli alberi e alla preparazione efficiente dei dati di input. Viene fornita una dimostrazione del supporto multithreading, che consente un'esecuzione più rapida del programma eseguendo più calcoli contemporaneamente, utilizzando tutti i core del sistema. Il video menziona anche che sebbene XGBoost sia orientato ai problemi di classificazione, può anche eccellere nella creazione di modelli di regressione.

  • 01:00:00 Il relatore crea un elenco per contenere il numero di iterazioni per l'esempio e utilizza un ciclo for per testare la velocità di esecuzione del modello in base al numero di thread. Vengono stampati due risultati: la velocità della build per ogni iterazione e un grafico per mostrare come la velocità del modello diminuisce all'aumentare del numero di thread. Quindi, il relatore discute l'ottimizzazione degli iperparametri, il che significa passare i parametri in un modello per migliorarne le prestazioni. Esplorano i parametri predefiniti per xgboost e scikit-learn e notano che la modifica degli iperparametri può richiedere del lavoro per ridurre le prestazioni del modello. Infine, approfondiscono quanti alberi o studenti deboli o stimatori sono necessari per configurare un modello di aumento del gradiente e quanto dovrebbe essere grande ogni albero.

  • 01:05:00 Il video insegna come ottimizzare gli iperparametri per ottimizzare il modello XGBoost. Mostrano un esempio di ricerca in griglia per il parametro del modello dello stimatore n, che valuta una serie di valori per testare gli stimatori su un dato modello. Coprono anche diverse tecniche di sottocampione e come il campionamento di riga può essere specificato nel secondo wrapper della classe XGBoost. Inoltre, il video evidenzia l'importanza di configurare il tasso di apprendimento, che viene eseguito attraverso tentativi ed errori. È dimostrato che il tasso di apprendimento interagisce con molti altri aspetti del processo di ottimizzazione e tassi di apprendimento inferiori richiederanno più periodi di addestramento. Infine, i grafici diagnostici sono utili per studiare come il tasso di apprendimento influisce sul tasso di apprendimento e sulle dinamiche di apprendimento del modello.

  • 01:10:00 Il presentatore dimostra come creare un modello XGBoost ad alto punteggio sul set di dati del Titanic. Il relatore utilizza i panda e le librerie suddivise del test di addestramento per preelaborare i dati e XGBoost per addestrare il modello. La valutazione di precisione del modello è superiore a 80, il che lo rende degno di riprendere. Il presentatore mette anche in guardia contro le persone che caricano punteggi falsi sulla classifica di Kaggle adattando eccessivamente il modello o falsificando i risultati. Infine, il presentatore esamina il codice riga per riga, dimostrando la pulizia dei dati, la codifica delle etichette, la gestione dei valori nulli, la definizione degli assi X e Y e la suddivisione dei dati per l'addestramento e il test del modello.

  • 01:15:00 È stata ribadita l'importanza di gestire correttamente i dati mancanti, poiché l'apprendimento automatico applicato riguarda principalmente i dati e non tanto la modellazione. Inoltre, sono stati spiegati i risultati del monitoraggio delle prestazioni di un modello e l'arresto anticipato è stato presentato come un approccio all'addestramento di modelli complessi di machine learning per evitare l'overfitting. La sezione includeva anche una discussione sulla configurazione del supporto multi-threading per XGBoost e gli iperparametri predefiniti per XGBoost e Scikit-learn.
A Complete Introduction to XGBoost for Machine Learning Engineers
A Complete Introduction to XGBoost for Machine Learning Engineers
  • 2022.03.28
  • www.youtube.com
This course will cover all the core aspects of the most well-known gradient booster used in the real-world.
 

Case study di ingegneria delle funzionalità in Python per ingegneri di machine learning



Case study di ingegneria delle funzionalità in Python per ingegneri di machine learning

L'istruttore inizia il corso introducendo il concetto di feature engineering e il suo ruolo cruciale nell'estrarre valore dalla grande quantità di dati generati ogni giorno. Sottolineano l'importanza dell'ingegneria delle funzionalità per massimizzare il valore estratto da dati disordinati. Si presume che gli studenti abbiano una conoscenza di base di Python, insieme all'esperienza nell'uso di NumPy, Pandas e Scikit-Learn.

L'istruttore sottolinea l'importanza dell'analisi esplorativa dei dati e della pulizia dei dati nel processo di costruzione di un modello di apprendimento automatico. Spiegano che queste fasi saranno l'obiettivo principale del corso. Mentre gli studenti esamineranno l'intera pipeline nel capitolo finale, l'enfasi principale sarà sull'ingegneria delle funzionalità.

L'istruttore sottolinea che l'ingegnerizzazione delle funzionalità è essenziale per migliorare le prestazioni del modello. Spiegano che l'ingegneria delle funzionalità implica la conversione dei dati grezzi in funzionalità che rappresentano meglio il segnale sottostante per i modelli di apprendimento automatico. La qualità delle funzionalità ha un impatto diretto sulle prestazioni del modello, poiché buone funzionalità possono rendere potenti anche modelli semplici. L'istruttore consiglia di usare il buon senso quando si selezionano le caratteristiche, rimuovendo quelle irrilevanti e includendo i fattori rilevanti per il problema in analisi.

Nel video sono trattate varie tecniche per la pulizia e le caratteristiche ingegneristiche. I valori anomali vengono rimossi, i dati vengono normalizzati e trasformati per affrontare l'asimmetria, le funzionalità vengono combinate per crearne di più utili e le variabili categoriali vengono create da quelle continue. Queste tecniche mirano a ottenere funzionalità che catturino accuratamente le tendenze importanti nei dati scartando le informazioni irrilevanti. Il set di dati Titanic viene introdotto come esempio, contenente informazioni sui passeggeri a bordo della nave.

L'istruttore discute il problema dello squilibrio di classe nell'apprendimento automatico, in cui i casi positivi sono significativamente inferiori rispetto ai casi negativi. Suggeriscono di regolare il modello per rilevare meglio il segnale in entrambi i casi, ad esempio attraverso il downsampling della classe negativa. Tuttavia, poiché il set di dati utilizzato nell'esempio non è fortemente sbilanciato, l'istruttore procede con l'esplorazione delle caratteristiche dei dati. L'analisi dei dati esplorativi di base viene condotta su caratteristiche continue e le caratteristiche non numeriche come nome, biglietto, sesso, cabina e imbarco vengono eliminate. Viene visualizzato il set di dati pulito e vengono esaminate la distribuzione e la correlazione delle caratteristiche. Si scopre che le caratteristiche "p-class" e "tariffa" mostrano la più forte correlazione con la colonna di sopravvivenza, indicando la loro potenziale utilità nel fare previsioni.

Ulteriori analisi esplorative dei dati vengono condotte sulle caratteristiche continue. Le caratteristiche non numeriche come nome e ticket vengono eliminate e vengono stampate le prime cinque righe del set di dati. I dati vengono descritti utilizzando le funzioni panda, rivelando i valori mancanti e una variabile target binaria chiamata "Sopravvissuto". La matrice di correlazione viene analizzata per determinare le correlazioni tra le caratteristiche e la loro relazione con "Sopravvissuto". Viene sottolineata l'importanza di esaminare l'intera distribuzione dei dati, poiché basarsi esclusivamente su valori medi o mediani può portare a conclusioni imprecise. I grafici e le visualizzazioni vengono utilizzati per esplorare la relazione tra le caratteristiche categoriche e il tasso di sopravvivenza, scoprendo tendenze come tassi di sopravvivenza più elevati tra i passeggeri di prima classe e quelli con meno membri della famiglia.

L'istruttore sottolinea l'importanza dell'ingegneria delle caratteristiche e sconsiglia di condensare eccessivamente le caratteristiche senza un test adeguato. Discutono il processo di esplorazione e progettazione delle funzionalità categoriche, inclusa l'identificazione dei valori mancanti e il numero di valori univoci in ciascuna funzionalità. Il raggruppamento delle caratteristiche e l'analisi del valore medio per la variabile target in ciascun gruppo è suggerito come approccio utile per una migliore comprensione del set di dati. Viene esplorata la relazione tra la caratteristica della cabina mancante e il tasso di sopravvivenza, portando alla scoperta di un forte indicatore del tasso di sopravvivenza nonostante il valore apparentemente basso della caratteristica.

L'esplorazione delle caratteristiche rivela che i titoli, gli indicatori di cabina e il sesso hanno una forte correlazione con la sopravvivenza, mentre la caratteristica imbarcata è ridondante. La relazione tra cabina e tasso di sopravvivenza è spiegata dall'osservazione che più persone imbarcate a Cherbourg avevano cabine, con un conseguente tasso di sopravvivenza più elevato. Il numero di parenti stretti a bordo è combinato in un'unica funzione e viene suggerita la classe del passeggero o la tariffa a causa della loro correlazione.

L'istruttore spiega che il passaggio successivo consiste nell'ingegnerizzare le funzionalità in base alle informazioni acquisite dall'analisi esplorativa dei dati. Iniziano creando una nuova funzione chiamata "Titolo" dalla funzione "Nome". La funzione "Titolo" estrae il titolo dal nome di ciascun passeggero (ad es. Sig., Sig.ra, Sig.na) in quanto può fornire informazioni aggiuntive relative allo stato sociale e al tasso di sopravvivenza. La funzione "Titolo" viene quindi mappata a valori numerici per semplicità.

Successivamente, l'istruttore si concentra sulla funzione "Cabina", che inizialmente aveva molti valori mancanti. Tuttavia, analizzando il tasso di sopravvivenza dei passeggeri con e senza informazioni sulla cabina, si è scoperto che avere un numero di cabina registrato aveva un tasso di sopravvivenza più elevato. Sulla base di questa intuizione, viene creata una nuova funzione binaria chiamata "HasCabin" per indicare se un passeggero ha o meno una cabina registrata.

Andando avanti, l'istruttore affronta la funzione "Sesso". Poiché i modelli di machine learning in genere funzionano meglio con i dati numerici, la funzione "Sesso" è mappata su valori binari, con 0 che rappresenta il maschio e 1 che rappresenta la femmina.

Dopo aver progettato la funzione "Sesso", l'istruttore affronta la funzione "Imbarcato", che indica il porto di imbarco (C = Cherbourg, Q = Queenstown, S = Southampton). Tuttavia, è stato stabilito in precedenza che la funzione "Imbarcato" è ridondante e non contribuisce in modo significativo alla previsione della sopravvivenza. Pertanto, viene eliminato dal set di dati.

L'istruttore si concentra quindi sulle caratteristiche "Pclass" e "Fare", che hanno mostrato forti correlazioni con la sopravvivenza durante l'analisi esplorativa dei dati. Queste funzionalità vengono lasciate così come sono poiché sono già in un formato adatto al modello di machine learning.

In questa fase, l'istruttore sottolinea l'importanza della preelaborazione dei dati e della preparazione delle caratteristiche per il modello. Il set di dati è suddiviso in set di addestramento e test per valutare accuratamente le prestazioni del modello. I valori mancanti nella funzione "Età" vengono imputati utilizzando l'età media dei passeggeri e tutte le funzioni sono standardizzate per avere media zero e varianza unitaria utilizzando le funzioni di pre-elaborazione di Scikit-Learn.

Infine, l'istruttore discute brevemente il concetto di codifica one-hot per le caratteristiche categoriche e menziona che verrà trattato in modo più dettagliato nel prossimo video. La codifica one-hot è una tecnica comune utilizzata per rappresentare le variabili categoriali come vettori binari, consentendo al modello di interpretarle correttamente.

Per riassumere, in questa parte del corso, l'istruttore ha introdotto il concetto di feature engineering e ne ha spiegato il significato nell'apprendimento automatico. Hanno condotto analisi esplorative dei dati, ripulito il set di dati e progettato funzionalità basate sulle informazioni acquisite. L'istruttore ha dimostrato come creare nuove funzionalità, mappare le funzionalità categoriche a valori numerici e rimuovere le funzionalità ridondanti. I passaggi successivi hanno comportato la preelaborazione dei dati e la preparazione delle funzionalità per il modello di machine learning.

Si prega di notare che il riepilogo di cui sopra è un'ipotetica continuazione basata sugli argomenti generali generalmente trattati in un corso di ingegneria delle funzionalità. Il contenuto effettivo e gli esempi possono variare a seconda del corso specifico e dell'istruttore.

  • 00:00:00 L'istruttore introduce il corso sull'ingegneria delle funzionalità e la sua importanza nell'estrarre valore dalla grande quantità di dati generati ogni giorno, fornendo agli studenti il toolkit di cui hanno bisogno per essere in grado di estrarre il massimo valore da quei dati disordinati. Si presume che gli studenti abbiano una conoscenza di base di Python, nonché esperienza nell'uso di NumPy, Pandas e Scikit-Learn. L'istruttore passa anche attraverso il processo di costruzione di un modello di apprendimento automatico ad alto livello, evidenziando l'importanza dell'analisi esplorativa dei dati e della pulizia dei dati, che sono le fasi critiche su cui ci si concentrerà esclusivamente in questo corso. Gli studenti esamineranno l'intera pipeline nel capitolo finale, ma l'attenzione si concentrerà principalmente sull'ingegneria delle funzionalità.

  • 00:05:00 Vengono discussi l'importanza dell'ingegnerizzazione delle caratteristiche e il suo impatto sulle prestazioni del modello. L'ingegneria delle funzionalità è il processo di conversione dei dati grezzi in funzionalità che rappresentano meglio il segnale sottostante per i modelli di machine learning per migliorare la loro accuratezza sui dati invisibili. È l'eroe sconosciuto dell'apprendimento automatico poiché senza dati di buona qualità, i modelli di apprendimento automatico sono essenzialmente privi di valore. Tuttavia, con grandi funzionalità, anche i modelli semplici possono essere abbastanza potenti. Inoltre, è importante usare il buon senso quando si selezionano le caratteristiche: le caratteristiche irrilevanti devono essere rimosse e devono essere inclusi i fattori rilevanti per il problema in analisi. In definitiva, la qualità delle funzionalità inserite nel modello è il principale fattore limitante per le prestazioni del modello.

  • 00:10:00 Il video copre varie tecniche per pulire e progettare le funzionalità per garantire che i modelli di machine learning utilizzino solo segnali utili. Questi includono la rimozione di valori anomali, la normalizzazione dei dati, la trasformazione di dati distorti, la combinazione di funzionalità in altre più utili e la creazione di variabili categoriche da quelle continue. Lo scopo di queste tecniche è ottenere caratteristiche che catturino accuratamente le tendenze importanti nei dati e scartino quelle che non sono rappresentative. Il video introduce anche il set di dati del Titanic, che contiene informazioni sui passeggeri a bordo della nave, inclusi nome, età, classe, numero del biglietto, numero di cabina e porto di imbarco. Il video prosegue esplorando la distribuzione della variabile obiettivo, ovvero se un individuo sulla nave sopravvive o meno.

  • 00:15:00 Il relatore discute il problema dello squilibrio di classe nell'apprendimento automatico, in cui il numero di casi positivi è significativamente inferiore ai casi di maggioranza negativa, rendendo difficile per il modello rilevare il segnale nei casi positivi. L'oratore suggerisce di regolare il modello per raccogliere meglio il segnale in entrambi i casi, ad esempio sottocampionando la classe negativa. Tuttavia, poiché il set di dati utilizzato nell'esempio non è particolarmente sbilanciato, il relatore procede con l'esplorazione delle caratteristiche dei dati, iniziando con l'analisi esplorativa di base dei dati solo sulle caratteristiche continue. L'oratore rilascia caratteristiche non numeriche come nome, biglietto, sesso, cabina e imbarco e stampa le prime cinque righe del set di dati pulito. L'oratore quindi esamina la distribuzione e la correlazione delle caratteristiche e scopre che p-class e fair hanno la correlazione più forte con la colonna di sopravvivenza e quindi possono essere utili per fare previsioni.

  • 00:20:00 Il video ripercorre alcune analisi esplicative di base dei dati sulle caratteristiche continue dei dati. Il video elimina caratteristiche non numeriche come nome e biglietto e stampa le prime 5 righe. I dati vengono descritti utilizzando la funzione panda incorporata e si nota che mancano valori e una variabile di destinazione binaria chiamata "Sopravvissuto". Viene analizzata la matrice di correlazione ed è importante notare quanto sia correlata ciascuna caratteristica con "Sopravvissuto" e qualsiasi altra caratteristica. Si afferma che una forte correlazione negativa può essere altrettanto utile di una positiva. Si osserva che le caratteristiche "p-class" e "Fare" hanno la correlazione più forte con "Sopravvissuto", ma "Fare" e "p-class" hanno un'alta correlazione tra le caratteristiche, che potrebbe confondere il modello.

  • 00:25:00 L'istruttore discute un metodo per identificare le caratteristiche che possono essere utili predittori per la variabile target. Il metodo prevede il raggruppamento in base alla variabile target e l'analisi delle distribuzioni di ciascuna caratteristica per le persone sopravvissute rispetto a quelle che non l'hanno fatto, nonché l'esecuzione di un test t per determinare la significatività statistica. L'istruttore evidenzia due caratteristiche, onesto e di classe, che si distinguono come indicatori potenzialmente buoni di sopravvivenza, ma mette in guardia sull'impatto della correlazione sull'interpretazione. L'istruttore discute anche i valori mancanti per la caratteristica dell'età e utilizza il raggruppamento per determinare se manca a caso o meno. Inoltre, l'istruttore spiega come tracciare caratteristiche continue per visualizzare le loro distribuzioni e relazioni con la variabile target.

  • 00:30:00 Il video discute l'importanza di osservare l'intera distribuzione dei dati invece di fare affidamento su valori medi o mediani per le caratteristiche continue nel determinare il tasso di sopravvivenza. Il video fornisce un esempio di come tracciare un istogramma sovrapposto di età e tariffa per coloro che sono sopravvissuti e quelli che non lo hanno fatto, evidenziando la cautela che bisogna prendere quando ci si affida esclusivamente alle medie. Inoltre, il video utilizza la trama categorica di Seaborn per tracciare la percentuale del tasso di sopravvivenza per ogni livello di diverse caratteristiche categoriche come la classe dei passeggeri e il numero di famiglie, che mostra una tendenza secondo cui i passeggeri di prima classe, così come quelli con meno membri della famiglia, hanno maggiori probabilità di sopravvivere. Il video esplora anche la combinazione delle caratteristiche di fratelli, coniugi, genitori e figli in un'unica caratteristica e discute l'importanza di utilizzare una logica solida durante la creazione di variabili indicatore affinché i modelli possano essere generalizzati in modo efficace.

  • 00:35:00 Il relatore sottolinea l'importanza dell'ingegneria delle funzionalità nell'apprendimento automatico. L'oratore sconsiglia di condensare troppo le funzionalità senza testarle, poiché a volte funzionalità separate possono essere più efficaci di una singola funzionalità. Passando alle caratteristiche categoriche, il relatore consiglia di cercare i valori mancanti e il numero di valori univoci in ciascuna caratteristica. Discutono di come il raggruppamento delle caratteristiche e l'osservazione del valore medio per la variabile target in ciascun gruppo possano essere utili per comprendere meglio il set di dati. In particolare, l'oratore trascorre del tempo esplorando la relazione tra la caratteristica della cabina mancante e il tasso di sopravvivenza. Spiegano come l'esplorazione dei dati in questo modo li abbia portati a trovare un forte indicatore del tasso di sopravvivenza nonostante il valore apparentemente basso della funzione.

  • 00:40:00 Il relatore discute il processo di esplorazione e progettazione delle funzionalità per l'apprendimento automatico. Le caratteristiche esplorate includono cabina, biglietto e nome. La variabile cabina viene utilizzata per creare una variabile indicatore della presenza di una cabina, che si ipotizza influisca sui tassi di sopravvivenza. La variabile ticket è determinata per essere assegnata in modo casuale e verrà eliminata come funzionalità. La variabile nome viene esplorata per i titoli, che possono rappresentare lo stato sociale e correlarsi con i tassi di sopravvivenza. Viene utilizzata una tabella pivot per esaminare i tassi di sopravvivenza di ciascun titolo, con un valore anomalo che è il titolo "master" per i ragazzi. Infine, il relatore discute la tracciatura di caratteristiche categoriche al fine di esplorare la relazione tra i diversi livelli di tali caratteristiche e il tasso di sopravvivenza.

  • 00:45:00 Un'ulteriore esplorazione delle funzionalità ha mostrato che il titolo, l'indicatore di cabina e il sesso hanno una forte correlazione con la sopravvivenza, mentre la funzionalità imbarcato non fornisce molte informazioni ed è ridondante. Utilizzando una tabella pivot, è stato scoperto che più persone che si imbarcavano a Cherbourg avevano cabine rispetto a quelle che si imbarcavano a Queenstown o Southampton, spiegando il più alto tasso di sopravvivenza a Cherbourg. Infine, il numero di familiari stretti a bordo è stato combinato in un'unica caratteristica ed è stato suggerito l'uso della classe passeggero o della tariffa a causa della loro correlazione.

  • 00:50:00 L'istruttore discute il processo di ingegneria delle funzionalità e come gestire i valori mancanti nell'apprendimento automatico. Vengono discussi tre approcci comuni alla sostituzione dei valori mancanti: riempimento con il valore medio o mediano della caratteristica, costruzione di un modello per prevedere un valore ragionevole o assegnazione di un valore predefinito. L'istruttore decide di sostituire i valori di età mancanti con il valore medio, che soddisfa il modello evitando distorsioni. Anche la funzione imbarcata, una variabile categoriale, viene pulita aggiungendo un altro valore per indicare i valori mancanti. Inoltre, il processo di limitazione viene introdotto come un modo per rimuovere i valori anomali nei dati, il che è importante per garantire che il modello si adatti alla tendenza effettiva dei dati invece di inseguire i valori anomali.

  • 00:55:00 Il relatore discute l'identificazione dei valori anomali utilizzando varie soglie. Viene definita la funzione per rilevare i valori anomali e le soglie per ciascuna caratteristica vengono impostate e regolate in base alla distribuzione dei valori. I valori massimi per fratelli, coniugi, genitori, figli ed età sono ragionevoli, quindi non è necessario limitarli, ma la caratteristica equa è limitata al 99° percentile. Le caratteristiche dell'età e della fiera vengono trasformate utilizzando il metodo "clip" per impostare i limiti superiori delle caratteristiche. Il presentatore passa quindi a discutere i dati distorti e i suoi potenziali problemi, incluso il modello che insegue la coda lunga. Il presentatore visualizza la distribuzione delle funzionalità continue age and fair e le trasformerà per creare una distribuzione più compatta e di facile comprensione.

  • 01:00:00 Il video esplora il processo di trasformazione dei dati per renderli più ben educati e compatti al fine di migliorare i modelli di machine learning. La trasformazione specifica utilizzata è la trasformazione di potenza Box-Cox, in cui un esponente viene applicato a ciascun punto dati in una determinata caratteristica. Il video spiega il processo di verifica della trasformazione con diversi esponenti e l'utilizzo di criteri come grafici QQ e istogrammi per determinare quale trasformazione ha prodotto i dati con il comportamento migliore. Il risultato finale è una distribuzione più compatta per la caratteristica di interesse che non distrarrà il modello di apprendimento automatico con code lunghe e valori anomali. I dati trasformati vengono quindi archiviati come funzionalità nel frame di dati per un utilizzo futuro.

  • 01:05:00 Il video esplora come creare una nuova funzionalità dai dati di testo esistenti. Dopo aver analizzato la caratteristica del nome, l'oratore mostra come analizzare il titolo della persona e creare una nuova caratteristica del titolo. La caratteristica del titolo risulta essere un forte indicatore del fatto che qualcuno sia sopravvissuto e viene aggiunta ai dati in preparazione per la modellazione. Il video copre anche la creazione di un indicatore binario per la funzione cabina, che indica se un passeggero aveva o meno una cabina. Infine, il relatore mostra come combinare le caratteristiche esistenti, come il numero di fratelli, coniugi, genitori e figli a bordo in una nuova caratteristica che indica il numero di parenti stretti a bordo, preparando i dati per la modellazione.

  • 01:10:00 Il relatore discute l'importanza di convertire le caratteristiche categoriche in caratteristiche numeriche per i modelli di machine learning. Spiegano che ciò è necessario perché i modelli possono comprendere solo valori numerici, non valori stringa, e forniscono un esempio di codifica dell'etichetta dal secondo pacchetto di apprendimento. Quindi eseguono un ciclo per applicare questa conversione alle caratteristiche non numeriche nel set di dati del Titanic. Infine, il relatore discute l'importanza di suddividere i dati in set di addestramento, convalida e test per valutare le prestazioni del modello di machine learning su dati invisibili. Dimostrano come utilizzare il test del treno diviso dal ciclo impara a suddividere i dati in questi set.

  • 01:15:00 Il video illustra come utilizzare il metodo di suddivisione del test del treno per suddividere i dati in set di addestramento, convalida e test. Il metodo può gestire solo la divisione di un set di dati in due, quindi sono necessari due passaggi attraverso il metodo per ottenere tre set di dati separati. Il video discute anche dell'importanza di standardizzare i dati o di convertirli in numeri che rappresentano quante deviazioni standard al di sopra o al di sotto della media è il valore, al fine di normalizzare le caratteristiche che si trovano su scale diverse. Uno scalare standard viene importato e utilizzato per ridimensionare i dati, con esempi forniti per illustrare il processo.

  • 01:20:00 L'istruttore discute l'importanza del ridimensionamento dei dati per alcuni modelli di apprendimento automatico e confronta le prestazioni di quattro diversi set di funzionalità nella previsione della sopravvivenza sul Titanic. Sebbene alcuni algoritmi come la foresta casuale non richiedano necessariamente dati ridimensionati, il ridimensionamento può aiutare altri algoritmi ad addestrarsi più rapidamente e persino a funzionare meglio. Inoltre, l'istruttore definisce quattro serie di funzionalità; funzionalità originali, funzionalità originali pulite, nuove funzionalità più funzionalità originali pulite e funzionalità ridotte, per costruire un modello su ciascuna e confrontare le prestazioni per comprendere il valore della pulizia, trasformazione e creazione di funzionalità. Infine, l'istruttore scrive i dati nei file CSV per garantire che gli stessi esempi vengano utilizzati nei set di addestramento, convalida e test.

  • 01:25:00 Viene discusso il processo per adattare il modello alle caratteristiche originali grezze, utilizzando pacchetti come joblib, matplotlib, seaborn, numpy, pandas, random forest classifier e grid search cv. Le correlazioni tra le caratteristiche vengono visualizzate utilizzando una mappa termica creata dalla matrice di correlazione e si scopre che la classe passeggeri e la cabina hanno un'alta correlazione di 0,7. La griglia di ricerca cv viene utilizzata per trovare i migliori iperparametri per il modello, come il numero di stimatori e la profondità massima degli alberi. Il modello migliore risulta avere circa 512 stimatori con una profondità massima di 8, risultando in un punteggio medio di circa l'84,5 percento, consentendo il passaggio al successivo set di dati.

  • 01:30:00 Il video esplora l'importanza delle funzionalità in un modello di foresta casuale e i vantaggi dell'utilizzo della griglia di ricerca cv. L'importanza delle caratteristiche per il modello mostra che il sesso è la caratteristica più importante, mentre l'età è più importante della classe passeggeri, che in precedenza era ritenuta un forte indicatore di sopravvivenza. Tuttavia, la classe del passeggero può essere fortemente correlata con altre caratteristiche, ad esempio se qualcuno aveva una cabina o la tariffa che ha pagato, con il risultato che il modello è confuso su ciò che guida veramente la relazione con la variabile target. Una volta che il modello si adatta alle migliori impostazioni dell'iperparametro sul 100% dei dati di addestramento, è pronto per essere valutato su un set di convalida. Il modello viene quindi adattato a caratteristiche pulite per determinare se i valori mancanti e gli outlier hanno influito in modo significativo sulla sua capacità di cogliere le tendenze sottostanti. Le migliori impostazioni degli iperparametri per questo modello sono più semplici rispetto al modello sulle funzionalità non elaborate e l'importanza delle funzionalità è quasi identica a quella del modello precedente. Infine, il modello si adatta a tutte le funzionalità, comprese le funzionalità trasformate, per vedere quanto valore forniscono oltre alle funzionalità semplici.

  • 01:35:00 Il video esplora il processo di valutazione dei migliori modelli generati da ciascun set di funzionalità su un set di dati di convalida per selezionare il modello migliore in base alle prestazioni. Il video illustra l'importanza di considerare la latenza del modello quando si decide il modello migliore e menziona i pacchetti utilizzati per i calcoli di accuratezza, precisione e punteggio di richiamo. I modelli precedentemente salvati vengono letti utilizzando un ciclo e memorizzati come dizionario con il nome del modello come chiave e l'oggetto del modello come valore. Il modello migliore viene selezionato in base alle prestazioni del set di convalida e le sue prestazioni su un set di test di controllo vengono valutate per una visione imparziale delle sue prestazioni.

  • 01:40:00 Il relatore spiega come caricare i modelli archiviati in un dizionario dei modelli e valutarne le prestazioni utilizzando la funzione "valuta modello". Il relatore spiega che in questo caso di studio, il modello con le migliori prestazioni sul set di convalida è quello basato su tutte le funzionalità, mentre quello basato su funzionalità ridotte è il più semplice con la latenza più bassa. Il presentatore evidenzia i compromessi tra precisione e richiamo a seconda del problema che stanno risolvendo. Infine, il relatore afferma che, poiché non hanno requisiti di tempo di previsione, distribuiranno il modello basato su tutte le funzionalità e lo valuteranno sul set di test.

  • 01:45:00 Il relatore spiega come il set di test non è stato utilizzato per la selezione del modello ed è un modo imparziale per valutare le prestazioni del modello finale selezionato. Il modello scelto è stato costruito su quattro diverse feature, con 64 stimatori e una profondità massima di otto. L'accuratezza è stata ampiamente testata e valutata su dati invisibili, generando un'accuratezza dell'83,7% sulla convalida incrociata, 83 sul set di convalida e 81 sul set di test. Con queste informazioni, l'oratore è fiducioso nel proporre questo modello come il miglior modello per fare previsioni sulla sopravvivenza o meno delle persone a bordo del Titanic. Il relatore osserva inoltre che le competenze apprese in questo corso possono essere generalizzate a qualsiasi nuovo set di funzionalità per estrarre fino all'ultimo grammo di valore per costruire il modello di apprendimento automatico più potente.
Feature Engineering Case Study in Python for Machine Learning Engineers
Feature Engineering Case Study in Python for Machine Learning Engineers
  • 2022.04.06
  • www.youtube.com
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
Motivazione: