반응형
Recent Posts
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코세라
- BigQuery
- 인과추론 무작위 실험
- chatGPT
- CausalInference
- 데이터분석가 코딩테스트
- Recsys
- 빅쿼리
- 선형대수학
- 네카라쿠배당토
- 데이터분석
- 인과추론
- 글또10기
- SQL
- 잠재적결과
- 오블완
- mathematicalthinking
- recommendation system
- DataAnalyst
- 티스토리챌린지
- 벡터
- 수학적해석학
- 베이지안통계
- 나의서양미술순례
- 실무로통하는인과추론
- 데이터분석가
- 인과추론개요
- 독후감
- Bayesian
- 데이터 분석
Archives
- Today
- Total
Derek 의 데이터 분석 성장기
[머신러닝] RMSE 설명 및 코드 본문
반응형
1. RMSE 정의
RMSE 는 Root Mean Squared Error의 약자로, 평균 제곱근 오차를 의미한다. 이는 예측값과 실제값 사이의 오차를 측정하는데 사용되는 통계적 지표이다. 대부분, 회귀분석에서 모델의 성능을 평가하는데 활용된다.
해당 수식에서 n은 데이터의 개수를 나타낸다. yi는 실제값 그리고 ^yi(y hat i) 는 예측값을 의미한다. 예측값과 실제값의 차이의 제곱의 합에 평균을 취하고, 루트를 취하는 것이다.
2. 설명
1. 예를 들어, 우리가 머신러닝 회귀모델을 하나 만들었다고 가정해보자. 해당 모델의
- 실제값: [3, 5, 7, 9, 11] 이고,
- 예측값: [2, 4, 6, 8, 10] 이다.
2. 그리고, 위 수식을 바탕으로 RMSE를 계산하려 한다. 실제값과 예측값의 차이를 먼저 빼줘야 한다.
- 오차 = [3-2, 5-4, 7-6, 9-8, 11-10]
- = [1, 1, 1, 1, 1] 는 이와같다.
3. 각 오차의 제곱을 계산해야 한다.
- 제곱된 오차 = [1^2, 1^2, 1^2, 1^2, 1^2]
- = [1, 1, 1, 1, 1] 이다.
4. 제곱된 오차의 평균을 계산한다.
- 평균 제곱 오차 = (1 + 1 + 1 + 1 + 1) / 5
- = 1
5. 마지막으로, 이 평균 제곱 오차에 루트를 씌우는 것이 RMSE 이다.
- RMSE = sqrt(1) = 1
- 이는, 모델의 예측값과 실제값이 평균적으로 1정도의 오차를 갖는다는 것을 의미한다.
3. 코드
import numpy as np
def RMSE(actual, predicted):
"""
Parameters:
actual (array-like): 실제값의 배열입니다.
predicted (array-like): 예측값의 배열입니다.
Returns:
float: RMSE 값입니다.
"""
# 실제값과 예측값의 길이가 동일한지 확인합니다.
if len(actual) != len(predicted):
raise ValueError("실제값과 예측값의 배열 길이는 동일해야 합니다.")
# RMSE를 계산합니다.
rmse = np.sqrt(np.mean((actual - predicted) ** 2))
return rmse
# 예시 사용법
actual_values = [2, 4, 6, 8, 10]
predicted_values = [3, 3.5, 7, 8, 12]
rmse = RMSE(np.array(actual_values), np.array(predicted_values))
print("RMSE:", rmse)
4. 장점
RMSE 는 다른 회귀성능 지표인 MAE, MSE보다 이상치에 강하다(=Robust) 하다. 그 이유는, sqrt(제곱근)을 취하기 때문이다. 또한, 수식이 복잡하지 않기 때문에 직관적으로 설명하기가 쉽다.
반응형
'Data > 머신러닝' 카테고리의 다른 글
[머신러닝] Uplift(업리프트) : 처치효과를 관측 할 수 있는 모델링 (0) | 2025.02.16 |
---|---|
[생성형 AI] 나만의 생성형 A.I 만들기 (Llama, Perplexity, Stable Diffusion) (0) | 2025.01.19 |
[머신러닝] tslearn TimeSeriesKmeans : 시계열 데이터에 K-Means 클러스터링 적용 (0) | 2024.02.17 |