머신러닝

[머신러닝 입문]영화 추천 시스템 만들기

Mi-Flat 2020. 4. 6. 13:40
반응형

안녕하세요 

 

머신러닝 기법 중 랭킹, 추천 기법에 대해 설명드린적이 있습니다. 실생활에서 쉽게 찾아볼 수 있는 머신러닝의 예시로써, 사용자별 맞춤형 추천 서비스가 있습니다. 데이터를 기반으로 적절한 콘텐츠를 추천하는 방법으로 많은 분야에서 활용되고 있습니다. 아무래도 너무나 많은 정보와 콘텐츠에서 자신에게 적합한 것이 무엇인지 일일이 따져보는 것이 점점 어려워지기 때문에 지난 기록들을 바탕으로 미래 선택하면 좋을 것을 추천해주는 것이 가능해졌습니다. 오늘은 이러한 추천 시스템이 어떻게 작동하는지에 대해 알아보겠습니다.

 

영화를 추천하는 방식에서 고려할 수 있는 데이터는 영화 줄거리, 제목, 장르, 개봉일 등이 있습니다. 내용적인 측면을 고려하여 추천하는 것을 '내용 기반 추천 시스템'이라고 합니다.

또한 비슷한 영화를 보는 사람들에게 비슷한 영화를 추천하는 것처럼 공통점을 찾아 빠진 부분을 추천해주는 것을 '협업 필터링'이라고 합니다. 

 

'유사도 계산'은 두 객체가 얼마나 비슷한지를 비교 분석하는 척도입니다. 유사도를 계산하는 방법에는 '자카드 계수', '코사인 유사도', '편집 거리'가 있습니다. 

 

'자카드 계수'두 집합의 유사도를 측정하는 계수입니다. 두 집합의 교집합의 원소 수를 합집합의 원소 수로 나눈 값이 되겠습니다. 영화의 줄거리에서 공통으로 나오는 단어를 모든 단어의 수로 나누는 방식을 '단순 일치 계수'라고 합니다. 자카드 계수는 데이터가 희박한 경우의 유사도를 측정하는데 유용합니다.

 

'코사인 유사도'는 두 벡터 사이의 각도를 -1부터 1 사이의 값으로 나타내는 척도입니다. 두 벡터가 같은 방향이면 1, 완전 반대 방향이면 -1이 됩니다. 1일 때 유사도가 크고, -1일 때 유사도가 작다고 볼 수 있습니다. 

 

'편집 거리'는 한 문자열을 다른 문자열로 변환시킬 때 필요한 연산의 수입니다. 연산 횟수가 많을 수록 거리가 멀다고 정의합니다. 문자열에 대해 가능한 연산은 '문자 삽입', '삭제', '대체', '전치'가 있습니다. 대체 연산만 허용할 땐 '해밍 거리', 삽입, 삭제, 대체 연산 허용은 '레벤슈타인 거리'라고 합니다. 시리즈물의 제목을 찾는 것과 오탈자의 유사도를 측정하는 데 사용됩니다. 

 

'협업 필터링'다른 사용자의 구매 이력을 이용하여 영화를 추천하는 방법입니다. 여기에는 '사용자 기반 협업 필터링'과 '상품 기반 협업 필터링'이 있습니다. 협업 필터링은 상품과 사용자, 그리고 평점을 이용하는데 이런 관계를 행렬로 표현한 것을 '유틸리티 행렬'이라고 합니다. 사용자 수 * 상품 수로 행렬의 크기를 정합니다. 평점 예측 기법으로 '사용자/상품 기반 협업 필터링'과 '잠재성 요인 모델'이 있고, 성능 평가에 '평균 제곱근 편차'가 있습니다.

 

'평균 제곱근 편차(RMSE)'사용자의 평점을 실제값과 최대한 가깝게 예측하는 것을 평가하는 방법입니다. 예측값과 실제값의 차이를 제곱한 값의 평균의 제곱근으로 구할 수 있습니다. 

 

'잠재성 요인 모델'유사도를 계산하지 않고 유틸리티 행렬로 별점을 직접 예측합니다. 여기에서 행렬을 분해하는 방법으로 '특잇값 분해' 방법을 사용합니다. 이외에도 '고유벡터 분해'라는 방법도 있습니다. 특잇값 분해는 계산이 오래 걸리기 때문에 고유값이 큰 고유벡터 k개만으로 고유값을 분해해서 얻은 직교행렬을 만듭니다. 이것을 '절단 특잇값 분해'라고 합니다. 근사 행렬을 구해 값을 구할 수 있고, 차원 축소에 이용되기도 합니다. 특잇값은 행렬의 모든 값을 알아야 합니다. 미지항에 대해서는 정규화된 손실함수를 통해 값을 구합니다. 여기에는 '교대 최소제곱법(ALS)'와 '경사하강법'이 있습니다. 

 

'교대 최소제곱법'은 미지 행렬을 하나씩 구하는 방법으로, 임의의 행렬로 초기화한 후 값을 구합니다. 

'경사 하강법'은 초기값을 임의로 정한 후 근사 행렬을 구합니다. 손실을 구하고 그 값을 경사하강법에 적용합니다.

 

 

'표준화'는 외부 요인에 의한 편향을 줄여줍니다. 사용자의 평점이 후한지, 박한지를 표준화한다면 영화 추천 시 사용자 간의 유사도 및 선호도를 더욱 정확하게 표현할 수 있습니다. 

 

영화를 추천한다면 영화 자체의 내용에 대한 유사도 판단과 함께 사용자의 별점을 중심으로 비슷한 영화에 비슷한 별점을 주었는지에 대한 분석이 필요합니다. 일상 생활에서 많이 사용되고 있는 기능 중의 하나로 유사도 계산 및 협업 필터링 방법을 활용하여 추천 시스템 만드는 법을 알아보았습니다. 다음에는 이미지 인식에 대한 머신러닝 기법을 알아보도록 하겠습니다.

 

감사합니다.

반응형