[강좌] 기타 5분만에 이해하는 머신러닝 : 클러스터링 실제예제 (무비렌즈 데이터)

무비렌즈 데이터는 유저별 영화평점을 기록한 자료입니다. 추천시스템을 평가하는데 유용한 데이터 셋이죠.


크게 2개의 자료로 구성되어 있는데, 영화정보와 영화평점 자료입니다.


영화정보 자료는 영화ID(movieId) / 제목(title) / 장르(genres) 로 구성되어 있습니다.


영화평점 자료는 유저ID(userId) / 영화ID(movieId) / 평점(rating) / 시간정보(timestamp)로 구성되어 있습니다.



추천시스템의 경우, 유저ID간 유사도를 측정해서 개별영화의 평점을 예측해야 합니다.


하지만 여기서는 유저ID별 어떠한 장르를 선호하는지 (평균평점을)계산하고, 그 정보로 유저ID 유사도를 바탕으로 클러스터링을 진행하게 됩니다.


그래서 클러스터링을 위한 기본자료를 아래와 같이, 각 유저ID의 장르별 평균평점을 준비합니다.



클러스터링의 유사도는 여러가지가 있지만, 여기서는 2가지 (유클리드 / 코사인) 유사도를 가지고 덴드로그램을 만들어보겠습니다.


유클리드 유사도는 각 유저ID의 장르별 평점을 Feature로 간주하여, 말그대로 유클리드 거리를 계산하여 비슷한 유저끼리 묶는 방법이죠. (삼각형 빗면 길이 구하는 거죠!)



코사인 유사도는 각 유저ID의 장르별 평점을 Feature로 간주하여, 각 유저ID간 벡터의 각도가 비슷한 유저를 묶는 방법입니다. 사실 이 데이터에서는 알맞지않는 거리계산법이죠.




아래부터는 유클리드 기반의 Ward 계산방법을 이용하여, 3개의 클러스터로 진행을 하였고, 아래와 같은 군집으로 묶였습니다.



클러스터링에서 가장 중요한 것은 해석입니다. 아무리 비슷한 유사도를 가진 유저를 묶었다고 하더라도, 클러스터 내부에서는 유저별 차이가 있을 수 밖에 없습니다.


아래는 클러스터별 장르의 평균평점 일부입니다.


이것만 보면 잘모르겠으니, 히트맵으로 표현해보겠습니다.

저의 뇌피셜로는 아래와 같은 해석을 낼 수 있습니다.

클러스터 0 : 아주 대중적인 영화장르(코메디, 액션 등)에 치우쳐진 영화취향을 가지고 있음

클러스터 1 : 다큐멘터리(이것도 다른 클러스터보다 높음!)를 제외한 나머지 장르의 레이팅이 높음. 그리고 필름느와르의 레이팅이 높은 것은 특이함

클러스터 2 : 드라마, 코메디, 로맨스, 액션, 어드벤처의 레이팅이 다른 클러스터 보다 높음. 가족이 있거나 / 가족적인 유저 ?



하지만 각 클러스터의 전체 유저의 평균은 너무나 함축적으로 만들어진 정보이기 때문에, 조금 더 세부적인 내용을 확인해보겠습니다.


아래는 Y축은 장르 / X축은 평점구간에 있는 유저ID 수 입니다. 단순평균보다는 조금 더 많은 정보를 보여주고 있습니다.

저의 뇌피셜로는 아래와 같은 해석을 추가로 낼 수 있습니다.

클러스터 0 : 아주 대중적인 영화장르(코메디, 액션 등)에 치우쳐진 영화취향을 가지고 있음

  1) 다른 클러스터 대비 낮은 평점의 비중이 높은 편

  2) 아이맥스, 다큐멘터리, 필름느와르를 매우 싫어한다는 것은 확실히 알겠음


클러스터 1 : 다큐멘터리(이것도 다른 클러스터보다 높음!)를 제외한 나머지 장르의 레이팅이 높음. 그리고 필름느와르의 레이팅이 높은 것은 특이함

  1) 해당 클러스터는 중간 점수대인 3점대에 유저가 많이 몰려 있음

  2) 다른 클러스터 대비해서 극점(0 / 5점) 비중이 낮은 것으로, 무난한 영화 취향을 가진 유저집합이라는 판단을 할 수 있음 (아님말고)


클러스터 2 : 드라마, 코메디, 로맨스, 액션, 어드벤처의 레이팅이 다른 클러스터 보다 높음. 가족이 있거나 / 가족적인 유저 ?

  1) 레이팅 구간 별로 확인했을 때, 4/5점대 유저의 비율이 상대적으로 높은 편을 확인할 수 있음 (관대한 유저들?)



이와 같이 클러스터링에서 가장 중요한 것은 해석입니다.


그리고 클러스터 해석은 같은 베이스 자료를 보더라도 "얼마나 깊이의 시각화를 하는가?", "어떠한 관점에서 해석을 하는가?" 에 따라서 달라질 수 있습니다.


이전글 : https://www.clien.net/service/board/lecture/14920494CLIEN



May 30, 2020 at 07:46PM