[Python] 평균 절대 오차 MAE란 무엇이며 scikit-learn의 평균_절대 오류 함수를 사용하여 MAE를 계산하는 방법은 무엇입니까?

평균 절대 오차 MAE란 무엇입니까?

MAE(Mean Absolute Error)는 회귀 모델의 예측 결과와 실제 값 사이의 오차를 측정하는 데 사용되는 지표입니다. 모든 샘플에서 예측값과 실제값의 차이의 절대값의 평균을 나타냅니다. 구체적인 계산 공식은 다음과 같습니다.

IS = (1/n) * Σ|y_true - y_pred|

이 중 n은 샘플 개수, y_true는 실제 값, y_pred는 예측 값입니다.

MAE의 장점은 이상값에 민감하지 않다는 것입니다. 즉, 전체 오류 계산이 특정 샘플의 이상값에 의해 영향을 받지 않습니다. 그러나 데이터 세트에 이상치가 많이 있는 경우 MAE는 모델 성능을 과대평가할 수 있습니다. 또한 MAE는 예측값과 실제값 간의 상대적인 크기 관계를 반영할 수 없습니다.

예를 들어 10개 샘플에 대해 다음과 같은 실제 값과 예측 값이 있다고 가정합니다.

실제 값 예측 가치
1
2 4
2
4 5
5 6
6 1
7 8
8 7
9 9
10 10

그러면 해당 MAE는 다음과 같습니다.

MAE = (1/10) * (|3-1| + |4-2| + |2-3| + |5-4| + |6-5| + |1-6| + |8-7| + |7-8| + |9-9| + |10-10|) = 2.8

6번째 샘플의 예측값은 실제값과 많이 다르지만 다른 샘플의 오차는 더 작기 때문에 전체 오차는 여전히 상대적으로 작은 것을 알 수 있습니다.

Scikit-learn의mean_absolute_error 함수 사용 사례

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
import numpy as np

# 生成样本数据
X = np.random.rand(100, 1) * 10 - 5
y = 3 * X[:,0] + 2 + np.random.randn(100, 1) * 20

# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型并拟合训练数据
model = LinearRegression()
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 计算MAE并输出结果
mae = mean_absolute_error(y_test, y_pred)
print("Mean Absolute Error:", mae)

이 예에서는 먼저 100개의 샘플이 포함된 데이터세트를 생성했습니다. 그런 다음 데이터 세트를 훈련 세트와 테스트 세트로 나누어 80%의 데이터를 모델 훈련에 사용하고 20%의 데이터를 모델 테스트에 사용합니다. 그런 다음 선형 회귀 모델이 생성되어 훈련 데이터에 맞춰졌습니다. 마지막으로 테스트 세트에 대한 예측을 수행하고 예측 결과와 실제 결과 사이의 평균 절대 오차를 계산했습니다.

Guess you like

Origin blog.csdn.net/u011775793/article/details/135459525