LG U+ Why Not SW CAMP 7기 11주차 회고

gayoniee·2025년 7월 28일

회고

목록 보기
11/25

Liked

  • 단순 선형 회귀에 비해 다항 회귀로 성능이 확실히 향상된다는 점을 확인했다.
  • 다항차수를 1~5까지 올리면서 RMSE, R2의 변화를 시각화하여 과적합 구간을 정확히 파악한 점이 좋았다.
  • 성능 수치만 보는 것이 아니라 랜덤포레스트와 비교하며 모델 선택에 대해 고민한 것이 인상 깊었다.
  • 단순히 PCA → KMeans의 조합이 아닌 2~10개의 주성분을 for문으로 반복 실험하여
    explainedvariance_ratio와 silhouette_score를 병렬로 기록하였다.
  • 분산 설명력과 군집 품질 간 trade-off를 수치 기반으로 확인했다.
  • 군집 수를 고정한 KMeans와 군집 수를 자동으로 찾는 DBSCAN을 모두 실험해보며 클러스터링 알고리즘의 특성과 장단점을 실습을 통해 배웠다.

Learned

  • MSE와 RMSE의 차이와 해석 방법

    • 개념: MSE는 오차의 제곱 평균으로 단위가 커지고 직관성이 낮다. RMSE는 단위를 실제값과 맞춰 직관적인 해석이 가능하다.
    • 느낀 점: MSE가 3천만 단위여도 이상한 게 아니며 실제 오차 규모를 판단할 땐 RMSE를 봐야 한다는 걸 직접 체감했다.
  • R2(결정계수)의 의미와 한계

    • 개념: R2는 예측 모델이 실제 데이터를 얼마나 잘 설명하는지를 0~1 사이로 나타낸 지표로 1에 가까울수록 좋다.
    • 느낀 점: 단순 선형에서는 R2가 낮았지만 2차 다항에서 급격히 올라가는 걸 보며 비선형성을 잘 반영하는 모델이 더 설명력이 크다는 걸 이해했다.
  • 다항 회귀의 차수와 과적합 관계

    • 개념: 다항 회귀는 차수가 높아질수록 데이터에 더 잘 맞지만 과도하면 학습 데이터에만 특화되어 새로운 데이터에 약해지는 과적합 문제가 발생한다.
    • 느낀 점: 3~5차 회귀에서 RMSE와 R2가 다시 나빠지는 것을 보고 복잡하다고 좋은 게 아니라는 걸 명확히 알게 되었다.
  • 랜덤포레스트의 비선형적 특성과 다항 특성의 효과

    • 개념: 랜덤포레스트는 이미 트리 구조로 비선형 경계를 학습할 수 있어서 추가적인 다항 특성을 굳이 넣지 않아도 복잡한 관계를 학습할 수 있다.
    • 느낀 점: 선형 모델에서는 다항 특성 추가가 효과적이지만 RF에서는 오히려 성능이 정체되거나 떨어졌고, 모델 특성에 맞는 전처리가 중요하다는 걸 배웠다.
  • cross_val_score를 활용한 일반화 성능 평가

    • 개념: train_test_split은 단 1회의 분할이라서 운에 따라 결과가 달라질 수 있지만 교차검증은 데이터를 여러 번 나눠 평균적으로 성능을 측정하므로 일반화 성능 파악에 더 적합하다.
    • 느낀 점: 같은 모델이라도 교차검증 점수가 낮게 나올 수 있고 과대평가된 테스트셋 점수만 믿으면 안 된다는 걸 실제 차이로 느꼈다.
  • make_scorer를 활용한 cross_val_score 커스터마이징 방법을 익혔다.

  • scikit-learn에서 로그값을 타겟으로 사용할 때 역변환 기반으로 평가 지표를 정의해야 모델 성능을 실제 해석 단위로 비교할 수 있다는 점을 이해했다.

  • 불균형 이진 피처 제거의 효과 (중고차 데이터)
    전체 피처 중 bool 타입의 칼럼에서 불균형 분포(0.05 미만 또는 0.95 초과)를 제거하니 약 70개 이상이 제외되었고 모델 성능에 긍정적인 영향을 준다. 불필요한 노이즈를 줄여줌.

  • KMeans 알고리즘은 중심점을 기준으로 데이터를 군집화하는 방식!

    • 군집의 수(k)를 미리 지정해야 하고,구형 형태의 군집에 적합하다는 특징이 있다.
    • 실루엣 분석과 엘보우 기법 등을 통해 적절한 k를 찾을 수 있으며 각 군집의 응집도와 분리도를 시각적으로 평가할 수 있다.
  • PCA (주성분 분석)는 고차원 데이터를 더 적은 차원으로 줄이면서도 최대한 정보(분산)를 보존하려는 방법이라는 점!

    • 각 주성분은 데이터의 변동을 많이 담는 방향으로 정렬되며 서로 직교한다는 수학적 구조 덕분에 불필요한 차원을 제거하고 시각화나 모델 성능 향상에 큰 도움이 된다.
    • 스크리 차트와 누적 설명 분산 비율 개념은 주성분 개수 선택에 핵심적임!
  • DBSCAN 알고리즘은 KMeans의 한계를 보완하는 밀도 기반 군집화 기법

    • 군집 수를 미리 지정할 필요 없이 데이터의 밀도 차이를 기반으로 자율적으로 군집을 형성한다는 점이 가장 인상 깊었다.
    • 잡음 포인트(-1)를 별도로 구분해내고 복잡한 모양의 군집도 잘 탐지할 수 있는 구조라서 노이즈가 많거나 비선형 구조의 데이터에 매우 강력한 도구임을 알게 되었다.
    • eps와 min_samples는 DBSCAN의 핵심 파라미터로 밀도의 기준을 정하는 중요한 요소임을 배웠다.
  • 고차원 데이터에서는 DBSCAN의 거리 개념이 왜곡될 수 있다는 점도 알게 되었고 이를 보완하기 위해 PCA와 함께 사용하는 것이 효과적이라는 점을 통해 차원 축소와 군집화가 함께 연동되어야 하는 경우가 많다는 걸 이해하게 되었다.

Lacked

  • 다항 차수 증가 시 학습 시간이나 feature 수 증가에 따른 모델 복잡도에 대한 평가는 아직 미흡했다.

  • 변수 중요도 관점에서 선형 모델과 트리 기반 모델의 차이를 비교해보는 시도는 부족했다.

  • 모델별로 오차가 큰 구간이 어디인지 등 잔차 분석이나 예측 오류 시각화는 조금 부족했다.

  • 중고차 데이터에서 모델별 성능 차이가 뚜렷하게 드러나지 않았고 모든 모델의 성능이 비슷하게 낮은 것으로 나타났다.

    → 이는 인코딩 오류, feature 설계 미흡, 불필요한 컬럼 존재 등이 원인일 수 있음.

  • 하이퍼파라미터 튜닝 전 성능 평가에서 정리 부족

  • 현재 상태에서 XGBoost가 Test RMSE는 가장 낮지만 CV RMSE 기준으로는 RandomForest가 앞서기도 하는 결과가 나왔음. 이 차이가 왜 발생하는지 모델의 구조와 학습 방식 차이 측면에서 해석해보는 시도가 부족했다.

Longed For

  • 다항 특성 확장 후의 feature 수 증가, 모델 학습 시간, 과적합 경향을 더 체계적으로 분석하는 방향으로 확장해 보고 싶다.
  • 성능 외에도 학습 속도, 해석 가능성, 튜닝 편의성 등 다양한 관점에서 모델들을 비교 분석해보고 싶다.
  • 불균형 대응 전략 확장
    • 다양한 오버샘플링 방식 실험
    • 언더샘플링과 앙상블 결합
  • 모델 해석성 강화
    • SHAP값 시각화로 XGBoost 모델의 예측 근거를 고객 단위로 해석
  • 모델 앙상블
    • GradientBoosting + XGBoost의 soft voting 실험
    • stacking 기법 적용

0개의 댓글