Mínimos cuadrados en forma matricial

Autor: | Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

Los mínimos cuadrados son valores que nos ayudan a elegir valores de w que minimizan la suma de errores al cuadrado. En este artículo, veremos cómo se manejan los mínimos cuadrados en forma matricial.

Mínimos cuadrados en forma matricial

Existen dos formas para la ecuación:

Mínimos cuadrados en forma matricial

Si desarrollamos dicha fórmula podemos llegar a la ecuación de mínimos cuadrados en forma matricial:

XT XW’ = XT y

O lo que es lo mismo:

W’ = (XT X)-1 XT y

Donde la matriz X viene definida como:

Mínimos cuadrados en forma matricial

Se le añade un 1 a cada fila de la matriz por convención y por la componente w0 de la ecuación — Indicado por Rd+1

¿Por qué n > d?

La expresión n > d indica que el número de observaciones debe ser mayor que el número de dimensiones. Veamos un ejemplo para entenderlo mejor:

#Mínimos cuadrados en forma matricial
import pandas as pd

data = [['Teresa', 8.7, 7], ['Alex',m 6.7, 8], ['Sara', 9, 9.1], ['Pepe', 7, 5.1]]
df
NameMedia bachiller – GradeMedia selectividad – Test
0Teresa8.77.0
1Alex6.78.0
2Sara9.09.1
3Pepe7.05.1

El número n es el número de observaciones y el número d son las dimensiones. Es decir, si en nuestro problema tenemos 3 personas a estudiar y vamos a analizar la influencia de media de bachiller y de su media en selectividad, tendremos que:

  • Número de observaciones n: personas.
  • Número de dimensiones d: variables (Media bachiller, Media selectividad).
NameMedia bachiller – GradeMedia selectividad – Test
0Teresa8.77.0
1Alex6.78.0
2Sara9.09.1
3Pepe7.05.1

En el caso de que n < d + 1 no podríamos aplicar mínimos cuadrados en forma matricial, ya que (XT X)-1 no existiría y habría un número infinito de soluciones.

Ejercicio sobre mínimos cuadrados en forma matricial

Calcula (XT X)-1:

Mínimos cuadrados en forma matricial

Primero importaremos la librería Numpy:

#Mínimos cuadrados en forma matricial
import numpy as np

x = np.array ([[1,  8.7,  7],
                         [1,  6.7,  8],
                         [1,  9,  9.1],
                         [1,  7,  5.1]])

print (X)

[[1, 8.7, 7],

[1, 6.7, 8],

[1, 9, 9.1],

[1, 7, 5.1]]

#Mínimos cuadrados en forma matricial
X_Y = np.transpose (X)
X_t

array (

[[1. , 1. , 1. , 1.],

[8.7 , 6.7 , 9. , 7.],

[7. , 8. , 9.1 , 5.1]])

#Mínimos cuadrados en forma matricial
prod = np.dot (X_t, X)

inv_prod = np.linalg.inv (prod)
print (inv_prod)

[[15.79028203 -1.73113364 -0.26724424]

[-1.73113364 0.31926267 -0.10617512]

[-0.26724424 -0.10617512 0.150783641]]

Calcula (XT X)-1

Mínimos cuadrados en forma matricial
#Mínimos cuadrados en forma matricial
import numpy as np

x = np.array ([[1,  8.7,  7],
                         [1,  6.7,  8]])

print (X)

[[1, 8.7, 7],

[1, 6.7, 8]

#Mínimos cuadrados en forma matricial
X_Y = np.transpose (X)
X_t

array (

[[1. , 1.],

[8.7 , 6.7]])

#Mínimos cuadrados en forma matricial
prod = np.dot (X_t, X)
print (prod)

[[2. 15.4 16.]

[15.4 120.58 123.2]

[16. 123.2 128. ]]

Si intentamos calcular la inversa de esto…

#Mínimos cuadrados en forma matricial
inv_prod = np.linalg.inv (prod)
print (inv_prod)
Mínimos cuadrados en forma matricial

Nos da un error, ya que dice que es una matriz singular. Eso sucede porque el número de filas es menor que el número de columnas.

La filosofía detrás de los mínimos cuadrados

¿Recuerdas cómo funcionan los sistemas de ecuaciones?

#Mínimos cuadrados en forma matricial

Cuando un sistema es incompatible significa que tiene infinitas soluciones, pero hay una forma de encontrar una solución aproximada y aquí es donde entran en juego los mínimos cuadrados.

Supongamos que tratamos de resolver un sistema de la forma Ax = b y que no existe solución para este sistema. En este caso, puede ser interesante estudiar para qué vector o vectores x’, Ax ≈ b, tratamos de buscar una solución aproximada del sistema.

Una forma de interpretar esta aproximación es la siguiente: si Ax ≈ b, entonces podemos intentar encontrar x, tal que kAx – bk sea lo menor posible. Es decir, tratamos de resolver el problema minx ||Ax – b||.

Si el sistema tiene solución, el mínimo del problema anterior es cero, y, por tanto, Ax = b; pero si no hay solución, tiene sentido buscar el vector x que haga menor esa norma y, por tanto, que más se parece a una solución.

Al final, al igual que hemos hecho antes, desarrollamos dicha expresión, se llega a la conclusión de que se trata de resolver el sisterna:

AT Ax’ = AT b

¿Cómo avanzar?

Para poder acceder a mejores opciones laborales, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación en la que adquirirás todos los conocimientos que te permitirán obtener el trabajo de tus sueños en pocos meses. ¡No esperes más para impulsar tu carrera y solicita información ahora!

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado