머신러닝

심화프로젝트 2일차

whateveryouwish 2024. 8. 23. 21:04

기초 프로젝트에 이어서 심화 프로젝트를 시작하면서

 

또 이러는 중...

 

스포티파이 데이터셋을 주제로 삼고 클러스터링을 통한 사용자 맞춤 '추천 시스템'을 만들고 있다.

기초 프로젝트 때도 브라질 이커머스 기업을 분석하면서 어려운 데이터였어서 고전했지만

깔끔하고 충분히 분석할만한 데이터였다. 나의 역량이 부족해서 문제였지...

근데 아무리 생각해도 이 데이터셋은 음악 추천 시스템을 만들기에는 부족해 보인다.


https://charts.spotify.com/charts/overview/global 혹시 도움이 될까 해서 아까 찾아둔 거 있는데, 나중에 사용자 선호 장르를 정해야할 때 저기 일간, 주간 탑 200 csv 파일 제공되니까 참고하면 좋을 것 같구요https://ubrain0624.medium.com/%EB%A8%B8%EC%8B%A0-%EB%9F%AC%EB%8B%9D%EC%9D%84-%ED%99%9C%[…]%EC%98%88%EC%B8%A1%ED%95%B4%EB%B3%B4%EA%B8%B0-f7ad5a4eb4d0여기는 회귀 모델이라 저희랑 방향성이 좀 다른데 각 feature랑 상관 관계를 잘 시각화해서 보여줘서 좋구요https://alpaca-gt.tistory.com/201중반 이후부터 유사한 노래 추천 알고리즘이 되어 있어서 참고하면 좋을 것 같구https://www.tableau.com/ko-kr/blog/how-visualize-spotify-music-trends-tableau저희가 태블로를 사용하진 않지만 피피티 만드는 과정에서 참고하면 좋을 시각화 자료들이구요https://spotipy.readthedocs.io/en/2.24.0/#이건 아까 형호튜터님이 말씀하신 파이썬으로 추천 알고리즘 만드는(차라리 군집 10번하는 게 나은) 코드인데 한 번 구경해보셔도 좋을 듯 합니다


이건 참고한 자료들을 조원분들께 설명한 부분인데 사실 참고한 자료의 10분의 1정도인 거 같다.

이 프로젝트가 감이 잘 안잡히는 이유가, 여기에서 제공하는 Feature들이 실제로 음악 장르를 예측하는 군집 형성이 가능한가? 라는 생각이었다.

 

그 feature들이라 함은

acousticness

danceability

duration_ms

energy

instrumentalness

liveness

loudness

speechiness

tempo

valence

popularity

key

등등인데, 해당 특성들이 실제로 음악의 장르나 비슷한 느낌을 낼 수가 있는지

그것에 대한 고민이 길게 이어져야 한다고 생각하는 편인데

생각보다 데이터 전처리나 클러스터링 본 작업에 빨리 뛰어든 느낌이다.

 

사실 내가 초반에 

사용자가 자신이 듣고싶은 음악을 입력하게 되면 해당 음악과
대부분의 특성에서 비슷한 군집에 해당하는 곡들을 추천해주는 시스템

사실 기존의 스포티파이 추천 메커니즘보다 더 잘 예측할 수는 없을 것 같아서
타사인 유튜브 뮤직처럼 한 곡 누르면 그거랑 같은 군집에 있는 음악들 쫙 뽑아서
추천해주는 메커니즘을 우리만의 방식으로 구현해보고자 한다
근거는 유튜브 뮤직의 성장세와 편의성

스포티파이 유저 데이터에 따르면 새로운 음악을 발굴하는 가장 큰 (20퍼센트) 방법이
추천시스템이기에 추천 시스템을 조금 더 유저 친화적으로 할 필요가 있다.

현재 스포티파이에선 ui 자체가 가수를 누르고 믹스가 나오고 그걸 다시 재생버튼을 눌러야 음악이 나오는 구조인데
유튜브 뮤직의 경우 그냥 듣고싶어할만한 음악이 나열되어 있고 그걸 누르자마자 음악이 재생되는 구조

또한 스포티파이는 ‘믹스’라는 이름으로 음악 추천 시스템을 최상단에 띄워놓기는 하지만,
아티스트별 믹스고 음악 추천 믹스가 아니기 때문에 특정 장르의 음악이 ‘특정’될 수는 없는 구조이다.

예를 들어 오늘은 이 가수 음악 듣고 싶어 가 스포티파이에서 밀고있는 셀링 포인트라면
유튜브뮤직은 오늘은 이 음악 듣고싶어인 셈 —> 하지만 

우리가 가지고 있는 데이터인 음악의 유사성을 강조하여 음악 추천 시스템을 만들기 위해서는
가수의 음악을 추천하기보단 특정 음악이 입력되었을 때 해당 음악과 유사한 특성들을 가진 곡들을 추출하여
추천해주는 시스템이 필요

 

이런 방향성을 제안했는데 이걸 어떻게 써먹으면 좋을지.

사실 이 방향대로 하면 군집화는 필요가 없으니까.

 

그래서 일단 군집화는 군집화대로 하는 것으로..!

 

데이터 전처리는 생각보다 할 게 없었다. 결측치도 없는 데이터인 데다 사실 만질 수 있는 게 많이 없어서.

 

실제 음악이 정해지고, 장르가 정해진 후에야 비로소 장르를 특정하고, 예측할 수 있게 되고

그 과정이 가장 복잡할 것이라 생각된다.