728x90
인공지능 모델의 성능을 평가하는 데 있어, 어떤 지표를 사용할지는 모델의 목적과 데이터의 특성에 따라 달라질 수 있다. 크게 회귀모델과 분류모델로 나누어 대표적인 성능 평가 지표에 대해 알아보자.
- 회귀모델의 성능 평가 지표
- 평균 제곱 오차(Mean Squared Error, MSE): 모델이 예측한 값과 실제 값의 차이를 제곱한 후, 이를 전체 샘플 수로 나누어 계산한 값입니다. MSE는 오차의 크기를 계산하는 지표로, 값이 작을수록 모델의 성능이 우수합니다.
- 평균 절대 오차(Mean Absolute Error, MAE): 모델이 예측한 값과 실제 값의 차이를 절댓값으로 계산한 후, 이를 전체 샘플 수로 나누어 계산한 값입니다. MAE는 MSE와 마찬가지로 오차의 크기를 계산하는 지표로, 값이 작을수록 모델의 성능이 우수합니다.
- 결정 계수(Coefficient of Determination, R-squared): 모델이 예측한 값과 실제 값의 상관 관계를 나타내는 지표입니다. R-squared는 1에 가까울수록 모델이 데이터를 잘 설명하고 예측하는 능력이 높다는 것을 의미합니다.
- 평균 제곱근 오차(Root Mean Squared Error, RMSE): MSE의 제곱근 값으로, 모델의 오차를 실제 단위와 일치시켜 해석하기 쉽게 만드는 지표입니다.
- R-squared의 수정된 결정 계수(Adjusted R-squared): 독립 변수의 개수와 샘플의 수를 고려하여 결정 계수를 보정한 지표입니다. 모델의 복잡도를 고려할 수 있어 보다 정확한 모델 선택이 가능합니다.
보스턴 집값 예측 모델을 만들 때, R2 결정계수를 사용하여 모델 성능을 평가했었다.
이번에는 다중 선형 회귀(Multiple Linear Regression)으로 Boston 집값 데이터를 가지고 모델을 만들어 보자.
여러 개의 값을 다룰 수 있다.
■ 다중 선형 회귀(Multiple Linear Regression)를 사용한다.
*RM column 말고 전체 columns를 사용mul_lr = LinearRegression()mul_lr.fit(X_train, y_train)■ 테스트용 데이터를 가지고 예측하기
y_pred = mul_lr.predict(X_test)
print('다중 선형 회귀, R2: {:.4f}'.format(r2_score(y_test, y_pred)))>> 다중 선형 회귀, R2: 0.622662.26%
*단순 선형 회귀에 비해 3배 정도 향상되었다. 그러나 여전히 정확도가 떨어진다.
("Day 20 - 선형 회귀(Regression), Multiple, Decision Tree, Support Vector... 다중 MLP" 부분 참조
https://applepy.tistory.com/27)
- 분류모델의 성능 평가 지표
1. 정확도(Accuracy)
- 전체 샘플 중 정확하게 분류된 샘플의 비율
- Accuracy = (TP + TN) / (TP + TN + FP + FN)
2. 정밀도(Precision)
- 모델이 Positive로 예측한 샘플 중에서 실제 Positive인 샘플의 비율
- Precision = TP / (TP + FP)
3. 재현율(Recall)
- 실제 Positive인 샘플 중에서 모델이 Positive로 예측한 샘플의 비율
- Recall = TP / (TP + FN)
4. F1 점수(F1 Score)
- 정밀도와 재현율의 조화 평균으로 계산된 지표
- F1 Score = 2 * Precision * Recall / (Precision + Recall)
5. ROC 곡선과 AUC
- ROC 곡선은 분류 모델의 임계값(threshold)을 변경하면서 False Positive Rate(FPR)과 True Positive Rate(TPR)의 변화를 그린 곡선
- AUC(Area Under Curve)는 ROC 곡선의 아래쪽 면적으로, 1에 가까울수록 분류 모델의 성능이 좋음을 나타냄
6. 혼동 행렬(Confusion Matrix)
- 분류 모델의 예측 결과를 실제 결과와 비교하여 TP(True Positive), FP(False Positive), FN(False Negative), TN(True Negative)으로 분류하여 행렬로 나타낸 것
- 정확도, 정밀도, 재현율 등의 지표는 이러한 혼동 행렬을 기반으로 계산됨
Iris 데이터셋을 사용하여 분류 모델을 만들 때, Acc를 사용하여 모델 성능을 평가했었다.
*이전엔 R2 결정계수였다면 여기에서는 accuracy score. 오차가 아니라 정확도를 본다.
from sklearn.metrics import accuracy_score
■ 테스트용 데이터의 실제값, 예측값
print('로지스틱 회귀, 정확도: {:.2f}'.format(accuracy_score(y_test, y_pred)))
>> 로지스틱 회귀, 정확도: 0.97
*97% 정확도의 모델을 만들었다.
("Day21 - 머신러닝 지도 학습, Supervised Learning Classification" 부분 참조
https://applepy.tistory.com/28)
728x90
'CS(Computer Science)' 카테고리의 다른 글
[스터디] Transaction, ACID란? (0) | 2023.03.09 |
---|---|
[스터디] Context Switching 과정이란 (0) | 2023.03.09 |
[스터디] 교차 검증(Cross validation) (0) | 2023.03.09 |
[스터디] RDBMS와 NOSQL의 특징 (0) | 2023.03.01 |
[스터디] 머신러닝과 딥러닝 (0) | 2023.03.01 |