Cómo predecir el precio de las acciones usando SVM

Cómo predecir el precio de las acciones usando SVM
El aprendizaje automático es una aplicación de inteligencia artificial que está mejorando la forma en que funciona el mundo en cada dominio. En su núcleo, es un algoritmo o modelo que observa patrones en un conjunto de datos determinado y luego predice los patrones aprendidos en los datos generales. En términos de laicos, es la idea de que las máquinas aprendan un patrón y se adaptan a través de la experiencia para tomar decisiones precisas y repetibles. La máquina de soporte vectorial es un algoritmo ML popular que utilizaremos hoy para predecir los precios de las acciones. Hay varias ventajas en este modelo, que discutiremos y caminaremos a través de la implementación del enfoque.

¿Qué es un hiperplano??

Un hiperplano en el espacio n-dimensional es un subespacio dimensional (N-1); Si el espacio es tridimensional, entonces sus hiperplanos son los planos bidimensionales. Un espacio n-dimensional siempre es abarcado por un conjunto de n vectores linealmente independientes, y siempre es posible encontrar n vectores mutuamente ortogonales que abarquen el espacio. Que puede o no estar en la definición de un espacio vectorial de dimensión finita, pero es un hecho para el cual se puede encontrar una prueba en casi cualquier libro de texto de álgebra de pregrado.

Como resultado, un hiperplano en el espacio n es abarcado por vectores N-1 linealmente independientes y tiene un enésimo vector (no en el plano) ortogonal a él.

¿Qué es una máquina vectorial de soporte??

La máquina vectorial de soporte (SVM) es un algoritmo de clasificación binaria de aprendizaje automático supervisado. Dado un conjunto de dos tipos de puntos en las n dimensiones, SVM genera un hiperplano dimensional (N-1) para dividir esos puntos en dos grupos como se muestra a continuación:

En la figura anterior, SVM elegirá la línea roja como el mejor hiperplano que separa las clases azules y verdes.

Supongamos que tiene dos tipos de puntos en un plano que son linealmente separables. SVM encontrará una línea recta que divide esos puntos en dos tipos y está lo más lejos posible de todos ellos. Esta línea se conoce como hiperplano, y se eligió para que los valores atípicos no se ignoren, y los puntos de diferentes clases están lo más separados posible. Si los puntos no se pueden separar, SVM usa una transformación del núcleo para aumentar las dimensiones de los puntos.

El caso discutido anteriormente fue bastante sencillo porque los datos eran separables linealmente; como vimos, podríamos dibujar una línea recta para separar los tipos de puntos rojos y azules.

¿Qué pasa si los datos no son linealmente separables?? No podremos separar las clases dibujando un hiperplano recto. Para abordar este desafío, vamos a agregar una tercera dimensión al conjunto de datos. Teníamos dos dimensiones hasta ahora: x e y. Creamos una nueva dimensión y un mandato que se calcula de una manera que sea conveniente para nosotros: z = x2 + y2.

Esto creará un espacio tridimensional desde los puntos anteriores. Podemos inferir de la siguiente figura que inicialmente, los puntos no eran linealmente separables, pero después de aplicar la función del núcleo, separamos fácilmente los puntos de datos. Hay muchas funciones de kernel disponibles que puede elegir de acuerdo con su caso de uso.

Ventajas de SVM

  1. Bueno para datos donde el número de dimensiones es más que el número de puntos de datos.
  2. Bueno para la clasificación y la regresión.
  3. Está optimizado en el espacio.
  4. Maneja atípicos.

Desventajas de SVM

  1. Es difícil seleccionar una función de núcleo "buena".
  2. Los grandes conjuntos de datos requieren un largo tiempo de entrenamiento.
  3. El modelo final es difícil de entender e interpretar, con pesos variables e impacto individual.
  4. No podemos hacer pequeñas calibraciones al modelo porque el modelo final no es fácilmente visible, lo que dificulta la incorporación de nuestra lógica comercial.

Predicción del precio del precio de las acciones utilizando SVM

Las predicciones del mercado de valores se realizan mediante la predicción del valor futuro de las acciones de una empresa u otro instrumento financiero negociado en un intercambio utilizando análisis fundamental o técnico.

El beneficio de la predicción del mercado de valores es que le permite invertir sabia y de manera rentable.

La primera tarea para esta implementación es importar todas las bibliotecas y módulos en nuestro script. Sklearn se utilizará para construir el modelo, los pandas se utilizarán para manejar los marcos de datos y Numpy es para álgebra lineal. A continuación se presentan las importaciones requeridas que hacemos:

de Sklearn.SVM import svc
de Sklearn.Métricas de importación precisión_score
importar pandas como PD
importar numpy como np

La siguiente tarea es leer el conjunto de datos desde el archivo. El archivo estará en almacenamiento externo y puede descargar el conjunto de datos desde aquí.

# Leer el archivo CSV desde el almacenamiento externo
DF = PD.read_csv ('Reliance.CSV ')

Asigne el DateTime como el índice del marco de datos y suelte la columna "Fecha"

# Hacer fecha como columna de índice
df.índice = PD.to_dateTime (df ['date'])
# solte la columna llamada "fecha"
DF = DF.drop (['date'], axis = 'columnas')

Asigne las características de entrada a una variable

# Crear variables predictoras
DF ['Open-Close'] = DF.Abierto - DF.Cerca
DF ['High-Low'] = DF.Alto - df.Bajo
# Almacenar todas las variables predictoras en una variable x
X = df [['Open-Close', 'alto-bajo']]
Imprimir (x.cabeza())

Asignar columna de destino a otra variable

# Variables objetivo
y = NP.Donde (DF ['Cerrar'].Shift (-1)> df ['Close'], 1, 0)
Imprimir (y)

Dividir el conjunto de datos en muestras de tren y prueba. Las muestras de tren acumularán el modelo, mientras que las muestras de prueba identificarán la precisión del modelo.

Split = int (0.9*Len (DF))
# Conjunto de datos del tren
X_train = x [: dividir]
y_train = y [: Split]
# Conjunto de datos de prueba
X_test = x [Split:]
y_test = y [Split:]

Crea el modelo SVM ahora

# Clasificador de vectores de soporte
modelo = svc ().Fit (x_train, y_train)

Puede encontrar la precisión de este modelo utilizando varias métricas.

Para predecir la señal del stock, use el siguiente método.

DF ['SIG'] = Modelo.Predecir (x)

Conclusión

Este artículo pasó por la discusión, ventajas y casos de uso de máquinas de vectores de soporte. Es un algoritmo popular y eficiente en el espacio para tareas de clasificación y regresión, y utiliza principios geométricos para resolver nuestros problemas. Más tarde, también implementamos la predicción de la dirección del precio de las acciones utilizando el algoritmo SVM. La predicción del precio de las acciones es extremadamente útil en el mundo de los negocios, y cuando empleamos la automatización para esto, crea más exageración para este problema.