[ZB 데이터스쿨 11기]15주차 학습노트

InSung-Na·2023년 4월 20일
0

Study Note

목록 보기
15/18
post-thumbnail

머신러닝 프로젝트

주제 : Google Analytics Customer Revenue Prediction

개요

  • 비즈니스에는 파레토의 법칙(80:20)이 큰 비중을 차지한다
  • 수익 극대화를 위해 적절한 마케팅은 필수적이다

목표

  • 고객별 수익 예측

데이터 크기

  • train : 2016/08/01 ~ 2018/04/30 동안의 로그데이터(23.67GB)
  • test : 2018/05/01 ~ 2018/10/15 동안의 로그데이터(7.1GB)

샘플링

  • train(50%, row=683,334, col=62)
  • test(100%, row=401,589, col=62)

데이터 정보

  • 고객들의 로그 데이터
  • 구매자는 약 1%, 극심한 편향 데이터

절차

  1. 데이터 수집
  2. EDA
    2-1. 전처리
    2-2. 파생변수 생성
    2-3. 라벨인코딩
  3. 분류 모델
    3-1. LGBM_CLF
  4. 회귀 모델
    4-1. RandomForest_REG
    4-2. 피쳐 분석
  5. RFM

진행상황

  • 3/28 : 프로젝트 팀 선정

  • 3/30 : 프로젝트 탐색

  • 3/31 : 프로젝트 선정

    • Impact : 이 프로젝트가 얼마나 임팩트가 있는가?
    • Confidence : 이 프로젝트를 성공적으로 완료할 자신감은 어느정도인가?
    • Ease : 이 프로젝트는 얼마나 쉬운가?
  • 4/1 ~ 4/4 : 데이터 이해, 분류모델 활용을 위한 칼럼 선정

  • 4/4 ~ 4/7 : 분류모델 진행

    • 극심한 편향데이터이기 때문에 구매자와 비구매자를 분류한 후 구매자 데이터로 회귀를 진행하려 했으나 먼저 회귀모델을 진행한 팀원으로부터 비구매자 데이터를 포함해야 회귀모델의 성능이 좋아진다는 얘기를 듣고 잠정 중단
  • 4/8 ~ 4/9 : 회귀 모델 활용을 위한 칼럼 선정

  • 4/10 ~ 4/12 : 인코더, 회귀모델 선정

    • LabelEncoder VS OneHotEncoding ->LabelEncoder 사용
    • 선형, 2차, 3차, RF, GB, XGB, LGBM 성능 확인(LabelEncdoer) -> 트리계열 성능 우세 -> XGB
  • 강사님 피드백(4/12)

    • 회귀모델만 사용하지말고 분류모델로 사용해볼 것
  • 4/13 : 샘플데이터 사용가능 여부 검증, 팀원코드 종합

    • 데이터가 고루분포되어 train, test 전체를 사용한 값과 비슷한 결과가 나옴 -> 샘플 사용
    • 팀원코드 종합 -> LGBM_CLF + RF_REG 사용
  • 4/14 : 스케일러 선정

    • None, Standard, MinMax비교 -> LGBM(None) 선정

세부 내용

4/10 ~ 4/12 : 인코더와 회귀모델 선정

인코더 비교

  • OneHotEncoder

    • 명목형 범주 데이터
    • 소규모 데이터
    • 장점 : 성능 증가 가능성 있음
    • 단점 : 차원증가(col=32 -> col=10027)
  • LabelEncoder

    • 순서형 범주 데이터
    • 대규모 데이터
    • 장점 : 처리 속도
    • 단점 : 수치변환으로 데이터의 우열이 생김
  • 결론

    • 현 프로젝트의 데이터는 대부분 명목형 범주 데이터
    • 대규모 데이터이기에 OneHotEncoder로는 비효율적
    • 성능측면에서도 뛰어나지 않음(오히려 성능하락)
    • LabelEncoder를 사용하기로 결정

다항회귀 적합성 판단

  • 결론
    • LabelEncoder 사용, 다항회귀모델 비적합, 트리계열 적합
  • 이유
    • 선형, 다항회귀는 스케일링, 결측값 처리, 원핫인코딩 필요
    • 수치를 기반으로 값을 예측하기에 수치가 클수록 좋음
    • 하지만, 대규모 데이터에 OneHotEncoder를 적용 시 물리적으로 수행불가(Colab Pro 메모리 초과)
    • LabelEncoder를 사용하고 트리계열 모델을 사용하기로 결정

회귀모델 선정

  • 모델별 RMSE 비교(파라미터 미지정)

  • 결론

    • 트리계열을 사용
    • 팀원이 RF, LGBM으로 접근 중
    • XGB로 모델 개발

4/13 : 샘플데이터 사용가능 여부 검증, 팀원코드 종합

샘플데이터 검증

  • 데이터 샘플링
    • 피쳐 32개 선정
    • sample1 : train_5m(row=500000 + test_v2
    • sample2 : train(40%, row=683334) + test_v2
    • not_sample : train(100%, row=1708337) + test_v2(100%, row=401589)

  • 결론
    • 각 모델별 RMSE가 비슷하므로 데이터의 분포가 균등하다고 판단할 수 있다
    • sample2를 사용해서 프로젝트를 진행한다

코드 종합

  • 각 팀원들의 모델들 중에서 가장 성능이 좋은 모델들을 main으로 종합
    • 피쳐 : 62개 사용
    • 분류모델 : LGBM
    • 회귀모델 : RandomForest

4/14 : 스케일러 선정

  • 6개의 모델에 None, Standard, MinMaxScaler를 적용
  • 사용모델
    - RF, LGBM, XGB, Logistic, GB, KNN

  • 결론
    • 스케일러의 사용과 미사용에 차이가 매우 적음
    • LGBM모델을 사용하고 스케일러 미적용으로 결정

0개의 댓글