Come prevedere il prezzo delle azioni utilizzando SVM

Come prevedere il prezzo delle azioni utilizzando SVM
L'apprendimento automatico è un'applicazione di intelligenza artificiale che sta migliorando il modo in cui il mondo funziona in ogni dominio. Alla base, è un algoritmo o un modello che osserva i modelli in un determinato set di dati e quindi prevede i modelli appresi sui dati generali. In termini di Layman, è l'idea che le macchine apprendano un modello e si adattino attraverso l'esperienza per prendere decisioni accurate e ripetibili. La macchina vettoriale di supporto è un popolare algoritmo ML che useremo oggi per prevedere i prezzi delle azioni. Ci sono diversi vantaggi per questo modello, di cui discuteremo e cammineremo attraverso l'implementazione dell'approccio.

Cos'è un iperplano?

Un iperplano nello spazio N-dimensionale è un sottospazio (N-1)-dimensionale; Se lo spazio è tridimensionale, i suoi iperplani sono i piani bidimensionali. Uno spazio n-dimensionale è sempre attraversato da un insieme di vettori N linearmente indipendenti ed è sempre possibile trovare vettori reciprocamente ortogonali che abbracciano lo spazio. Che può o meno essere nella definizione di uno spazio vettoriale dimensionale, ma è un fatto per il quale la prova può essere trovata in quasi tutti i libri di testo di algebra lineare universitaria.

Di conseguenza, un iperplano nello spazio N è attraversato da vettori N-1 linearmente indipendenti e ha un anne vettore (non nel piano) ortogonale ad esso.

Cos'è una macchina vettoriale di supporto?

La macchina vettoriale di supporto (SVM) è un algoritmo di classificazione binaria di apprendimento automatico supervisionato. Dato un insieme di due tipi di punti in N Dimensioni, SVM genera un iperplano dimensionale (N-1) per dividere quei punti in due gruppi come mostrato di seguito:

Nella figura sopra, SVM sceglierà la linea rossa come il miglior iperplano che separa le classi blu e verdi.

Supponiamo che tu abbia due tipi di punti in un piano che sono linearmente separabili. SVM troverà una linea retta che divide quei punti in due tipi ed è il più lontano possibile da tutti loro. Questa linea è conosciuta come un iperplano ed è stata scelta in modo che i valori anomali non vengano ignorati e i punti di classi diverse sono il più distanti possibile. Se i punti non possono essere separati, SVM utilizza una trasformazione del kernel per aumentare le dimensioni dei punti.

Il caso discusso sopra era piuttosto semplice perché i dati erano separabili linearmente - come abbiamo visto, potevamo tracciare una linea retta per separare i tipi di punti rossi e blu.

Cosa succede se i dati non sono linearmente separabili? Non saremo in grado di separare le classi disegnando un iperplano dritto. Per affrontare questa sfida, aggiungeremo una terza dimensione al set di dati. Fino ad ora avevamo due dimensioni: xe y. Creiamo una nuova dimensione e un mandato che sia calcolata in un modo conveniente per noi: z = x2 + y2.

Questo creerà uno spazio tridimensionale dai punti precedenti. Dalla figura di seguito possiamo dedurre che inizialmente i punti non erano linearmente separabili, ma dopo aver applicato la funzione del kernel, abbiamo facilmente separato i punti dati. Ci sono molte funzioni del kernel disponibili che puoi scegliere in base al tuo caso d'uso.

Vantaggi di SVM

  1. Buono per i dati in cui il numero di dimensioni è superiore al numero di punti dati.
  2. Buono sia per la classificazione che per la regressione.
  3. È ottimizzato nello spazio.
  4. Gestisce i valori anomali.

Svantaggi di SVM

  1. È difficile selezionare una "buona" funzione del kernel.
  2. I set di dati di grandi dimensioni richiedono un lungo periodo di allenamento.
  3. Il modello finale è difficile da comprendere e interpretare, con pesi variabili e impatto individuale.
  4. Non possiamo fare piccole calibrazioni al modello perché il modello finale non è facilmente visibile, rendendo difficile incorporare la nostra logica aziendale.

Previsione delle indicazioni sui prezzi delle azioni utilizzando SVM

Le previsioni del mercato azionario vengono fatte prevedendo il valore futuro delle azioni di una società o di un altro strumento finanziario scambiato su uno scambio utilizzando analisi fondamentali o tecniche.

Il vantaggio della previsione del mercato azionario è che ti consente di investire saggiamente e proficuamente.

La prima attività per questa implementazione è importare tutte le librerie e i moduli nel nostro script. Sklearn verrà utilizzato per costruire il modello, i panda verranno utilizzati per gestire i frame di dati e Numpy è per l'algebra lineare. Di seguito sono riportate le importazioni richieste che facciamo:

da Sklearn.SVM Import SVC
da Sklearn.Metrics Import Accuracy_score
Importa panda come PD
Importa Numpy come NP

La prossima attività è leggere il set di dati dal file. Il file sarà in archiviazione esterna e puoi scaricare il set di dati da qui.

# Leggendo il file CSV dalla memoria esterna
df = pd.read_csv ('Reliance.CSV ')

Assegna il DateTime come indice del frame di dati e rilascia la colonna "Data"

# Realizzare la data di indice come colonna
df.indice = pd.to_datetime (df ['data'])
# rilascia la colonna denominata "data"
df = df.drop (['data'], axis = 'colonne')

Assegna le funzionalità di input a una variabile

# Crea variabili predittive
df ['open-close'] = df.Aperto - df.Vicino
df ['alto-low'] = df.Alto - df.Basso
# Memorizza tutte le variabili predittive in una variabile x
X = df [['Open-Close', 'High-Low']
Stampa (x.Testa())

Assegna la colonna di destinazione a un'altra variabile

# Variabili target
y = np.dove (df ['chiust'].Shift (-1)> df ['chiust'], 1, 0)
stampa (y)

Dividi il set di dati in treni e test campioni. I campioni del treno costruiranno il modello, mentre i campioni di test identificheranno l'accuratezza del modello.

split = int (0.9*len (df))
# Train Data Set
X_train = x [: split]
y_train = y [: split]
# Set di dati di prova
X_test = x [split:]
y_test = y [split:]

Crea ora il modello SVM

# Support Vector Classifier
modello = svc ().fit (x_train, y_train)

Puoi trovare l'accuratezza di questo modello usando varie metriche.

Per prevedere il segnale dello stock, utilizzare il metodo seguente.

df ['sig'] = modello.prevedere (x)

Conclusione

Questo articolo ha esaminato la discussione, i vantaggi e i casi d'uso delle macchine vettoriali di supporto. È un algoritmo popolare ed efficiente in termini di spazio per le attività di classificazione e regressione e utilizza principi geometrici per risolvere i nostri problemi. Successivamente, abbiamo anche implementato la previsione della direzione del prezzo delle azioni utilizzando l'algoritmo SVM. La previsione del prezzo delle azioni è estremamente utile nel mondo degli affari e quando utilizziamo l'automazione per questo, crea più clamore per questo problema.