파이널 프로젝트
24.03.18(월)
데이터 탐색 및 분석 방향 설정
- 3.17일 일요일에 각자 새로 가져온 데이터들을 공유하고 투표한 결과 Kaggle에 존재하는 Airbnb가 개최한 신규 고객 도착지 예측 대회 데이터를 사용하기로 결정함
- 해당 데이터는 모델링을 위한 데이터이지만, 세션 데이터와 첫 가입일, 가입일 이후 첫 액션일 등의 로그 데이터가 존재하여서 분석도 충분히 할 수 있는 포텐셜이 있다고 판단되었음
- 모델링을 위한 충분한 양의 데이터가 존재 (훈련 데이터는 약 21만개)
- 사용할 데이터에 대해서 탐색을 하여 좋은 데이터인지 아닌지를 파악하기 위한 시간을 가짐
- 데이터 탐색을 통하여 어떤식으로 분석을 할 수 있을지 생각해볼 수 있는 시간
- 데이터 파일은 총 4개지만 그 중 가장 분석에 사용할만한 데이터는 2개 : train데이터와 session 데이터
- 2명씩 나누어서 각 데이터를 탐색하고 전처리해보기로 결정
- 나는 세션 데이터를 맡았음
- 세션 데이터는 유저 아이디, 유저 행동, 페이지에 머무른 시간(초)이 존재하는데 이 행동 컬럼은 총 3가지로 나뉜다 : action, action_type, action_detail
- action과 action_detail은 각각 고유한 값이 350개와 156개이기 때문에 전처리를 하지 않고서는 시각화도 분석도 할 수 없다고 판단.
- 액션값들에 대해서 어떠한 패턴을 찾을 수 없었기 때문에 중구난방인 데이터를 정리해야겠다고 생각함
- 결국 action_detail이 가장 세부적인 칼럼이기 때문에 그에 대한 고유 값들을 총 10가지 카테고리로 범주화하기로 결정.
- 팀원과 절반을 나눠서 각자 약 80개 정도의 고유값을 하나하나 확인하고 범주화 진행
- 우리가 정한 카테고리는 다음과 같다 :
- view_search : 검색과 조회하는 행위
- wishlist : 위시리스트와 관련된 행위
- user_update : 유저의 정보를 수정하거나 마이페이지에서 하는 모든 행위
- change_trip : 여행 특성을 변경하는 행위
- login_out : 로그인 혹은 로그아웃과 관련된 모든 행위
- review : 리뷰와 관련된 모든 행위
- host : 호스트가 하는 모든 행위
- booking : 예약과 관련된 모든 행위(예약 취소 포함)
- new_user : 회원가입과 관련된 모든 행위
- unknown : unknown이라고 붙여진 것들의 집합
- action_detail의 unique값을 슬라이싱해서 하나씩 확인하고 각 카테고리 리스트에 추가하는 작업 진행
new_sessions['action_detail'].value_counts()[79:99]

# 리뷰 카테고리 리스트
review = ['listing_reviews', 'profile_reviews',
'translate_listing_reviews', 'click_reviews']
- 범주화를 한 후에 모두 카테고리 이름으로 값을 대체
new_sessions['action_detail'].replace(review, 'review', inplace=True)
- 이렇게 하게 되면 액션이 널값인 경우를 0으로 대체하면 총 11개의 고유값으로 줄어들어 시각화가 가능해짐
- 해당 데이터는 말 그대로 유저의 세션 데이터이기 때문에 train 데이터와 머지를 했을 때 예약한 고객과 그러지 않은 고객 간의 행동 패턴 차이를 분석할 수 있음 -> 분석 방향성 첫번째.
- 더 나아가서 데이터를 합치면 퍼널 분석도 가능해보임 -> 분석 방향성 두번째.
24.03.19(화)
데이터 탐색 및 분석 방향 설정
- action_detail 컬럼에 대한 분류를 하고 최종적으로 합쳐서 중복이 없는지 확인
- 팀원 모두 모여서 주제 설정 및 분석 목표를 정확하게 정하기 위한 회의를 진행함
- 분석 방향은 크게 퍼널 분석과 유저 행동 패턴 분석으로 정해졌지만, 세션 데이터에 타임스탬프가 없어서 정확한 분석을 진행하기 힘들다는 의견이 있어서 과연 이 데이터가 좋은 데이터인지에 대한 생각을 다시 해보게 됨
- 데이터를 완전히 버리고 다른 데이터로 피벗을 할 것인지에 대해 정하기 전에 주제의 포커스를 분석에 둘건지, 모델링에 둘건지를 먼저 정하기로 함
- 과반수의 선택에 따라 모델링에 초점을 두기로 하였고, 애초에 해당 데이터는 모델링을 위한 데이터이니 그대로 진행하는 것은 괜찮다는 결정 하에 계속 진행하기로 함
- 수요일에는 멘토님에게 one-pager proposal을 제출해야하기 때문에 구체적인 주제와 데이터 전처리, EDA까지 할 수 있는 부분은 최대한 진행하여 작성하기로 함
- 나는 session 데이터 부분을 맡아왔기 때문에 보고서 작성도 마찬가지로 세션 데이터 부분을 팀원분과 함께 작성하기로 함.
24.03.20(수)
멘토님과 미팅 + 보고서 작성
- 각자 맡은 부분에 대한 EDA를 하고 멘토님과 미팅에서 보여드릴 문서 작성을 마무리하기 위해 팀이 다시 모임.
- one-page proposal에 대해서 어떤 식으로 작성이 되어야 하는지 경험이 없어서 일단 문제 정의와 EDA를 한 문서를 보여드리기로 결정
- 문서 정리를 하면서 새롭게 분석, EDA 아이디어가 떠오르기도 했고 모델링에 관해서는 하나의 국가만 예측하는 것이 아닌 확률이 높은 5개 국가를 모두 예측하는 것으로 결정
- 이렇게 하게 되면 모델 성능을 제출하여 확인이 가능하고, test셋을 활용할 수 있다는 장점이 있음
- 저녁 8시에 멘토님과 미팅 후 피드백 작성 예정 → 멘토님 개인사정으로 목요일로 연기됨
24.03.21(목)
멘토님과 미팅 및 피드백 보안하기
- 멘토님과의 미팅에서 여러가지를 배울 수 있었다
- 데이터 전처리나 범주화 등 어떤 방식으로든 건드릴 때는 정보 손실이 일어났는지 아닌지를 꼭 확인해야한다
- 정보 손실은 어떻게 확인하나? → 기술통계, 시각화 등으로 확인하여 전처리 전후가 동일해야함
- 데이터의 형태가 예를 들어 ○ 모양이었는데 전처리 후 ☆ 모양이 되었다면 이것은 쓸 수 없는 데이터가 되어버린 것!
- 각 데이터에 대해 어떤 값들의 의미를 우리가 모른다면 분석이나 모델링이나 아무것도 할 수 없다
- 데이터 파악이 가장 우선시가 되어야 한다
- 세션 데이터의 action관련 3개의 컬럼들의 관계(depth)를 파악을 해야 웹 로그 특성 분석을 할 수 있다
- 모델링은 어떤 알고리즘을 쓸 것인지와 각 알고리즘의 평가 방법을 공부해와라
- 그리고 2-3일 간격으로 발표날 직전까지 멘토님과 미팅을 갖기로 했다
- 미팅 이후에 팀원들과 다시 모여서 제일 먼저 해야할 것은 데이터 파악(action)이므로 그 3 컬럼의 관계를 파악하는 시간을 가지기로 결정했다
- 확실히 멘토님의 피드백을 받으니 방향성이 또렷해지는 것 같았고, 새롭게 배우는 것이 굉장히 많아서 너무 좋았다
24.03.22(금)
데이터 파악하기
- 팀원들과 모여서 각자 action 컬럼의 대해 세운 가설과 근거, 한계점 등을 공유했다
- 총 3가지 가설 중 하나를 투표하여 결정하였다
- 이제는 선택된 가설을 맞다고 가정을 하고 EDA를 진행하면서 생기는 가설이나 의문점에 대해 공유하고 검증하는 시간을 토요일 저녁까지 갖기로 했다
- 나는 개인적으로 따로 해야 할 일이 AWS를 이용해서 우리의 데이터를 적재하는 것인데 이 부분에 대해서는 더 공부가 필요하다
- 그 전까지는 각자 로컬 환경에서 데이터를 불러와서 진행하는 것을 결정하였다
'Data Science > TIL (Today I Learned)' 카테고리의 다른 글
| 프로그래머스 데이터분석 데브코스 1기 - 파이널 프로젝트 3주차 (0) | 2024.03.26 |
|---|---|
| 프로그래머스 데이터분석 데브코스 1기 - 파이널 프로젝트 1주차 (0) | 2024.03.11 |
| 프로그래머스 데이터분석 데브코스 1기 - 75일차 (0) | 2024.03.08 |
| 프로그래머스 데이터분석 데브코스 1기 - 74일차 (0) | 2024.03.07 |
| 프로그래머스 데이터분석 데브코스 1기 - 73일차 (0) | 2024.03.06 |