domingo, 13 de mayo de 2018

Puntos linealmente separables

Puede descargar el archivo separarPuntos.xlsm

Vamos a generar 1000 puntos en un plano cartesiano unos rojos y otros azules. Las coordenadas de los puntos se generan de forma aleatoria pero lo que diferencia su color es que pueden ser separados por una línea recta.


Disponemos de una macro que genera los puntos y los parámetros de la recta en su forma implícita. La macro se denomina nuevaRecta y se lanza con un botón con el mismo nombre.


La ecuación implícita de la recta es la siguiente.

ω+ ωx+ ωx= 0

De ella despejamos la variable dependiente y obtenemos la ecuación explícita de la recta.

x= - (ω1 /  ω2) x1 - (ω0 / ω2)

Los parámetros que manejaremos para obtener la recta son ω0, ω1, ω2.

La macro que genera los puntos y la recta de forma aleatoria es la siguiente.

 Sub nuevaRecta()  
 Dim i As Integer  
 Dim R1 As Range, R2 As Range  
 Dim A, B  
 Set R1 = Range("B40:B1039")  
 Set R2 = Range("C40:C1039")  
 A = R1  
 B = R2  
 Randomize  
 For i = 1 To 1000  
  A(i, 1) = Rnd() * 10 - 5  
  B(i, 1) = Rnd() * 10 - 5  
 Next i  
 R1 = A  
 R2 = B  
 [C35] = Int(Rnd() * 80 - 40) / 10 'w0  
 [C36] = Int(Rnd() * 80 - 40) / 10 'w1  
 [C37] = Int(Rnd() * 80 - 40) / 10 'w2  
 End Sub  

Esta recta generada de forma aleatoria no separa bien los puntos rojos y azules, por lo que será necesario recurrir a algún procedimiento que nos de una nueva recta que si separe los puntos por colores.

Para conseguir separar los puntos mediante una recta procedemos a calcular en la celda amarilla (Q12) el número de errores cometidos. Cada punto rojo que esté por debajo de la recta y cada punto azul que esté por encima de la recta supondrán un error.


Para conseguir que el número de errores sea cero y que por tanto los puntos rojos queden por encima de la recta y los azules por debajo, recurrimos a una fantástica herramienta de Excel denominada 'Tabla de datos' que podemos encontrar en Datos / Análisis de hipótesis /Tabla de datos.


Lo que hacemos es calcular el error mínimo que se comete según diferentes valores de los parámetros de la recta ω0, ω1, ω2. La macro que se lanza con el botón 'mínimos' realiza la búsqueda de los errores mínimos. Este botón se ha de lanzar varias veces hasta conseguir que el error (celda amarilla) sea cero.

Este es un ejemplo que muestra la potencia de la herramienta Tabla de datos.

Veamos un gif animado donde se generan nuevos puntos y una nueva recta pulsando sobre el botón que llama a la macro nuevaRecta y luego pulsamos reiteradamente sobre el botón mínimos que lanza la macro que va minimizando los errores hasta que el error de la celda amarilla se hace cero. En ese momento tendremos la recta que separa completamente los puntos de colores en el plano.


No hay comentarios:

Publicar un comentario