No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende Inglés, Programación, AI, Ciberseguridad y más a precio especial.

Antes: $249

Currency
$209
Suscríbete

Termina en:

2 Días
20 Hrs
40 Min
42 Seg

¿Cómo se calcula un error?

17/18
Recursos

Aportes 36

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para el que tenga curiosidad le comparto un Jupiter notebook donde hice el grafico y el error cuadrático medio.

Nota: esta hecho sin NumPy para que sea más ilustrativo además sino hubiese salido en un par de líneas de código xd

ECM: El error cuadrático medio (mean squared error) mide el promedio de los errores elevados al cuadrado. Es útil para validar que tan precisa es la predicción obtenida (desempeño del modelo).

bueno, pero que paso? no solucionó la ecuación al modo, solo puso las formulas y ya, creo que no demoraba ni unos 5 minutos en eso.

¿Por qué elevamos al cuadrado y no usamos la función de valor absoluto?
.
Nuestra regresión lineal casi siempre tendrá un grado de error (Es un modelo que, al final, simplifica un montón de variables de la vida real) por lo tanto es mejor penalizar los errores más grandes y “perdonar” los más pequeños.
.
¿Cómo hacer esto?
.
La función cuadrática es genial para este próposito: Al final un error decimal (Ponle 1/10) usando la función retornará un error más pequeño (1/100) mientras que un error con números enteros (5 ponle) te retorna un error más grande (25). De ahí que esta función sea perfecta para lo que buscamos.
.
El método de manejo de errores del profesor se llama mínimos cuadrados ordinarios (Cuando lo extendemos a encontrar su derivada = 0). El cual sirve como referencia de por qué preferimos usar GPUs over CPUs en machine learning (Pista: Tiene que ver con matrices y videojuegos)
.
Aquí un video de Dot CSV que lo explica visualmente:
https://youtu.be/k964_uNn3l0

Graficando y resolviendo el ECM del ejemplo:

x= np.array([1.2,2,3.2,2.5,5,6,4,8])
y= np.array([2,3,3.4,3.1,4,4.7,3.8,7])


fig, ax = plt.subplots()
plt.scatter(x,y, color = 'blue', alpha=0.6)

#Vamos agregarle a nuestra x el término independiente de 1s
#Vamos a crear una nueva matriz creada por x, con la cantidad de filas de la matriz x
X= np.array([np.ones(8),x]).T
Y =  y

# @ se usa para multiplicar matrices
B = np.linalg.inv(X.T @ X )  @ X.T @ Y
ax.plot([1,8],[B[0]+B[1]*1,B[0]+B[1]*8], c="red")
plt.title('Regresión Lineal')
ax.set_xlabel('x',fontsize=16)
ax.set_ylabel('y',fontsize=16)
plt.show()

Nuestra matriz de resultado debería de tener por lo menos dos elementos:

  1. elemento independiente de nuestra línea, que representa el punto del Y que se corta cuando X=0.
  2. la pendiente que nos indica que cada incremento en la publicidad tenemos un incremento en la venta.
ax.plot([1,8],[B[0]+B[1]*1,B[0]+B[1]*8], c="red")

El primer punto (1,8) lo definimos nosotros y el segundo término B[0] es el término independiente +B[1] todo multiplicado por el valore de x que seleccionamos que en este caso es 1.
Igual para el segundo.

Aunque lo normal es aplicar directamente la regresión lineal con una librería.

Una clase maravillosa que no hace otra cosa que abrir la cabeza a diferentes posibilidades y oportunidades.

Les recomiendo estos videos:
-Regresión Lineal y Mínimos Cuadrados Ordinarios | DotCSV
https://youtu.be/k964_uNn3l0

-IA NOTEBOOK #1 | Regresión Lineal y Mínimos Cuadrados Ordinarios | Programando IA
https://youtu.be/w2RJ1D6kz-o

Les comparto la comparación entre una regresión lineal simple y una regresión polinomial de grado 3.

Cómo podemos ver el polinomio de grado 3 se ajusta mejor a los datos, pero debemos tener cuidado en no caer en un overfiting.

con esta grafica podemos observas un poco mas alla para interpretar un error y saber si somos precisos o si somos exactos

saludos

Creo que hay un error en el examen final. Uno de los cuestionamientos es que si las variables discretas pueden formar un conjunto infinito y la respuesta es si. Sin embargo, la respuesta que se da por válida es la contraria.
.
Los números naturales son un conjunto discreto e infinito.
.
Lo que es efectivamente falso, es que entre dos valores cualesquiera de una variable discreta no puede existir un número infinito de otros valores.

Esa fórmula y concepto lo conozco desde años, pero primera vez que logro ver y entender su razonamiento detrás, haciéndolo poder memorizarlo pues es más fácil entendiendo lo gráficamente.

"Va a ser positivo, pero se va a duplicar"
Es incorrecto decir que se va a duplicar, tal vez se le fue la liebre, más al ver el 2 como exponente. El error es una distancia, una longitud, como lo puden ver ahí; el error al cuadrado gráficamente sería el área de un cuadradado. El error cuadrático medio que busca elaborar aquí es una sumatoria de todos esos cuadrados, más grandes, más pequeños, pero son cuadrados al fin y al cabo, luego divididos por la cantidad de cuadrados que hay (n) y luego la raíz cuadrada, que lo vuelve a convertir en lo que era: una longitud.

Las funciones de coste son una parte importante en el aprendizaje automático y el proceso de entrenamiento de un modelo. Se utilizan para evaluar el rendimiento de un modelo en términos de su capacidad para realizar una tarea específica, como la predicción de un valor dado o la clasificación de un conjunto de datos.

Hay muchas funciones de coste diferentes que se pueden utilizar en el aprendizaje automático, y la elección de la adecuada depende del tipo de problema que se esté tratando y del tipo de modelo que se esté utilizando. Algunas de las funciones de coste más comunes son:

Error cuadrático medio (MSE, por sus siglas en inglés): Esta función de coste mide la diferencia entre los valores pronosticados por el modelo y los valores reales. Se calcula como la media del cuadrado de la diferencia entre los valores pronosticados y los reales. Es comúnmente utilizada en problemas de regresión.

Entropía cruzada: Esta función de coste se utiliza a menudo en problemas de clasificación. Mide la diferencia entre las probabilidades predicadas por el modelo y las probabilidades reales.

Logaritmo de verosimilitud: Esta función de coste también se utiliza a menudo en problemas de clasificación. Mide la probabilidad de que el modelo genere los datos que se le proporcionaron durante el entrenamiento.

Hinge loss: Esta función de coste se utiliza a menudo en problemas de clasificación binaria y en modelos de aprendizaje por refuerzo. Mide la diferencia entre la predicción del modelo y el valor real.

Es importante tener en cuenta que, aunque estas son algunas de las funciones de coste más comunes, hay muchas otras disponibles y que pueden ser adecuadas para diferentes problemas y modelos.

Aquí el código para obtener el modelo de Regresión Lineal y cómo graifcarlo:

# Importando las librerías
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Colocando nuestros datos en forma de array
x = np.array([1.2, 2, 3.2, 2.5, 5, 6, 4, 8])
y = np.array([2, 3, 3.4, 3.1, 4, 4.7, 3.8, 7])

# Cargando el modelo de Regresión Lineal
model = LinearRegression()

# Es necesario hacer un reshape, porque nuestros datos (x) consisten en varias muestras con una sola característica
model.fit(x.reshape(-1, 1), y)

# Hacemos un nuevo array x_hat y y_hat que nos permitirá graficar los puntos de la recta
x_hat = np.linspace(1.2, 8, 1000)
y_hat = model.predict(x_hat.reshape(-1, 1))

# Graficando los datos y el modelo obtenido

plt.scatter(x,y)
plt.plot(x_hat, y_hat, '--', color = 'r')
plt.grid(linewidth = .6)
plt.ylabel('Ingresos')
plt.xlabel('Publicidad')
plt.legend(['Modelo de RL', 'Datos reales'])
plt.show()

Esta clase es un espectáculo, de verdad, son las matemáticas aplicadas a casos reales, me ha encantado

Las funciones de errores tambien se conocen como funcion de coste

El error se calcula como la diferencia entre el valor real y el valor previsto por un modelo. En un sentido más general, el error mide la precisión de un modelo en la predicción de datos.

Hay muchas formas de calcular el error, dependiendo del tipo de problema y de la métrica de precisión que se desee utilizar. Aquí hay algunos ejemplos comunes de cálculo de error:

  • Error cuadrático medio (MSE): Este es el promedio de la suma de los errores cuadrados entre el valor real y el valor previsto, y se utiliza comúnmente en problemas de regresión.

  • Error absoluto medio (MAE): Este es el promedio de la suma de los errores absolutos entre el valor real y el valor previsto, y se utiliza comúnmente en problemas de regresión.

Exactitud: Este es el porcentaje de predicciones correctas que hace un modelo en un problema de clasificación.
En cualquier caso, el objetivo es minimizar el error para mejorar la precisión del modelo.

Resolucion con Numpy

Calcular R.Lineal

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

x = np.array([1.2, 2, 3.2, 2.5, 5, 6, 4, 8])
y = np.array([2, 3, 3.4, 3.1, 4, 4.7, 3.8, 7])
n = len(x)

xy = np.sum((x*y),axis=0)

x_2 = np.sum((x**2), axis=0)

sum_x = np.sum(x, axis=0)
sum_y = np.sum(y, axis=0)


def m():
    numerador = (n*xy) - (sum_x * sum_y)
    denominador = (n*x_2) - (sum_x**2)
    return np.divide(numerador,denominador)
m = m()

def b():
    numerador = sum_y - (m * sum_x)
    denominador = n
    return np.divide(numerador, denominador)
b = b()

def f():
    return (m*x)+b

y_prima = f()
# Estos es para ver los resultados noams xD
df = pd.DataFrame.from_dict({
    "xy"      :xy,
    "x_2"     :x_2,
    "sum_x"   :sum_x,
    "sum_y"   :sum_y,
    "m"       :m,
    "b"       :b,
    "y_prima" :y_prima,
},)
df.head(1)

Graficar

plt.scatter(x,y)
plt.plot(x,y_prima, '--')

plt.xlabel('x1000\npublicidad')
plt.ylabel('ganancias')

plt.grid()

plt.xlim(0,10)
plt.ylim(0,10)

Error Cuadratico Medio

sum_y_prima = np.sum(y_prima, axis=0)

def MSE():
    return (1/n) * np.sum((y - y_prima)**2, axis=0)
mse = MSE()

print(f"""
mse {mse}
""")

pero y cuando se aplica la teoria practicamente? nunca vimos como calcular la linea de prediccion o cuales son los resultados del error de dicha linea. Para mi esta como clase incompleta. Para la gente que tiene un background de matematicas fuerte es muy simple e intuitivo o incluso les puede resultar muy basico la clase. Pero para los que nuestro conocimientos matematicos son basicos a mi no me resulve la pregunta del titulo de la clase de ‘¿Como se calcula un error?’

Calcular el error en regresión lineal 💚📝:



Aquí medimos que tan lejos estamos de los datos independientes observables de la predicción del modelo, la diferencia entre estas dos variables será el error. Como puedes ver en el siguiente gráfico, el valor independiente observable se encuentra en 30 en el eje Y, mientras que el valor predicho se encuentra en 25, a esa diferencia la conocemos como el error.



Entonces la función para calcular el error será la predicción menos los datos reales.

	  error = ȳ - Y

Pero esta función está incompleta y por si sola no es precisa porque para que funcione correctamente necesitamos pasarle número positivos, por lo que se le agrega el valor absoluto, formula que sirve para volver un valor negativo a positivo:

	 | error | = ( ȳ - Y)

Otra forma de conseguir esto es elevando la función al cuadrado, como es obvio siempre te va a regresar un valor positivo.

	error^2 = (ȳ -Y)^2

Por lo tanto si nosotros envelaremos al cuadrado el error este se duplica dentro de la gráfica, y mientras más grande sea el error más impacto va a tener porque el error será muy grande, si es muy muy pequeño el error apenas habrá una diferencia en comparación con los errores más grandes.

Pero no nos interesa saber el error de solo un punto, así que para calcular el error total en todos los valores que tengamos de forma total usaremos:

	 Error Total = Σ(yi - ŷ)^2

Pero para calcular el Error Cuadrático Medio de todos los puntos usaremos:

	ECM = (1/n) * Σ(yi - ȳ)^2
  • Nota: creo que la importante aquí es la ECM, ten esa en cuenta

Excelente explicación de regresión lineal:
https://www.youtube.com/watch?v=EE2a2Cr-JfY

Cálculo de errores: error absoluto, error relativo.

  • Bien sea una medida directa (la que da el aparato) o indirecta (utilizando una fórmula) existe un tratamiento de los errores de medida. Podemos distinguir dos tipos de errores que se utilizan en los cálculos:

  • Error absoluto. Es la diferencia entre el valor de la medida y el valor tomado como exacto. Puede ser positivo o negativo, según si la medida es superior al valor real o inferior (la resta sale positiva o negativa). Tiene unidades, las mismas que las de la medida.

  • Error relativo. Es el cociente (la división) entre el error absoluto y el valor exacto. Si se multiplica por 100 se obtiene el tanto por ciento (%) de error. Al igual que el error absoluto puede ser positivo o negativo (según lo sea el error absoluto) porque puede ser por exceso o por defecto. no tiene unidades.

Efectivamente, explica muy bien los términos fáciles y también los más complejos. Hace fácil lo difícil.

La mejor clase de entre todas.

Interesante el uso de calculo de errores lineales. Si que hay mucho por aprender. Lo bueno es que es entretenido e interesante.

Otras funciones que siempre te da positivo: * Elevar al cuadrado y sacar raiz * (ŷ - y) \* sig(ŷ-y)
\# Regresión Lineal Recordando que:$f(x) = mx + b$ donde: $m,b\in R$ $m = \frac{n\sum{xy} - (\sum{x})(\sum{y}))}{n\sum{x^2}-(\sum{x})^2}$ $b = \frac{\sum{y} - m(\sum{x})}{n}$ import numpy as np import matplotlib.pyplot as plt x = np.array(\[1.2, 2,3.2,2.5,5,6,4,8])y = np.array(\[2,3,3.4,3.1,4,4.7,3.8,7]) \# Declaramos nuestras funcionesn = len(x)m = lambda x,y,n: (n\*np.dot(x,y) - sum(x)\*sum(y))/(n\*sum(np.power(x,2))-(sum(x)\*\*2))b = lambda x,y,m,n: (sum(y) - m\*sum(x))/nf = lambda x,m,b: m\*x + bMSE = lambda y,yy,n: (1/n)\*sum((y-yy)\*\*2) \# Obtenemos los valores deseadosm = m(x,y,n)b = b(x,y,m,n)yy = f(x,m,b)MSE = MSE(y,yy,n) \# Graficamosfig,ax = plt.subplots()ax.scatter(x,y,c="r",label='y')ax.plot(x,yy,"b",label='y\\'=mx+b')ax.set\_title("Regresión Lineal")ax.set\_xlabel("Meses")ax.set\_ylabel("Ventas")ax.legend(loc="lower right")ax.grid()plt.show() print("Original: {}, New: {}".format(y,yy))print("Mean Squared Error: {}".format(round(MSE,2))) ![](https://static.platzi.com/media/user_upload/image-274a6086-3a5c-400a-a3fa-76494cf541f1.jpg)

Resolución de Regresión Lineal con Numpy

x = np.array([1.2,2,3.2,2.5,5,6,4,8])  #Gastos en publicidad 
y= np.array([2,3,3.4,3.1,4,4.7,3.8,7])  #Ingreso en ventas

Para calcular la regresión lienal utilice las siguientes formulas:

Y = ax + b
a = (Σ(xi - xmedia) ((yi - ymedia)) /Σ(xi - xmedia)**2
b = ymedia - a(xmedia)

Cálculo de formulas en Numpy:

x_mean = np.mean(x)
y_mean = np.mean(y)

a =(np.sum(np.subtract(x, x_mean)*(np.subtract(y, y_mean))))/(np.sum(np.subtract(x, x_mean)**2))

b = y_mean - a *x_mean

Y = np.add(np.multiply(x, a), b)

Graficando “x” , “y” y la regresió lineal.

fig, ax = plt.subplots()
plt.scatter(x,y, color = 'lightcoral', alpha=0.6)
ax.plot(x,Y)
ax.set_xlabel('x',fontsize=16)
ax.set_ylabel('y',fontsize=16)
plt.show()

Calculando el error:

ECM = 1/N Σ(Y - y)**2

N = 8
E= np.sum(np.power(np.subtract(f, y), 2))/N
E

0.125378634153168
Solo en las ilustraciones hay un error la línea que une 'y_i' y la imagen de la función 'y', no es perpendicular dado el error=y-y_i.

Buena explicacion, gracias.

Información resumida de esta clase
#EstudiantesDePlatzi

  • La diferencia entre los datos de mi modelo predictivo y los datos reales se les conoce como error

  • Para tener valores positivos utilizamos el valor absoluto

  • También podemos usar la potencia al cuadrado para tener siempre valores positivos, pero este método puede castigar nuestro modelo

  • El error total está denotado por un E

  • El ECM Error Cuadrático Medio es la sumatoria de los errores dividiéndolos en nuestra cantidad de datos

  • Esta es la función que usaremos para medir nuestro el error del modelo

  • Las funciones de coste son las que nos indican que tanto nos equivocamos

Curso básico bastante práctico y útil.

Buena explicación, mas hace falta hacerlo en un júpiter, para establecer el Bias, explicar el error y verlo desde la matemática y luego aplicar la librería de numpy

Excelente explicación.

Excelente explicación.