Comment prédire le cours des actions à l'aide de SVM

Comment prédire le cours des actions à l'aide de SVM
L'apprentissage automatique est une application d'intelligence artificielle qui améliore le fonctionnement du monde dans chaque domaine. À la base, il s'agit d'un algorithme ou d'un modèle qui observe les modèles dans un ensemble de données donné, puis prédit les modèles appris sur les données générales. En termes simples, c'est l'idée que les machines apprennent un modèle et s'adaptent à travers l'expérience pour prendre des décisions précises et reproductibles. La machine vectorielle de support est un algorithme ML populaire que nous utiliserons aujourd'hui pour prédire les cours des actions. Il y a plusieurs avantages à ce modèle, dont nous discuterons et parcourons la mise en œuvre de l'approche.

Qu'est-ce qu'un hyperplan?

Un hyperplan dans l'espace N dimensionnel est un sous-espace (N-1)-Dimensional; Si l'espace est tridimensionnel, alors ses hyperplanes sont les plans bidimensionnels. Un espace à n dimensions est toujours étendu par un ensemble de n vecteurs linéairement indépendants, et il est toujours possible de trouver n vecteurs mutuellement orthogonaux qui s'étendent sur l'espace. Cela peut être ou non dans la définition d'un espace vectoriel de dimension finie, mais c'est un fait pour lequel une preuve peut être trouvée dans presque tous les manuels d'algèbre linéaire de premier cycle.

En conséquence, un hyperplan dans l'espace n est couvert par des vecteurs n-1 linéairement indépendants et a un nème vecteur (pas dans le plan) orthogonal.

Qu'est-ce qu'une machine vectorielle de support?

La machine à vecteur de support (SVM) est un algorithme de classification binaire d'apprentissage automatique supervisé. Étant donné un ensemble de deux types de points en n dimensions, SVM génère un hyperplan dimensionnel (n-1) pour diviser ces points en deux groupes comme indiqué ci-dessous:

Dans la figure ci-dessus, SVM choisira la ligne rouge comme la meilleure hyperplan séparant les classes bleues et vertes.

Supposons que vous ayez deux types de points dans un plan qui sont linéairement séparables. SVM trouvera une ligne droite qui divise ces points en deux types et est aussi loin que possible de tous que possible. Cette ligne est connue sous le nom d'hyperplane, et elle a été choisie afin que les valeurs aberrantes ne soient pas ignorées et que les points de classes différentes sont aussi éloignés que possible. Si les points ne peuvent pas être séparés, SVM utilise une transformation du noyau pour augmenter les dimensions des points.

L'affaire discutée ci-dessus était assez simple car les données étaient séparables linéairement - comme nous l'avons vu, nous avons pu tracer une ligne droite pour séparer les types de points rouges et bleus.

Et si les données ne sont pas linéairement séparables? Nous ne pourrons pas séparer les classes en dessinant un hyperplan droit. Pour relever ce défi, nous allons ajouter une troisième dimension à l'ensemble de données. Nous avions deux dimensions jusqu'à présent: x et y. Nous créons une nouvelle dimension et mandat qu'il est calculé d'une manière qui nous convient: z = x2 + y2.

Cela créera un espace tridimensionnel à partir des points précédents. Nous pouvons déduire de la figure ci-dessous que, initialement, les points n'étaient pas linéairement séparables, mais après avoir appliqué la fonction du noyau, nous avons facilement séparé les points de données. Il existe de nombreuses fonctions de noyau disponibles que vous pouvez choisir en fonction de votre cas d'utilisation.

Avantages de SVM

  1. Bon pour les données où le nombre de dimensions est supérieur au nombre de points de données.
  2. Bon pour la classification et la régression.
  3. Il est optimisé dans l'espace.
  4. Il gère les valeurs aberrantes.

Inconvénients de SVM

  1. Il est difficile de sélectionner une «bonne» fonction de noyau.
  2. De grands ensembles de données nécessitent un long temps de formation.
  3. Le modèle final est difficile à comprendre et à interpréter, avec des poids variables et un impact individuel.
  4. Nous ne pouvons pas faire de petites étalonnages au modèle car le modèle final n'est pas facilement visible, ce qui rend difficile l'intégration de notre logique commerciale.

Instruction du cours de l'action Prédiction à l'aide de SVM

Des prévisions boursières sont faites en prédisant la valeur future des actions d'une entreprise ou d'un autre instrument financier négocié sur une bourse en utilisant une analyse fondamentale ou technique.

L'avantage de la prédiction boursière est qu'il vous permet d'investir judicieusement et rentable.

La première tâche pour cette implémentation consiste à importer toutes les bibliothèques et modules de notre script. Sklearn sera utilisé pour construire le modèle, les pandas seront utilisés pour gérer les trames de données, et Numpy est pour l'algèbre linéaire. Vous trouverez ci-dessous les importations requises que nous faisons:

de Sklearn.SVM IMPORT SVC
de Sklearn.Métriques Import Précision_SCORE
Importer des pandas en tant que PD
Importer Numpy comme NP

La tâche suivante consiste à lire l'ensemble de données à partir du fichier. Le fichier sera en stockage externe et vous pouvez télécharger l'ensemble de données à partir d'ici.

# Lecture du fichier CSV à partir du stockage externe
df = pd.read_csv ('Reliance.csv ')

Attribuez le DateTime comme index de la trame de données et supprimez la colonne «Date»

# Faire la date de la colonne d'index
df.index = pd.to_datetime (df ['date'])
# Déposez la colonne nommée "Date"
df = df.drop (['date'], axe = 'colonnes')

Attribuer les fonctionnalités d'entrée à une variable

# Créer des variables prédictives
df ['Open-Close'] = DF.Open - DF.Fermer
df ['high-low'] = df.Haut - df.Faible
# Stockez toutes les variables prédictives dans une variable x
X = df [['Open-Close', 'High-Low']]
Imprimer (x.diriger())

Attribuer une colonne cible à une autre variable

# Variables cibles
y = np.où (df ['close'].shift (-1)> df ['close'], 1, 0)
imprimer (y)

Divisez l'ensemble de données en échantillons de train et tester. Les échantillons de train accumuleront le modèle, tandis que les échantillons de test identifieront la précision du modèle.

Split = int (0.9 * Len (DF))
# Ensemble de données de train
X_train = x [: Split]
y_train = y [: split]
# Ensemble de données de test
X_test = x [Split:]
y_test = y [Split:]

Créez le modèle SVM maintenant

# Classificateur de vecteur de support
modèle = svc ().fit (x_train, y_train)

Vous pouvez trouver la précision de ce modèle en utilisant diverses mesures.

Pour prédire le signal du stock, utilisez la méthode ci-dessous.

df ['sig'] = modèle.prédire (x)

Conclusion

Cet article a connu la discussion, les avantages et les cas d'utilisation des machines vectorielles de support. Il s'agit d'un algorithme populaire et économe en espace pour les tâches de classification et de régression, et il utilise des principes géométriques pour résoudre nos problèmes. Plus tard, nous avons également mis en œuvre la prévision de direction du cours de l'action en utilisant l'algorithme SVM. La prévision des cours des actions est extrêmement utile dans le monde des affaires, et lorsque nous utilisons l'automatisation pour cela, cela crée plus de battage médiatique pour ce problème.