[TIL]RMSE(Root Mean Squared Error)

Why?

  • List Comprehension이 익숙치 않아 연습차원에 기존 Evaluation Metric을 줄여보려는 시도로 작성
  • 작성하는 김에 numpy, sklearn, torch 모두 작성.
  • $RMSE = \sqrt {\sum\limits_{i=1}^{n} (\hat{y_{i}} - y_{i})^2 \over n}$

Code

import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error
import torch

label = np.random.random((1, 5)).reshape(5,-1)
pred = np.random.random((1, 5)).reshape(5,-1)
# label = np.array([1,2,3,4,5])
# pred = np.array([0,2,5,7,8])

def rmse(label, pred):
    return   (sum([pow(diff,2) for diff in  [y_hat-y  for y_hat, y in zip(pred, label)]]) / len(label)) ** (1/2)

def torch_rmse(label,pred):
  return (torch.Tensor(pred)- torch.Tensor(label)).pow(2).mean().sqrt()

np.round(rmse(label,pred),2) == np.round(mean_squared_error(label,pred,squared=False),2) == np.round(torch_rmse(label,pred),2)

Tip

  • 아래와 같은  Error  발생시 Numpy Array 변환 Function 을 torch.from_numpy() → torch.Tensor로 변경한다.
  • torch.from_numpy()torch.Tensor()는 return type은 Tensor로 동일하나, from_numpy는 기존 input의 data type을 그대로 가지고 오고, Tensor는 FloatTensor를 기본으로 가지고 오면서 그 차이에서 발생하는 에러임 (참고)
RuntimeError: mean(): input dtype should be either floating point or complex dtypes. Got Long instead.

Read more

DataFrame은 Pandera로, 모델은 Pydantic으로 데이터를 검증한다.

DataFrame은 Pandera로, 모델은 Pydantic으로 데이터를 검증한다.

Pandera: 데이터프레임 검증에 최적화된 도구 주요 장점 * Pandas와 통합: Pandas 데이터프레임에 대해 스키마 기반 검증을 수행합니다. * 유연한 검증 조건: 열 데이터 타입, 값 범위, Null 여부 등 다양한 검증 조건을 정의할 수 있습니다. * 명확한 오류 메시지: 스키마 불일치에 대한 명확한 오류 메시지를 제공합니다. 단점 * 대용량 데이터 검증에서는 속도가 느릴 수

Tobit Regression은 Censored Data에 적합한 Regression이다.

Tobit Regression은 Censored Data에 적합한 Regression이다.

Tobit Regression * Tobit 회귀(Tobit Regression)는 종속 변수가 특정 값에서 절단(Censored)된 상황에서 데이터를 분석하기 위해 사용되는 통계 기법입니다. * James Tobin이 처음 제안한 이 모델은 경제학과 사회과학 분야에서 자주 사용되며, 일반 선형 회귀로는 설명할 수 없는 상황에서 효과적으로 적용할 수 있습니다. Tobit Regression 수식 1. 관측된 종속 변수