웹 프로그래밍 스쿨 django 수업 7주 차 포스팅입니다!😃

 

 

이번 주는 수업이 거의 막바지에 들어서면서 막연히 뭔가 만들긴 해야겠다는 생각만 하고 있던

 

개인 프로젝트에 대해서 어떤 기능과 콘셉트를가지는 사이트를 구현할지 구체적으로 고민해보는 시간을

 

가졌었는데요!

 

 

 

 

수업시간에 배웠던 내용들을 제외하고 뭔가 특별한 기능이 있었으면 좋다는 생각을 하던 중에 추천 시스템이란 걸

 

발견하게 되어서 공부해 적용해보고 싶다는 생각에 간단히 정리해봤습니다😃

 

 

 

 

 

1. 추천 시스템이란?

 

 

 

추천 시스템 정보 필터링 (IF) 기술의 일종으로, 특정 사용자가 관심을 가질만한 정보 (영화, 음악, 책, 뉴스, 이미지, 웹 페이지 등)를 추천하는 것을 말합니다.   - 위키백과

 

 

 

간단한 예로 아래 유튜브 화면의 오른쪽 리스트처럼 사용자가 선택한 컨텐츠와 유사한 속성을 가지는 콘텐츠나

 

평소 사용자가 검색한 내역을 기준으로 사용자가 관심을 가질만한 콘텐츠를 추천해주는 시스템입니다.

 

코난형이 왜 저기에..?

 

 

 

 

 

 

 

2. 추천 알고리즘

 

 

추천 시스템을 구현하는 알고리즘으로는 대표적으로 두 가지가 있는데요!

 

 

그 첫 번째는 협업 필터링입니다.

 

협업 필터링이란 대규모의 기존 사용자 행동 정보를 분석하여 해당 사용자와 비슷한 성향의 사용자들이 기존에

좋아했던 항목을 추천하는 기술입니다.

 

쇼핑몰 사이트에서 볼 수 있는 ‘이 상품을 구매한 사용자가 구매한 상품들’ 목록이나,

영화 추천 사이트, 페이스북의 새로운 친구 추천 기능을 예로 들 수 있습니다.

 

협업 필터링은 사용자와 비슷한 기존 사용자들을 찾아 그 사용자들의 정보를 이용해 추천을 하는 만큼 

만족도가 높을 수 있지만 기존 사용자가 없는 초기의 사이트에서는 추천을 제대로 하기 어렵다는 단점이 있습니다.

 

또한 비교적 계산량이 많은 알고리즘이라 사용자 수가 아주 많은 경우 모든 사용자를 검색하는 게

비효율적일 수 있으므로 상황에 맞는 검색범위를 설정할 필요가 있을 것 같습니다.

 

구현을 위해서 행렬 분해(Matrix Factorization)나 k-최근접 이웃 알고리즘 (k-Nearest Neighbor algorithm; kNN) 등의 방법이 많이 사용됩니다.

 

 

 

두 번째는 콘텐츠 기반 필터링입니다.

 

콘텐츠 기반 필터링은 음악을 추천하기 위해 음악 자체를 분석하여 유사한 음악을 추천하는 것과 같이

항목 자체를 분석하여 추천을 구현하는 방식입니다.

 

항목을 분석한 프로파일(item profile)과 사용자의 선호도를 추출한 프로파일(user profile)을 추출하여 이의 유사성을 계산합니다.

 

예를 들면 사용자로부터 ‘like’를 받은 음악의 특색을 바탕으로 해당 사용자의 프로 파일을 준비하고 이러한 음악의 특성과 사용자 프로파일을 비교함으로써 사용자가 선호할 만한 음악을 제공하는 방식입니다.

 

이 기법은 군집분석(Clustering analysis), 인공신경망(Artificial neural network),

tf-idf(term frequencyinverse document frequency) 등의 기술이 사용됩니다.

 

 

https://hackersstudy.tistory.com/126

 

 

http://www.kocca.kr/insight/vol05/vol05_04.pdf [참고한 사이트]

 

 

 

 

3. 선호도 계산방법

 

 

웹을 통해 특정 유저가 하나의 아이템을 조회했다면 해당 아이템에 관심이 없지 않다는 것을 알 수 있고,

그것이 구매로 이어졌다면 호감이 있다고 볼 수 있습니다.

 

이때 평점을 최고점수로 준다면 호감도가 매우 높다는 것이며 해당 아이템이 목록에 있음에도 조회하지 않고

지나갔다면 호감도가 마이너스에 가깝다는 것을 알 수 있습니다.

 

 이와 같이 아이템에 대한 사용자의 선호도를 매기는 것을 레이팅(rating)이라 표현합니다.

 

 

명시적 레이팅(explicit rating)은 평점을 받는 것처럼 유저의 분명한 피드백을 받는 것 방법입니다.

 

유저로부터 해당 아이템에 대한 선호도를 항상 받아 올 수는 없으므로 데이터 빈약도(data sparsity)가

크다고 할 수 있습니다. (ex. 쇼핑몰에서 물품을 구매한 유저가 항상 구매평을 남기지는 않음)

 

또한 일반적으로 상품 경험이 좋지 않은 사람은 큰 확률로 피드백을 주지 않는 경우가 많고,

 

0점에서 5점 사이라는 점수 폭이 주어지더라도 어떤 사용자는 보통 2~4점의, 어떤 사용자는 보통 3~5점의 점수 범위를 준다면 점수의 평균치에 대해 의미는 퇴색될 수 있어 정확한 선호도의 반영은 어렵습니다.

 

 

암묵적 점수(implicit feedback)는 조회 여부와 구매 여부에 따라 선호도를 추정하는 방식입니다.

 

목록에 노출되었으나 조회하지 않으면 –1점, 목록에 노출되지 않았다면 0점, 조회되면 1점, 구매나 특정 액션을

했다면 3점 등으로 명시적 레이팅보다 능동적인 레이팅이 가능하고, 명시적레이팅보다 좀 더 정확한 선호도를 반영할 수  있습니다.

 

 

http://wiki.hash.kr/index.php/추천_알고리즘[참고한 사이트]

 

 

 

 

 

웹 프로그래밍 스쿨에 대해 더 알아보기 ⭐

 

 

 

 

BELATED ARTICLES

more