https://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf
추천 알고리즘은 전자 상거래 웹 사이트에서 사용하는 것으로 알려져 있다.
그 이유는 전자 상거래 사이트야 말로 고객과의 접점이며 이는 바로 고객 분석을 통한 매출 극대화와 연관이 있기 때문이다.
그렇기에 Amazon에서는 고객의 관심사에 대한 정보를 사용하여 권장 항목 목록을 생성하고 그곳에서 만들어진 많은 응용 프로그램은 고객이 구매하고 명시적으로 자신의 관심사를 나타 내기 위해 평가한 항목(별점, 좋아요)등과 같은 정형적 지표 만 사용하지만 이는 많은 한계에 봉착한다. 그렇기에 정형 데이터 분석에 Scoring로직을 적용하거나 기타 다른 보완적 측면의 지표들 예를 들자면 조회 된 항목, 인구 통계 데이터, 주제 관심사 및 좋아하는 아티스트 등의 다른 속성을 사용하여 지표 분석을 고도화 한다.
Amazon.com에서는 recommendation 알고리즘을 사용하여 각 고객을 위해 온라인 상점을 개인화한다. 이는 온라인 매장에서 고객 관심 분야에 따라 크게 달라지며 이를 추정하는 방식으로는 바로 사람의 특성을 토대로 관심분야에 대한 연관관계 추론에 있다.
바로 소프트웨어 엔지니어에게 프로그래밍 타이틀을 보여주고 어머니에게 아기 장난감을 보여줍니다.
이를 추정할 수 있는 방법으로는 웹 페이지 상에 클릭률 및 전환율이며 이를 통한 웹 기반 및 이메일 광고 효과와의 연계로 이어질 수 있으며 이는 이전의 방식과 같은 배너 광고 및 인기 상품 목록과 같이 대상이 명확하지 않은 콘텐츠의 클릭률을 훨씬 능가한다.
전자 상거래 권장 알고리즘은 종종 까다로운 환경에서 작동한다. 예를 들자면
• 업종별 데이터의 분류 및 분포 차이이다. ex)대형 소매 업체는 엄청난 양의 데이터, 수천만 명의 고객 및 수백만 개의 고유 한 카탈로그 항목을 보유하고있을 수 있습니다.
• 사용자들은 응용 프로그램에서 즉각적인 결과가 나오길 기대하기 때문에 실질적인 사용자 환경에서는 결과 세트가 실시간으로 반 초 이내에 반환되도록 요구하면서 고품질의 권장 사항을 생성해야 한다. 이를 위해서는 데이터 분류 및 분포에 대한 명확한 추론이 가능한 데이터 세트가 있어야 하며 사용자에 대한 Pre-Training된 모델이 있어야 한다.
• 고객 데이터를 보유하지 못한 신규 고객의 경우에는 일반적으로 몇 가지 구매 또는 제품 등급만을 기준으로 극도로 제한된 정보를 보유할 수 밖에 없다. 이를 극복하기 위해서는 연령별, 성별, 기타 신규 고객이 입력한 정보를 바탕으로 Pre-Training된 상품군과의 맵핑관계를 추론해 내야 한다.
• 고령 고객은 수천 건의 구매 및 평가를 기반으로 많은 정보를 얻을 수 있지만 너무 많은 정보는 Sparse해지기 때문에 특정 Focus를 맞추기 위한 Specific한 접근 방법이 필요하다.
• 대부분의 고객 데이터는 매우 불안정하고 분포나 카테고리를 명확하게 힘들게 구성되어 있다. 그리고 고객-상품간의 상호 작용은 대부분 중요한 고객 데이터를 제공하고 이를 통해 학습된 알고리즘은 새로운 정보를 받아들이고 진화될 수 있고 바로 서비스와 연계될 수 있는 프로세스를 갖춰야 한다.
이런 위와 같은 문제를 해결하기위한 일반적인 접근 방법은 전통적인 협업 필터링, 클러스터 모델 및 검색 기반 방법입니다. 아마존의 논문에서는 이러한 방법을 항목 간 협업 필터링과 비교합니다. 이는 연관성이 적더라도 사용자 기반의 정보를 바탕으로 맥주와 기저귀의 상관관계를 추론할 수 있는 Item to Item기법이다.
기존 협업 필터링과 달리 항목 간 협업 필터링의 온라인 계산은 제품 카탈로그의 고객 수 및 항목 수와 독립적으로 확장되고 항목 간 협업 필터링은 실시간으로 권고 사항을 생성하고 대량의 데이터 세트를 생성하며 고품질의 권장 사항을 생성할 수 있다.
Recommendation Algorithms
대부분의 권장 알고리즘은 구매 및 평가 항목이 사용자가 구매 및 평가 한 항목과 겹치는 고객 집합을 찾는 것으로 시작합니다. 고객집합을 찾는 다는 것은 유사한 고객의 항목을 집계하고, 사용자가 이미 구입했거나 평가 한 항목을 제거하고 나머지 항목을 사용자에게 추천하는 것에 대한 BaseLine이다. 이러한 알고리즘의 두 가지 인기있는 버전은 협업 필터링 및 클러스터 모델입니다. 검색 기반 방법과 자체 품목 간 협업 필터링을 비롯한 다른 알고리즘은 비슷한 고객을 찾는 것이 아니라 유사한 제품을 찾는 데 중점을 둡니다. 사용자가 구입 및 평가 한 각 항목에 대해 알고리즘은 유사한 항목을 찾으려고 시도합니다. 그런 다음 유사한 항목을 집계하고 권장합니다.
Traditional Collaborative Filtering
전통적인 공동 필터링 알고리즘은 고객을 항목의 N 차원 벡터로 표시합니다. 여기서 N은 고유 한 카탈로그 항목의 수입니다. 벡터의 구성 요소는 구매 또는 긍정적으로 평가 된 항목에서는 양수이고 부정적 평가 항목에서는 부정적입니다. 베스트셀러 아이템을 보완하기 위해 알고리즘은 일반적으로 벡터 컴포넌트를 역 빈도 (아이템을 구입하거나 평가 한 고객 수의 역수)로 곱하여 잘 알려지지 않은 항목을 훨씬 더 관련성있게 만듭니다. 거의 모든 고객에게이 벡터는 매우 희소합니다.
알고리즘은 사용자와 가장 유사한 몇몇 고객을 기반으로 권장 사항을 생성합니다. 그것은 두 가지 고객 A와 B의 유사성을 다양한 방법으로 측정 할 수 있습니다. 일반적인 방법은 두 벡터 사이의 각의 코사인을 측정하는 것입니다.
이 알고리즘은 다양한 고객을 대상으로 다양한 추천 방법을 선택할 수 있으며, 일반적인 방법은 유사한 고객이 얼마나 많은 고객을 구매했는지에 따라 각 항목의 순위를 매기는 것입니다.
제안을 생성하기 위해 협업 필터링을 사용하는 것은 계산 상으로 많은 비용이 듭니다. 최악의 경우 O (MN)이고 M은 고객 수, N은 제품 카탈로그 항목 수이며, M 고객과 각 고객에 대한 N 항목을 조사하기 때문에. 그러나 평균 고객 벡터가 매우 희소하기 때문에 알고리즘의 성능은 O (M + N)에 더 가깝습니다. 거의 모든 고객 벡터가 카탈로그의 크기에 관계없이 적은 수의 항목을 포함하기 때문에 모든 고객을 검색하는 작업은 O (MN)가 아닌 O (M) 정도입니다. 그러나 O (N) 처리 시간이 필요한 상당량의 카탈로그를 구매하거나 등급을 매기는 고객이 있습니다. 따라서 알고리즘의 최종 성능은 약 O (M + N)입니다. 그렇더라도 1,000 만 명 이상의 고객과 100 만 개 이상의 카탈로그 항목과 같은 매우 큰 데이터 세트의 경우 알고리즘에 심각한 성능과 확장 문제가 발생합니다.
데이터 크기를 줄임으로써 이러한 스케일링 문제를 부분적으로 해결할 수 있습니다. 무작위로 고객을 샘플링하거나 구매가 거의없는 고객을 파면 M을 줄이고 매우 인기 있거나 인기가없는 항목을 발견하여 N을 줄일 수 있습니다. 또한 제품 범주 나 주제 분류에 따라 항목 공간을 분할하여 조사 된 항목 수를 작고 일정한 요인으로 줄일 수도 있습니다. 클러스터링 및 주성분 분석과 같은 차원 성 감소 기술은 M 또는 N을 큰 요인으로 줄일 수 있습니다.
불행히도 이러한 모든 방법은 여러 가지 방법으로 권장 품질을 낮춥니 다. 첫째, 알고리즘이 작은 고객 샘플 만 검사하면 선택된 고객은 사용자와 유사하지 않게됩니다. 둘째, 항목 공간 분할은 특정 제품 또는 주제 영역에 대한 권장 사항을 제한합니다. 셋째, 알고리즘이 가장 인기 있거나 인기가없는 항목을 삭제하면 추천 항목으로 표시되지 않으며 해당 항목 만 구입 한 고객에게는 권장 사항이 제공되지 않습니다. 아이템 공간에 적용된 차원 축소 기술은 저주파 항목을 제거하여 동일한 효과를 얻는 경향이 있습니다. 고객 공간에 적용된 차원 성 축소는 유사한 고객을 효과적으로 클러스터로 그룹화합니다. 이제 설명 할 것처럼 이러한 클러스터링은 권장 품질을 떨어 뜨릴 수 있습니다.
Cluster Models
사용자와 비슷한 고객을 찾기 위해 고객 모델은 고객 기반을 여러 세그먼트로 나누고 작업을 분류 문제로 취급합니다. 알고리즘의 목표는 가장 유사한 고객이 포함 된 세그먼트에 사용자를 할당하는 것입니다. 그런 다음 세그먼트의 고객 구매 및 평가를 사용하여 권장 사항을 생성합니다.
세그먼트는 일반적으로 클러 스 터링 또는 다른 자율 학습 알고리즘을 사용하여 생성되지만 일부 응용 프로그램은 수동으로 결정된 세그먼트를 사용합니다. 유사도 측정법을 사용하면 클러스터링 알고리즘이 가장 유사한 고객을 그룹화하여 클러스터 또는 세그먼트를 형성합니다. 대규모 데이터 세트에 대한 최적의 클러스터링은 중요하지 않으므로 대부분의 응용 프로그램은 다양한 형태의 욕심스러운 클러스터 생성을 사용합니다. 이러한 알고리즘은 일반적으로 초기에 세그먼트를 하나씩 선택하여 시작합니다. 그런 다음 고객은 기존 세그먼트에 대해 고객을 반복적으로 매칭시킵니다. 일반적으로 기존 세그먼트를 새로 만들거나 병합하기위한 조항이 있습니다. 매우 큰 데이터 세트, 특히 높은 차원의 데이터 세트의 경우 샘플링 또는 차원 감소가 필요합니다.
알고리즘이 세그먼트를 생성하면 각 세그먼트를 합한 벡터에 대한 사용자의 유사성을 계산 한 다음 가장 유사한 유사성을 가진 세그먼트를 선택하고 그에 따라 사용자를 분류합니다. 일부 알고리즘은 사용자를 여러 세그먼트로 분류하고 각 관계의 강도를 설명합니다.
클러스터 모델은 협업 필터링보다 온라인 확장 성 및 성능이 뛰어납니다. 사용자를 전체 고객 기반이 아닌 제어 된 수의 세그먼트로 비교하기 때문에 클러스터 모델은 협업 필터링보다 온라인 확장 성과 성능이 뛰어납니다. 복잡하고 값 비싼 클러스터링 계산은 오프라인으로 실행됩니다. 그러나 권장 품질은 낮습니다 .1 클러스터 모델은 다수의 고객을 하나의 세그먼트로 그룹화하고, 사용자를 세그먼트에 매치시킨 다음 유사한 고객을 대상으로 모든 고객을 고려하여 권장 사항을 제시합니다. 클러스터 모델과 유사한 고객이 가장 유사한 고객이 아니기 때문에 이들이 생산하는 권장 사항은 적합하지 않습니다. 수많은 세분화 된 세그먼트를 사용하여 품질을 향상시킬 수는 있지만 온라인 사용자 세그먼트 분류는 협업 필터링을 사용하여 유사 고객을 찾는 것보다 거의 비싸게 됩니다.
Search-Based Methods
검색 기반 또는 콘텐츠 기반 방식은 추천 문제를 관련 항목 검색으로 취급합니다. 사용자가 구입하고 평가 한 항목이 주어지면 알고리즘은 검색 쿼리를 구성하여 동일한 저자, 아티스트 또는 감독이 다른 인기 항목을 찾도록합니다. 유사한 키워드 또는 주제로 예를 들어, 고객이 Godfather DVD Collection을 구입하면 시스템에 다른 범죄 드라마 타이틀이나 Marlon Brando가 출연 한 다른 타이틀 또는 Francis Ford Coppola가 감독 한 다른 영화를 추천 할 수 있습니다.
사용자의 구매 또는 평가가 거의 없다면 검색 기반 추천 알고리즘의 규모와 형식이 잘 조정됩니다. 그러나 수천 번 구매를하는 사용자의 경우 모든 항목에 대한 쿼리를 기반으로하는 것이 비현실적입니다. 알고리즘은 데이터의 하위 집합 또는 전체를 사용해야 만 품질이 저하됩니다. 모든 경우에 권장 품질은 상대적으로 낮습니다. 권고안은 종종 너무 일반적이거나 (예 : 베스트 셀러 드라마 DVD 타이틀) 또는 너무 좁습니다 (예 : 같은 저자의 모든 서적). 권장 사항은 고객이 새롭고 관련성이 높으며 흥미로운 항목을 찾고 발견하도록 도와야합니다. 동일한 저자 또는 동일한 주제 분야의 대중성 항목은 이 목표를 달성하지 못합니다.
Item-to-Item Collaborative Filtering
Amazon.com은 많은 이메일 캠페인과 트래픽이 많은 Amazon.com 홈페이지를 비롯한 대부분의 웹 사이트 페이지에서 권장 마케팅 도구를 사용합니다. “Your Recommendations”링크를 클릭하면 고객이 제품 라인 및 주제 영역별로 권장 사항을 필터링하고, 권장 제품을 평가하고, 이전 구매를 평가하고, 권장되는 이유를 확인할 수있는 영역으로 안내합니다 (그림 1 참조).
그림 2에서 볼 수 있듯이 장바구니 권장 사항은 장바구니의 항목을 기반으로 고객에게 제품 제안을 제공합니다. 이 기능은 슈퍼마켓 체크 아웃 라인의 충동 항목과 유사하지만, 우리의 충동 항목은 각 고객을 대상으로합니다.
Amazon.com은 권장 알고리즘을 광범위하게 사용하여 웹 사이트를 각 고객의 관심사에 맞게 개인화합니다. 기존 추천 알고리즘은 Amazon.com의 수천만 고객 및 제품에 맞게 확장 할 수 없기 때문에 자체 개발 알고리즘을 개발했습니다. Google의 알고리즘 인 항목 간 협업 필터링은 대량의 데이터 세트로 확장되고 고품질의 권장 사항을 실시간으로 생성합니다.
어떻게 작동 하는가?
유사한 사용자에게 사용자를 매칭하는 대신, 항목 간 협업 필터링은 사용자의 구매 및 평가 항목을 유사한 항목과 매치시킨 다음, 유사한 항목을 추천 목록에 결합합니다.
주어진 항목에 대해 가장 유사한 일치를 결정하기 위해 알고리즘은 고객이 함께 구매하는 경향이있는 항목을 찾아 유사한 항목 테이블을 작성합니다. 모든 항목 쌍을 반복하고 각 쌍에 대한 유사성 측정 기준을 계산하여 제품 대 제품 행렬을 구축 할 수 있습니다. 그러나 많은 제품 쌍에는 일반 고객이 없으므로 처리 시간과 메모리 사용 측면에서 비효율적입니다. 다음 반복 알고리즘은 단일 제품과 모든 관련 제품 간의 유사성을 계산하여 더 나은 접근법을 제공합니다.
두 가지 항목 간의 유사성을 여러 가지 방법으로 계산할 수 있지만 일반적인 방법은 앞에서 설명한 코사인 측정 값을 사용하는 것입니다. 여기서 각 벡터는 고객이 아닌 항목에 해당하며 벡터의 M 치수는 해당 항목을 구입했습니다.
유사 항목 테이블에 대한이 오프라인 계산은 O (N2M)가 최악의 경우 인 매우 시간 집약적입니다. 그러나 실제로는 대부분의 고객이 거의 구매하지 않으므로 O (NM)에 가깝습니다. 베스트 셀러 타이틀을 구매 한 고객을 샘플링하면 품질이 거의 저하되지 않고 런타임이 훨씬 더 단축됩니다.
유사한 아이템 테이블이 주어지면, 알고리즘은 각 사용자의 구매 및 등급과 유사한 아이템을 찾아 내고, 가장 인기 있거나 상관 관계가있는 아이템을 추천합니다. 이 계산은 사용자가 구입하거나 평가 한 항목 수에 따라 매우 빠릅니다.
확장 성 : 비교
Amazon.com에는 2 천 9 백만 명의 고객과 수백만 카탈로그 항목이 있습니다. 다른 주요 소매 업체는 비교적 큰 데이터 소스를 보유하고 있습니다. 이 모든 데이터가 기회를 제공하지만, 데이터 세트를 위해 설계된 알고리즘의 백분율을 3 배 더 줄인 것은 저주의 일입니다. 거의 모든 기존 알고리즘은 작은 데이터 세트를 통해 평가되었습니다. 예를 들어, MovieLens 데이터 세트 4는 35,000 명의 고객과 3,000 개의 항목을 포함하고 EachMovie 데이터 세트 3은 4,000 명의 고객과 1,600 개의 항목을 포함합니다.
매우 큰 데이터 세트의 경우, 확장 가능한 권장 알고리즘은 오프라인에서 가장 비싼 계산을 수행해야합니다. 간단한 비교에서 알 수 있듯이 기존의 방법은 짧습니다.
• 전통적인 협업 필터링은 오프라인 계산을 거의 또는 전혀하지 않으며, 온라인 계산은 고객 및 카탈로그 항목의 수에 따라 조정됩니다. 알고리즘은 차원 감소, 샘플링 또는 파티셔닝을 사용하지 않는 한 대용량 데이터 세트에서는 비실용적입니다.이 모두가 권장 품질을 저하시킵니다.
• 클러스터 모델은 많은 계산을 오프라인에서 수행 할 수 있지만 권장 품질은 상대적으로 낮습니다. 이를 향상 시키려면 세그먼트 수를 늘릴 수는 있지만 온라인 사용자 세그먼트 분류가 비쌉니다.
• 검색 기반 모델은 키워드, 카테고리 및 작성자 색인을 오프라인으로 작성하지만 흥미롭고 타겟이 명확한 제목을 추천하지 않습니다. 또한 구매 및 평가가 많은 고객의 경우 규모가 적절하지 않습니다.
항목 간 공동 작업 필터링의 확장 성과 성능의 핵심은 값 비싼 유사 항목 테이블을 오프라인으로 생성한다는 것입니다. 알고리즘의 온라인 구성 요소 (사용자의 구매 및 등급에 대해 유사한 항목을 찾는)는 카탈로그 크기 또는 총 고객 수와 독립적으로 확장됩니다. 사용자가 구매했거나 등급을 매긴 책의 수만에 달려 있습니다. 따라서 알고리즘은 매우 큰 데이터 세트에 대해서조차도 빠릅니다. 알고리즘은 유사한 상관 관계가 높은 항목을 권장하기 때문에 권장 품질이 뛰어납니다 .10 기존의 협업 필터링과 달리이 알고리즘은 제한된 사용자 데이터로도 원활하게 작동하므로 2 ~ 3 개 정도의 항목을 기준으로 고품질 권장 사항을 생성합니다 .
결론
권장 알고리즘은 각 고객에 대해 개인화 된 쇼핑 경험을 만들어 효과적인 마케팅 형식을 제공합니다. Amazon.com과 같은 대형 소매 업체의 경우 좋은 권고 알고리즘은 매우 큰 고객 기반 및 제품 카탈로그에서 확장 가능하며 온라인 권장 사항을 생성하는 데 1 초 미만의 처리 시간 만 필요하고 사용자 데이터의 변경 내용에 즉시 대응할 수 있으며 구매 및 평가 횟수에 관계없이 모든 사용자에게 강력한 권장 사항을 제시합니다. 다른 알고리즘과 달리 항목 간 공동 작업 필터링은 이러한 문제를 해결할 수 있습니다.
앞으로 소매 업계는 온라인 및 오프라인 대상 마케팅에 대한 권장 알고리즘을보다 폭넓게 적용 할 것으로 기대합니다. 전자 상거래 비즈니스가 개인화를위한 가장 쉬운 수단을 가지고 있지만, 기술이 전통적인 광범위한 접근 방식과 비교했을 때 증가한 기술은 또한 우편물, 쿠폰 및 기타 고객 커뮤니케이션의 형태로 오프라인 소매 업체를 압도 할 것입니다.
http://statkclee.github.io/parallel-r/recommendation-user-based-filtering.html
https://github.com/tylee33/Amazon-Product-Recommender-System