공유오피스 출입데이터 분석 팀프로젝트6 - 모델 성능 비교 및 코드 정리
최종 분석 주제 : 공유오피스 무료 체험 유저의 유료 결제 전환 예측 및 데이터 수집 전략 제안
오늘 할 일
- 오전까지 모델링 개선 작업해서 팀원과 공유 → 제일 성능 좋은 코드 사용하기
- 결제 전환 재현율 개선 :
- 클래스 가중치, SMOTE, 다중공선성 확인 필요
- 추가 EDA해서 불필요한 파생변수 제거 필요
- 결제 전환 재현율 개선 :
- 오후부터 보고서 초안 작성 시작하기
오늘 한 일
- 모델링 개선 작업해서 팀원과 공유 → 제일 성능 좋은 코드 사용하기
- 보고서 초안 작성 시작하기
- 데이터 전처리 코드 정리하기
- EDA
내일 할 일
- 보고서 초안 작성하기(계속)
- 분석 배경 보완
- 팀원 보고서 정리
- 후속과제 아이디어
Issues & Challenges
모델링 성능 비교
- 전반적으로 ACCURACY와 RECALL(유료 결제 전환 유저) 수치가 낮게 나왔음
- 하이퍼파라미터 튜닝과 전처리를 좀 더 세심하게 조정하는 방안이 있겠지만 시간적인 한계 발생
- 근본적으로 EDA 결과, 결제 전환 유저와 무료 체험 유저가 데이터셋에서 패턴이 비슷하게 관찰됨
- 따라서, 데이터의 한계로 모델링의 개선이 제한적임을 인지하고 모델링 성능을 높일 수 있는 로그 설계(데이터수집) 방안을 제안하는 방향으로 비즈니스 제안을 제시하고자 함
데이터 전처리 코드 정리하기 : 결측치 → 중복값 → 이상치 → 파생변수 생성 → 결합
- 데이터 전처리
- 중복값 제거 : 테이블 별 제거
- 결측치 처리 : 없음
- 이상치 처리 :
- TRIAL_ACCESS_LOG 테이블
- cdate 마이크로초 제거 및 +9시간 추가(trial_visit_info 테이블의 시간이 KST이므로 9시간 차이나는 것을 확인후 변환하였음)
- 비정상 체크인 검토 → 총 2,153개 행 감소
- 입실과 퇴실 갯수가 일치하지 않는 유저 : 1,762명
- 입실(1)로 시작하지 않거나 퇴실(2)로 끝나지 않는 유저 : 403명
- 1초간격으로 입실 혹은 퇴실 정보를 추가 (414건)
- 입실 또는 퇴실이 2번 이상 연속으로 나오는 경우 : 1,682명
- 입실(1)이 연속이면 마지막 데이터만 유지(앞단 입실 정보는 퇴실정보가 사라졌으므로 정확한 측정 불가)
- 퇴실(2)이 연속이면 첫번째 데이터만 유지(뒷단 퇴실 정보는 입실정보가 사라졌으므로 정확한 측정 불가)
- 2,567건 제거
- TRIAL_ACCESS_LOG 테이블
- 파생변수 생성 및 데이터 결합(TRIAL_ACCESS_LOG 유저 기준)
- 데이터 결합전
- TRIAL_REGISTER
- 체험신청일(평일/주말) : weekday_or_weekend
- 체험신청 요일 : day_of_week
체험신청월 → 불필요하다 판단하여 삭제- 완료후 TRIAL_PAYMENT 테이블에 결합
- TRIAL_ACCESS_LOG (SITE_AREA 테이블과 결합)
- 파생변수 생성
- 총체류시간 : total_stay_time
- 일별 평균 체류시간 : daily_average_stay_time
- 평일 체류시간 : weekday_stay_time
- 주말 체류시간 : weekend_stay_time
- 총입퇴실횟수 : visit_count
첫 방문 시간대(아침/오후/저녁) → 새벽 출입자 발생하여 삭제- 첫 방문 날짜(년,월,일,시간)
- first_visit_year
- first_visit_month
- first_visit_day
- first_visit_hour
- 주말 방문일 수 : weekend_days
- 평일 방문일 수 : weekday_days
- 가장 많이 방문한 지점id : most_visited_site
- 가장 많이 방문한 지점의 면적 : most_visited_site_area
- 방문한 총 지점 수 : total_sites_visited
- 파생변수 생성
- 데이터 결합 : TRIAL_ACCESS_LOG 고유 유저 수 기준으로 결합
- 분석 대상 : 무료체험 신청 후 공유 오피스를 실제로 방문한 유저
- TRIAL_ACCESS_LOG(방문) 고유 유저수 : 6,026명
- 결제 2,337명(39%), 미결제 3,689명(61%)
- TRIAL_PAYMENT(모든 무료체험 신청자) 고유 유저수 : 9,624명
- 결제 2,337명(24%), 미결제 7,287명(76%)
- 무료체험 신청후 미방문 유저(c - b) : 3,598명(37%)
- 방문 고유 유저수 선택 이유 :
- 미방문 유저가 약 37% 존재하고, 포함해서 분석하면 방문데이터 결측치 유저가 너무 많음
- 방문 유저 기준으로 하면 결제 비율은 약 39%로 데이터 불균형 문제가 없음
- 미방문 무료체험 유저는 방문 정보가 없어 예측 모델에 활용할 수 있는 변수가 제한적임
- 미방문 이유(외부요인, 개인사정 등)를 알 수 있는 데이터가 없어 분석이 제한적임
- 방문 패턴 기반으로 결제 가능성을 판단하는 데 더 집중할 수 있음
- 결과 활용 :
- 방문한 유저 중 결제 가능성이 높은 유저를 정의할 수 있음
- 방문 데이터를 기반으로 결제를 유도할 수 있는 전략(지점 최적화, 시간대 맞춤형 프로모션)을 제안할 수 있음
- TRIAL_REGISTER
- 데이터 결합후
- 파생변수 추가 : 체험신청후 첫방문까지 일수 days_to_first_visit
- 데이터 결합전
EDA
- 히스토그램 분석
- 총 체류시간 : 대부분의 유저는 무료체험 기간 3일 동안 총 체류 시간이 12시간(43,200초) 미만으로 이용시간이 짧은 것으로 관찰됨
- 입실/퇴실 빈도 : 무료체험 기간 동안 입실과 퇴실의 빈도가 20회 미만으로 낮은 값에 밀집되어 있음
- 첫 방문까지 걸린 일수 : 대부분의 유저는 무료체험 신청 후 다음날에 방문하는 것으로 관찰됨
- 첫 방문 시간대 : 무료체험 신청후 첫방문 시간으로는 업무 시간대(9시~17시)에 집중되어 있음
- 첫 방문 월 : 연초보다 연말에 무료체험 유저가 집중되는 경향이 관찰됨
- 주중/주말 체류시간 : 주말보다 주중의 체류시간이 조금 더 길게 이용하는 것으로 관찰됨
- 선호하는 지점의 평수 : 평수가 넓은 지점이 유저가 더 많이 방문하는 것으로 관찰됨
- 결제 여부에 따른 체류시간 비교
- 결제 여부에 따른 입실/퇴실 빈도 비교
- 체험 신청일과 첫 방문일 간 차이 분석
- 결제 여부에 따른 지점 선호도
- 결제 여부에 따른 요일 패턴
- 무료체험 신청후 첫 방문한 유저 비교
Reflection
- 어제 모델링에 일부 코드가 제대로 작성되지 않아 하이퍼파라미터 튜닝시 데이터를 학습데이터와 테스트데이터로 분리하지 않고 작동되고 있음을 확인했다. 그래서 혹여나 모델 성능이 개선되지 않을까 기대하며 코드를 다시 만들어 학습을 시켜봤지만 개선되지 않았다. 원인으로는 EDA시 무료체험 유저와 유료결제 전환 유저의 행동 패턴이 유사하여 모델이 예측을 정상적으로 하지 못하고 있는것이다. 그래서 우리팀은 데이터분석을 위한 로그 설계가 제대로 이루어지지 않았다고 판단하여 데이터 수집방안을 제안하는 방향으로 주제를 설정하였다. 다른팀들도 모델 성능이 그리 좋지 않았고, 가이드라인과 다르게 메인데이터를 메인으로 사용하지않고 외부데이터 중심으로 프로젝트를 풀어나가고 있는 것 같다. 프로젝트를 진행하면서 우리가 제공받은 기업의 데이터 뿐만아니라 오늘 강사님의 피드백처럼 기업들이 데이터의 중요성을 인지하지 못하여 초기 세팅이 적절하게 설계되지 않아 분석조차 할 수 없는 기업들의 데이터가 대부분이라는 느낌을 받았다. 문득 회사에서 사용하던 ERP가 떠올랐는데, 생각보다 ERP를 활용하지 못하거나 구축조차 못한 기업들이 많았고 ERP 구축 경험자를 우대하는 곳이 많았었다. 데이터분석가 또한 로그설계 경험자 혹은 관련경험을 보유한 사람을 우대할 수 있다고 판단이 들었다. 데이터분석을 위한 올바른 데이터 설계를 고민하는 연습도 해봐야겠다.
This post is licensed under CC BY 4.0 by the author.