Skip to main content

Evaluasi Regression Model: Mean Squared Error (MSE)

Pada materi sebelumnya kita telah mempelajari:

  • R² Score untuk melihat performa model relatif terhadap baseline.
  • Mean Absolute Error (MAE) untuk mengukur rata-rata besar error dalam satuan target.

Pada materi ini kita akan mempelajari metrik evaluasi regresi berikutnya:

Mean Squared Error (MSE)

MSE merupakan salah satu metrik yang digunakan untuk mengukur besar error prediksi model dengan cara mengkuadratkan error terlebih dahulu, kemudian menghitung rata-ratanya.

Konsep dasarnya:

Prediksi
│
▼
Hitung Error
│
▼
Kuadratkan Error
│
▼
Hitung Rata-rata
│
▼
MSE

Apa Itu Mean Squared Error?​

Mean Squared Error (MSE) adalah rata-rata dari kuadrat selisih antara nilai aktual dan nilai prediksi.

Secara sederhana:

MSE mengukur rata-rata kuadrat kesalahan prediksi model.

Formula MSE:

MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2

Keterangan:

  • yᵢ = nilai aktual
  • ŷᵢ = nilai prediksi
  • n = jumlah sampel
  • (yᵢ - ŷᵢ)² = squared error

Karena error dikuadratkan, semua error menjadi tidak negatif.


Mengapa Error Dikuadratkan?​

Misalkan terdapat dua prediksi:

Actual = 100
Prediction = 90

Maka error:

90 - 100 = -10

Jika error dikuadratkan:

(-10)² = 100

Contoh lainnya:

Actual = 100
Prediction = 110

Error:

110 - 100 = 10

Squared error:

10² = 100

Baik error -10 maupun 10 menghasilkan:

100

Dengan demikian, error positif dan negatif tidak akan saling menghilangkan.


Efek Kuadrat terhadap Error​

Hal yang sangat penting dari MSE adalah bahwa error besar mendapatkan kontribusi yang jauh lebih besar.

Perhatikan contoh berikut:

ErrorSquared Error
11
24
39
416
525
10100
20400

Perhatikan:

Error = 2
Squared Error = 4

sedangkan:

Error = 20
Squared Error = 400

Error 20 bukan hanya dua kali error 10 dalam kontribusinya terhadap MSE.

Karena dikuadratkan:

10² = 100
20² = 400

Error 20 memberikan squared error empat kali lebih besar daripada error 10.

Inilah alasan MSE memberikan perhatian yang lebih besar terhadap error yang besar.


Contoh Perhitungan MSE Secara Manual​

Misalkan kita memiliki data:

ActualPrediction
100110
200190
300320
400380

Langkah 1 - Hitung Error​

Gunakan:

Prediction - Actual

Hasil:

ActualPredictionError
10011010
200190-10
30032020
400380-20

Langkah 2 - Kuadratkan Error​

Sekarang setiap error dikuadratkan.

ActualPredictionErrorSquared Error
10011010100
200190-10100
30032020400
400380-20400

Langkah 3 - Hitung Rata-Rata​

Jumlah squared error:

100 + 100 + 400 + 400 = 1000

Jumlah data:

n = 4

Maka:

MSE=10004MSE = \frac{1000}{4} MSE=250MSE = 250

Jadi:

MSE = 250

Implementasi MSE dengan Scikit-Learn​

Scikit-Learn menyediakan fungsi:

mean_squared_error()

yang berada di:

sklearn.metrics

Import:

from sklearn.metrics import mean_squared_error

Kemudian:

mse = mean_squared_error(
y_true=y_test,
y_pred=y_preds
)

print(f"MSE: {mse}")

Parameter:

y_true

adalah nilai aktual.

Sedangkan:

y_pred

adalah nilai prediksi model.


Contoh Lengkap dengan Model Regresi​

Misalnya kita menggunakan RandomForestRegressor.

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

# Menentukan fitur dan target
X = housing_df.drop("target", axis=1)
y = housing_df["target"]

# Membagi dataset
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)

# Membuat model
model = RandomForestRegressor(
n_estimators=100,
random_state=42
)

# Training
model.fit(X_train, y_train)

# Membuat prediksi
y_preds = model.predict(X_test)

# Menghitung MSE
mse = mean_squared_error(
y_true=y_test,
y_pred=y_preds
)

print(f"MSE: {mse:.4f}")

Contoh output:

MSE: 0.2456

Nilai sebenarnya bergantung pada dataset, preprocessing, pembagian data, model, dan parameter yang digunakan.


Menghitung MSE Secara Manual dengan NumPy​

Kita juga dapat menghitung MSE tanpa menggunakan fungsi khusus Scikit-Learn.

import numpy as np

mse_manual = np.square(
y_preds - y_test
).mean()

print(f"MSE Manual: {mse_manual}")

Prosesnya terdiri dari tiga tahap:

y_preds - y_test

menghasilkan error.

Kemudian:

np.square(...)

mengkuadratkan error.

Terakhir:

.mean()

menghitung rata-rata squared error.


Menghitung MSE dengan Pandas​

Jika kita memiliki DataFrame yang berisi error, MSE juga dapat dihitung menggunakan Pandas.

Misalnya:

import pandas as pd

df = pd.DataFrame({
"Actual values": y_test,
"Predicted values": y_preds
})

df["Differences"] = (
df["Predicted values"] -
df["Actual values"]
)

df["Squared Error"] = (
df["Differences"] ** 2
)

df.head()

Contoh struktur DataFrame:

Actual values Predicted values Differences Squared Error
0 2.31 2.45 0.14 0.0196
1 1.82 1.76 -0.06 0.0036
2 3.15 3.02 -0.13 0.0169
3 2.76 2.81 0.05 0.0025

Kemudian:

mse_manual = df["Squared Error"].mean()

print(f"MSE Manual: {mse_manual}")

Membandingkan MSE Manual dan Scikit-Learn​

Kita dapat memastikan hasil perhitungan manual dengan Scikit-Learn.

from sklearn.metrics import mean_squared_error
import numpy as np

mse_sklearn = mean_squared_error(
y_test,
y_preds
)

mse_manual = np.square(
y_preds - y_test
).mean()

print(f"MSE Scikit-Learn: {mse_sklearn}")
print(f"MSE Manual: {mse_manual}")

Hasilnya seharusnya sama atau sangat dekat.

Contoh:

MSE Scikit-Learn: 0.2456
MSE Manual: 0.2456

MSE dan Error Besar​

Untuk memahami karakteristik MSE, perhatikan dua kondisi berikut.

Kondisi 1 - Error Kecil​

Misalnya:

Error = 2

Squared error:

2² = 4

Kondisi 2 - Error Besar​

Misalnya:

Error = 20

Squared error:

20² = 400

Perbedaannya:

Error:
20 / 2 = 10 kali lebih besar

Tetapi:

Squared Error:
400 / 4 = 100 kali lebih besar

Hal ini menunjukkan bahwa MSE memberikan kontribusi yang jauh lebih besar terhadap error yang besar.


MSE dan Outlier​

Karena menggunakan kuadrat error, MSE sangat sensitif terhadap error yang besar.

Misalnya terdapat error:

1
2
3
4
50

Squared error:

1
4
9
16
2500

Perhatikan error 50.

Setelah dikuadratkan:

50² = 2500

Nilai tersebut jauh lebih besar dibandingkan squared error lainnya.

Akibatnya, satu prediksi dengan error yang sangat besar dapat memberikan pengaruh besar terhadap nilai MSE.


Apakah MSE Buruk karena Sensitif terhadap Outlier?​

Tidak.

Sensitivitas terhadap error besar merupakan karakteristik MSE, bukan otomatis sebuah kelemahan.

Pada beberapa masalah, error besar memang harus mendapatkan penalti yang lebih besar.

Misalnya dalam suatu sistem:

Error kecil → masih dapat ditoleransi
Error sangat besar → konsekuensi jauh lebih serius

Dalam kondisi tersebut, MSE dapat menjadi metrik yang relevan.

Namun jika kita tidak ingin error besar mendominasi evaluasi, MAE dapat menjadi alternatif yang perlu dipertimbangkan.


MSE Memiliki Satuan Kuadrat​

Ini merupakan karakteristik penting MSE.

Jika target memiliki satuan:

Rupiah

maka MSE memiliki satuan:

Rupiah²

Jika target:

Meter

maka MSE:

Meter²

Jika target:

Derajat Celsius

maka secara satuan matematis:

°C²

Hal ini dapat membuat MSE kurang intuitif untuk interpretasi langsung dalam satuan asli target.

Untuk mengembalikan nilai error ke skala target, kita dapat menggunakan Root Mean Squared Error (RMSE).


Root Mean Squared Error (RMSE)​

Root Mean Squared Error (RMSE) merupakan akar kuadrat dari MSE.

Formula:

RMSE=MSERMSE = \sqrt{MSE}

Jika:

MSE = 100

maka:

RMSE=100RMSE = \sqrt{100}
RMSE = 10

RMSE memiliki satuan yang sama dengan target.


Menghitung RMSE dari MSE​

Dengan NumPy:

import numpy as np

rmse = np.sqrt(mse)

print(f"RMSE: {rmse}")

Atau pada versi Scikit-Learn yang mendukung parameter squared:

rmse = mean_squared_error(
y_test,
y_preds,
squared=False
)

print(f"RMSE: {rmse}")

Untuk kompatibilitas lintas versi Scikit-Learn, pendekatan eksplisit menggunakan akar kuadrat juga dapat digunakan:

mse = mean_squared_error(
y_test,
y_preds
)

rmse = np.sqrt(mse)

MSE vs RMSE​

MSE dan RMSE berasal dari konsep yang sama.

MetrikProsesSatuan
MSERata-rata squared errorSatuan target²
RMSEAkar dari MSESatuan target

Contohnya jika target menggunakan juta Rupiah:

MSE = 4 juta Rupiah²
RMSE = 2 juta Rupiah

RMSE lebih mudah diinterpretasikan karena kembali ke skala target.


MSE vs MAE​

MAE dan MSE sama-sama mengukur error prediksi, tetapi memberikan penalti yang berbeda terhadap error besar.

MAE​

Formula:

MAE=1n∑i=1n∣yi−y^i∣MAE = \frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i|

MAE menggunakan nilai absolut.

MSE​

Formula:

MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2

MSE menggunakan kuadrat error.

Perbandingan:

KarakteristikMAEMSE
Operasi pada errorAbsolutKuadrat
Sensitivitas terhadap error besarLebih rendahLebih tinggi
SatuanSatuan targetSatuan target²
Nilai ideal00
Semakin kecilSemakin baikSemakin baik
Mudah diinterpretasikanYaLebih sulit

Contoh MAE dan MSE pada Error yang Sama​

Misalkan terdapat error:

1
2
10

MAE​

MAE = (|1| + |2| + |10|) / 3
MAE = (1 + 2 + 10) / 3
MAE = 4.33

MSE​

MSE = (1² + 2² + 10²) / 3
MSE = (1 + 4 + 100) / 3
MSE = 35

Perhatikan kontribusi error 10.

Pada MAE:

10

Pada MSE:

100

Inilah alasan MSE memberikan perhatian lebih besar terhadap error besar.


R² vs MAE vs MSE​

Ketiga metrik memberikan perspektif yang berbeda.

MetrikFokus UtamaNilai Ideal
R²Performa relatif terhadap baseline1
MAERata-rata absolute error0
MSERata-rata squared error0

R²​

Menjawab:

Seberapa baik model menjelaskan variasi target dibandingkan baseline rata-rata?

MAE​

Menjawab:

Berapa besar rata-rata absolute error model dalam satuan target?

MSE​

Menjawab:

Berapa besar rata-rata squared error model dan seberapa besar error besar memengaruhi evaluasi?


Kapan Menggunakan MAE?​

MAE dapat menjadi pilihan ketika kita ingin:

  • Mengukur rata-rata besar error secara langsung.
  • Mempertahankan interpretasi dalam satuan target.
  • Memberikan penalti error secara linear.
  • Mengurangi pengaruh relatif error ekstrem dibandingkan MSE.

Contohnya:

Error 5 → penalti 5
Error 10 → penalti 10

Error 10 memberikan kontribusi dua kali error 5.


Kapan Menggunakan MSE?​

MSE dapat menjadi pilihan ketika kita ingin:

  • Memberikan penalti lebih besar terhadap error besar.
  • Membuat model lebih sensitif terhadap prediksi yang sangat meleset.
  • Menggunakan loss yang bersifat kuadratik.
  • Memprioritaskan pengurangan error besar.

Contohnya:

Error 5 → squared error 25
Error 10 → squared error 100

Error 10 memberikan squared error empat kali lebih besar daripada error 5.


Kapan Menggunakan RMSE?​

RMSE dapat digunakan ketika kita menginginkan karakteristik penalti kuadrat seperti MSE tetapi ingin hasil akhirnya kembali ke satuan target.

Contohnya:

Target = juta Rupiah

RMSE = 2.5

Interpretasinya lebih mudah karena:

RMSE = 2.5 juta Rupiah

Namun RMSE tetap sensitif terhadap error besar karena berasal dari MSE.


Memilih Metrik Regresi​

Tidak ada satu metrik yang selalu paling tepat untuk semua masalah regresi.

Pertimbangkan tujuan evaluasi.

KondisiMetrik yang Dapat Dipertimbangkan
Ingin melihat performa relatif terhadap baselineR²
Ingin mengetahui rata-rata error dalam satuan targetMAE
Error besar harus mendapatkan penalti lebih besarMSE
Ingin penalti error besar tetapi tetap dalam satuan targetRMSE

Pemilihan metrik harus disesuaikan dengan karakteristik masalah dan konsekuensi dari error.


Jangan Hanya Melihat Satu Metrik​

Dalam praktiknya, evaluasi model regresi sebaiknya tidak selalu bergantung pada satu metrik.

Misalnya sebuah model menghasilkan:

R² = 0.82
MAE = 0.30
MSE = 0.45
RMSE = 0.67

Kita mendapatkan beberapa perspektif:

R²
→ performa relatif terhadap baseline

MAE
→ rata-rata absolute error

MSE
→ squared error dan sensitivitas terhadap error besar

RMSE
→ error pada skala target dengan karakteristik penalti kuadrat

Dengan demikian, evaluasi menjadi lebih informatif.


Contoh Evaluasi Lengkap​

Berikut contoh menghitung R², MAE, MSE, dan RMSE secara bersamaan.

import numpy as np

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import (
mean_absolute_error,
mean_squared_error,
r2_score
)
from sklearn.model_selection import train_test_split

# Menentukan fitur dan target
X = housing_df.drop("target", axis=1)
y = housing_df["target"]

# Membagi dataset
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)

# Membuat model
model = RandomForestRegressor(
n_estimators=100,
random_state=42
)

# Training
model.fit(X_train, y_train)

# Prediksi
y_preds = model.predict(X_test)

# R²
r2 = r2_score(
y_test,
y_preds
)

# MAE
mae = mean_absolute_error(
y_test,
y_preds
)

# MSE
mse = mean_squared_error(
y_test,
y_preds
)

# RMSE
rmse = np.sqrt(mse)

print(f"R²: {r2:.4f}")
print(f"MAE: {mae:.4f}")
print(f"MSE: {mse:.4f}")
print(f"RMSE: {rmse:.4f}")

Contoh output:

R²: 0.8200
MAE: 0.3200
MSE: 0.4500
RMSE: 0.6708

Nilai tersebut hanya contoh. Hasil aktual bergantung pada dataset dan konfigurasi model.


Workflow Evaluasi Model Regresi​

Secara keseluruhan, workflow evaluasi dapat digambarkan sebagai:

Dataset
│
▼
Menentukan X dan y
│
▼
Train-Test Split
│
├───────────────┐
▼ ▼
Training Data Test Data
│ │
▼ │
Train Model │
│ │
▼ │
Prediksi ──────────┘
│
▼
y_preds
│
├───────────────┐
▼ ▼
R² Error
│
┌─────┼─────┐
▼ ▼ ▼
MAE MSE RMSE

Workflow tersebut menunjukkan bahwa beberapa metrik dapat digunakan secara bersamaan untuk mendapatkan perspektif yang lebih lengkap.


Kesalahan yang Sering Terjadi​

Menganggap MSE Lebih Baik karena Angkanya Lebih Kecil​

Misalnya:

Model A → MSE = 0.20
Model B → MAE = 0.15

Kita tidak dapat langsung mengatakan Model B lebih baik hanya berdasarkan angka tersebut.

MSE dan MAE adalah metrik yang berbeda.

Perbandingan harus dilakukan menggunakan metrik yang sama pada dataset evaluasi yang sama.


Menganggap MSE Berada dalam Satuan Target​

Jika target memiliki satuan:

Rupiah

maka MSE secara matematis memiliki satuan:

Rupiah²

Untuk interpretasi pada skala target, RMSE dapat digunakan.


Mengabaikan Error Besar​

MSE sangat sensitif terhadap error besar.

Jika dataset memiliki beberapa error ekstrem, nilai MSE dapat meningkat secara signifikan.

Karena itu, penting untuk memahami distribusi error sebelum mengambil kesimpulan.


Menganggap MSE Selalu Harus Digunakan​

MSE bukan metrik yang wajib digunakan untuk semua masalah regresi.

Jika tujuan kita adalah mengetahui rata-rata error dalam satuan target, MAE dapat lebih mudah diinterpretasikan.

Jika error besar harus mendapatkan penalti lebih besar, MSE atau RMSE dapat menjadi pilihan yang relevan.


Ringkasan​

Mean Squared Error (MSE) adalah rata-rata dari kuadrat error antara nilai aktual dan prediksi.

Formula:

MSE=1n∑i=1n(yi−y^i)2MSE = \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2

Hal-hal penting:

  • MSE mengkuadratkan setiap error.
  • Error positif dan negatif tidak saling menghilangkan.
  • Error besar mendapatkan penalti yang lebih besar.
  • MSE sensitif terhadap error besar dan outlier.
  • Nilai ideal MSE adalah 0.
  • Semakin kecil MSE, semakin kecil squared error rata-rata.
  • MSE memiliki satuan kuadrat dari target.
  • RMSE adalah akar kuadrat dari MSE.
  • MAE memberikan penalti yang lebih linear terhadap error.
  • Pemilihan metrik harus disesuaikan dengan tujuan evaluasi.

Checklist Evaluasi MSE​

Sebelum menggunakan MSE, pastikan:

  • Model sudah dilatih menggunakan training data.
  • Prediksi dibuat menggunakan data evaluasi.
  • y_test dan y_preds memiliki jumlah sampel yang sama.
  • MSE dihitung menggunakan mean_squared_error().
  • Memahami bahwa error dikuadratkan.
  • Memahami bahwa error besar memberikan pengaruh lebih besar.
  • Memahami bahwa MSE sensitif terhadap outlier.
  • Memahami bahwa MSE memiliki satuan kuadrat target.
  • Menggunakan RMSE jika ingin kembali ke skala target.
  • Membandingkan model menggunakan metrik yang sama.
  • Tidak menggunakan MSE sebagai satu-satunya dasar evaluasi tanpa mempertimbangkan konteks masalah.

Kesimpulan​

Mean Squared Error (MSE) merupakan metrik evaluasi regresi yang menghitung rata-rata kuadrat error prediksi.

Karakteristik paling penting dari MSE adalah:

Error kecil
→ pengaruh relatif kecil

Error besar
→ pengaruh jauh lebih besar

Hal tersebut membuat MSE berguna ketika kita ingin memberikan penalti yang lebih besar terhadap kesalahan prediksi yang besar.

Perbedaan utama ketiga metrik yang telah dipelajari:

R²
→ seberapa baik model dibandingkan baseline rata-rata

MAE
→ seberapa besar rata-rata absolute error

MSE
→ seberapa besar rata-rata squared error

Kemudian:

RMSE = √MSE

mengembalikan hasil evaluasi ke skala satuan target.

Dengan memahami perbedaan R², MAE, MSE, dan RMSE, kita dapat memilih metrik evaluasi yang lebih sesuai dengan karakteristik dan tujuan model regresi.

Referensi​