Staging ::: VER CORREOS
Acceder

Construyamos una red neuronal con Excel

Las redes neuronales suelen usarse mucho para crear inteligencia artificial usando la arquitectura del cerebro.  Con el advenimiento de las AI, los traders podrían empezar a verse desplazados por algoritmos que dan mejores resultados, y quizás por eso es que ya están planeando recortar nóminas bancarias en el área de inversiones.  ¿Acaso el futuro del trader es la AI?

Mucho se habla de las AI (inteligencia artificial) y redes neuronales en trading, y parece un concepto terriblemente incomprensible, y si buscas en Wikipedia (Artificial neural network), realmente no vas a entender muy bien cómo usar una.

Como no me interesa enseñarte a programar, voy a crear una red neuronal muy simplificada.  Los datos que voy a usar son los datos del país de Econolandia que existe en un universo aparte, porque lo que me interesa es explicar el concepto, y no tanto apegarme a situaciones reales.

Diseñando funciones

Lo primero es comprender la neurona. Una neurona es esencialmente una función.  Podemos tener funciones lineales o no lineales.  Por ejemplo:

f(x,y,z) = a * x + b * y + c * z + d

El parámetro d de la función en este caso funciona como el "error" de la función, y no va acompañado de ninguna variable.  En esta red neuronal no voy a usar ningún tipo de error.

En Econolandia, para calcular el precio de un apartamento, usan la siguiente fórmula:

Precio Aprtamento = 2 * Area + 150 * Baños + 100 * Habitaciones + 50 * Edad del inmueble

Pero hay excepciones.  Si el área es mayor de 400 el inmueble debe pagar el precio que se paga por una fábrica, y el precio de la fábrica es:

Precio Fábrica = (2 * Area + 150 * Baños) * 6

Si no es una fábrica, y la edad supera los 50 años, el apartamento se convierte en reliquia histórica y su precio se calcula como:

Precio Edificio historico =  (50 * Edad del inmueble) * 100

Las relaciones que obtenemos son las siguientes:

Construyendo la hoja de Excel

Vamos a usar la celdas de la siguiente manera.  las celdas amarillas contienen datos que ingresaremos manualmente, y las celdas naranja serán fórmulas.  Tenemos 3 capas.  La capa de entrada (input) contiene valores de las variables, que se usan en la capa intermedia (Hidden layer) y finalmente se calcula el precio.

Las formulas para las celdas de color naranja serán las siguientes: 

F4 =+B4*C4+B5*C5

F5 =+B7*C7

F6 =+B4*C4+B5*C5+B6*C6+B7*C7

F8=+IF(B4>400,1,IF(B7>50,2,3))

I4=+IF(F8=1,F4*G4,IF(F8=2,F5*G5,F6*G6))

Como notarás, tomamos unos datos de entrada a la izquierda, para un inmueble con Area 150, 2 baños, 3 habitaciones y 5 años.  Las celdas de la capa intermedia de cálculo (Hidden layer) de la columna F sirven de puente para calcular el precio en la columna I

La celda F8 indica cuál debe ser el precio, y usando ese valor es que la celda de precio escoge la manera de calcular el precio.

Comentarios generales

  • Como ves, los datos de la capa de Input no pasan directamente a la capa de Output, sino que pasa por cálculos intermedios en la capa de Hidden layer.
  • Como puedes ver también, el resultado (Precio) es sensible a cambios en los coeficientes en los distintos niveles.
  • El aprendizaje de la máquina viene a partir de algoritmos para hacer que la red aprenda con datos reales a escoger los coeficientes correctos para la mejor estimación del precio.
  • La parte complicada no es construir la red de neuronas (aunque si puede requerir de bastante pensamiento del diseñador) sino diseñar los algoritmos para que la neurona aprenda a ajustar coeficientes con datos reales.
  • Para el país de Econolandia, esta red neuronal escoge y calcula "inteligentemente" el precio de inmuebles, usando criterios que sirvieron para construir la red neuronal.

¿Que especificaciones debe tener una red neuronal genérica?

Si vas a programar redes neuronales genéricas necesitas algunas cosas básicas.  Al hablar de "función" en este apartado no me voy a referir a una función matemática, sino a una capacidad funcional del programa.  Esta es la lista de especificaciones generales de una red genérica básica.

  • Una función básica que reciba datos de entrada y salida para "entrenar" (calcular o iterar) los coeficientes hasta llegar al mejor valor.
  • Debes especificar como entrada, la cantidad de hidden layers en tu red.
  • Deberías dibujar una gráfica de input y output para observar patrones que te ayuden mejor a diseñar.
  • Debe haber una función que acepte nuevos datos.
  • Un algoritmo base (default) debe emplearse con un error bajo.
  • La función debe aceptar series de datos en el tiempo si alterar mucho su arquitectura.
  • Debe haber formas alternativas de calcular error o de extender las funciones.
  • Debe poder hacer cálculos de redes de Hopfield y self organizing maps u otro tipo de red.

Comentarios finales

Yo se que si no eras programador te vas a perder en el apartado anterior, pero no te preocupes, que ya entendiendo cómo construir la red en Excel tienes lo necesario para que al aprender a programar puedas armar lo necesario para tu red neuronal.

Miras que al tener varias capas apiladas de funciones puedes obtener resultados muy complicados de calcular de otra manera, pero a partir de premisas y datos simples.  Los resultados no siempre serán intuitivos, y allí radica lo bueno y lo malo.  porque si el resultado es correct, excelente, pero si el resultado es malo es que hay que revisar las premisas o ajustar coeficientes.

Lo de entrenar neuronas es en realidad ajustar coeficientes, con los datos que tenías, y ajustarlos con los datos nuevos.  Y allí todo es un juego estadístico, donde puede que no escojas la curva de mejor ajuste para los datos, o puede que sí.

Si tienes una función f(x,y) = a * x + b * y + z una buena manera de ajustar el coeficiente a es tomar el resultado de f(x,y) para un valor y dado.  Y luego puedes calcular el coeficiente b al usar f(x,y) con un valor de x dado.  Entonces tienes dos análisis:

  • x contra f(x,y)
  • y contra f(x,y)

Como puedes ver, si tienes f(x,y) en realidad tienes una función que puedes representar en 3 dimensiones x, y y f(X,y), y lo que estás haciendo es una vista en corte de la gráfica en cada plano cartesiano de la figura tridimensional, en cada análisis.  La complicación de tratar de dibujar todo a la vez viene si la función tiene 4 o más dimensiones.

¿No entendiste?  No importa.  Al final lo que se necesita es que ajustes coeficientes para obtener mejores resultados.  Ya se te ocurrirá cómo.  

Y si por el contrario, lo ves muy claro, ¿has trabajado alguna vez ajustando coeficientes?  ¿Cuál es tu forma favorita de ajustarlos?  Aquí le puedes contar al resto de los rankianos.

3
¿Te ha gustado el artículo?

Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico.

  1. Nuevo
    #3
    30/08/24 17:51
    No obstante, lo que expresas de la celda F8 se presta a confusión. Lo que realmente hace esta celda es IDENTIFICAR el tipo de inmueble según las condiciones del enunciado.
    He replicado el mismo ejercicio dándole un enfoque mas simple, manteniendo el identificador F8 como lo propones, y es aquí la verdadera implementación "inteligente", actuando esta celda como función activadora.
    Sin embargo, es un enfoque interesante desde el punto de vista de Red Neuronal. Para que fuera realmente una, se le debía haber dado mas información a los índices, los cuales constituirían realmente los pesos en la función.
  2. en respuesta a Donizt
    -
    Top 100
    #2
    09/06/16 15:18

    Exacto. Acabas de hablar como todo un experto en inteligencia artificial.
    Como puedes ver, realmente la magia de las redes neuronales consiste en hacer exactamente eso que dices.
    La buena noticia es que puedes construir redes neuronales sencillas en Excel.
    Si miras mi post...

    ¿Pueden las máquinas ser inteligentes?
    https://www.rankia.com/blog/comstar/3228812-pueden-maquinas-ser-inteligentes

    ...ahora ya sabrás interpretar mejor como construyen los grandes avances en inteligencia artificial.

    La inteligencia artificial no es tan dificil de entender. Lo que es dificil es implementar. Por ejemplo, en el caso de Econolandia en este post, lo dificil es construir las fórmulas de Excel, y luego la hoja de Excel para trabajar los coeficientes.

    Y en grandes proyectos hay capas y capas de neuronas. Y eso hace en cualquier equivocación en el camino se convierta en una inteligencia diseñada para fallar.

    Puedes pensar que se trata de un sistema de ecuaciones. Lo que pasa es que a veces, como en el caso del precio en este ejemplo, hay una neurona que escoge cual resultado tomar (fábrica, apartamento, edificio historico) y eso hace que la sustitucion normal de un sistema de ecuaciones no funcione. Cada neurona tiene un algoritmo sencillo, que al actuar en conjunto cambia todo. Y esa es la magia de las neuronas. Funcionan más allá de la función normal, y pueden dar resultados no lineales y hacer cosas que un sistema de ecuaciones no hace.

    Si algo cambia, tienes que ver cuales neuronas deben ser reemplazadas, o si se debe agregar nuevas capas de neuronas y reconectarlas de modo diferente. Y eso lo cambia todo.

  3. #1
    09/06/16 15:07

    La gracia de la red seria que se ajustaran los coeficientes según introdujeran datos reales de precio y de inputs y que el sistema estimara los coeficientes correctos. A mas datos coeficientes mas reales.

    No soy un experto ni nada si, no llego ni al nivel de aficioado pero no me parece una red neuronal, mas bien un sistema de varias ecuaciones la gracia de las redes neuronales son el autoaprendizaje.