Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

척척 학사

[KT에이블스쿨] 미니프로젝트 4,5차 리뷰 본문

[5기] KT에이블스쿨/[5기] 프로젝트 후기

[KT에이블스쿨] 미니프로젝트 4,5차 리뷰

나는야맹구 2024. 4. 30. 09:34

안녕하세요. "나는야맹구" 입니다~

오늘은 미니프로젝트 5차 리뷰를 가져왔습니다~

미니프로젝트 4차는 AICE ASSO  실습을 진행해서.. 건너뛰겠습니다.  ㅎㅎ^


  • 1일차
    • 시계열 데이터를 가지고 데이터 분석을 진행해보았습니다.
    • 첫째날은 제공받은 데이터를 기반으로 EDA를 진행했어요
    • 목표 - 재고를 최적화 하는 것
    • 팀원 6명 중 2명씩 짝을 지어 각자 상품을 맡아 EDA를 진행했습니다. 
    • 데이터 탐색
      • 결측치 확인
      • 중요 범줏값 비율 확인
      • 상품 별 월별 판매량(2014~2016년)
      • 2016년, 1년 간 상품 월별 판매량
      • 월별 방문 고객수(2014~2016년)확인
      • 1년간(2016년) 월별 고객 방문수 확인
    • 시계열 패턴 찾아보기
      • 상품별 판매량 추이 -> 선그래프 시각화
      • 대상 상품과 같은 카테고리의 상품별 판매량 추이 -> 선그래프 시각화
      • 휘발유 가격과 상품 판매량 추이 비교 -> 선그래프 시각화
        • 휘발유 가격이랑 유통이랑 뭔 상관?인가 싶었는데, 제공받은 데이터가 미국 유통 데이터 & 미국은 마트까지 가려면 차를 끌고 가야함. 따라서 휘발유 가격의 영향을 받지 않을까? 라는 추측을 기반으로 EDA를 진행함
      • 14일 동안 휘발유 가격 평균과 상품 판매량 추이 비교
      • 방문 고객수와 상품 판매량 추이 비
      • 상품 별 판매량 변화량 살펴보기
        • df['변수'].diff() 형태로 변수에 대한 변화량 확인
        • 요일별 변화량 비교
    • 시계열 데이터 분해
  • 2일차
    • 12번 상품 milk를 중심으로 데이터 전처리를 진행했고, 데이터 전처리 파이프라인을 구성했습니다. 
    • x,y 데이터 분리
      • 참고로 y는 '예측해야 하는 판매량'
    • Monday, Tuesday와 같은 요일과 1,2,3 과 같은 월을 카테고리형 변수로 변경
    • 가변수화를 진행
    • 학습용 데이터와 검증용 데이터로 분리
    • LinearRegression()을 진행했고 예측 및 성능 평가를 진행
    • 측정 결과, R2_score는 0.28이 나옴
    • 모델 성능 높이자!
      • 기존 데이터에서 추가로 변수 구성
        • 동일 카테고리 판매량 합계 
        • 동일 지역 방문객 수
        • 1일 전 판매량
        • 최근 7일간 판매량 평균 등..
      • 위와 같은 전처리를 진행해주고, 모델 성능을 다시 확인 -> R2_score: 0.41
    • 모델 변경
      • RandomForest - > R2_score: 0.705
      • LightGBM 모델 -> R2_score: 0.705
    • 전처리한 데이터셋은 파일 저장을 해주고 다음날에 사용
  • 3일차
    • 어제 저장한 전처리 한 데이터 불러오기
    • 3,12,42번 상품 별 모델링 진행
      • RandomForest, LightGBM 알고리즘 사용
      • 하이퍼파리미터 튜닝 
        • GridSearchCV
          • 파마미터 튜닝하는데 시간이 꽤 걸려서 각 조원끼리 맡은 상품만 모델링 진행하기로 했답니다.. 
          • 하다가 너무 시간이 오래 걸리면, 비교적 시간이 적게 걸리는 팀원 코드를 참고해가며 진행했어요
    • 앞서 진행한 전처리~모델링까지의 과정을 데이터 파이프라인으로 구축
      • 머신러닝 모델에 전달할 수 있는 x_train, x_val과 동일한 형태의 데이터 만들기
      • 결측치 처리, 가변수화, 변수 제거, 변수 추가 등 일괄 처리
      • 출력: 전처리 완료된 데이터 프레임
    • 이후, test 데이터를 불러와서 구축한 파이프라인의 input으로 넣기
    • output으로 나온 데이터에 대해 예측하고 성능을 평가했습니다
    • 그리고 재고금액을 평가하는 비즈니스 관점의 평가를 수행했습니다. 

ex) 12번 상품에 대한 모델링 성능 결과 및 비즈니스 평가 기록한 엑셀 시트

 

  •  4일차
    • Yolov8 모델 학습
    • yaml 작성 등 진행
  • 5일차
    •  
  •  6일차
    • 2일차에서 만든 모델에 
    • 조원 얼굴 이미지 수집 및 라벨링 진행
    • yaml 새로 생성
      • 조원들 얼굴 class 등 수정필요
  • 수정 코드
  • from ultralytics import settings
    • settings
      • datasets_dir에서 경로 수정해줘야함
        • '/content/'로 수정
    • yaml 파일
        •  
        • data = dict(
              train='./Face_Recognition/train/images',
              val='./Face_Recognition/valid/images',
              nc=13,
              names=[
                  'Barack Obama', 'Che Guevara', 'Cristiano Ronaldo', 'David Beckham',
                  'Donald Trump', 'Elon Musk', 'Joe Biden', 'Lionel Messi',
                  'Mark Zuckerberg', 'Oprah Winfrey', 'Steve Harvey', 'Steve Jobs',
                  'Zaha Hadid'
              ]
          )

          with open('./Face_Recognition/data.yaml', 'w') as f:
              yaml.dump(data, f)
      • train = /content/Face_Recognition/train/images
      • val = /content/Face_Recognition/valid/images
    • model = YOLO('/content/yolov8n.pt' task='detect')
    • model.train(model = '/content/yolov8.pt', 
      data = 'content/Face_Recognition/data.yaml') 파일 경로 이렇게 수정해줘야함. 
    • 학습시키는데 시간이 너무 오래걸렸음
      • 저는 1시간.. 넘게 돌리다가 gpu다 써서 cpu로 변경 했으나 오류 발생
      • 그래서 타 팀원 분이 돌린 best.pt로 앞으로 활용할 예정.