09.16 오늘 한 것 기록
추석 연휴 포함 주말까지 4일이 지나고 월요일
오전 - 연휴동안 박사님께 메일로 문의한 내용 직접 개인방문하여 멘토링
오후 - 멘토링 받은 내용 토대로 user_id로 Word2Vec 성공 (plot은 여전히 commit중), DBSCAN 새연이 코드 긁어다 적용
각자 오늘 한 내용 간단히 공유하고 퇴근
:: 오전
박사님께 여쭤본 내용은
1) product_id로는 Word2Vec이 잘 되는데 user_id로 진행하려하면 unsupported 에러가 발생
input type이 int64여서 str로 변환해서 넣어야 한다고는 생각하는데 의도한 대로 형변환이 되지 않는 문제
→ pandas를 사용해서 Series타입이 끼여 문제가 발생하는 것 같다고 판단
Word2Vec에 굳이 Series가 들어갈 필요 없이 list in list 형태의 input이기만 하면 되므로
str인 list를 생성하면 되겠다 진단하여 아래 코드를 작성했고 잘 돌아갔다.
all_user_str[]
for i in range(0, len(group7.user_list)):
user = group7.user_list[i].tolist()
user_str = [str(s) for s in user]
all_user_str.append(user_str)
But. user_id로 진행하니 데이터 양이 많아진건지 무엇이 문제인건지
plot 띄우는 것도 네시간 째 돌아가는 중이고 DBSCAN에 넣으려면 Kaggle에서 제공하는 RAM이 꽉 차 커널이 죽어버려서
로컬 pc로 돌리거나 다른 더 큰 사양의 가상머신을 찾아 돌려야 할 듯 하다.
2) K-Means 분석한 내용을
원래는 tsne plot에 색을 입히거나 하여 코어를 분리해내고 싶었으나 잘 안 되는 중이고
단순히 클러스터 갯수를 지정하여 라벨링 하는 것은 무리 없이 돌아가는데 이게 유의미하게 잘 된 것인지를 판단하기 힘들다
→ 대부분의 scatter plot 형태가 아주 큰 덩어리 가운데 코어가 작게 떨어진 모양새니 K-means보다는 DBSCAN에 집중하길 권장
::오후
우선 문제없이 돌아가는 product별로 분류한 Word2Vec에 대해 DBSCAN을 실시했다.
원형 거리기반 K-means와 달리 DBSCAN은 밀도 기반 클러스터링이라 원형이 아닌 형태로도 클러스터링이 가능한데
이 부분을 맡은 새연이가 연휴동안 DBSCAN 코드를 완성해왔다.
파라미터는 원래 있던 예제의 것을 가져왔다고도 했고 아직 코드에 대한 파악이 다 된 건 아니어서
적혀있던 파라미터 그대로 eps = 0.75, min_cluster = 6으로 진행했을 때 위 처럼 나온다.
사진은 붙여넣은 것이다 보니 해상도가 깨져 여기선 뭐가 뭔지 읽을 수 없지만
원본은 바로 첨부가 잘 안 될 만큼 고해상도라 내용 파악이 가능하다.
또한 클러스터 별로 분류된 dataframe 저장이 가능 해 이걸로 새로운 인사이트를 도출하거나 심도있는 분석을 진행할 수 있을 것 같다.
작게 뭉친 것들만 말해보자면 Yogurt끼리 묶인 것과 Baby용 식품 (이유식으로 추정)으로 제법 유의미하게 묶이지 않았나 싶다.
→ 다만 이 부분도 왜인지는 모르겠으나 commit하고 보니 내가 처음 돌렸을 때와 달리 5개의 클러스터로 분류된다.
model을 만들 때 파라미터를 넣고 안 넣고의 차이인가 싶어 이 부분은 실험을 해 봐야 알 듯 하다.
:: 해야 할 일
1) 수요일 아침 발표 내용 정리(3주차 완료, 4주차 진행 내용), 지난 발표 때 지적받은 부분 보완할 것
2) 수요일 멘토링 시간 정하고 발표할 내용 정리 → 시나리오 작성 완료 필요
3) (개인) DBSCAN 결과로 도출할 내용 생각하기 + 원래와 다른 방향이지만 예측할 내용이 있을지, 모델학습 가능할지 찾아보기