사용자 활동 기반 AI 요리 추천 기능을 구현하기 위해 CBF를 사용하려고 한다.
📙CBF(Contents-Based Filtering)란?
사용자가 선호했던 아이템과 유사한 특성을 가진 새로운 아이템을 추천하는 것이다.
✏️CBF의 특징
- 독립적 정보 활용 : 다른 사용자의 데이터 없이 추천이 가능하다.
- Cold Start 문제 해결 : 새로운 아이템에 대해서도 추천이 가능하다.
- 사용자의 과거 선호도에 너무 의존하여 다양성이 부족할 수 있다.
✏️CBF 구현 과정
- 각 아이템의 특성을 벡터로 표현한다.
- 사용자가 선호하는 아이템들의 특성을 종합하여 사용자 프로필을 만든다.
- 아이템 간 또는 사용자 프로필과 아이템 간의 유사도를 계산한다.
✔️주로 코사인 유사도를 사용
- 유사도가 높은 아이템을 추천한다.
✏️CBF의 주요 기술
- 특성 추출 : 텍스트 데이터의 경우 TF-IDF, 이미지의 경우 CNN 등을 사용하여 특성을 추출한다.
- 벡터화 : 원-핫 인코딩이나 임베딩을 사용하여 아이템을 벡터로 표현한다.
- 유사도 측정 : 코사인 유사도, 유클리디안 거리 등을 사용한다.
✏️CBF를 이용한 AI 추천 시스템 구현 시 고려사항
- 아이템을 잘 표현할 수 있는 특성을 선택해야 한다.
- 텍스트 데이터의 경우 불용어 제거, 정규화 등의 전처리가 필요하다.
- 정확도, 다양성, 새로움 등 다양한 지표로 성능을 평가해야 한다.
- CBF의 한계를 보완하기 위해 협업 필터링(CF)과 결합한 하이브리드 방식을 고려할 수 있다.
✏️CBF의 tag
- 아이템의 특성이나 속성을 나타내는 키워드
- 아이템의 내용을 설명하거나 분류
- 태그의 주요 특징
- 사용자 생성 콘텐츠: 태그는 주로 사용자들이 직접 생성하는 콘텐츠
- 아이템 설명: 영화의 장르, 음악의 스타일, 책의 주제 등 아이템의 특성을 설명
- 유사도 계산: 아이템 간의 유사도를 계산하는데 활용 -> 비슷한 콘텐츠를 추천하는 데 도움을 줌
- 데이터 보강: 아이템의 메타데이터를 보강하여 추천 시스템의 성능을 향상
- 폭소노미(Folksonomy): 사용자들에 의해 자유롭게 생성되는 새로운 분류 체계를 형성
📙TF-IDF란?
TF-IDF는 정보 검색과 텍스트 마이닝에서 사용되는 가중치 부여 기법이다.
특정 단어의 중요도를 평가하는데 사용된다.
✏️TF-IDF의 구성 요소
-
TF(Term Frequency)
- 특정 단어가 문서 내에서 얼마나 자주 등장하는지를 나타낸다.
- TF(t,d) = (단어 t의 문서 d내 출현 횟수) / (문서 d의 총 단어 수)
-
IDF(Inverse Document Frequency)
- 특정 단어가 전체 문서 집합에서 얼마나 공통적으로 나타나는지를 나타낸다.
- IDF(t) = log(전체 문서 수 / 단어 t가 포함된 문서 수)
✏️TF-IDF 계산
TF-IDF(t,d) = TF(t,d) * IDF(t)
✏️TF-IDF의 특징
- 중요도 평가 : 문서 내에서 자주 등장하지만, 전체 문서 집합에서는 흔하지 않은 단어에 높은 가중치를 부여
- 불용어 처리 : 흔한 단어들은 낮은 TF-IDF 값을 가진다.
- 문서 특성화 : 각 문서를 TF-IDF 값을 가진 벡터로 표현할 수 있어서 문서 간 유사도 계산에 활용된다.
📙코사인 유사도란?
두 벡터 간의 유사성을 측정하는 방법이다.
✏️코사인 유사도의 개념
- 두 벡터 간의 코사인 각도를 이용하여 유사도를 측정한다.
- -1에서 1 사이의 값을 가지며, 1에 가까울수록 유사성이 높다.
- 벡터의 방향이 유사할수록 높은 값을 가진다.
✏️코사인 유사도의 특징
- 크기 독립성 : 벡터의 크기가 아닌 방향만을 고려한다.
- 고차원 데이터 처리 : 고차원 공간에서도 효과적으로 유사도를 측정할 수 있다.
- 희소 벡터 처리 : 0이 많은 희소 벡터에 대해서도 작동한다.
✏️코사인 유사도의 장단점
- 장점
- 벡터의 크기에 영향을 받지 않아 정규화 효과가 있다.
- 계산이 비교적 간단하고 빠르다.
- 단점
- 벡터의 요소가 모두 양수일 때만 정확한 해석이 가능하다.
- 벡터의 크기 정보를 완전히 무시하므로, 중요한 정보를 놓칠 수 있다.