36일차 머신러닝9

차지예·2025년 7월 4일

생성AI

목록 보기
30/56
post-thumbnail

부동산 거래 데이터 기반 머신러닝 예측

🔍 목표: 부동산 거래 데이터를 이용한 거래 금액 예측 회귀모델 구축

📌 프로젝트 개요

이 프로젝트는 다음과 같은 단계로 진행됩니다:

  1. 데이터 로드 및 탐색

  2. EDA(탐색적 데이터 분석)

  3. 결측치 처리 및 전처리

  4. 회귀 모델 구축 및 평가


1️⃣ 데이터 로드 및 탐색

import pandas as pd
import numpy as np

train = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/딥다이브/transaction_price_data_train.csv')
test = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/딥다이브/transaction_price_data_test.csv')
  • train.csv: 학습용 데이터셋

  • test.csv: 예측용 데이터셋

데이터의 기본 구조는 head(), info(), describe() 등으로 확인합니다.


2️⃣ EDA (탐색적 데이터 분석)

✅ 결측치 확인

train.isnull().sum()

컬럼별 결측값 분포를 확인하여 전처리 전략 수립
예: 건물유형, 층수, 전용면적 등의 결측치 처리 필요

결측치가 많은 컬럼은 삭제 또는 대체(평균, 최빈값 등)


3️⃣ 데이터 전처리 및 피처 엔지니어링

범주형 변수 인코딩

  • LabelEncoder, OneHotEncoder 등

수치형 변수 스케일링

  • StandardScaler, MinMaxScaler

이상치 탐지 및 처리

  • IQR, Z-score 등 사용 가능

로그 변환(Log Transformation)

  • 거래 금액 분포가 비대칭일 경우 사용


4️⃣ 회귀 모델 구축 및 평가 (예상)

예측 대상이 거래 금액이므로 회귀 모델을 사용합니다.

모델 예시

  • LinearRegression
  • RandomForestRegressor
  • GradientBoostingRegressor

📊 회귀 평가 지표

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

print("MAE:", mean_absolute_error(y_test, y_pred))
print("MSE:", mean_squared_error(y_test, y_pred))
print("RMSE:", mean_squared_error(y_test, y_pred, squared=False))
print("R2 Score:", r2_score(y_test, y_pred))


✅ 정리

단계내용
데이터 불러오기Pandas로 train/test 로드
EDA결측치 탐색 및 변수 구조 확인
전처리결측값, 인코딩, 정규화, 이상치 처리 등
모델링회귀 기반 모델링 및 평가 (MAE, RMSE, R2 등)


회귀 평가지표

머신러닝에서 회귀 모델을 평가할 때는 분류 모델과 달리 오차(예측값 - 실제값)의 크기를 기반으로 성능을 측정합니다.

1️⃣ MAE (Mean Absolute Error)

평균절대오차
오차의 절댓값 평균

  • 모든 예측 오차를 절댓값으로 바꾸고 평균을 계산
  • 오차 크기에 대한 직관적인 지표
  • 이상치에 덜 민감

📌 수식

MAE=1ni=1nyiy^i\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|
  • (yi)( y_i ): 실제값
  • (y^i)( \hat{y}_i ): 예측값
  • (n)( n ): 샘플 수

2️⃣ MSE (Mean Squared Error)

평균제곱오차
오차를 제곱한 후 평균

  • 제곱을 하기 때문에 큰 오차에 더 민감
  • 수학적으로 계산이 간단하고 미분이 쉬워 모델 최적화에 자주 사용

📌 수식

MSE=1ni=1n(yiy^i)2\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2

3️⃣ RMSE (Root Mean Squared Error)

평균제곱근오차
MSE에 루트를 씌워 단위를 원래대로 복원

  • 단위가 실제 값과 동일하여 해석이 쉬움
  • 여전히 큰 오차에 민감

📌 수식

RMSE=1ni=1n(yiy^i)2\text{RMSE} = \sqrt{ \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 }

✅ MAE는 이상치에 덜 민감, RMSE는 이상치에 민감


4️⃣ 결정계수 R² (R-squared)

전체 변동성 중 예측 가능한 비율을 설명

  • 0 ~ 1 사이의 값 (1에 가까울수록 좋은 모델)
  • 예측값이 평균값만큼도 못할 경우 음수가 될 수 있음

📌 수식

R2=1i=1n(yiy^i)2i=1n(yiyˉ)2R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}
  • (yˉ)( \bar{y} ): 실제값의 평균

🔸 R² = 1: 완벽한 예측
🔸 R² = 0: 모델이 아무런 설명력 없음
🔸 R² < 0: 평균으로 예측하는 것보다 못함


✅ 지표 비교 요약

지표민감도해석 쉬움이상치 영향
MAE낮음매우 쉬움적음
MSE높음보통
RMSE높음쉬움
없음상대적 평가없음

결론

  • MAE와 RMSE는 절대 오차를,
  • R²는 모델의 상대적 설명력을 평가합니다.
  • 다양한 지표를 함께 보는 것이 중요합니다!

0개의 댓글