Saltar al contenido

Python sci-kit learn (métricas): ¿diferencia entre r2_score y added_variance_score?

Este team de especialistas luego de muchos días de investigación y de juntar de información, obtuvieron la solución, deseamos que te sea útil para tu plan.

Solución:

La mayoría de las respuestas que encontré (incluso aquí) enfatizan la diferencia entre R2 y puntuación de varianza explicada, es decir: El residuo medio (es decir, el medio de error).

Sin embargo, queda una pregunta importante, que es: ¿Por qué diablos necesito considerar el medio del error?


Refresco:

R2: es el Coeficiente de determinación que mide la cantidad de variación explicada por la regresión lineal (de mínimos cuadrados).

Puede verlo desde un ángulo diferente con el propósito de evaluar el valores predichos de y Me gusta esto:

Diferenciareal_y × R2real_y = Diferenciapredicho_y

Así que intuitivamente, cuanto más R2 está más cerca de 1más real_y y predicted_y tendrán mismo varianza (es decir, la misma propagación)


Como se mencionó anteriormente, la principal diferencia es la Medio de error; y si miramos las fórmulas, encontramos que eso es true:

R2 = 1 - [(Sum of Squared Residuals / n) / Variancey_actual]

Explained Variance Score = 1 - [Variance(Ypredicted - Yactual) / Variancey_actual]

en el cual:

Variance(Ypredicted - Yactual) = (Sum of Squared Residuals - Mean Error) / n 

Entonces, obviamente, la única diferencia es que estamos restando el error medio de la primera fórmula! … ¿Pero por qué?


Cuando comparamos el R2 Puntaje con el Puntuación de varianza explicadabásicamente estamos comprobando el error medio; entonces si R2 = Puntuación de varianza explicada, que significa: El error medio = Cero!

El Error Medio refleja la tendencia de nuestro estimador, es decir: el Estimación sesgada vs imparcial.


En resumen:

Si desea tener un estimador imparcial para que nuestro modelo no subestime o sobreestime, puede considerar tomar Medio de error en cuenta.

Bien, mira este ejemplo:

In [123]:
#data
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print metrics.explained_variance_score(y_true, y_pred)
print metrics.r2_score(y_true, y_pred)
0.957173447537
0.948608137045
In [124]:
#what explained_variance_score really is
1-np.cov(np.array(y_true)-np.array(y_pred))/np.cov(y_true)
Out[124]:
0.95717344753747324
In [125]:
#what r^2 really is
1-((np.array(y_true)-np.array(y_pred))**2).sum()/(4*np.array(y_true).std()**2)
Out[125]:
0.94860813704496794
In [126]:
#Notice that the mean residue is not 0
(np.array(y_true)-np.array(y_pred)).mean()
Out[126]:
-0.25
In [127]:
#if the predicted values are different, such that the mean residue IS 0:
y_pred=[2.5, 0.0, 2, 7]
(np.array(y_true)-np.array(y_pred)).mean()
Out[127]:
0.0
In [128]:
#They become the same stuff
print metrics.explained_variance_score(y_true, y_pred)
print metrics.r2_score(y_true, y_pred)
0.982869379015
0.982869379015

Entonces, cuando el residuo medio es 0, son iguales. Cuál elegir depende de sus necesidades, es decir, es el residuo medio suponer ser 0?

Aquí puedes ver las comentarios y valoraciones de los usuarios

No se te olvide recomendar este tutorial si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *