인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

어리둥절님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

다중선형회귀1

MSE 구하는법

해결된 질문

작성

·

72

0

안녕하세요. 회귀분석 모델의 MSE 구하는 방법에 대해 문의드립니다.

ols 모델 학습하고 난 후, model.mse_resid 메서드로 MSE 구하는 방식이 있더라구요. 근데 선생님이 정석적으로 풀이해주신 방법의 답과 차이가 있어서 문의드립니다.

자유도 처리나 계산 방법에 따라 차이가 있는 것으로 추정되는데, 이럴 경우 어떤 방식을 활용하는 것이 더 나을지 궁급합니다.

혹은 똑같은 방법으로 답을 구할 수 있는 메서드가 있는지도 궁금합니다.

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

소수점 반올림으로 답을 동일하게 만들거나

정답이 완전 다르다면 출제 가능성이 낮습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 어리둥절님.

회귀분석에서 MSE(Mean Squared Error)를 구하는 방법에는 여러 가지가 있습니다. 일반적으로 정확한 MSE 계산을 위해서는 손실 함수나 라이브러리에서 제공하는 메서드를 사용하는 것이 효과적입니다.

model.mse_resid는 statsmodels 라이브러리에서 제공하는 방식 중 하나로, 학습 중 사용된 데이터의 잔차(residual) 제곱합을 자유도로 나눈 값입니다. 하지만 일반적인 MSE 계산 방식과 약간의 차이가 있을 수 있습니다. 이는 라이브러리에서 사용하는 기본 설정과 통계적인 방법론의 차이에서 기인할 수 있습니다.

보다 정확한 MSE를 구하기 위해서는 다음의 방법을 추천드립니다:

  1. 직접 계산: 잔차(residuals) 배열을 구해서, 이는 실제 값에서 예측값을 뺀 결과입니다. 이 값을 제곱한 다음 평균을 내면 MSE가 됩니다.

    import numpy as np
    residuals = y_true - y_pred  # 실제값에서 예측값을 뺌
    mse = np.mean(np.square(residuals))
    
  2. 라이브러리 사용: sklearn.metrics.mean_squared_error를 사용할 수 있습니다. 이는 MSE를 간편하게 구할 수 있는 방법입니다.

    from sklearn.metrics import mean_squared_error
    mse = mean_squared_error(y_true, y_pred)
    

선택은 주로 코드의 명확성과 유지보수성을 고려하시면 됩니다. 코드의 가독성을 높이기 위해 sklearn 사용이 추천됩니다.

아래는 해당 질문에 대한 관련 링크입니다:
- 왜 sklearn과 statsmodels의 결과값이 다른가요?

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.