목록AI (100)
꺼내먹는지식 준

이웃 기반 CF 에서 벗어나 Model 기반 CF 에 들어선다. 다루고자하는 내용은 다음과 같다. 추천시스템에서 가장 중요한 '모델' Matrix Factorization을 이해하기 위해 간단 로드맵을 거친다. Sparsitiy: 결국에 Neighboorhood CF 는 데이터가 적으면 유사도 계산이 부정확하다는 큰 한계가 있다. 또한 유저와 아이템 개수가 늘어나면 계산량이 늘어난다. Scalability: K-NN 으로 최소화 한다고 해도, 이전에 글에서 제기한 의문 같이 '유사도' 계산에서 bottle neck이 걸릴 수 있는 것이다. 다만 역설적으로 정확한 예측을 하기위해서는 데이터가 많아야한다. 모든 분야에서 그렇듯이, 단순 유사성에서 벗어나 내재된 패턴을 이용하면 보다 정확한 결과를 얻곤 한다...

https://www.youtube.com/watch?v=7dmV3p3Iy90 해당 내용은 공돌이의 수학정리노트를 정리한 내용 이 블로그는 내가 보고 기억하려고 적는것이고, 이 글보다는 위 영상을 보는 것이 이해에 훨씬 도움이 된다. https://angeloyeo.github.io/2019/07/17/eigen_vector.html 해당 사이트에서 vector에 곱해지는 matrix 값들을 변경시켜보며 감을 익혀볼 수 있다. ※ diagonal 값은 벡터의 길이를 조정한다. 이로인해 만약 diagonal 값 외에 모든 값이 0일 때 diagonal 값이 0 이 되면 차원이 축소된다. ※ 이 시연을 통해 벡터에 행렬 연산을 취하면 원래 벡터와 다른 벡터 결과 값을 얻는 다는 것을 확인했다. 그러나 어떤 ..

더 많은 유저들로부터 얻은 기호 정보를 활용하여 유저의 관심사를 자동 예측한다. 데이터가 많아질 수록 좋은 건 ML 모델들과 동일하다. 예시 2 같이 내 데이터만이 아니라 다른 사람들의 상호작용 데이터까지 활용하는 것이 Collaborative Filetering(hereafter, CF) 이다. 평점 뿐만 아니라 선호도, 클릭 확률이 될 수도 있다. 유저-아이템 행렬: (유저가 아이템에 기록한 선호도) - 모두 채워져 있지 않은, 즉 빈칸이 존재하는 부분을 채워나가야 한다. CF는 아이템(contents)이 가진 속성을 하나도 사용하지 않으면서도 추천을 한다. 두 유저가 선호하는 아이템이 유사한 경우, 둘 중 한 유저가 선호하거나 비 선호한 아이템은 다른 한 유저에게도 동일할 것이라 예측하고 적용한다...

TF-IDF 는 텍스트를 다루는 가장 기본적인 방법론이다. 이를 기반으로 텍스트 데이터를 활용하여 컨텐츠 기반 추천을 하곤 한다. 우리가 매일 마주치고 인터렉션하는 것이 언어이다보니, 언어 정보를 활용하여 추천을 할 수 있다는 건 당연하다. 유저가 선호하는 아이템의 특징을 추출하여 user profile 을 만든다. 이를 기반으로 새로운 추천을 해주는 것이 바로 컨텐츠 기반 추천이다. 컨텐츠 기반 추천의 장단점을 살펴보자. 새로운 아이템 혹은 인기도 낮은 아이템 추천이 가능하다는 특징은 "long tail phenomenom" 과 연관 또한 설명가능하다는 점은 사용자가 추천 시스템을 신뢰하는데 굉장히 중요한 요소 $/rightarrow$ HCI 관점 아이템의 적합한 피쳐를 찾는 것이 어렵다. (이미지, ..

추천 시스템 공부 로드맵 Simple Aggregate (인기도 기반) Association Analysis, Content-based Recommendation (연관 분석) Collaborative Filtering (추천 시스템에서 가장 중요한 내용) Item2Vec Recommendation and ANN (word2Vec Screen2Vec 과 같은 개념) Deep Learning-based Recommendation 대부분의 SOTA 모델이 딥러닝 기반이기는 하지만, 기존 방법론과 큰 성능 차이도 없고 inference time 에서 시간 차가 발생해서 잘 실사용 되지는 않는다. Context-aware Recommendation Multi-Armed Bandit(MAB)- based Reco..

연관 규칙 분석 (Association Rule Analysis, Association Rule Mining) 예를 들면 우유, 빵이 등장했을 때 계란과 콜라가 등장하면 연관 관계를 표기한다. 다만, 해당 연관관계가 인과관계를 의미하지는 않는다. 연관 규칙은 다음과 같다. IF (antecedent) $\rightarrow$ THEN (consequent) 특정 사건이 발생시 빈번하게 발생하는 또다른 사건 규칙 itemset: antecedent와 consequent 각각을 구성하는 상품들의 집합 위 사진을 참고하면 꼭 itemset이 {antecedent, consequent} 이러한 형태로 될 것 같지만 오해하지말자. antecedent와 consequent에 등장한 모든 상품들을 모아놓은 집합이다...

추천 시스템 중 가장 단순한 형태인 '인기도 기반 추천' 을 살펴보자. 아래와 같은 예시들이 있다. 마지막 예시인 reddit 의 경우 업로드 시간도 인기도의 결정 요인이 되어 최신 글 일 수록 인기도가 높다. 다음의 예시들이 인기도 기반 추천이 적합하다. 좀더 직관적으로 수치를 통해 보면, 조회수와 업로드 날짜에 가중치를 주어 score를 계산할 수 있다. 왼쪽과 같이 가중치 없이 진행하면 시간과 관계없이 Top Rank 가 설정될 위험이 있다. Hacker News Formula 라는 모델이 있다. 시간에 따라 score가 급격하게 떨어지도록 하여, 적절하게 조정될 수 있도록 한다. (gravity 상수를 통해 조정한다.) 비슷하지만, 감점이 아닌 최신 포스팅에 가점을 주는 방식인 Reddit for..

※ CTR은 광고가 클릭된 횟수를 광고가 게재된 횟수로 나눈 값 (클릭수 ÷ 노출수 = CTR) 품질 관점은 공학만이 아니라, UX, marketing 관점을 포함하고 있다. 단순한 성능 비교와 유사 연구단에서도 많이 언급되는 이슈이다. 생성되는 데이터로 다시 모델을 학습시키는 형태는 offline test와 다른 양상을 띄게 만드는 결정적 이슈이다. 이를 serving bias 라고 한다. Offline Test의 지표 (랭킹, 예측) 예측은 머신러닝 metric과 동일하기에 여기서는 추천 모델에서만 등장하는 ranking metric을 다룬다. Precision@5 : 예측한 5 개중 실제 유저가 관심있는 아이템의 비율 Recall@5 : 유저가 관심 있는 전체 아이템 5개 가운데, 우리가 추천한 아..

PULL: 사용자들은 본인이 원하는 것을 얻기 위해 keyword 로 검색을 한다. 사용자가 원하는 의도를 가지고 원하는 object를 찾는 방식을 pull이라고 한다. PUSH: 사용자의 흥미나 의도를 고려하여서 사용자도 모르는 필요를 제안해주는 방식이다. 왜 필요할까? 아이템이 기하급수적으로 많아져서 원하는 것을 효율적으로 찾기가 어려워졌다. 또한 자기가 무엇을 원하는지도 모르는 경우의 needs를 채워줄 수 있다. 즉, 추천시스템은 long tail phenomenon 이라 하는 즉, 물건이 많아도 소수만 인기가 많은 현상을 해결하고자 하고 이는 추천시스템의 본질적 목표이기도 하다. 사용자는 long tail 이 잘 될 수록 '개인화'가 잘 된다고 생각한다. 추천 시스템에서는 유저 관련 정보, 아이..

Sequence to sequence model이 output을 예측할 때 발생할 수 있는 이슈가 있다. 바로 우리가 찾고자 한 결과물이 he hit me with a pie 일 때, output이 he, hit, 으로 나오다가 갑자기 a 가 등장하면 더 이상 우리가 원하는 결과물을 얻기 힘들어진다. 이에 따라 조건부 확률을 최대로 하는 결과를 모두 찾아보는 방법을 택할 수도 있지만 이는 모든 가능성을 확인해본다는 점에서 가능성이 기하급수적으로 증가한다. 즉 좋은 선택지가 아니다. 이에 따라 두 방법의 절충안인 특정 개수를 정해서 그 개수만큼만 가능한 결과물을 확인해보는 방법이 있다. ※ 점수를 구할 때 왜 log를 취하는 경우. 보통 log를 계산의 단순화를 위해 취한다. 이 경우, 확률 값은 0~1 ..