티스토리 뷰

※ regressor은 회귀에서 사용하는 ExtraTree모델.

 

 

 

📝 잔차와 오차란?


  • 잔차(residual) : 실제값과 모델이 예측한 값의 차이. 각 데이터 포인트마다 계산된다.
  • 잔차  =  실제값(측정값) - 예측값
  • 잔차는 모델의 예측값과 실제값 사이의 차이를 의미한다.
  • 즉, 잔차는 오차와 마찬가지로 모델의 성능을 평가하는데 사용되지만,
    모델을 훈련할 때 사용되는 오차와는 다르다.

잔차플롯 해석하기

Residual plot 에서 각각의 점들이 수평선을 기준으로 하여 랜덤하게 분포한다면 해당 회귀모형은 데이터에 있어 적합하다. 만일 그렇지 않다면 linear 한 모델이 아닌 non-linear 한 모델이 더 적합 하다는 것을 의미한다.


  • 오차(error) : 잔차들의 평균적인 크기를 나타내는 값
  • 오차  =  (잔차_1 + 잔차_2 + ... + 잔차_n) / n
  • 머신러닝에서 오차는 모델이 주어진 입력에 대해 예측한 값과 실제값 사이의 차이를 의미한다.
  • 즉, 모델이 주어진 입력에 대해 얼마나 정확한 예측을 했는지를 측정하는 척도.
  • 머신러닝에서 모델을 훈련할 때 사용되는 오차는 일반적으로 손실함수(loss function)를 사용하여 정의되며,
    이를 최소화하는 방향으로 모델의 파라미터를 조정한다.
  • error  =>  MAE, MSE, RMSE, RMSLE, MAPE
  • MAE (Mean Absolute Error) : 평균절대오차.  오차 절대값의 평균.
  • MSE (Mean Squared Error) : 평균제곱오차.  오차 제곱의 평균.
  • RMSE (Root Mean Squared Error) : 평균제곱근오차.  MSE의 제곱근.
  • RMSLE(Root Mean Squared Logarithmic Error) : 로그를 취하고 RMSE
  MAE
(Mean Absolute Error)
MSE
(Mean Squared Error)
RMSE
(Root Mean Squared
Error)
RMSLE
(Root Mean Squared
Logarithmic Error)
정의 평균절대오차 평균제곱오차 평균제곱근오차  
구하는 방법 오차 절대값의 평균 오체 제곱의 평균 MSE의 제곱근 로그를 취하고 RMSE
사용용도 틀린 값에 대한 절대값만 보고자 할 때 많이 틀릴수록 패널티를
주고자 할 때
틀린 값에 대한 편차를 
보고자 할 때
적게 틀린 것에 대해 패널티를 주고, 아주 많이 틀린 것에 더 
적게 패널티를 주고자 할 때
# MSE는 분산의 공식과 유사하다.
# RMSE는 표준편차의 공식과 유사하다.

 

 

1. MAE(Mean Absolute Error) 구하기

# 첫 번째 방법 
abs(y_train - y_valid_predict).mean()

# 두 번째 방법 (import 과정 필요)
from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_train, y_valid_predict)

 

 

2. MSE(Mean Squared Error)

  • 오차의 제곱을 평균으로 나눈 것이기 때문에 분산을 구하는 과정과 비슷함
# 첫 번째 방법 : 직접 제곱하기
((y_train - y_valid_predict)**2).mean()

# 두 번째 방법 : np.square 사용하기
np.square(y_train - y_valid_predict).mean()

# 세 번째 방법  (import과정 필요)
from sklearn.metrics import mean_squared_error
mean_squared_error(y_train, y_valid_predict)

 

 

3. RMSE(Root Mean Squared Error) 

  • MSE값에 루트를 씌운 것으로 표준편차와 공식이 유사함.
# 첫 번째 방법 : numpy 사용하기
np.sqrt(mse)

# 두 번째 방법 : 직접 루트 씌우기
mse ** 0.5

# 세 번째 방법  (import 과정 필요)
mean_squared_error(y_train, y_valid_predict) ** 0.5

 

 

4. RMSLE(Root Mean Squared Logarithmic Error)

: MSE에 로그를 취하고 제곱한 것.

  • RMSLE를 사용하는 이유?
  • 로그를 적용해주면 상대적으로 큰 값에 대한 스케일을 줄이게 되어, 차이가 많이 나는 값에 대해 더 잘 평가할 수 있다.

 

 

 

 

 

 

 

📝 데이터셋 살펴보기


  • 대부분이 수치형 변수일 경우 : 필요시 날짜변수 생성하기
  • 히스토그램으로 데이터 경향 파악하기 : 점수의 차이 만드는 것 = 데이터를 어떻게 넣어서 모델게 힌트를 주느냐.
    (EDA)

 

 

 

 

 

 

📝 [복습] 머신러닝의 기본 프로세스


1. 기출문제를 한번 풀어본다 -> X_train으로 학습!

2. 풀어본 기출문제의 정답을 보고 채점해보자 !! -> y_train 으로 정답을 채점한다 !

-> 위 두 과정을 사이킷런의 API에서는 fit() 으로 담아줄 수 있습니다

 

3. 실제 모의고사에서 시험을 쳐본다! -> X_test로 모델의 실력을 점검한다.

4. 실제 모의고사의 정답을 확인한다! (모델 학습의 목표) -> 모델의 성적 y_test (예측해야할 Label값) 를 확인한다!

-> 위 과정은 predict() 로 수행하고 여러 가지 평가 기준에 따라 점수를 출력해볼 수 있습니다

 

 

 

 

 

 

 

📝 회귀에서의 평가


  • 분류 : Accuracy : 얼마나 정답을 맞혔는지 평가  : 일치도.
  • 회귀 : 정답이 예측과 얼마나 가까운지 평가 : 인접도
  • => 회귀 평가에 accuracy를 사용하는 것은 적절하지 않다.
  • 회귀 평가지표로는 error 측정지표를 사용하는 것이 적절. (MAE, MSE, RMSE, RMSLE)
       (무엇을 평가하고 싶은지에 따라 선택하여 평가하기)
  • R square Score로도 평가 가능하다.

 

 

 

 

 

 

 

📝 Ordinal-Encoding


  • 순서가 있는 데이터를 인코딩하는 방법
  • 문자형 데이터를 숫자형 데이터로 변환해주는 방
  • 범주형 자료값이 순서인지 아닌지 고려하지 않고 숫자를 부여하는 Label Encoding과는 다르게
    Ordinal Encoding은 순서형 자료인지를 고려하여 숫자값을 부여한다.
  • 범주가 너무 많아 One hot Encoding을 하기 애매한 상황에서 이용하기 좋은 인코딩 방법이다.

  • 예를 들어 poor, good, very good, excellent를 나타내는 변수에서는 순서가 중요한 변수이지만,
    빵, 요거트, 컵케익을 나타내는 변수에 대해서는 순서가 있는 변수가 아니므로
    순서가 부여되는 ordinal encoding 기법은 적절하지 않을 수 있습니다.

 

 

 

 

 

 

 

📝astype( ).cat.codes는 무엇이고 언제 쓰나요?   (chat gpt에게 물어봤다)


  • astype().cat.codes는 pandas 라이브러리의 DataFrame 및 Series 객체에서 범주형 데이터를 숫자 코드로 변환하는 데 사용되는 기능이다.
  • cat 속성 : 데이터프레임이나 시리즈 객체에서 범주형 데이터를 다루는데 사용되는 속성
  • codes 속성 : 범주형 데이터를 숫자 코드로 변환하여 반환하는 속성
  • 해당 코드를 사용하면 범주형 데이터를 분석하는데 편리하게 사용할 수 있다.

 

 

 

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/11   »
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
글 보관함