본문 바로가기

04. 캐글

00015. [KAG-002] House Prices 예측 #4 - 다양한 회귀 모델 학습 및 성능 비교

반응형

전처리를 모두 마쳤으니, 이제는 본격적으로 여러 회귀 모델을 학습하고 성능을 비교해보겠습니다. 이번 에피소드에서는 기본 모델 몇 가지를 테스트하여 베이스라인을 잡는 데 집중합니다.


🧪 1. 평가 지표: RMSLE

대회 평가지표인 **RMSLE (Root Mean Squared Log Error)**를 직접 계산해봅니다.

from sklearn.metrics import mean_squared_log_error
import numpy as np

def rmsle(y_true, y_pred):
    return np.sqrt(mean_squared_log_error(y_true, y_pred))

로그 값 비교이므로 예측값과 실제값 모두 0보다 커야 하며, log 변환 시 np.log1p() 사용이 일반적입니다.


📐 2. 로그 변환 적용

y = np.log1p(train['SalePrice'])

✅ 3. 모델별 실험

3.1. Linear Regression

from sklearn.linear_model import LinearRegression
model_lr = LinearRegression()
model_lr.fit(X, y)
preds_lr = model_lr.predict(X)
print("Linear RMSLE:", rmsle(y, preds_lr))

3.2. Ridge Regression

from sklearn.linear_model import Ridge
model_ridge = Ridge(alpha=10)
model_ridge.fit(X, y)
preds_ridge = model_ridge.predict(X)
print("Ridge RMSLE:", rmsle(y, preds_ridge))

3.3. Lasso Regression

from sklearn.linear_model import Lasso
model_lasso = Lasso(alpha=0.001)
model_lasso.fit(X, y)
preds_lasso = model_lasso.predict(X)
print("Lasso RMSLE:", rmsle(y, preds_lasso))

3.4. Random Forest Regressor

from sklearn.ensemble import RandomForestRegressor
model_rf = RandomForestRegressor(n_estimators=100, random_state=42)
model_rf.fit(X, y)
preds_rf = model_rf.predict(X)
print("Random Forest RMSLE:", rmsle(y, preds_rf))

📊 4. 성능 요약 (예시 결과)

모델명RMSLE (예시)

Linear Regression 0.1645
Ridge Regression 0.1560
Lasso Regression 0.1547
Random Forest 0.1472

이 결과는 train 기준이며, 과적합 가능성 존재. 이후에는 교차검증을 활용한 평가도 진행 예정입니다.


✅ 요약

  • 다양한 회귀 모델을 비교하며 초기 베이스라인 확보
  • Lasso와 Random Forest의 성능이 우수
  • 로그 변환을 적용하면 RMSLE 평가에 적합한 결과 도출 가능

➡️ 다음 편에서는 XGBoost, LightGBM 같은 고성능 모델을 도입하여 더 나은 결과를 노려보겠습니다 🚀

반응형