Makine Öğrenmesi Regresyon Modellerindeki Hata Metriklerine Güncel Bakış: MAE, MSE, RMSE, R-Kare (R2)
Herhangi bir makine öğrenme modellerindeki en temel hususun modelin performansının değerlendirilmesinden geçtiğinden hareketle bu yazımızda özellikle makine öğrenmesinde regresyon modellerinin performansını ölçmek için sıklıkla kullanılan hata metrikleri örnekler yoluyla teorik olarak açıklanmıştır. Ayrıca yabancı dilden Türkçe’ye çevrimde kelime üzerinden çeviri yapıldığından kavramların anlaşılması da bu anlamda zorlaşmaktadır. Bu yazı ile bununda önüne geçilmesi hedeflenmiştir. Şimdi gelelim regresyon modellerindeki başlıca hata metriklerine.
Vereceğim örneklerin anlaşılması için bazı kütüphaneleri import edelim
import math
import numpy as np
from sklearn.metrics import mean_absolute_error as mae
from sklearn.metrics import mean_squared_error as mse
from sklearn.metrics import r2_score
from math import sqrt
Hataların Mutlak Değerlerinin Ortalaması (MAE): Gerçek değerler ile tahmin edilen değerler arasındaki hataların mutlak değerlerinin ortalamasıdır. Bu metrik doğrudan hataların mutlak değerleri üzerinden çalışmaktadır. Örneğin, bir evin gerçek fiyatı 50.000 $ iken, modelimiz bunu 49.000 $ veya 51.000 $ olarak tahmin ettiyse, mutlak fark her iki tahminde de 1.000$ olacaktır. Bu işlemi tüm evler için yaparak sonuçların toplamının ortalamasını almak bize modelimizin MAE değerini göstermektedir.
Formül:
MAE = (1/n) * Σ |y — y_pred|
Burada,
n: veri noktalarının sayısı
y: gerçek değerler
y_pred: tahmin edilen değerler
|…| : mutlak değer işlemi
Bunu scikit-learn kütüphanesini kullanarak görelim
actual = [50000, 50000]
predicted = [49000, 51000]
MAE = mae(actual, predicted)
print(f"Mean Absolute Error : ", MAE)
Output:
Mean Absolute Error : 1000.0
Hataların Karesinin Ortalaması (MSE): İsminden de anlaşılacağı üzere gerçek değerler ile tahmin edilen değerler arasındaki farkların karesinin ortalamasıdır. Bu hata metriği modelin doğru tahminlerde ne kadar başarılı olduğunu ölçmektedir. Örneğin, bir evin gerçek fiyatı 50.000 $ iken, modelimiz bunu 49.000 $ veya 51.000 $ olarak tahmin ettiyse, hataların karesi her iki tahminde de 1.000.000 $ olur. Bu işlemi tüm evler için yaparak sonuçların toplamının ortalamasını almak bize modelimizin, MSE değerini vermektedir.
Formül:
MSE = (1/n) * Σ(y — y_pred)²
n: veri noktalarının sayısı
y: gerçek değerler
y_pred: tahmin edilen değerler.
actual = [50000, 50000]
predicted = [49000, 51000]
MSE = mse(actual, predicted)
print(f"Mean Squared Error : ", MSE)
Output:
Mean Squared Error : 1000000.0
Hataların Karesinin Ortalamasının Karekökü (RMSE): İsminden de anlaşılacağı üzere MSE’nin kareköküdür. MSE ile benzer şekilde gerçek değerler ile tahmin edilen değerler arasındaki farkın ortalama büyüklüğünü ölçer. Bunu yaparken gerçek değerler ile tahmin edilen değerler arasındaki farkların ortalamasının karekökünü alır. Dolayısıyla RMSE’nin MSE’den en büyük farkı yaptığı bu matematiksel işlem ile büyük hatalara daha fazla ağırlık vermesinden dolayı tıpkı bir cezalandırıcı gibi davranmasıdır. Öte yandan çok küçük hataları ise tabiri caizse ödüllendirir. RMSE skorları gözlem sayısından etkilenmeyeceğinden MSE’daki gibi büyük aykırı değerlerin gözlem sayısının fazlalığından kaynaklı göz ardı edilmesinin önüne geçmektedir. Bu durum RMSE’nin bir avantajı olarak değerlendirilebilir. Öte yandan RMSE’nin, büyük aykırı değerler yüzünden diğer hataların etkisini arttırabilmesi ve modelin performansını yanıltabileceği gibi dezavantajlarında akılda bulunması gerekir. İşte tamda bu sebeple tüm hata metrikleri gibi RMSE’nin de kullanılması, veri setinin özelliklerine ve modelin amaçlarına bağlı olmalıdır ve tüm hata metrikleri birlikte değerlendirilmelidir.
Formül:
RMSE = √MSE
MSE = (1/n) * Σ(y — y_pred)²
n: veri noktalarının sayısı
y: gerçek değerler
y_pred: tahmin edilen değerler.
actual = [50000, 50000]
predicted = [49000, 51000]
RMSE = sqrt(mse(actual, predicted))
print(f"Root Mean Squared Error : ", RMSE)
Output:
Root Mean Squared Error : 1000.0
R-Kare (R²): Gerçek değer ile modelin tahminleri arasındaki uyumun bir ölçüsüdür. Gerçek değerlerin varyansının, tahmin edilen değerlerin varyansına oranlanması ile bulunmaktadır. Bu durum, model uyum iyiliğinin ne kadar iyi olduğunu veya olmadığını ifade etmektedir. R-kare değeri yapılan matematiksel işlem sonrasında %0 ile %1 arasında bir değer alır. %0, modelin hiçbir şey açıklamadığını ve model uyum iyiliğinin olmadığını göstermektedir. Böyle bir sonucun ortaya çıkması verinin modele uygun olmadığını ve modelinin değiştirilmesini gerektiğini göstermektedir. Bunun tam tersi olarak skorun %1 olması modelin verileri mükemmel şekilde açıkladığı ve model uyumunun mükemmel olduğu anlamına gelmektedir. Bunu bir örnekle açıklamak gerekirse 50.000$, 51.000$ ve 53.000$ olan ev fiyatlarını modelimiz sırasıyla 49.000$, 51.000$ ve 53.000$ olarak tahmin etmiş olsun bu durumda ilgili formül üzerinden yapılacak hesaba göre R-Kare değeri yaklaşık olarak %79 olarak bulacaktır. Bu skor ise modelimizin, değişkenlerin %79'unu açıkladığı anlamına gelmektedir.
Formül:
R-Kare = 1 — (SSres / SStot)
Burada,
SSres: hata kareler toplamı, SSres = MSE * n veya SSres = Σ(y — y_pred)²
SStot: toplam kareler toplamı, SStot = Σ(y — y_ortalama)²
n: veri noktalarının sayısı
y: gerçek değerler
y_pred: tahmin edilen değerler
y_ortalama: gerçek değerlerin ortalaması
actual = [50000, 51000, 53000]
predicted = [49000, 51000, 53000]
R_square = r2_score(actual, predicted)
print(f"Coefficient of Determination : ", R_square)
Output:
Coefficient of Determination : 0.7857142857142857
Peki Hangi Metrik Daha Önemli?
Hangi hata metriğinin önemli olduğuna dair soruya en güzel cevap, modelin kullanım amaçlarına ve veri setinin özelliklerine göre bu durumun değişkenlik gösterebileceğidir. Örneğin amacımız, ev fiyatlarını mümkün olan en doğru şekilde tahmin etmekse, RMSE metriği bizim için önemli olacaktır. Öte yandan modelimiz bir yatırım stratejisi için kullanılacaksa, R-Kare metriği bizim için önemli olabilir çünkü bu, modelimizin verileri ne kadar iyi açıkladığını gösterir ve yatırım kararlarımızı bu bilgiye göre alabiliriz. Aynı şekilde, MAE özellikle aykırı değerlerin olduğu veri setlerinde daha iyi model performansının ölçülmesinde faydalı iken, MSE ise MAE nin aksine aykırı verilerin olmadığı data setlerinde modelimizin performansını değerlendirmede faydalı olabilir.
Sonuç olarak tüm bu açıklamalar doğrultusunda Machine Learning Regresyon modellerinde modelin performansının değerlendirilmesinde kullanılan hata metrikleri modelin amaçlarına ve veri setinin özelliğine göre hepsi bir bütün olarak değerlendirilmelidir. Ayrıca R-kare değerinin 1'e yakın olması beklenirken MAE, MSE ve RMSE skorlarının ise 0'a yakın olması beklenmektedir. Bu skorlar ise model uyum iyiliğinin olumlu yönde yorumlanacağı varsayılabilir.
Faydalı olması dileğiyle…