Obliczanie R-kwadrat
Teraz, gdy obliczyłeś(-aś) RMSE dla predykcji swojego modelu, sprawdzisz, jak dobrze model dopasowuje się do danych – innymi słowy, ile wariancji wyjaśnia. Możesz to zrobić za pomocą \(R^2\).
Załóżmy, że \(y\) to prawdziwa wartość wynikowa, \(p\) to predykcja modelu, a \(res = y - p\) to reszty predykcji.
Całkowita suma kwadratów \(tss\) ("całkowita wariancja") danych wynosi:
$$ tss = \sum{(y - \overline{y})^2} $$
gdzie \(\overline{y}\) to średnia wartość \(y\).
Suma kwadratów reszt modelu, \(rss\), wynosi: $$ rss = \sum{res^2} $$
\(R^2\) (R-kwadrat), czyli "wyjaśniona wariancja" przez model, to:
$$ 1 - \frac{rss}{tss} $$
Po obliczeniu \(R^2\) porównasz uzyskany wynik z wartością \(R^2\) zwróconą przez glance() (dokumentacja). Funkcja glance() zwraca ramkę danych z jednym wierszem; dla modelu regresji liniowej jedną z kolumn jest \(R^2\) modelu na danych treningowych.
Ramka danych unemployment została już wczytana i zawiera kolumny predictions oraz residuals obliczone w poprzednim ćwiczeniu. Do dyspozycji masz również unemployment_model.
To ćwiczenie jest częścią kursu
Nadzorowane uczenie maszynowe w R: regresja
Instrukcje do ćwiczenia
- Oblicz średnią zmiennej
female_unemploymenti przypisz ją do zmiennejfe_mean. - Oblicz całkowitą sumę kwadratów i przypisz ją do zmiennej
tss. - Oblicz sumę kwadratów reszt i przypisz ją do zmiennej
rss. - Oblicz \(R^2\). Czy to dobre dopasowanie (\(R^2\) bliskie 1)?
- Użyj funkcji
glance(), aby uzyskać \(R^2\) z modelu. Czy wynik jest taki sam jak obliczony przez ciebie?
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# unemployment is available
summary(unemployment)
# unemployment_model is available
summary(unemployment_model)
# Calculate and print the mean female_unemployment: fe_mean
(fe_mean <- ___)
# Calculate and print the total sum of squares: tss
(tss <- ___((___ - ___)^2))
# Calculate and print residual sum of squares: rss
(rss <- ___)
# Calculate and print the R-squared: rsq
(rsq <- ___)
# Get R-squared from glance and print it
(rsq_glance <- ___(___)$___)