top of page

Risultati Ricerca Intelligenza Artificiale Italia

331 risultati trovati per "ChatGPT business"

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

    Il primo è la tua conoscenza del business e del settore stesso, nonché la tua comprensione del modello di business. Ti consigliamo di ricercare il modello di business e porre buone domande al tuo reclutatore e iniziare

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

    Introduzione a AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading Negli articoli precedenti : Machine Learning per il trading Come creare un modello ARIMA in Python per le previsioni di Trading abbiamo analizzato l’algoritmo ARIMA per elaborare una previsione dell’andamento del CBOE Volatility Index. Come abbiamo visto il VIX ha delle caratteristiche intrinseche di stazionarietà che permettono l’utilizzo delle Serie Temporali direttamente sui valori dell’indice. In questo articolo invece andremo ad analizzare l’indice S&P500 con 2 nuovi algoritmi: AUTOARIMA e ARCH. Il primo è una semplificazione del metodo ARIMA già visto mentre il secondo ci aiuta a studiare, anzichè il trend (e quindi i valori giornalieri dell’indice S&P500), la sua “volatilità” (ovvero la variazione dei valori giorno dopo). Per la trattazione dell’argomento si farà uso del software di programmazione Python in ambiente Jupiter Notebook. PREMESSA su AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading La programmazione di codici di machine learning prevede oltre una profonda conoscenza dei linguaggi di programmazione anche una notevole comprensione di modelli statistici e matematici. Vista la complessità degli argomenti e’ bene che il lettore sia consapevole dell’impossibilità di trovare spiegazioni esaurienti su tutta la teoria alla base della trattazione. Rinunciando a questo tuttavia siamo in grado di presentare le potenzialità dell’argomento in poche pagine di testo. Tanto riteniamo sia comunque sufficiente a stimolare la curiosità di coloro che da questo piccolo spunto possano partire e approcciare i mercati con altre metodologie quantitative. Modello AUTOARIMA per le previsioni di Trading La previsione delle serie temporali è un argomento caldo che ha molte applicazioni possibili, come la previsione del tempo, la pianificazione aziendale, l'allocazione delle risorse e molte altre. Come alternativa al metodo ARIMA visto nel numero precedente, il metodo AUTOARIMA ci permette di determinare automaticamente la migliore combinazione dei valori p, q e d necessari alla costruzione del modello. Seguendo il solito principio di costruzione di un codice di machine learning , partiamo con l’importazione delle librerie di gestione tabelle e grafica import pandas as pd import numpy as np import matplotlib.pyplot as plt STEP 1 – IMPORTAZIONE E LETTURA DATI PER LE PREVISIONI DI TRADING I sei steps di un codice ML: 1. Importazione e lettura dati 2. Elaborazione, trasformazione e organizzazione dati 3. Definizione del modello da utilizzare 4. Addestramento del modello 5. Valutazione dell’affidabilità del modello 6. Previsione Procediamo con l’impostazione delle funzioni che ci permettono di leggere I valori degi ultimi due anni dell’ S&P500, quelli che vogliamo analizzare e utilizzare per l’addestramento del modello e le future previsioni: pip install yfinance data = yf.download(tickers='^GSPC', period='2y', interval='1d') STEP 2 – ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI In questa fase trasformiamo I dati in maniera tale che gli stessi possano essere gestiti dall’algoritmo AUTORIMA. Per esempio, eliminiamo le colonne che non ci servono, sostituiamo i valori nulli dei weekend e dei giorni di festa con i valori dell’ultimo giorno precedente in cui il mercato era aperto. cols_to_keep = ["Close"] data = data.loc[:,cols_to_keep] closingdata = data closingdata["week"] = closingdata.index.isocalendar().week idx = pd.date_range(closingdata.index[0], closingdata.index[-1]) completedata =closingdata.reindex(idx, fill_value= float("NaN")) completedata = completedata.fillna(method='ffill') completedata L’ultima riga di codice ci darà la possibilità d visualizzare la nuova struttura dati STEP 3 – DEFINIZIONE DEL MODELLO PER LE PREVISIONI DI TRADING Importiamo adesso la libreria che ci permetterà di implementare l’algoritmo AUTOARIMA ed eseguire le operazioni per esso necessarie con le seguenti istruzioni !pip install pmdarima from sklearn.metrics import mean_squared_error import pmdarima as pm from pmdarima.arima import auto_arima STEP 4 – ADDESTRAMENTO DEL MODELLO PER LE PREVISIONI DI TRADING Per l’addestramento del modello dobbiamo innanzitutto definire quelli che chiamiamo Data Test Set (I valori che facciamo finta di non conoscere) e Data Train Set (I valori che utilizziamo per addestrare il modello) , tra loro complementari, rispettivamente variabili dipendenti e variabili indipendenti, ricavati dalla separazione della totalità dei dati ottenuti alla fine dello Step 1: number_of_weeks_testing = 4 testdata = completedata.iloc[-number_of_weeks_testing*7:] traindata = completedata.iloc[:-number_of_weeks_testing*7] dove testdata partono da 29.01.2020 e arrivano fino a 31.12.2021 e traindata partono da 01.01.2022 fino al 28.01.2022. e procediamo adesso con l’addestramento inserendo il comando: arima = auto_arima(traindata["Close"], error_action='ignore', trace=True, suppress_warnings=True, maxiter=30, seasonal=True, m=7 ) A questo punto AUTOARIMA farà tutte le iterazioni indicate (fino ad un massimo di 30) e determinerà la migliore combinazione dei parametri p,q e d , quella per cui il valore AIC (Akaike information criterion) risulti minimo . STEP 5 – VALUTAZIONE AFFIDABILITA’ DEL MODELLO Ora andiamo a far girare le line di codice che ci permettono di ottenere I test data e capire quanto essi si discostino dai valori reali. Calcoliamo pertanto la bontà del modello andando a calcolare lo scarto quadratico medio tra quello che il modello ha previsto (test data) e quali sono effettvamente i dati storici performance_collector=[] for w in range(number_of_weeks_testing): y_pred = pd.Series(arima.predict(7)) actual = testdata.iloc[w:w+7]["Close"] performance_collector.append(mean_squared_error(actual,y_pred, squared=False)) print(performance_collector) print(np.mean(performance_collector)) lo scarto quadratic medio calcolato è 69.01 (circa l’1,5%). Se vogliamo anche avere una rappresentazione grafica di quanto il modello e’ affidabile con il blocco seguente plt.title("S&P500 Predicted data vs Historical data") plt.plot(closingdata['Close'],label='Historical Data') plt.plot(testdata['Close'],label='Prediction on Test Data') plt.xlabel ('Date') plt.ylabel ('Close') plt.legend() plt.show possiamo stampare e confrontare i valori testdata (Predicted Data) con dati storici fino al 28.01.2022 (Historical Data) con la funzione di creazione grafico Questo ci serve per capire se e in quale misura il modello che abbiamo costruito puo’ fare buone previsioni. Se il comportamento della previsione (Predicted Data) ricalca bene il dato storico (Historical Data) il modello puo’ essere affidabile anche per previsioni future. E’ chiaro che se già sappiamo che lo scarto quadratico medio della previsione e’ dell’1,5% il modello non é ancora ottimizzato per cui dovremmo procedere con quella tecnica che si chiama parametric tuning (cambiamo gli orizzonti temporali, il rapporto tra traindata e testdata, il periodo di osservazione o il numero massimo di iterazioni). STEP 6 - PREVISIONE In ogni caso, avendo costruito il modello ed avendo appurato la sua precisione, se accettabile, procediamo con la previsione futura. Per fare questo facciamo girare il modello, non piu’ sui traindata (che arrivano fino al 31.12.2021) ma su tutti i dati (fino al 28.01.2021) indicando come orizzonte di previsione 7 giorni fulldata=pd.concat([traindata,testdata],axis=0) arima = auto_arima(fulldata["Close"], error_action='ignore', trace=True, suppress_warnings=True, maxiter=30, seasonal=True, m=7) e determiniamo il vettore previsionale con il comando futureforecast=arima.predict(7) futureforecast che vediamo qui sotto Operando alcune trasformazioni e utilizzando le funzioni di plotting plt.title("S&P500 PREDICTION FOR THE NEXT 7 DAYS WITH AUTOARIMA MODEL") plt.xlabel ('Date') plt.ylabel ('Close Price USD ($)') plt.plot(pastandforecast['Close'],label='Historical Data') plt.plot(pastandforecast['Forecasted_Close'],label='AUTOARIMA forecast') plt.legend() plt.show Modello ARCH per le previsioni di Trading La logica dietro una previsione fatta sulla base di una serie temporale é quella per cui il valore da prevedere é uguale all’ultimo valore disponibile. In pratica il panettiere che voglia lanciare la produzione di pane per domani puo’ basarsi sulla vendita di oggi. Questa é l’idea di base di un modello di autoregressione di livello 1 (indicata anche con AR 1). A meno di un certo errore la nostra previsione sarà cosi determinata. Banalmente se noi conoscessimo questo errore di prevsione a priori saremo in grado di fare una previsione con piena certezza. Nel momento in cui aggiungiamo un termine che tiene in considerazione anche le vendite di pane del giorno precedente (di ieri), possiamo dire che il valore delle vendite di ieri, piu’ l’errore di previsione di ieri (che darebbe la previsione di oggi) piu’ l’errore di oggi, darebbe la previsione di domani. Con questo modello passiamo da un semplice modello AR ad un modello ARMA (auto regressive moving average). Quello che chiamiamo ARCH (Autoregressive Conditional Heteroskedasticity) e’ invece un modello che lavora sulla volatilità ovvero sulla differenza del valore di oggi e il valore di ieri. Il modello suggerirebbe che la volatilità di oggi e’ un indicatore della volatilità di domani e cioe’ che momenti a bassa volatilità sono seguiti da bassa volatilità e viceversa. Il problema dell’ARCH model è che esso puo’ avere spesso delle oscillazioni di volatilità che danno al modello un comportamento a tratti esplosivo. Per ovviare a questo problema, aggiugiamo il parametro della volatilità sul giorno precedente, proprio come lo facevamo sul modello AR per ottenere ARMA. L’inclusione della volatilità di ieri mi permette di smussare i comportamenti esplosivi del modello che si basano sul solo cambio di volatilità di un solo giorno (volatilità di oggi per domani) 4 . Dopo questa breve introduzione possiamo sviluppare un codice Python che ci permetta di risolvere il nostro problema, seguendo gli ormai noti 6 steps di programmazione. STEP 1-IMPORTAZIONE E LETTURA DATI Assumiamo di aver importato tutte le generice librerie (numpy, pandas, matplot) come già fatto nell’esempio precedente e delle funzioni di lettura dati (incluso yfinance e yf) per I valori di S&P500 negli ultimi due anni . STEP 2-ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI A questo punto poiché vogliamo studiare e prevedere la volatilità del S&P500 lanciamo un operazione returns = 100 * SP500.Close.pct_change().dropna() plt.figure(figsize=(10,4)) plt.title('S&P500 Returns') plt.ylabel('% Return') plt.xlabel ('Date',alpha=1) plt.plot(returns) che invece di darci i valori assoluti giornalieri ci restituisce le variazioni percentuali in forma numerica e grafica STEP 3 – DEFINIZIONE DEL MODELLO ARCH PER LE PREVISIONI DI TRADING Importiamo la libreria che ci permetterà di implementare il metodo ARCH pip install arch e le funzioni di Partial Autocorrelation e Autocorrelation che ci danno una prima indicazione dei valori di p e q da utilizzare per l’addestramento del modello: from arch import arch_model from statsmodels.graphics.tsaplots import plot_acf, plot_pacf pacf = plot_pacf(returns**2, lags=40,color='g') acf = plot_acf(returns**2, lags=40,color='g') dal grafico qui sotto possiamo cominciare a provare a calcolare la bontà del modello con varie combinazioni di p e q. STEP 4 – ADDESTRAMENTO DEL MODELLO Dopo vari tentativi per addestrare il modello scegliamo di procedere con il valori di p=2 e q=2. model = arch_model(returns, p=2, q=2) model_fit = model.fit() A questo punto creiamo il test e train data set con la seguente serie di linee di codice : rolling_predictions = [] test_size = 30*12 for i in range(test_size): train = returns[:-(test_size-i)] model = arch_model(train, p=2, q=2) model_fit = model.fit(disp='off') pred = model_fit.forecast(horizon=1) rolling_predictions.append(np.sqrt(pred.variance.values[-1,:][0])) STEP 5 – VALUTAZIONE DELL’AFFIDABILITA’ DEL MODELLO ARCH Passiamo alla valutazione grafica che otteniamo con plt.figure(figsize=(10,4)) true = plt.plot(returns[-30*12:]) preds = plt.plot(rolling_predictions) plt.title('S&P500 Volatility Prediction - Rolling Forecast') plt.legend(['True Returns', 'Predicted Volatility') Con questi valori riusciamo ad ottenere un modello che pur non replicando perfettamente i valori reali riesce a bene identificare i suoi picchi STEP 6 – PREVISIONE A questo punto e con questo modello, lanciamo la previsione di 7 giorni pred = model_fit.forecast(horizon=8) future_dates = [returns.index[-1] + timedelta(days=i) for i in range(1,9)] pred = pd.Series(np.sqrt(pred.variance.values[-1,:]), index=future_dates) che con la funzione di plotting plt.figure(figsize=(10,4)) plt.plot(pred) plt.title('S&P500 Volatility Prediction - Next 30 Days', fontsize=20) ci permette di visualizzare il grafico Conclusioni su AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading Per quanto la trattazione possa risultare mediamente complessa lo studio rappresenta semplicemente un punto di partenza per approfondire la ricerca di modelli che possano aiutare il trader o l’investitore nelle sue scelte. In questi 3 modelli rappresentati finora le possibiltà di settare i parametri sono notevoli ed ogni loro combinazione puo’ dare risultati completamente diversi. In un mondo in cui combattiamo tra prospettive di inflazione e stagflazione sarebbe troppo semplificativo affidare i nostri risparmi a poche linee di codice. In tempi normali e su un orizzonte di lungo termine potremmo ancora pensare che il progresso, legato a doppio filo con la capacità di sviluppo di know how, e misurabile con il PIL, continui a sostenere i corsi azionari. Tuttavia se da un lato la capacità di sviluppare innovazione è infinita (almeno cosi mi piace pensare) bisogna considerare attentamente che : a) l’implementazione dell’innovazione a livello produttivo e’ comunque limitata. Si pensa che la capacità innovativa dell’essere umano tradotta in produttività, oscilli con valori medi annuali tra il 2% e il 3% al massimo; b) in futuro avremo minore accesso alle risorse sia per la loro riducenda disponibilità sia per una crescente attenzione a forme di sostenibilità produttive. Dopo il Covid si sono moltiplicate teorie sulla descrescita, ridistribuzione di ricchezza e ricorrono sempre piu’ spesso idee tipo “Great Reset”, “New Order” e cosi via. Oggi siamo parte di un ecosistema dei mercati finanziari dove la lotta tra ipo e iper informazione ha mantenuto lo stesso livello di esposizione a bolle finanziarie , dove la quantità di strumenti derivati fornisce un ampio spettro di possibilità di investimento con posizioni long e altrettante short, dove il debito globale ha raggiunto livelli record, dove abbiamo ripetutamente fallito nella esasperata ricerca di un bene che incorpori il significato di valore (che sia l’oro, il petrolio o il bitcoin e similari), dove l’entropia dei nostri sistemi (geopolitici, demografici, ecologici e finanziari) accelera esponenzialmente. Tutto cio’ per dire che le previsioni saranno sempre oggetto di trattazione a complessità crescente e gli algoritmi dovranno tenere in considerazione sempre piu’ variabili. Nei prossimi numeri illustreremo altri algoritmi previsionali lasciando le serie temporali e utilizzando tecniche di previsione supportate da reti neurali. Per chi fosse interessato ad ottenere i codici python completi e strutturati per un plug and play in ambiente Jupiter Notebook, richiedetelo pure all’autore all’indirizzo email nicola.matarese73@gmail.com Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa. E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale. Collegati o manda un messaggio a Nicola Matarese su LINKEDIN

  • Migliori generatori di presentazioni con Intelligenza Artificiale AI

    Questi strumenti di testo-per-presentazione sfruttano l'AI e ChatGPT per trasformare contenuti testuali Originariamente hanno lanciato un chatbot AI per riassumere file PowerPoint, ma SlideSpeak si è espanso

  • I Migliori Motori di Ricerca con Intelligenza Artificiale (IA) da provare nel 2024

    serie di strumenti di intelligenza artificiale all'avanguardia, come un generatore di immagini, un chatbot Con l'opzione di utilizzare gratuitamente l'accesso di base alimentato da OpenAI ChatGPT-3.5 o di aggiornare a un pacchetto pro più raffinato con Anthropic Claude-2 e ChatGPT-4 di OpenAI, Perplexity.ai si adatta Introduce anche una funzione di chat che ti permette di interagire direttamente con un chatbot intelligente

  • Implementare le reti neurali ricorrenti (RNN) con Python e Keras

    Questo tutorial è progettato per chiunque stia cercando di capire il funzionamento delle reti neurali ricorrenti (RNN) e di come utilizzarle tramite la libreria di deep learning Keras. Sebbene tutti i metodi necessari per risolvere problemi e creare applicazioni siano forniti dalla libreria Keras, è anche importante ottenere un'idea di come funziona tutto. In questo articolo, i calcoli che avvengono nel modello RNN sono mostrati passo dopo passo. Successivamente, vedremo come sviluppare un sistema end-to-end completo per la previsione delle serie temporali. Dopo aver completato questo tutorial, saprai: La struttura di RNN Come RNN calcola l'output quando viene fornito un input Come preparare i dati per un SimpleRNN in Keras Come addestrare un modello SimpleRNN Iniziamo a capire e Implementare le reti neurali ricorrenti (RNN) con Python e Keras Panoramica dell'esercitazione Questo tutorial è diviso in due parti; sono: La struttura della RNN Pesi e pregiudizi diversi associati a diversi livelli della RNN. Come vengono eseguiti i calcoli per calcolare l'output quando viene fornito un input. Un'applicazione completa per la previsione di serie temporali. Prerequisiti : Se non sai perchè utilizzeremo python, clicca qui Se non hai ancora installato Python, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Passiamo ora alla parte di implementazione. Iniziamo importando le Librerie necessarie Per avviare l'implementazione delle RNN, aggiungiamo la sezione di importazione. from pandas import read_csv import numpy as np from keras.models import Sequential from keras.layers import Dense, SimpleRNN from sklearn.preprocessing import MinMaxScaler from sklearn.metrics import mean_squared_error import math import matplotlib.pyplot as plt Keras SimpleRNN La funzione seguente restituisce un modello che include un livello SimpleRNN e un livello Dense per l'apprendimento dei dati sequenziali. Specifica il parametro input_shape (time_steps x features). Semplificheremo tutto e utilizzeremo dati univariati, ovvero con una sola caratteristica; i time_steps sono discussi di seguito. def create_RNN(hidden_units, dense_units, input_shape, activation): model = Sequential() model.add(SimpleRNN(hidden_units, input_shape=input_shape, activation=activation[0])) model.add(Dense(units=dense_units, activation=activation[1])) model.compile(loss='mean_squared_error', optimizer='adam') return model demo_model = create_RNN(2, 1, (3,1), activation=['linear', 'linear']) L'oggetto demo_model viene restituito con 2 unità nascoste create tramite il livello SimpleRNN e 1 unità densa creata tramite il livello Dense. input_shape È impostato su 3×1 e una funzione linear di attivazione viene utilizzata in entrambi i livelli per semplicità. Solo per richiamare la funzione di attivazione lineare F(X)=X non cambia l'input. La rete si presenta come segue: Se abbiamo m unità nascoste (m=2 nel caso precedente), quindi: Ingresso: X∈R Unità nascosta: h∈Rm Pesi per unità di input: wX∈Rm Pesi per unità nascoste: wh∈RmXm Bias per le unità nascoste: Bh∈Rm Peso per lo strato denso: wy∈Rm Bias per lo strato denso: By∈R Diamo un'occhiata ai pesi sopra. Nota: poiché i pesi vengono inizializzati in modo casuale, i risultati incollati qui saranno diversi dai tuoi. L'importante è imparare che aspetto ha la struttura di ogni oggetto utilizzato e come interagisce con gli altri per produrre l'output finale. wx = demo_model.get_weights()[0] wh = demo_model.get_weights()[1] bh = demo_model.get_weights()[2] wy = demo_model.get_weights()[3] by = demo_model.get_weights()[4] print('wx = ', wx, ' wh = ', wh, ' bh = ', bh, ' wy =', wy, 'by = ', by) Output wx = [[ 0.18662322 -1.2369459 ]] wh = [[ 0.86981213 -0.49338293] [ 0.49338293 0.8698122 ]] bh = [0. 0.] wy = [[-0.4635998] [ 0.6538409]] by = [0.] Ora facciamo un semplice esperimento per vedere come i livelli di un livello SimpleRNN e Dense producono un output. Tieni presente questa figura. Nell'immagine vengono evidenziati gli Strati di una rete neurale ricorrente Inseriremo x per tre passaggi temporali e consentiremo alla rete di generare un output. Verranno calcolati i valori delle unità nascoste ai passaggi temporali 1, 2 e 3. h0 è inizializzato al vettore zero. Il risultato O3 è calcolato da h3 e wy. Non è richiesta una funzione di attivazione poiché utilizziamo unità lineari. x = np.array([1, 2, 3]) #Rimodelliamo l'input come richiedono sample_size x time_steps x features x_input = np.reshape(x,(1, 3, 1)) y_pred_model = demo_model.predict(x_input) m = 2 h0 = np.zeros(m) h1 = np.dot(x[0], wx) + h0 + bh h2 = np.dot(x[1], wx) + np.dot(h1,wh) + bh h3 = np.dot(x[2], wx) + np.dot(h2,wh) + bh o3 = np.dot(h3, wy) + by print('h1 = ', h1,'h2 = ', h2,'h3 = ', h3) print("Prediction from network ", y_pred_model) print("Prediction from our computation ", o3) Output h1 = [[ 0.18662322 -1.23694587]] h2 = [[-0.07471441 -3.64187904]] h3 = [[-1.30195881 -6.84172557]] Prediction from network [[-3.8698118]] Prediction from our computation [[-3.86981216]] Esecuzione dell' RNN su un set di dati Ora che capiamo come vengono messi insieme i livelli SimpleRNN e Dense. Eseguiamo un RNN completo su un semplice set di dati di serie temporali. Dovremo seguire questi passaggi Leggi il set di dati da un determinato URL Suddividi i dati in training e test set Preparare l'input nel formato Keras richiesto Crea un modello RNN e addestralo Fare le previsioni sugli insiemi di allenamento e di prova e stampare l'errore quadratico medio della radice su entrambi gli insiemi Visualizza il risultato Passaggio 1, 2: lettura dei dati e suddivisione in treno e test La seguente funzione legge i dati del treno e del test da un determinato URL e lo divide in una determinata percentuale di dati del train e del test. Restituisce array unidimensionali per i dati di training e test dopo aver ridimensionato i dati tra 0 e 1 utilizzando MinMaxScalerda scikit-learn. # il paramentro split_percent definisce il rapporto dei dati di addestramento (80%) def get_train_test(url, split_percent=0.8): df = read_csv(url, usecols=[1], engine='python') data = np.array(df.values.astype('float32')) scaler = MinMaxScaler(feature_range=(0, 1)) data = scaler.fit_transform(data).flatten() n = len(data) # dividiamo i dati in test e train split = int(n*split_percent) train_data = data[range(split)] test_data = data[split:] return train_data, test_data, data sunspots_url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv' train_data, test_data, data = get_train_test(sunspots_url) Passaggio 3: rimodellamento dei dati per Keras Il passaggio successivo consiste nel preparare i dati per l'addestramento del modello Keras. L'array di input dovrebbe avere la forma di: total_samples x time_steps x features. Esistono molti modi per preparare i dati delle serie temporali per l'addestramento. Creeremo righe di input con passaggi temporali non sovrapposti. Un esempio per time_steps = 2 è mostrato nella figura seguente. Qui time_steps indica il numero di passaggi temporali precedenti da utilizzare per prevedere il valore successivo dei dati delle serie temporali. La funzione seguente get_XY() prende un array unidimensionale come input e lo converte negli array di input X e di destinazione richiesti Y . Useremo 12 time_stepsper il set di dati delle macchie solari poiché le macchie solari generalmente hanno un ciclo di 12 mesi. Puoi sperimentare altri valori di time_steps. # Prepariamo i dati di input X e di Output Y def get_XY(dat, time_steps): # Target Y Y_ind = np.arange(time_steps, len(dat), time_steps) Y = dat[Y_ind] # Variabili X rows_x = len(Y) X = dat[range(time_steps*rows_x)] X = np.reshape(X, (rows_x, time_steps, 1)) return X, Y time_steps = 12 trainX, trainY = get_XY(train_data, time_steps) testX, testY = get_XY(test_data, time_steps) Passaggio 4: crea modello RNN e addestriamolo Per questo passaggio, possiamo riutilizzare la nostra create_RNN()funzione definita sopra. model = create_RNN(hidden_units=3, dense_units=1, input_shape=(time_steps,1), activation=['tanh', 'tanh']) model.fit(trainX, trainY, epochs=20, batch_size=1, verbose=2) Passaggio 5: calcola e stampa l'errore quadratico medio della radice La funzione print_error()calcola l'errore quadratico medio tra i valori effettivi e quelli previsti. def print_error(trainY, testY, train_predict, test_predict): # Calcoliamo l'errore nelle previsioni train_rmse = math.sqrt(mean_squared_error(trainY, train_predict)) test_rmse = math.sqrt(mean_squared_error(testY, test_predict)) # stampiamo l'RMSE print('Train RMSE: %.3f RMSE' % (train_rmse)) print('Test RMSE: %.3f RMSE' % (test_rmse)) # Facciamo la previsione train_predict = model.predict(trainX) test_predict = model.predict(testX) # stampiamo il Mean square error print_error(trainY, testY, train_predict, test_predict) Output Train RMSE: 0.058 RMSE Test RMSE: 0.077 RMSE Passaggio 6: visualizza il risultato La seguente funzione traccia i valori target effettivi e il valore previsto. La linea rossa separa i punti dati di addestramento e test. # Grafico del risultato def plot_result(trainY, testY, train_predict, test_predict): actual = np.append(trainY, testY) predictions = np.append(train_predict, test_predict) rows = len(actual) plt.figure(figsize=(15, 6), dpi=80) plt.plot(range(rows), actual) plt.plot(range(rows), predictions) plt.axvline(x=len(trainY), color='r') plt.legend(['Actual', 'Predictions']) plt.xlabel('Observation number after given time steps') plt.ylabel('Sunspots scaled') plt.title('Actual and Predicted Values. The Red Line Separates The Training And Test Examples') plot_result(trainY, testY, train_predict, test_predict) Viene generato il seguente grfico: Mettiamo tutto insieme in un unico file .py Di seguito è riportato l'intero codice per questo tutorial. Prova questo alla tua fine e sperimenta diverse unità nascoste e passaggi temporali. Puoi aggiungere un secondo strato SimpleRNN alla rete e vedere come si comporta. Puoi anche utilizzare l' oggetto scaler per ridimensionare i dati al suo intervallo normale. Qui sotto ti riportiamo il codice per copiarlo e incollarlo sul tuo editor from pandas import read_csv import numpy as np from keras.models import Sequential from keras.layers import Dense, SimpleRNN from sklearn.preprocessing import MinMaxScaler from sklearn.metrics import mean_squared_error import math import matplotlib.pyplot as plt def get_train_test(url, split_percent=0.8): df = read_csv(url, usecols=[1], engine='python') data = np.array(df.values.astype('float32')) scaler = MinMaxScaler(feature_range=(0, 1)) data = scaler.fit_transform(data).flatten() n = len(data) split = int(n*split_percent) train_data = data[range(split)] test_data = data[split:] return train_data, test_data, data def get_XY(dat, time_steps): Y_ind = np.arange(time_steps, len(dat), time_steps) Y = dat[Y_ind] rows_x = len(Y) X = dat[range(time_steps*rows_x)] X = np.reshape(X, (rows_x, time_steps, 1)) return X, Y def create_RNN(hidden_units, dense_units, input_shape, activation): model = Sequential() model.add(SimpleRNN(hidden_units, input_shape=input_shape, activation=activation[0])) model.add(Dense(units=dense_units, activation=activation[1])) model.compile(loss='mean_squared_error', optimizer='adam') return model def print_error(trainY, testY, train_predict, test_predict): train_rmse = math.sqrt(mean_squared_error(trainY, train_predict)) test_rmse = math.sqrt(mean_squared_error(testY, test_predict)) print('Train RMSE: %.3f RMSE' % (train_rmse)) print('Test RMSE: %.3f RMSE' % (test_rmse)) def plot_result(trainY, testY, train_predict, test_predict): actual = np.append(trainY, testY) predictions = np.append(train_predict, test_predict) rows = len(actual) plt.figure(figsize=(15, 6), dpi=80) plt.plot(range(rows), actual) plt.plot(range(rows), predictions) plt.axvline(x=len(trainY), color='r') plt.legend(['Actual', 'Predictions']) plt.xlabel('Observation number after given time steps') plt.ylabel('Sunspots scaled') plt.title('Actual and Predicted Values. The Red Line Separates The Training And Test Examples') sunspots_url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv' time_steps = 12 train_data, test_data, data = get_train_test(sunspots_url) trainX, trainY = get_XY(train_data, time_steps) testX, testY = get_XY(test_data, time_steps) model = create_RNN(hidden_units=3, dense_units=1, input_shape=(time_steps,1), activation=['tanh', 'tanh']) model.fit(trainX, trainY, epochs=20, batch_size=1, verbose=2) train_predict = model.predict(trainX) test_predict = model.predict(testX) print_error(trainY, testY, train_predict, test_predict) plot_result(trainY, testY, train_predict, test_predict) Riepilogo In questo tutorial, hai scoperto le reti neurali ricorrenti e le loro varie architetture. Nello specifico hai imparato: La struttura delle RNN Come l'RNN calcola un output dagli input precedenti Come implementare un sistema end-to-end per la previsione di serie temporali utilizzando un RNN Condividi l'articolo se lo hai trovato utile.

  • Principali Linguaggi di Programmazione per la Data Science e Intelligenza Artificiale

    In questo articolo parleremo dei linguaggi popolari per la scienza dei dati e li descriveremo brevemente. I linguaggi di programmazione sono uno strumento per la realizzazione di molte potenti applicazioni di data science. Ma ce ne sono così tanti ed è diventato confuso scegliere quello ottimale per il tuo progetto specifico. In questo articolo parleremo dei linguaggi popolari per la scienza dei dati e li descriveremo brevemente. Linguaggi di programmazione per la Data science Python e Data Science Python è un linguaggio di programmazione dinamico moderno, generico, di alto livello. Può essere utilizzato per l'integrazione con app Web o incorporare codice statistico in un database di produzione. Ci sono molte librerie, che possono essere utilizzate per l'analisi. I vantaggi di python nella Data science: Python è facile da imparare. Ha una breve curva di apprendimento e una sintassi di facile comprensione. Inoltre, riduce il numero di righe di codice rispetto ad altri linguaggi di programmazione. Python è un linguaggio multiuso. Consente l'integrazione con ogni parte del tuo flusso di lavoro. Python è un open source con una comunità attiva. Non solo è gratuito da usare, ma anche la comunità dei programmatori Python è numerosa e puoi sentirti libero di chiedere. Python è multipiattaforma. Dà la possibilità di funzionare su molti sistemi operativi. I Contro di Python nella Data Science: Le visualizzazioni Python sono solitamente contorte Python ha meno funzionalità di R R e Data Science R è un linguaggio di programmazione creato per l'analisi statistica. Ecco perché è all'avanguardia nella scienza dei dati. Possiamo estendere le funzionalità del linguaggio R di base tramite librerie software chiamate packages. Il repository di pacchetti più popolare è il Comprehensive R Archive Network (CRAN). Ora contiene oltre 10.000 pacchetti pubblicati. I vantaggi di R nella Data science: R è un software open source. Di conseguenza, chiunque può usarlo senza acquistare una licenza e cambiarlo. R è multipiattaforma. Dà la possibilità di funzionare su molti sistemi operativi. R fornisce una visualizzazione dei dati attraverso diversi tipi di grafici. R è sviluppato da statistici per statistici. Non è necessario avere esperienza in informatica per iniziare. I contro di R nella Data science: R ha una gestione della memoria pura, quindi R può consumare tutta la memoria disponibile. R è lento. Tuttavia, vengono sviluppati più pacchetti per migliorare le prestazioni di R. R non ha sicurezza incorporata. R non può essere utilizzato come server back-end per eseguire calcoli poiché manca di sicurezza sul Web. Scala e Data Science Scala è noto come linguaggio scalabile. Combina linguaggi orientati agli oggetti e funzionalità di linguaggi funzionali. Scala ha un incredibile supporto per la concorrenza, che è fondamentale per parallelizzare molti dei processi richiesti da grandi set di dati. I vantaggi di Scala nella Data science: Scala è gratuito, quindi non è necessaria una licenza. Scala è altamente funzionale nel paradigma. Scala svolge le sue funzioni di cittadino di prim'ordine. In altre parole, le funzioni possono essere come argomenti per altre funzioni, restituite come valori, assegnate a variabili e memorizzate in strutture di dati. Scala ha un'elevata velocità di esecuzione. Scala è 10 volte più veloce di Python grazie a JVM. Scala è multiparadigmatico. Scala è sia orientato agli oggetti che funzionale. I contro di Scala nella Data science: Scala ha una curva di apprendimento precipitosa. È difficile adattarsi alla sintassi e al sistema di tipi poiché è considerato difficile. Scala ha un pool di sviluppatori limitato. Non è un grosso problema trovare sviluppatori Java, ma non tutti possono programmare in modo efficiente in Scala. Scala non ha una vera ottimizzazione ricorsiva della coda a causa dell'esecuzione sulla JVM. Julia e Data Science Julia è un linguaggio di programmazione dinamico di alto livello e ad alte prestazioni per il calcolo numerico. Il sofisticato compilatore, l'accuratezza numerica, l'esecuzione parallela distribuita e un'ampia libreria di funzioni matematiche rendono Julia popolare per la scienza dei dati. La sua libreria Base è scritta principalmente nella stessa Julia. I vantaggi di Julia nella Data science: Julia è gratuita, quindi non è necessaria una licenza. Julia è compilata ma non interpretata. Di conseguenza, vince in velocità. Julia può essere utilizzata non solo per l'analisi numerica. Può essere utilizzato come programmazione generica. Il codice Julia può essere combinato con altre librerie di lingua scritte in Python, C e Fortran. Inoltre, possiamo interfacciarci con il codice Python tramite la libreria PyCall e condividere i dati tra Python e Julia. Julia può fornire metaprogrammazione. I suoi programmi possono produrre altri programmi Julia e inoltre modificare il proprio codice. I contro di Julia nella Data science: Julia non è adeguatamente sviluppata. A causa del suo recente ingresso, c'è bisogno di miglioramenti. Gli strumenti di Julia non sono fluidi e affidabili come avrebbero voluto. Julia ha un numero limitato di pacchetti perché è giovane e la loro comunità è piuttosto piccola. A differenza di R e Python, Julia non ha una tale varietà di pacchetti. Julia non riesce a identificare i problemi. Julia è molto indietro rispetto a Python e R in termini di identificazione dei problemi e strumenti di debug. Ma presto ci si aspettava che venissero sviluppati altri strumenti per gli utenti. Matlab e Data Sceince Matlab è noto come linguaggio di calcolo numerico che può essere utilizzato sia per scopi didattici che industriali. Matlab può risolvere problemi in molteplici discipline, come la progettazione dell'ottimizzazione del prodotto, l'analisi dello spettro e delle serie temporali dei dati, l'elaborazione del segnale, l'analisi dei dati statistici e la formulazione del modello e l'elaborazione delle immagini. I vantaggi di MatLab nella Data science: Matlab si adatta alle applicazioni quantitative con la matematica avanzata come l'elaborazione dei segnali, le trasformate di Fourier, l'algebra delle matrici e l'elaborazione delle immagini. Matlab ha un'eccellente visualizzazione integrata. Matlab diventa spesso parte di corsi universitari come Matematica Applicata, Ingegneria e Fisica. Ecco perché è comunemente usato in questi campi. Matlab ha interazione con software di terze parti. Ad esempio Simulink, CarSim, PreScan. I contro di MatLab nella Data science: Matlab richiede una licenza. Ma ci sono alternative gratuite disponibili come Octave. Matlab non può essere utilizzato per la programmazione generica. Matlab occupa molta memoria di un computer durante l'elaborazione dei dati. Quindi, se si dispone di un set di dati di grandi dimensioni, la velocità di calcolo rallenta. Octave e Data Science Octave è un linguaggio di programmazione di alto livello per calcoli numerici. Aiuta a risolvere numericamente problemi lineari e non lineari e ad eseguire altre attività utilizzando un linguaggio praticamente simile a MATLAB. Octave è una delle principali alternative gratuite a MATLAB. Octave utilizza un interprete per eseguire il linguaggio di scripting Octave. I vantaggi di Octave nella Data science: Octave è gratuito, quindi non è necessaria una licenza. Octave combina sia un'interfaccia utente grafica (GUI) che un'interfaccia a riga di comando (CLI). Semi di Octave per compiti di matematica applicata, statistica, ecc. I contro di Octave nella Data science: Octave non può essere utilizzato per la programmazione generica. Se vuoi eseguire il tuo codice da Matlab in Octave, alcune funzioni potrebbero differire. Octave richiede molta RAM e memoria di un computer durante l'elaborazione dei dati. Quindi, se si dispone di un set di dati di grandi dimensioni, la velocità di calcolo rallenta. Conclusione Tutto sommato, sta a te scegliere un linguaggio di programmazione ideale per il progetto. Il nostro consiglio è di pensare allo scopo della tua applicazione, se stai pianificando un'integrazione futura, ecc. Dopodiché, puoi scegliere l'opzione più adatta. Letture consigliate per "Principali Linguaggi di Programmazione per la Data Science e Intelligenza Artificiale" : Migliori IDE Python per il machine learning e data science Strumenti e Tool Di Visualizzazione Dati usati nella Data Science Qual è la differenza tra Intelligenza Artificiale, Machine Learning, Deep Lea... Fantastiche Idee per Progetti di Data Science per Principianti ed Esperti Algoritmi di Machine Learning (ML) usati nella Data Science Python vs R vs SAS i linguaggi di programmazione per Intelligenza Artificiale Classificatore vs Regressione quale usare? Machine learning esempi pratici Perchè Python per l'A.I. Principali tendenze sull'Intelligenza Artificiale e Analisi Dati per il 2022 I diversi modelli di apprendimento automatico, Machine Learning

  • Web Scraping con Python la Guida Completa

    Introduzione allo Web Scraping con Python In passato raccogliere dati era un lavoro noioso ea volte molto costoso. I progetti di machine learning non possono vivere senza dati. Fortunatamente, oggigiorno abbiamo a nostra disposizione molti dati sul web. Possiamo copiare i dati dal web per creare il nostro set di dati. Possiamo scaricare manualmente i file e salvarli sul disco. Ma possiamo farlo in modo più efficiente automatizzando la raccolta dei dati. Ci sono diversi strumenti in Python che possono aiutare l'automazione. Dopo aver terminato questo tutorial, saprai: Come utilizzare la libreria delle richieste per leggere i dati online tramite HTTP Come leggere le tabelle sulle pagine web usando pandas Come utilizzare Selenium per emulare le operazioni del browser Alcuni siti Web possono contenere una quantità molto grande di dati inestimabili. I prezzi delle azioni, i dettagli dei prodotti, le statistiche sportive, i contatti dell'azienda e molto altro Se si desidera accedere a queste informazioni, è necessario utilizzare qualsiasi formato utilizzato dal sito Web o copiare e incollare le informazioni manualmente in un nuovo documento. Ecco dove può aiutare il web scraping con Python. Che cos'è il web scraping? Il web scraping si riferisce all'estrazione di dati da un sito web . Queste informazioni vengono raccolte e quindi esportate in un formato più utile per l'utente. Che si tratti di un foglio di calcolo o di un'API. Sebbene lo scraping web possa essere eseguito manualmente , nella maggior parte dei casi, quando si esegue lo scraping dei dati web si preferiscono strumenti automatizzati in quanto possono essere meno costosi e funzionare a una velocità maggiore. Python è il preferito del settore Web Scraping. Ma nella maggior parte dei casi, il web scraping non è un compito semplice. I siti Web sono disponibili in molte forme e forme , di conseguenza, i web scraper variano in funzionalità e caratteristiche. Tieni presente che potresti incontrare captcha quando tenti di eseguire lo scraping di alcuni siti Web. Se vuoisapere come usare python per fare Web Scraping continua a leggere l'articolo alla fine ci sono diversi tutorial. Il web scraping con python è legale? In breve, l'azione del web scraping non è illegale. Tuttavia, alcune regole devono essere seguite. Il web scraping diventa illegale quando vengono estratti dati non pubblicamente disponibili. Ciò non sorprende data la crescita del web scraping e molti recenti casi legali relativi allo scraping web. Come funzionano i web scraper? Quindi, come funzionano i web scraper? I web scraper automatizzati funzionano in modo piuttosto semplice ma anche complesso. Dopotutto, i siti Web sono creati per essere compresi dagli esseri umani, non dalle macchine. Innanzitutto, al web scraper verranno forniti uno o più URL da caricare prima dello scraping. Lo scraper quindi carica l'intero codice HTML per la pagina in questione. Gli scraper più avanzati eseguiranno il rendering dell'intero sito Web. Quindi lo scraper estrarrà tutti i dati sulla pagina o dati specifici selezionati dall'utente prima dell'esecuzione del progetto. Idealmente, l'utente seguirà il processo di selezione dei dati specifici desiderati dalla pagina. Ad esempio, potresti voler raschiare una pagina di prodotti Amazon per prezzi e modelli, ma non sei necessariamente interessato alle recensioni dei prodotti. Infine, il web scraper emetterà tutti i dati che sono stati raccolti in un formato più utile per l'utente. La maggior parte degli scraper Web genererà i dati in un foglio di calcolo CSV o Excel , mentre gli scraper più avanzati supporteranno altri formati come JSON che possono essere utilizzati per un'API. Che tipo di web scraper esistono? I web scraper possono differire drasticamente l'uno dall'altro caso per caso. Per semplicità, analizzeremo alcuni di questi aspetti in 4 categorie . Naturalmente, ci sono più complessità in gioco quando si confrontano i web scraper. autocostruito o prefabbricato estensione del browser vs software Interfaccia utente Cloud vs locale Web Scraper Autocostruito o Precostruito Proprio come chiunque può creare un sito Web, chiunque può creare il proprio web scraper, anche tu creerai il tuo web scraoer in python tra poco . Tuttavia, gli strumenti disponibili per creare il tuo web scraper richiedono ancora alcune conoscenze di programmazione. La portata di questa conoscenza aumenta anche con il numero di funzioni che vorresti che il tuo raschietto avesse. D'altra parte, ci sono numerosi web scraper predefiniti che puoi scaricare ed eseguire subito. Alcuni di questi includeranno anche opzioni avanzate come la pianificazione dello scrape, le esportazioni JSON e Fogli Google e altro ancora. Web Scraper Estensione del browser vs software In termini generali, i web scraper sono disponibili in due forme: estensioni del browser o software per computer. Le estensioni del browser sono programmi simili a app che possono essere aggiunti ai tuoi browser come Google Chrome o Firefox. Alcune estensioni del browser popolari includono temi, blocchi degli annunci, estensioni di messaggistica e altro ancora. Le estensioni di web scraping hanno il vantaggio di essere più semplici da eseguire e di essere integrate direttamente nel tuo browser. Tuttavia, queste estensioni sono generalmente limitate dal vivere nel tuo browser. Ciò significa che qualsiasi funzionalità avanzata che dovrebbe verificarsi al di fuori del browser sarebbe impossibile da implementare. Ad esempio, le rotazioni IP non sarebbero possibili in questo tipo di estensione. D'altra parte, avrai un vero software di scraping web che può essere scaricato e installato sul tuo computer. Sebbene siano un po' meno convenienti delle estensioni del browser, lo compensano con funzionalità avanzate che non sono limitate da ciò che il tuo browser può e non può fare. Web Scraper a Interfaccia utente L'interfaccia utente tra i web scraper può variare molto. Ad esempio, alcuni strumenti di scraping web verranno eseguiti con un'interfaccia utente minima e una riga di comando. Alcuni utenti potrebbero trovarlo poco intuitivo o confuso. D'altra parte, alcuni web scraper avranno un'interfaccia utente completa in cui il sito Web è completamente visualizzato per consentire all'utente di fare semplicemente clic sui dati che desidera raschiare. Questi web scraper sono generalmente più facili da utilizzare per la maggior parte delle persone con conoscenze tecniche limitate. Alcuni scraper arriveranno fino all'integrazione di suggerimenti e suggerimenti di aiuto tramite la loro interfaccia utente per assicurarsi che l'utente comprenda ogni funzionalità offerta dal software. Web Scraper in Cloud vs locale Da dove fa effettivamente il suo lavoro il tuo web scraper? Gli scraper web locali verranno eseguiti sul tuo computer utilizzando le sue risorse e la connessione a Internet. Ciò significa che se il tuo web scraper ha un utilizzo elevato di CPU o RAM, il tuo computer potrebbe diventare piuttosto lento durante l'esecuzione dello scrape. Con lunghe attività di scraping, questo potrebbe mettere fuori uso il tuo computer per ore. Inoltre, se il tuo scraper è impostato per funzionare su un numero elevato di URL (come le pagine dei prodotti), può avere un impatto sui limiti di dati del tuo IP. Gli scraper Web basati su cloud vengono eseguiti su un server esterno che di solito viene fornito dall'azienda che ha sviluppato lo scraper stesso. Ciò significa che le risorse del tuo computer vengono liberate mentre il tuo raschietto è in esecuzione e raccoglie i dati. Puoi quindi lavorare su altre attività ed essere avvisato in seguito quando il tuo scrape è pronto per essere esportato. Ciò consente anche un'integrazione molto semplice di funzionalità avanzate come la rotazione IP, che può impedire che il tuo scraper venga bloccato dai principali siti Web a causa della loro attività di scraping. A cosa servono i web scraper? A questo punto, probabilmente puoi pensare a diversi modi in cui è possibile utilizzare i web scraper . Di seguito abbiamo inserito alcuni dei più comuni (più alcuni unici). web scraper di annunci immobiliari Molti agenti immobiliari utilizzano il web scraping per popolare il loro database di proprietà disponibili in vendita o in affitto. Ad esempio, un'agenzia immobiliare rassegnerà le inserzioni MLS per creare un'API che popola direttamente queste informazioni sul proprio sito Web. In questo modo, possono agire come agenti per la proprietà quando qualcuno trova questo annuncio sul proprio sito. La maggior parte degli annunci che troverai su un sito web immobiliare sono generati automaticamente da un'API. web scraper per Statistiche e approfondimenti del settore Molte aziende utilizzano il web scraping per creare enormi database e trarre da questi approfondimenti specifici del settore. Queste aziende possono quindi vendere l'accesso a queste informazioni alle aziende di detti settori. Ad esempio, una società potrebbe raccogliere e analizzare tonnellate di dati su prezzi del petrolio, esportazioni e importazioni per vendere le proprie conoscenze alle compagnie petrolifere di tutto il mondo. web scraper per Siti di shopping competitor Alcuni diversi siti Web e applicazioni possono aiutarti a confrontare facilmente i prezzi tra diversi rivenditori per lo stesso prodotto. Un modo in cui funzionano questi siti Web consiste nell'utilizzare i web scraper per raccogliere quotidianamente i dati dei prodotti e i prezzi da ciascun rivenditore. In questo modo, possono fornire ai propri utenti i dati di confronto di cui hanno bisogno. Panoramica del Tutorial su Web Scraping con Python Questo tutorial è diviso in 4 parti: Utilizzare requests e python per fare WebScraping Utilizzare beautifulsoup4 e python per fare WebScraping Leggere le tabelle dal web usando pandas Leggere contenuti dinamici con Selenium Utilizzare requests e python per fare Web Scraping Quando si parla di scrivere un programma Python per fare Web Scraping, è inevitabile che non si possa evitare la libreria requests . Devi installare anche BeautifulSoup e lxml che tratteremo in seguito. Usa questi comandi in base a dove usi python : pip install requests beautifulsoup4 lxml #per python <3 pip3 install requests beautifulsoup4 lxml #per python >=3 !pip install requests beautifulsoup4 lxml #per Google Colab Request ti fornisce un'interfaccia che ti consente di interagire facilmente con il web. Il caso d'uso molto semplice sarebbe leggere una pagina Web da un URL: import requests # Lat-Lon di Milano URL = "https://weather.com/weather/today/l/45.46,-9.18" resp = requests.get(URL) print(resp.status_code) print(resp.text) facendo girare il programma questo sarà l'output del tuo primo web scraping di dati 200 ... Se hai familiarità con il protocollo HTTP, probabilmente ricorderai che un codice di stato di 200 significa che la richiesta è stata soddisfatta con successo. Quindi possiamo leggere la risposta. In quanto sopra, leggiamo la risposta testuale e otteniamo l'HTML della pagina web. Se si tratta di un CSV o di altri dati testuali, possiamo leggerli usando .text sull'oggetto risposta. Ad esempio, ecco come possiamo leggere un CSV dai dati economici della Federal Reserve: import io import pandas as pd import requests URL = "https://fred.stlouisfed.org/graph/fredgraph.csv?id=T10YIE&cosd=2017-04-14&coed=2022-04-14" resp = requests.get(URL) if resp.status_code == 200: csvtext = resp.text csvbuffer = io.StringIO(csvtext) df = pd.read_csv(csvbuffer) print(df) facendo girare il programma questo sarà l'output del tuo primo web scraping di dati DATE T10YIE 0 2017-04-17 1.88 1 2017-04-18 1.85 2 2017-04-19 1.85 3 2017-04-20 1.85 4 2017-04-21 1.84 ... ... ... 1299 2022-04-08 2.87 1300 2022-04-11 2.91 1301 2022-04-12 2.86 1302 2022-04-13 2.8 1303 2022-04-14 2.89 [1304 rows x 2 columns] Se i dati sono sotto forma di JSON, possiamo leggerli come testo o persino decodificarli. Ad esempio, il seguente esempio è estrarre alcuni dati da GitHub in formato JSON e convertirli in un dizionario Python: import requests URL = "https://api.github.com/users/tester" resp = requests.get(URL) if resp.status_code == 200: data = resp.json() print(data) facendo girare il programma questo sarà l'output del tuo primo web scraping di dati {'login': '', 'id': 12891, 'node_id': 'MDQ6VXNlcjEyODkx', 'avatar_url': 'https://avatars.githubusercontent.com/u/12891?v=4', 'gravatar_id': '', 'url': 'https://api.github.com/users/tester', 'html_url': 'https://github.com/tester', ... 'company': 'tester', 'blog': 'http://tester.com', 'location': None, 'email': None, 'hireable': None, 'bio': 'tester tester tester tester.', 'twitter_username': None, 'public_repos': 5, 'public_gists': 0, 'followers': 1752, 'following': 0, 'created_at': '2008-06-07T02:20:58Z', 'updated_at': '2022-02-22T19:56:27Z' } Ma se l'URL ti fornisce alcuni dati binari, come un file ZIP o un'immagine JPEG, devi contentinvece ottenerli nell'attributo, poiché questi sarebbero i dati binari. Ad esempio, ecco come possiamo scaricare un'immagine (il logo di Wikipedia): import requests URL = "https://en.wikipedia.org/static/images/project-logos/enwiki.png" wikilogo = requests.get(URL) if wikilogo.status_code == 200: with open("enwiki.png", "wb") as fp: fp.write(wikilogo.content) Dato che abbiamo già ottenuto la pagina web, come dovremmo estrarre i dati? Questo è al di là di ciò che la requests può fornirci, ma possiamo usare una biblioteca diversa per aiutare. Ci sono due modi in cui possiamo farlo, a seconda di come vogliamo specificare i dati. Il primo modo è considerare l'HTML come una sorta di documento XML e utilizzare il linguaggio XPath per estrarre l'elemento. In questo caso, possiamo utilizzare la lxml libreria per creare prima un modello a oggetti del documento (DOM) e quindi cercare tramite XPath: from lxml import etree # DOM HTML dom = etree.HTML(resp.text) # Cerchiamo la temperatura elements = dom.xpath("//span[@data-testid='TemperatureValue' and contains(@class,'CurrentConditions')]") print(elements[0].text) facendo girare il programma questo sarà l'output del tuo primo web scraping di dati 61° XPath è una stringa che specifica come trovare un elemento. L'oggetto lxml fornisce una funzione xpath()per cercare nel DOM elementi che corrispondono alla stringa XPath, che possono essere più corrispondenze. L'XPath sopra significa trovare un elemento HTML ovunque con il tag e con l'attributo data-test id corrispondente a " TemperatureValue" e che class inizia con " CurrentConditions." Possiamo imparare questo dagli strumenti di sviluppo del browser (ad esempio, lo screenshot di Chrome qui sotto) ispezionando la fonte HTML. Questo esempio serve per trovare la temperatura di New York City, fornita da questo particolare elemento che otteniamo da questa pagina web. Sappiamo che il primo elemento abbinato all'XPath è ciò di cui abbiamo bisogno e possiamo leggere il testo all'interno del tag . Utilizzare BeautifulSoup e python per fare Web Scraping L'altro modo è utilizzare i selettori CSS sul documento HTML, che possiamo utilizzare dalla libreria BeautifulSoup: from bs4 import BeautifulSoup soup = BeautifulSoup(resp.text, "lxml") elements = soup.select('span[data-testid="TemperatureValue"][class^="CurrentConditions"]') print(elements[0].text) facendo girare il programma questo sarà l'output del tuo primo web scraping di dati 61° In quanto sopra, passiamo prima il nostro testo HTML a BeautifulSoup. BeautifulSoup supporta vari parser HTML, ognuno con capacità diverse. In quanto sopra, utilizziamo la lxmllibreria come parser come raccomandato da BeautifulSoup (e spesso è anche il più veloce). Il selettore CSS è un mini-linguaggio diverso, con pro e contro rispetto a XPath. Il selettore sopra è identico all'XPath che abbiamo usato nell'esempio precedente. Pertanto, possiamo ottenere la stessa temperatura dal primo elemento abbinato. Quello che segue è un codice completo per stampare la temperatura attuale di New York secondo le informazioni in tempo reale sul web: import requests from lxml import etree # Reading temperature of New York URL = "https://weather.com/weather/today/l/40.75,-73.98" resp = requests.get(URL) if resp.status_code == 200: # Using lxml dom = etree.HTML(resp.text) elements = dom.xpath("//span[@data-testid='TemperatureValue' and contains(@class,'CurrentConditions')]") print(elements[0].text) # Using BeautifulSoup soup = BeautifulSoup(resp.text, "lxml") elements = soup.select('span[data-testid="TemperatureValue"][class^="CurrentConditions"]') print(elements[0].text) Come puoi immaginare, puoi raccogliere una serie temporale della temperatura eseguendo questo script a intervalli regolari. Allo stesso modo, possiamo raccogliere dati automaticamente da vari siti web. È così che possiamo ottenere dati per i nostri progetti di machine learning. Leggere le tabelle sul Web usando pandas Web Scraping di tabelle Molto spesso, le pagine web utilizzeranno le tabelle per trasportare i dati. Se la pagina è abbastanza semplice, potremmo anche saltare l'ispezione per scoprire il selettore XPath o CSS e utilizzare i panda per ottenere tutte le tabelle sulla pagina in un colpo solo. È abbastanza semplice da essere fatto in una riga: import pandas as pd tables = pd.read_html("https://www.federalreserve.gov/releases/h15/") print(tables) facendo girare il programma questo sarà l'output del tuo primo web scraping di dati [ Instruments 2022Apr7 2022Apr8 2022Apr11 2022Apr12 2022Apr13 0 Federal funds (effective) 1 2 3 0.33 0.33 0.33 0.33 0.33 1 Commercial Paper 3 4 5 6 NaN NaN NaN NaN NaN 2 Nonfinancial NaN NaN NaN NaN NaN 3 1-month 0.30 0.34 0.36 0.39 0.39 4 2-month n.a. 0.48 n.a. n.a. n.a. 5 3-month n.a. n.a. n.a. 0.78 0.78 6 Financial NaN NaN NaN NaN NaN 7 1-month 0.49 0.45 0.46 0.39 0.46 8 2-month n.a. n.a. 0.60 0.71 n.a. 9 3-month 0.85 0.81 0.75 n.a. 0.86 10 Bank prime loan 2 3 7 3.50 3.50 3.50 3.50 3.50 11 Discount window primary credit 2 8 0.50 0.50 0.50 0.50 0.50 12 U.S. government securities NaN NaN NaN NaN NaN 13 Treasury bills (secondary market) 3 4 NaN NaN NaN NaN NaN 14 4-week 0.21 0.20 0.21 0.19 0.23 15 3-month 0.68 0.69 0.78 0.74 0.75 16 6-month 1.12 1.16 1.22 1.18 1.17 17 1-year 1.69 1.72 1.75 1.67 1.67 18 Treasury constant maturities NaN NaN NaN NaN NaN 19 Nominal 9 NaN NaN NaN NaN NaN 20 1-month 0.21 0.20 0.22 0.21 0.26 21 3-month 0.68 0.70 0.77 0.74 0.75 22 6-month 1.15 1.19 1.23 1.20 1.20 23 1-year 1.78 1.81 1.85 1.77 1.78 24 2-year 2.47 2.53 2.50 2.39 2.37 25 3-year 2.66 2.73 2.73 2.58 2.57 26 5-year 2.70 2.76 2.79 2.66 2.66 27 7-year 2.73 2.79 2.84 2.73 2.71 28 10-year 2.66 2.72 2.79 2.72 2.70 29 20-year 2.87 2.94 3.02 2.99 2.97 30 30-year 2.69 2.76 2.84 2.82 2.81 31 Inflation indexed 10 NaN NaN NaN NaN NaN 32 5-year -0.56 -0.57 -0.58 -0.65 -0.59 33 7-year -0.34 -0.33 -0.32 -0.36 -0.31 34 10-year -0.16 -0.15 -0.12 -0.14 -0.10 35 20-year 0.09 0.11 0.15 0.15 0.18 36 30-year 0.21 0.23 0.27 0.28 0.30 37 Inflation-indexed long-term average 11 0.23 0.26 0.30 0.30 0.33, 0 1 0 n.a. Not available.] La funzione read_html() in pandas legge un URL e trova tutte le tabelle nella pagina. Ogni tabella viene convertita in un DataFrame panda e quindi le restituisce tutte in un elenco. In questo esempio, stiamo leggendo i vari tassi di interesse della Federal Reserve, che ha solo una tabella in questa pagina. Le colonne della tabella sono identificate automaticamente da pandas. È probabile che non tutte le tabelle siano ciò che ci interessa. A volte, la pagina Web utilizzerà una tabella semplicemente come un modo per formattare la pagina, ma pandas potrebbe non essere abbastanza intelligente da capirlo. Quindi abbiamo bisogno di testare e selezionare il risultato restituito dalla funzione read_html() . Lettura di contenuti dinamici con il selenium Una parte significativa delle pagine Web moderne è piena di JavaScript. Questo ci offre un'esperienza più elaborata, ma diventa un ostacolo da utilizzare come programma per estrarre i dati. Un esempio è la home page di Yahoo, che, se carichiamo la pagina e troviamo tutti i titoli delle notizie, ce ne sono molti meno di quelli che possiamo vedere sul browser: import requests # Leggiamo la Home page di Yahoo URL = "https://www.yahoo.com/" resp = requests.get(URL) dom = etree.HTML(resp.text) # Stampiamo le Headline o titoli elements = dom.xpath("//h3/a[u[@class='StretchedBox']]") for elem in elements: print(etree.tostring(elem, method="text", encoding="unicode")) Questo perché pagine web come questa si basano su JavaScript per popolare il contenuto. Famosi framework web come AngularJS o React sono alla base di questa categoria. La libreria Python, come requests, non comprende JavaScript. Pertanto, vedrai il risultato in modo diverso. Se i dati che desideri recuperare dal Web sono questi, puoi studiare come viene invocato JavaScript e imitare il comportamento del browser nel tuo programma. Ma questo è probabilmente troppo noioso per farlo funzionare. L'altro modo è chiedere a un vero browser di leggere la pagina web invece di usare requests. Questo è ciò che può fare il selenio. Prima di poterlo utilizzare, dobbiamo installare la libreria: pip install selenium Ma Selenium è solo un framework per controllare i browser. Devi avere il browser installato sul tuo computer e il driver per connettere Selenium al browser. Se intendi utilizzare Chrome, devi scaricare e installare anche ChromeDriver . È necessario inserire il driver nel percorso eseguibile in modo che Selenium possa invocarlo come un normale comando. Ad esempio, in Linux, devi solo ottenere l' chromedriver eseguibile dal file ZIP scaricato e inserirlo in /usr/local/bin. Allo stesso modo, se stai usando Firefox, hai bisogno del GeckoDriver . Per maggiori dettagli sulla configurazione di Selenium, dovresti fare riferimento alla sua documentazione . Successivamente, puoi utilizzare uno script Python per controllare il comportamento del browser. Per esempio: import time from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By # Lanciamo Chrome browser options = webdriver.ChromeOptions() options.add_argument("headless") browser = webdriver.Chrome(options=options) # Apriamo una web page browser.get("https://www.yahoo.com") # Verifichiamo il corretto caricamento di tutta la pagina def is_ready(browser): return browser.execute_script(r""" return document.readyState === 'complete' """) WebDriverWait(browser, 30).until(is_ready) # Scrolliamo verso il basso la pagina browser.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(1) WebDriverWait(browser, 30).until(is_ready) # Cerchiamo i titoli delle news w stampiamole elements = browser.find_elements(By.XPATH, "//h3/a[u[@class='StretchedBox']]") for elem in elements: print(elem.text) # IMPORTANTE, chiudi il bot, altrimenti la tua ram ti abbandonerà browser.close() Il codice sopra funziona come segue. Per prima cosa avviamo il browser in modalità headless, il che significa che chiediamo a Chrome di avviarsi ma non di visualizzarlo sullo schermo. Questo è importante se vogliamo eseguire il nostro script in remoto poiché potrebbe non esserci alcun supporto per la GUI. Tieni presente che ogni browser è sviluppato in modo diverso e quindi la sintassi delle opzioni che abbiamo utilizzato è specifica per Chrome. Se usiamo Firefox, il codice sarebbe invece questo: options = webdriver.FirefoxOptions() options.set_headless() browser = webdriver.Firefox(firefox_options=options) Dopo aver avviato il browser, gli diamo un URL da caricare. Ma poiché la rete richiede tempo per consegnare la pagina e il browser impiegherà tempo per renderla, dovremmo attendere che il browser sia pronto prima di procedere con l'operazione successiva. Rileviamo se il browser ha terminato il rendering utilizzando JavaScript. Facciamo eseguire a Selenium un codice JavaScript per noi e ci comunichiamo il risultato usando la funzione execute_script() . L'utilizzo di Selenium è diverso dall'utilizzo della slibreria request in diversi aspetti. Innanzitutto, non hai mai il contenuto web direttamente nel tuo codice Python. Invece, fai riferimento al contenuto del browser ogni volta che ne hai bisogno. Quindi gli elementi web restituiti dalla funzione find_elements() si riferiscono a oggetti all'interno del browser esterno, quindi non dobbiamo chiudere il browser prima di averli consumati. In secondo luogo, tutte le operazioni dovrebbero essere basate sull'interazione del browser piuttosto che sulle richieste di rete. Quindi è necessario controllare il browser emulando i movimenti della tastiera e del mouse. Ma in cambio, hai il browser completo con supporto JavaScript. Ad esempio, puoi utilizzare JavaScript per controllare la dimensione e la posizione di un elemento nella pagina, che conoscerai solo dopo il rendering degli elementi HTML. Ci sono molte più funzioni fornite dal framework Selenium che possiamo coprire qui. È potente, ma poiché è connesso al browser, utilizzarlo è più impegnativo della libreria requests e molto più lento. Di solito, questa è l'ultima risorsa per la raccolta di informazioni dal web. Riepilogo sullo Scraping Web con Python In questo tutorial, hai visto gli strumenti che possiamo utilizzare per recuperare contenuti dal Web. Nello specifico hai imparato: Come utilizzare la libreria delle richieste per inviare la richiesta HTTP ed estrarre i dati dalla sua risposta Come costruire un modello a oggetti del documento da HTML in modo da poter trovare alcune informazioni specifiche su una pagina web Come leggere le tabelle su una pagina web in modo facile e veloce usando i panda Come utilizzare Selenium per controllare un browser per affrontare i contenuti dinamici su una pagina web Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 25 righe di codice Tutorial di Regressione Logistica per l'apprendimento automatico Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Tutorial Pratico Tensorflow , TensorBoard e Python Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning

  • Come funziona il Deep Learning o Apprendimento Profondo ?

    Le persone imparano dall'esperienza. Più ricche sono le nostre esperienze, più possiamo imparare. Nella disciplina dell'intelligenza artificiale (AI) nota come deep learning, lo stesso si può dire per le macchine alimentate da hardware e software di intelligenza artificiale. Le esperienze attraverso le quali le macchine possono apprendere sono definite dai dati che acquisiscono e la quantità e la qualità dei dati determinano quanto possono apprendere. Il deep learning è una branca del machine learning . A differenza dei tradizionali algoritmi di machine learning, molti dei quali hanno una capacità limitata di apprendere indipendentemente dalla quantità di dati che acquisiscono, i sistemi di deep learning possono migliorare le proprie prestazioni con l'accesso a più dati. Dopo che le macchine hanno acquisito sufficiente esperienza attraverso il deep learning, possono essere messe al lavoro per compiti specifici come guidare un'auto, rilevare le erbacce in un campo coltivato, rilevare malattie, ispezionare macchinari per identificare guasti e così via. Come funziona l'apprendimento profondo ? Le reti di deep learning apprendono scoprendo strutture complesse nei dati che sperimentano. Costruendo modelli computazionali composti da più livelli di elaborazione, le reti possono creare più livelli di astrazione per rappresentare i dati. Ad esempio, un modello di apprendimento profondo noto come rete neurale convoluzionale può essere addestrato utilizzando un numero elevato (come in milioni) di immagini, come quelle contenenti gatti. Questo tipo di rete neurale impara tipicamente dai pixel contenuti nelle immagini che acquisisce. Può classificare gruppi di pixel che sono rappresentativi delle caratteristiche di un gatto, con gruppi di caratteristiche come artigli, orecchie e occhi che indicano la presenza di un gatto in un'immagine. Il deep learning è fondamentalmente diverso dal machine learning convenzionale. In questo esempio, un esperto di dominio dovrebbe dedicare molto tempo alla progettazione di un sistema di apprendimento automatico convenzionale per rilevare le caratteristiche che rappresentano un gatto. Con il deep learning, tutto ciò che serve è fornire al sistema un numero molto elevato di immagini di gatti e il sistema può apprendere autonomamente le caratteristiche che rappresentano un gatto. Per molte attività, come la visione artificiale, il riconoscimento vocale (noto anche come elaborazione del linguaggio naturale ), la traduzione automatica e la robotica, le prestazioni dei sistemi di apprendimento profondo superano di gran lunga quelle dei sistemi di apprendimento automatico convenzionali. Questo non vuol dire che la creazione di sistemi di deep learning sia relativamente facile rispetto ai sistemi di machine learning convenzionali. Sebbene il riconoscimento delle funzionalità sia autonomo nell'apprendimento profondo, migliaia di iperparametri (manopole) devono essere ottimizzati affinché un modello di apprendimento profondo diventi efficace. Perché l'apprendimento profondo è importante? Stiamo vivendo un momento di opportunità senza precedenti e la tecnologia di deep learning può aiutarci a raggiungere nuove scoperte. Il deep learning è stato determinante nella scoperta di esopianeti e nuovi farmaci e nel rilevamento di malattie e particelle subatomiche. Fondamentalmente sta aumentando la nostra comprensione della biologia, inclusa la genomica, la proteomica, la metabolomica, l'immunoma e altro ancora. Viviamo anche in un'epoca in cui ci troviamo di fronte a sfide incessanti. Il cambiamento climatico minaccia la produzione alimentare e potrebbe un giorno portare a guerre per risorse limitate. La sfida del cambiamento ambientale sarà esacerbata da una popolazione umana in costante aumento, che dovrebbe raggiungere i nove miliardi entro il 2050. La portata e la portata di queste sfide richiedono un nuovo livello di intelligenza reso possibile dal deep learning. Durante l'esplosione del Cambriano circa 540 milioni di anni fa, la visione emerse come un vantaggio competitivo negli animali e divenne presto il principale motore dell'evoluzione. In combinazione con l'evoluzione delle reti neurali biologiche per elaborare le informazioni visive, la visione ha fornito agli animali una mappa dell'ambiente circostante e ha accresciuto la loro consapevolezza del mondo esterno. Oggi, la combinazione di telecamere come occhi artificiali e reti neurali in grado di elaborare le informazioni visive catturate da quegli occhi sta portando a un'esplosione di applicazioni di intelligenza artificiale basate sui dati. Proprio come la visione ha svolto un ruolo cruciale nell'evoluzione della vita sulla terra, il deep learning e le reti neurali miglioreranno le capacità dei robot. Saranno sempre più in grado di comprendere il loro ambiente, prendere decisioni autonome, collaborare con noi e aumentare le nostre capacità. Esempi di Apprendimento Profondo o Deep Learning Esempio di Apprendimento Profondo : Robotica Molti dei recenti sviluppi della robotica sono stati guidati dai progressi dell'IA e del deep learning. Ad esempio, l'IA consente ai robot di rilevare e rispondere al loro ambiente. Questa capacità aumenta la gamma di funzioni che possono svolgere, dall'esplorazione dei piani del magazzino allo smistamento e alla manipolazione di oggetti irregolari, fragili o confusi insieme. Qualcosa di semplice come raccogliere una fragola è un compito facile per gli umani, ma è stato straordinariamente difficile da eseguire per i robot. Con il progredire dell'IA, tale progresso migliorerà le capacità dei robot. Gli sviluppi nell'IA significano che possiamo aspettarci che i robot del futuro vengano sempre più utilizzati come assistenti umani. Non saranno usati solo per capire e rispondere alle domande, come alcuni sono usati oggi. Saranno anche in grado di agire su comandi vocali e gesti, persino anticipare la prossima mossa di un lavoratore. Oggi, i robot collaborativi lavorano già al fianco degli esseri umani, con esseri umani e robot che svolgono ciascuno compiti separati che sono più adatti ai loro punti di forza. Esempio di Apprendimento Profondo : Agricoltura L'IA ha il potenziale per rivoluzionare l'agricoltura. Oggi, il deep learning consente agli agricoltori di implementare attrezzature in grado di vedere e distinguere tra piante coltivate ed erbe infestanti. Questa capacità consente alle macchine diserbo di spruzzare selettivamente erbicidi sulle erbacce e di lasciare intatte altre piante. Le macchine agricole che utilizzano la visione artificiale abilitata per l'apprendimento profondo possono persino ottimizzare le singole piante in un campo spruzzando selettivamente erbicidi, fertilizzanti, fungicidi, insetticidi e prodotti biologici. Oltre a ridurre l'uso di erbicidi e migliorare la produzione agricola, il deep learning può essere ulteriormente esteso ad altre operazioni agricole come l'applicazione di fertilizzanti, l'irrigazione e la raccolta. Esempio di Apprendimento Profondo : Imaging medico e assistenza sanitaria Il deep learning è stato particolarmente efficace nell'imaging medico, grazie alla disponibilità di dati di alta qualità e alla capacità delle reti neurali convoluzionali di classificare le immagini. Ad esempio, il deep learning può essere efficace quanto un dermatologo nella classificazione dei tumori della pelle, se non di più. Diversi fornitori hanno già ricevuto l'approvazione della FDA per algoritmi di deep learning a fini diagnostici, inclusa l'analisi delle immagini per oncologia e malattie della retina. Il deep learning sta anche facendo progressi significativi nel miglioramento della qualità dell'assistenza sanitaria prevedendo eventi medici dai dati delle cartelle cliniche elettroniche. Il futuro dell'apprendimento profondo Oggi esistono varie architetture di reti neurali ottimizzate per determinati tipi di input e attività. Le reti neurali di convoluzione sono molto brave a classificare le immagini. Un'altra forma di architettura di deep learning utilizza reti neurali ricorrenti per elaborare dati sequenziali. Sia i modelli di rete neurale a convoluzione che quelli ricorrenti eseguono ciò che è noto come apprendimento supervisionato, il che significa che devono essere forniti con grandi quantità di dati per apprendere. In futuro, i tipi più sofisticati di IA utilizzeranno l'apprendimento non supervisionato. Una quantità significativa di ricerca è dedicata alla tecnologia dell'apprendimento non supervisionato e semisupervisionato. L'apprendimento per rinforzo è un paradigma leggermente diverso dall'apprendimento profondo in cui un agente apprende per tentativi ed errori in un ambiente simulato esclusivamente da ricompense e punizioni. Le estensioni di apprendimento profondo in questo dominio sono denominate apprendimento per rinforzo profondo (DRL). Ci sono stati notevoli progressi in questo campo, come dimostrato dai programmi DRL che battono gli umani nell'antico gioco del GO. Progettare architetture di reti neurali per risolvere i problemi è incredibilmente difficile, reso ancora più complesso con molti iperparametri da regolare e molte funzioni di perdita tra cui scegliere per ottimizzare. C'è stata molta attività di ricerca per apprendere in modo autonomo buone architetture di reti neurali. Imparare a imparare, noto anche come metalearning o AutoML, sta facendo progressi costanti. Le attuali reti neurali artificiali si basavano sulla comprensione degli anni '50 di come il cervello umano elabora le informazioni. La neuroscienza ha compiuto notevoli progressi da allora e le architetture di apprendimento profondo sono diventate così sofisticate da sembrare mostrare strutture come le cellule della griglia, che sono presenti nei cervelli neurali biologici utilizzati per la navigazione. Sia la neuroscienza che l'apprendimento profondo possono trarre vantaggio l'un l'altro dall'impollinazione incrociata di idee ed è molto probabile che questi campi inizieranno a fondersi a un certo punto. Non utilizziamo più computer meccanici e, a un certo punto, non utilizzeremo nemmeno computer digitali. Piuttosto, utilizzeremo una nuova generazione di computer quantistici. Negli ultimi anni ci sono state diverse scoperte nell'informatica quantistica e gli algoritmi di apprendimento possono certamente trarre vantaggio dall'incredibile quantità di elaborazione disponibile fornita dai computer quantistici. Potrebbe anche essere possibile utilizzare algoritmi di apprendimento per comprendere l'output dei computer quantistici probabilistici. L'apprendimento automatico quantistico è una branca molto attiva dell'apprendimento automatico e con la prima conferenza internazionale sull'apprendimento automatico quantistico prevista per il 2018, è iniziato bene. Per capire come funziona l'apprendimento profondo vediamo un esempio con Python Indice Tutorial In questa guida, seguiremo i seguenti passaggi: Passaggio 1: caricamento delle librerie e dei moduli richiesti. Passaggio 2: lettura dei dati ed esecuzione dei controlli di base dei dati. Passaggio 3: creazione di array per le funzionalità e la variabile di risposta. Passaggio 4: creazione dei set di dati di addestramento e test. Passaggio 5 - Costruzione, previsione e valutazione del modello di rete neurale. Passaggio 1: caricamento delle librerie e dei moduli richiesti import pandas as pd import numpy as np import matplotlib.pyplot as plt import sklearn 6from sklearn.neural_network import MLPClassifier 7from sklearn.neural_network import MLPRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from math import sqrt 13from sklearn.metrics import r2_score Passaggio 2: lettura dei dati ed esecuzione dei controlli sui dati di base La prima riga di codice legge i dati come dataframe panda, mentre la seconda riga stampa la forma - 768 osservazioni di 9 variabili. La terza riga fornisce le statistiche riassuntive trasposte delle variabili. Osservando il riepilogo della variabile "diabete", osserviamo che il valore medio è 0,35, il che significa che circa il 35% delle osservazioni nel set di dati ha il diabete. Pertanto, l'accuratezza di base è del 65% e il nostro modello di rete neurale dovrebbe sicuramente battere questo benchmark di base. df = pd.read_csv('diabetes.csv') print(df.shape) df.describe().transpose() Produzione: (768, 9) | | count | mean | std | min | 25% | 50% | 75% | max | |-------------|-------|------------|------------|--------|----------|----------|-----------|--------| | pregnancies | 768.0 | 3.845052 | 3.369578 | 0.000 | 1.00000 | 3.0000 | 6.00000 | 17.00 | | glucose | 768.0 | 120.894531 | 31.972618 | 0.000 | 99.00000 | 117.0000 | 140.25000 | 199.00 | | diastolic | 768.0 | 69.105469 | 19.355807 | 0.000 | 62.00000 | 72.0000 | 80.00000 | 122.00 | | triceps | 768.0 | 20.536458 | 15.952218 | 0.000 | 0.00000 | 23.0000 | 32.00000 | 99.00 | | insulin | 768.0 | 79.799479 | 115.244002 | 0.000 | 0.00000 | 30.5000 | 127.25000 | 846.00 | | bmi | 768.0 | 31.992578 | 7.884160 | 0.000 | 27.30000 | 32.0000 | 36.60000 | 67.10 | | dpf | 768.0 | 0.471876 | 0.331329 | 0.078 | 0.24375 | 0.3725 | 0.62625 | 2.42 | | age | 768.0 | 33.240885 | 11.760232 | 21.000 | 24.00000 | 29.0000 | 41.00000 | 81.00 | | diabetes | 768.0 | 0.348958 | 0.476951 | 0.000 | 0.00000 | 0.0000 | 1.00000 | 1.00 | Passaggio 3: creazione di variabili di risposta La prima riga di codice crea un oggetto della variabile target chiamato 'target_column'. La seconda riga fornisce l'elenco di tutte le caratteristiche, esclusa la variabile target 'disoccupato', mentre la terza riga normalizza i predittori. La quarta riga mostra il riepilogo dei dati normalizzati. Possiamo vedere che tutte le variabili indipendenti sono state ora ridimensionate tra 0 e 1. La variabile target rimane invariata. target_column = ['diabetes'] predictors = list(set(list(df.columns))-set(target_column)) df[predictors] = df[predictors]/df[predictors].max() df.describe().transpose() Produzione: | | count | mean | std | min | 25% | 50% | 75% | max | |-------------|-------|----------|----------|----------|----------|----------|----------|-----| | pregnancies | 768.0 | 0.226180 | 0.198210 | 0.000000 | 0.058824 | 0.176471 | 0.352941 | 1.0 | | glucose | 768.0 | 0.607510 | 0.160666 | 0.000000 | 0.497487 | 0.587940 | 0.704774 | 1.0 | | diastolic | 768.0 | 0.566438 | 0.158654 | 0.000000 | 0.508197 | 0.590164 | 0.655738 | 1.0 | | triceps | 768.0 | 0.207439 | 0.161134 | 0.000000 | 0.000000 | 0.232323 | 0.323232 | 1.0 | | insulin | 768.0 | 0.094326 | 0.136222 | 0.000000 | 0.000000 | 0.036052 | 0.150414 | 1.0 | | bmi | 768.0 | 0.476790 | 0.117499 | 0.000000 | 0.406855 | 0.476900 | 0.545455 | 1.0 | | dpf | 768.0 | 0.194990 | 0.136913 | 0.032231 | 0.100723 | 0.153926 | 0.258781 | 1.0 | | age | 768.0 | 0.410381 | 0.145188 | 0.259259 | 0.296296 | 0.358025 | 0.506173 | 1.0 | | diabetes | 768.0 | 0.348958 | 0.476951 | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 1.0 | Passaggio 4: creazione dei set di dati di addestramento e test Le prime due righe di codice seguenti creano matrici rispettivamente delle variabili indipendenti (X) e dipendenti (y). La terza riga suddivide i dati in training e test dataset e la quarta riga stampa la forma del training e dei dati di test. X = df[predictors].values y = df[target_column].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=40) print(X_train.shape); print(X_test.shape) Produzione: (537, 8) (231, 8) Passaggio 5: costruzione, previsione e valutazione del modello di rete neurale In questo passaggio, costruiremo il modello di rete neurale utilizzando l'oggetto stimatore della libreria scikit-learn, 'Multi-Layer Perceptron Classifier'. La prima riga di codice (mostrata di seguito) importa 'MLPClassifier'. La seconda riga crea un'istanza del modello con l'argomento 'hidden_layer_sizes' impostato su tre livelli, che ha lo stesso numero di neuroni del conteggio delle funzionalità nel set di dati. Selezioneremo anche 'relu' come funzione di attivazione e 'adam' come risolutore per l'ottimizzazione del peso. Per saperne di più su 'relu' e 'adam', fare riferimento alle guide Deep Learning con Keras , i cui collegamenti sono forniti alla fine di questa guida. La terza riga di codice adatta il modello ai dati di addestramento, mentre la quarta e la quinta riga utilizzano il modello addestrato per generare previsioni rispettivamente sul set di dati di addestramento e test. from sklearn.neural_network import MLPClassifier mlp = MLPClassifier(hidden_layer_sizes=(8,8,8), activation='relu', solver='adam', max_iter=500) mlp.fit(X_train,y_train) predict_train = mlp.predict(X_train) predict_test = mlp.predict(X_test) Una volta generate le previsioni, possiamo valutare le prestazioni del modello. Essendo un algoritmo di classificazione, importeremo prima i moduli richiesti, cosa che viene eseguita nella prima riga di codice seguente. La seconda e la terza riga di codice stampano la matrice di confusione ei risultati del rapporto di confusione sui dati di addestramento. from sklearn.metrics import classification_report,confusion_matrix print(confusion_matrix(y_train,predict_train)) print(classification_report(y_train,predict_train)) Produzione: [[319 39] [ 78 101]] precision recall f1-score support 0 0.80 0.89 0.85 358 1 0.72 0.56 0.63 179 avg / total 0.78 0.78 0.77 537 L'output sopra mostra le prestazioni del modello sui dati di addestramento. La precisione e il punteggio F1 sono rispettivamente di circa 0,78 e 0,77. Idealmente, il modello perfetto avrà il valore di 1 per entrambe queste metriche, ma è quasi impossibile negli scenari del mondo reale. Il passaggio successivo consiste nel valutare le prestazioni del modello sui dati di test eseguiti con le righe di codice seguenti. print(confusion_matrix(y_test,predict_test)) print(classification_report(y_test,predict_test)) In questa guida hai imparato a costruire un modello di rete neurale usando scikit-learn. La guida ha utilizzato il set di dati sul diabete e ha costruito un algoritmo di classificazione per prevedere il rilevamento del diabete. Il nostro modello sta raggiungendo una discreta precisione del 78% e del 75% rispettivamente sui dati di addestramento e test. Osserviamo che l'accuratezza del modello è superiore all'accuratezza di base del 66%. Il modello può essere ulteriormente migliorato eseguendo la convalida incrociata, l'ingegneria delle funzionalità o modificando gli argomenti nello stimatore della rete neurale. Si noti che abbiamo costruito un modello di classificazione in questa guida. Tuttavia, anche la costruzione del modello di regressione segue la stessa struttura, con un paio di aggiustamenti. Il primo è che al posto dello stimatore 'MLPClassifier', istanziare lo stimatore 'MLPRegressor'. La seconda correzione è che, invece di utilizzare l'accuratezza come metrica di valutazione, utilizzeremo il valore RMSE o R-quadrato per la valutazione del modello. Per ulteriori informazioni sulla creazione di modelli di machine learning utilizzando scikit-learn , fare riferimento alle seguenti guide: Il tuo Primo Programma di Machine Learning con Python e Google Colab Introduzione a Scikit Learn con esempio pratico in Python Come salvare e caricare modelli di Machine Learning con Python e scikit-learn Apprendimento non Supervisionato con Python Come Generare dataset con python e scikit-learn Corso Gratis su Python e Machine Learning Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Feature Engineering e Feature Selection per Principianti e non Come Migliorare la precisione di un modello di M.L. Manipolazione Dati con Python e Pandas

  • Come costruire modelli predittivi sanitari utilizzando PyHealth?

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

  • Intelligenza Artificiale per la Ricerca di Parole Chiave il tool Gratis

    Hai mai provato a decifrare la scienza dietro i risultati di ricerca istantanei di Google? O in che modo digitando poche parole ottieni tonnellate di informazioni correlate sul tuo argomento di ricerca in una frazione di secondi? Non proprio, giusto? Bene, non per vantarsi, ma tutto il merito va alla SEO basata sull'intelligenza artificiale di Google. Google è uno dei principali attori quando si tratta di sfruttare le ultime tecnologie per offrire un'esperienza cliente pronta all'uso. Negli ultimi anni, hanno sviluppato alcuni degli algoritmi di prim'ordine e portato le pratiche SEO a un livello superiore. In tal modo, hanno facilitato la vita di milioni di utenti. Per non parlare del fatto che ha dato voce a una moltitudine di aziende per trasmettere efficacemente la propria parola ai propri stakeholder. PROVA IL NOSTRO TOOL SEO GRATIS Come funzionava la SEO in passato senza Intelligenza Artificiale ? Negli ultimi cinque anni, Google ha elaborato due aggiornamenti dell'algoritmo che hanno dato la dovuta enfasi alla qualità dei contenuti e alla completezza del linguaggio. Il famoso aggiornamento SEO di Google, Hummingbird, ha fornito capacità di analisi semantica ai motori di ricerca. Ora, questi strumenti hanno lavorato sulla comprensione del significato di lingue e frasi per fornire agli utenti i risultati di ricerca desiderati. L'uso di parole chiave efficaci per mettere in relazione l'intento con i contenuti è diventato di notevole importanza per i marketer digitali. I due algoritmi hanno svolto un ruolo importante nell'ottimizzazione delle posizioni del marchio nei motori di ricerca e nella fornitura di risultati di ricerca mirati. L'avvento di Google nell'Intelligenza Artificiale L'introduzione di RankBrain da parte di Google si è rivelata un punto di svolta e il suo primo passo verso la SEO basata sull'intelligenza artificiale . Da allora, Google utilizza diverse tecniche basate sull'intelligenza artificiale per classificare i risultati di ricerca. Queste tecniche hanno spostato l'attenzione dalla ricerca per parole chiave all'autorità di attualità. Tradizionalmente, la SEO ha lavorato sulle parole chiave e sull'ottimizzazione dei contenuti sull'elaborazione del linguaggio naturale. Ma l' integrazione di Google AI ha cambiato il significato delle pratiche SEO. A differenza di prima, quando le pagine venivano classificate utilizzando le parole chiave, Rankbrain di Google comprende ben oltre le singole parole chiave. Funziona comprendendo la relazione tra gli argomenti e sviluppa un'interpretazione contestuale per fornire risultati di ricerca migliori. In breve, possiamo dire che sta imparando a leggere e capire proprio come fanno gli umani. PROVA IL NOSTRO TOOL SEO GRATIS Che cos'è RankBrain di Google e come funziona? Rankbrain di Google è un sistema SEO basato sull'intelligenza artificiale di apprendimento automatico introdotto come parte dell'algoritmo di ricerca di Google: Hummingbird. Tutte le tue query di ricerca su Google vengono eseguite tramite RankBrain. Oltre a mostrare il risultato più pertinente alla tua query di ricerca, apprende anche quali risultati ti piacciono e le pagine che visiti principalmente. Rankbrain di Google utilizza tale conoscenza per mostrare risultati di ricerca aggiuntivi oltre a ciò che hai cercato. Questi nuovi risultati potrebbero non contenere le parole esatte che hai cercato, ma potresti trovarle interessanti e correlate alla tua query di ricerca. Come posizionarsi più in alto utilizzando Rankbrain di Google? Comprendi l'intento dei tuoi contenuti È qui che entra in gioco l' importanza delle parole chiave . Uno dei punti in cui mancano molti marketer digitali è collegare l'intento al loro contenuto. La selezione delle parole chiave gioca un ruolo significativo nell'ottenere un ranking di ricerca più elevato su Google. Devi prima capire i tuoi utenti e cosa vorrebbero leggere o a cui sono interessati. Crea un elenco di parole chiave che desideri scegliere come target e inseriscile in Google. Visualizza i risultati di ricerca che vengono visualizzati entrando nell'elenco delle parole chiave principali. Dovresti aggiungere quei risultati di ricerca al tuo elenco di parole chiave per avere dati più completi di parole chiave efficaci. Supponiamo, ad esempio, di scegliere la parola "DM" per ottimizzare il posizionamento su un motore di ricerca. La parola potrebbe significare qualsiasi cosa, da un messaggio diretto a un vice magistrato o anche per il data mining. Il termine DM potrebbe essere utilizzato dagli utenti in innumerevoli contesti e non è così che la SEO può prosperare. Pertanto, è molto importante comprendere l'intento e la chiarezza dei tuoi contenuti. PROVA IL NOSTRO TOOL SEO GRATIS Concentrati maggiormente sui contenuti a coda lunga Dopo che il tuo elenco di parole chiave è pronto, devi sviluppare contenuti sotto forma di post di blog, case study, white paper o guide. Tutto questo contenuto deve essere formato attorno e includere tali parole chiave e ricerche. In un luogo come il World Wide Web, non c'è alcun vincolo sulla quantità di informazioni che arriverebbero al tuo utente durante una ricerca su Google. PROVA IL NOSTRO TOOL SEO GRATIS Quindi, come ti assicuri che vedano ciò che stai vendendo? È qui che entra in gioco il contenuto della coda lunga. I contenuti a coda lunga si concentrano intensamente sull'essere molto specifici su ciò che stai vendendo e sulle parole chiave selezionate. Tali contenuti sono utili quando i clienti utilizzano frasi di ricerca altamente specifiche e, quando lo fanno, sanno cosa stanno cercando. Il ranking dei tuoi contenuti può essere ottimizzato utilizzando tali parole chiave e contenuti a coda lunga. Supponiamo, ad esempio, che "panetteria" sia un termine molto comune avrà un numero molto inferiore di ricerche rispetto a "Panetteria vicino a me" o "panetteria all'angolo". Ciò è dovuto a un motivo molto semplice: un utente saprà che "panetteria" come query di ricerca può fornire un numero "n" di risultati come la definizione, l'origine, ecc. Ma la query di ricerca "panetteria vicino a me" li mostrerà informazioni pertinenti, ad es. le panetterie vicine alla loro ubicazione, che è più specifica. Come funziona l'integrazione dell'IA nella SEO di Google Con Google che diventa ogni giorno più intelligente, devi concentrarti sulla credibilità dei tuoi contenuti su Internet. L'integrazione di Google AI apprende da tutte le azioni dell'utente. Quindi, se i tuoi contenuti si posizionano in alto nella ricerca di Google, ma la maggior parte degli utenti preme immediatamente il pulsante Indietro e torna alla pagina di ricerca. In questo caso, Google ne prenderà nota e apporterà modifiche al suo algoritmo. Attraverso queste modifiche, classificherà le pagine che rispondono alla domanda dell'utente e sono per lo più visitate senza un ritorno istantaneo alla pagina di ricerca. PROVA IL NOSTRO TOOL SEO GRATIS Necessità di un audit del contenuto semantico Come citato sopra, la credibilità dei tuoi contenuti giocherà ora un ruolo significativo per ottenere un rango più alto nei risultati di ricerca di Google. Dovrai fare in modo di esaminare tutti i contenuti disponibili sul tuo sito Web, analizzare gli argomenti, la loro ampiezza ed empatizzare il modo in cui si collegherebbe con gli utenti. Dovresti anche eseguire un audit semantico del sito Web del tuo concorrente per ottenere un vantaggio su di loro. Utilizzando strumenti SEO basati sull'intelligenza artificiale , puoi collegare tali pagine semanticamente specifiche da associare alle query degli utenti e migliorare il tuo posizionamento nei risultati di ricerca su Google. L'esecuzione di un'analisi semantica e l'adozione di misure correttive ridurrà il tasso di ritorno degli utenti alla SERP dalle tue pagine Web e manterrà il tuo posizionamento nei risultati di ricerca su Google. Conclusione In conclusione, possiamo dire che Google AI Integration ha cambiato il volto delle moderne pratiche SEO. Ha anche capovolto il modo in cui funziona il ranking di ricerca di Google per soddisfare una migliore esperienza utente. Se sei un marketer digitale, utilizzerai strumenti basati sull'intelligenza artificiale per decodificare il modo in cui funzionano i motori di ricerca. Questa sarà la tua chiave per condividere un terreno comune con le ultime pratiche SEO e creare valore per la tua clientela.

  • L'Intelligenza Artificiale Spiegata Semplice

    Potrebbe essere stato un chatbot invece di un vero essere umano.

  • Come diventare uno Sviluppatore di Intelligenza Artificiale?

    notevole, grazie allo sviluppo dell'Intelligenza Artificiale e del Machine Learning in diverse aree del business Alcuni chatbot sono creati in modo tale che è difficile dire se stiamo conversando con una macchina o

  • Migliori Strumenti e Tool di Intelligenza Artificiale IA per l'Istruzione e per Imparare

    Un esempio è l'uso di chatbot intelligenti, che possono rispondere alle domande degli studenti in tempo tasso di precisione del 90% nella risoluzione dei problemi di matematica, superando persino il 60% di ChatGPT Ivy Chatbot: Rivoluziona l'Interazione Studente-Università con l'IA Ivy è un'innovativa suite di strumenti AI per chatbot progettata su misura per università e college, che offre supporto in molteplici fasi

  • Guida Completa Algoritmi di Machine Learning

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

  • Intelligenza Artificiale in Italia: la Strategia di Meloni per Guidare la Rivoluzione AI

    Ad esempio, quali regole dovranno guidare l'utilizzo di sistemi di AI generativa come ChatGPT, capaci Dopo la crisi innescata dall'intelligenza artificiale di ChatGPT, divenuta virale e incontrollabile in

bottom of page