상품 추천 시스템 분석 | JD Cloud 기술팀

1. 개요

이 글은 주로 추천 시스템을 분석하고, 추천 시스템의 기본 프레임워크인 추천 시스템의 정의를 주로 소개하고, 디자인 추천의 관련 방법과 아키텍처를 간략하게 소개한다. 추천 제도에 관심이 있는 일부 학생과 관련 기초가 있는 사람에게 적합합니다.

2. 상품 추천 시스템

2.1 추천 시스템의 정의

추천 시스템은 본질적으로 정보 과부하 문제를 해결하고, 사용자가 관심 있는 항목을 찾을 수 있도록 돕고, 사용자의 잠재 관심사를 깊이 탭합니다.

2.2 권장 아키텍처

사실 추천 시스템의 핵심 프로세스는 회상, 정렬, 재배열뿐입니다.

요청 프로세스

사용자가 페이지를 열면 front-end는 사용자 정보(pin 또는 uuid 등)를 전달하여 back-end 인터페이스(color를 통해 간접적으로 호출)를 요청하고 back-end가 요청을 받으면 일반적으로 먼저 사용자 ID(ab 전략)에 따라 관련 정책 구성을 나누고 획득하며, 이러한 전략은 호출 모듈, 정렬 모듈 및 재정렬 모듈의 어떤 인터페이스를 다음에 호출할지 결정합니다. 일반회수 모듈은 다중회수로 나누어 각각의 회수는 여러 상품을 회수하는 일을 담당하고, 분류 및 재배열은 이러한 상품의 순서를 조정하는 일을 담당한다. 마지막으로 적절한 제품이 선택되고 가격 및 사진과 같은 관련 정보가 보완되어 사용자에게 표시됩니다. 사용자는 관심 여부에 따라 클릭 여부를 선택하게 되며 이러한 사용자 관련 행동은 로그를 통해 데이터 플랫폼에 보고되어 후속 효과 분석 및 사용자 행동을 이용한 상품 추천의 기반이 됩니다.

사실, 제가 이야기하고 싶은 몇 가지 질문이 있습니다.

리콜, 정렬 및 재배열의 깔때기 계층 구조를 채택하는 이유는 무엇입니까?

(1) 성능면에서

궁극기: 백만 수준의 제품 라이브러리에서 사용자가 관심을 갖는 한 자릿수 항목을 걸러냅니다.

복잡한 정렬 모델의 온라인 추론은 시간이 많이 걸리며 정렬 모델에 들어가는 제품 수를 엄격하게 제어해야 합니다. 분해해야합니다

(2) 표적의 측면에서

리콜 모듈: 리콜 모듈의 작업은 사용자가 좋아할 수 있는 항목을 놓치지 않기 위해 많은 수의 항목에서 일부 후보 항목을 신속하게 걸러내는 것입니다. 리콜 모듈은 일반적으로 일부 단순화된 기능 또는 모델을 사용하여 다자간 리콜을 채택합니다.

정렬 모듈: 정렬 모듈의 작업은 정확하게 정렬하고 사용자의 과거 행동, 관심사, 선호도 및 기타 정보에 따라 회수 모듈에 의해 선별된 후보 항목을 정렬하는 것입니다. 정렬 모듈은 일반적으로 일부 복잡한 모델을 사용합니다.

재순위 모듈: 재순위 모듈의 임무는 순위 모듈의 결과를 재순위화하거나 조정하여 추천의 정확성과 개인화를 더욱 향상시키는 것입니다. 재정렬 모듈은 일반적으로 간단하지만 효과적인 알고리즘을 사용합니다.

ab 실험이란 무엇입니까?

참고서문:Overlapping Experiment Infrastructure: More, Better, Faster Experimentation(google2010)

온라인 실험만이 모델의 장단점을 진정으로 평가할 수 있고, ab 실험은 실험의 효과를 빠르게 검증하고 모델을 빠르게 반복할 수 있습니다. 새로운 기능을 출시할 위험을 줄입니다.

ab 알고리즘: 해시(uuid+실험 ID+생성 타임스탬프)%100

특징: 션트 + 직교

2.3 리콜

리콜 계층의 존재는 사용자가 처음에 방대한 제품 풀에서 좋은 제품 배치를 선별하기 위한 것입니다. 계산 속도와 회수율(모든 양성 샘플에 대한 양성 샘플의 비율) 사이의 모순의 균형을 맞추기 위해 다중 경로 회수 전략이 채택되며 각 회수 전략은 단일 기능 또는 전략만 고려합니다.

2.3.1 다중 채널 호출의 장단점

다방향 리콜: 다양한 전략, 기능 또는 간단한 모델을 사용하여 후보 세트의 일부를 리콜한 다음 후보 세트를 혼합하여 정렬합니다. 회상률이 높고 속도가 빠르며 다자간 회상이 서로를 보완합니다.

다중 채널 리콜에서 각 리콜의 잘린 숫자 K는 하이퍼 파라미터로 수동 파라미터 조정이 필요하고 비용이 많이 들고 리콜 채널에 중복 문제와 중복이 있습니다.

다중 채널 호출을 대체할 수 있는 일종의 호출이 있는지 여부에 관계없이 벡터 호출의 응용 프로그램이 탄생했습니다. 현재까지는 여전히 벡터 호출 및 기타 호출의 보완적인 아키텍처를 기반으로 합니다.

2.3.2 리콜 분류

주로 비개인화 회상과 개인화 회상의 두 가지 범주로 나뉩니다. 비개인화 리콜은 주로 핫푸시를 대상으로 하며 추천 분야의 매튜 효과가 심각하여 제품의 20%가 클릭의 80%를 차지합니다. 개인화 리콜은 주로 사용자가 관심을 가지는 상품을 발굴하고, 사용자별 차이점을 중점적으로 다루며, 상품의 다양성을 높이고, 사용자의 충성도를 유지하는 것입니다.

개인화되지 않은 회상

(1) 인기 있는 리콜

지난 7일 동안 클릭률이 높고 유사도가 높으며 판매도가 높은 상품의 리콜

(2) 신제품 리콜

최신 아이템 리콜

맞춤형 리콜

(1) 라벨 리콜, 지역 리콜

라벨 회상: 사용자가 관심을 가지는 카테고리, 브랜드, 매장 회상 등

지역 리콜: 사용자의 지역에 따라 해당 지역의 고품질 제품을 리콜합니다.

(2) cf 리콜

협업 필터링 알고리즘은 사용자 행동 데이터를 기반으로 사용자의 행동 선호도를 마이닝하여 사용자와 아이템의 행동 매트릭스(공동 발생 매트릭스)를 기반으로 사용자 행동 선호도에 따라 아이템을 추천합니다. 사용자 행동에는 일반적으로 브라우징, 좋아요, 추가 구매, 클릭, 관심, 공유 등이 포함됩니다.

협업 필터링은 사용자 기반 협업 필터링(UCF), 항목 기반 협업 필터링(ICF) 및 모델 기반 협업 필터링(숨겨진 시맨틱 모델)의 세 가지 범주로 나뉩니다. 사용자에게 항목을 추천할지 여부는 사용자와 항목이 먼저 연결되어야 하며 연결 ​​지점이 다른 항목인지 또는 다른 사용자가 속하는 협업 필터링 유형을 결정합니다. 숨겨진 의미 체계 모델은 사용자 행동 데이터를 기반으로 사용자의 잠재적 관심 특성을 자동으로 클러스터링하고 마이닝합니다. 따라서 사용자와 항목은 잠재 관심 기능을 통해 연결됩니다.

아이템 기반 협업 필터링 (ICF, Item-based Collaborative Filtering): 사용자에게 아이템을 추천할지 여부를 결정하기 위해 먼저 사용자의 과거 행동에 기록된 아이템과 아이템 간의 유사성을 기반으로 아이템에 대한 사용자의 관심도를 유추하여 추천 여부를 결정합니다. 우리는 항목을 추천합니다. 전체 협업 필터링 프로세스는 크게 항목 간 유사도 계산, 항목에 대한 사용자 관심도 계산, 결과 정렬 및 가로채기 단계로 나뉩니다.

상품 유사성 계산:

유사도를 측정하는 방법에는 주로 각도 코사인 거리, Jaccard 공식이 있습니다. 사용자 또는 항목의 표현이 다양하기 때문에 이러한 유사성의 계산은 매우 유연합니다. 사용자 및 항목의 행동 매트릭스를 사용하여 유사성을 계산할 수 있으며 유사성을 계산하기 위해 사용자 행동, 항목 특성 및 컨텍스트 관계를 기반으로 사용자 및 항목의 벡터 표현을 구성할 수도 있습니다.

사이각의 코사인 거리 공식: cos⁡θ=(x1*x2+y1*y2)/(√(x12+y12 )*√(x22+y22 ))

자카드 공식 J(A,B)=(|A⋂B|)/(|A⋃B|)

  상품 상품 b 상품 c 상품 d
사용자 A 1 0 0 1
사용자 B 0 1 1 0
사용자 C 1 0 1 1
사용자 D 1 1 0 0

사이각의 코사인 거리 공식은 상품 a와 b 사이의 유사성을 계산합니다.

Wab=(1*0+0*1+1*0+1*1)/(√(1^2+0^2+1^2+1^2 )*√(0^2+1^2+ 0^2+1^2 ))=1/√6

Spark 구현 ICF: https://zhuanlan.zhihu.com/p/413159725

문제: 콜드 스타트 ​​문제, 롱테일 효과.

(3) 벡터 리콜

벡터화 리콜: 사용자 및 항목의 저차원 벡터화 표현을 학습함으로써 리콜은 벡터 공간에서 이웃 검색 문제로 모델링되어 리콜의 일반화 능력과 다양성을 효과적으로 향상시키고 핵심 리콜 채널입니다. 추천 엔진.

벡터: 모든 것을 벡터화할 수 있음 임베딩은 저차원 밀도 벡터를 사용하여 객체 (단어 또는 상품)를 나타내는 것 주요 기능은 희소 벡터를 밀도 벡터로 변환하는 것(차원 감소 효과) 표현 여기에는 특정 Deep 의미가 포함되어 개체의 특성 중 일부를 표현할 수 있으며 벡터 간의 거리는 개체 간의 유사성을 반영합니다.

벡터 리콜 단계: 벡터를 생성하기 위한 오프라인 교육, 온라인 벡터 검색.

1. 벡터 생성을 위한 오프라인 교육

word2vec: 단어 벡터의 생성자는 신경망의 3개 레이어로 구성됩니다. 입력 레이어, 숨겨진 레이어, 출력 레이어, 숨겨진 레이어에는 활성화 기능이 없으며 출력 레이어는 softmax를 사용하여 확률을 계산합니다.

목적 함수

네트워크 구조:

일반적으로 입력은 일련의 단어이며 각 단어에 해당하는 벡터는 모델 학습 후에 얻을 수 있습니다. 추천 분야에서의 적용은 입력이 사용자의 클릭 순서이고 각 상품의 벡터는 모델 학습 후 얻어지는 것이다.

장점과 단점: 간단하고 효율적이지만 동작 시퀀스만 고려하고 다른 기능은 고려하지 않습니다.

트윈 타워 모델:

네트워크 구조: 각각 User Tower 및 Item Tower라고 함; User Tower는 사용자 ID, 성별, 연령, 3단계 관심 범주, 사용자 클릭 순서, 사용자 주소 등과 같은 사용자 측 기능을 입력으로 받음; Item Tower는 허용 제품 측면 기능(예: 제품 ID, 카테고리 ID, 가격, 지난 3일 동안의 주문량 등) 데이터 학습: (positive sample data, 1) (negative sample, 0) positive sample: 클릭된 제품, negative 샘플: 글로벌 랜덤 제품 샘플(또는 동일한 배치의 다른 사용자 클릭 샘플)

장단점: 효율적이고 리콜 기능에 완벽하게 맞음, 사용자 벡터를 얻기 위한 온라인 요청, 항목 벡터 검색 및 리콜, 높은 일반화, 사용자 타워와 항목 타워는 분리되어 있으며 마지막에만 상호 작용합니다.

2. 온라인 벡터 검색

벡터 검색(Vector retrieval): 벡터 공간 모델(Vector Space Model) 기반의 정보 검색 방법으로 대규모 텍스트 모음에서 질의 벡터와 가장 유사한 문서 벡터를 빠르게 찾는 데 사용된다. 정보 검색, 추천 시스템 및 텍스트 분류에 널리 사용됩니다.

벡터 검색 과정은 벡터 간의 유사도를 계산하고 최종적으로 유사도가 더 높은 TopK 벡터를 반환하는 것으로 벡터 유사도를 계산하는 방법에는 여러 가지가 있습니다. 벡터 유사도를 계산하는 방법에는 유클리드 거리, 내적, 코사인 거리가 있습니다. 정규화 후 내적은 코사인 유사성 계산 공식과 동일합니다.

벡터 검색의 핵심은 질의 벡터의 검색 범위를 최대한 줄여 질의 속도를 높이는 ANNS(Approximate Neighbor Search)이다.

현재 업계에서 대규모로 사용되는 벡터 검색 알고리즘은 기본적으로 다음 세 가지 범주로 나눌 수 있습니다.

  • 지역 민감 해싱(LSH)
  • 그래프 기반(HNSW)
  • 제품 기반 양자화

LSH에 대한 간략한 소개

LSH 알고리즘의 핵심 아이디어는 원래 데이터 공간에서 인접한 두 데이터 포인트를 동일한 매핑 또는 프로젝션을 통해 변환한 후에도 이 두 데이터 포인트가 새로운 데이터 공간에서 여전히 인접할 확률이 매우 높으며 인접한 데이터 포인트가 동일한 버킷에 매핑될 확률은 매우 작습니다.

데이터 집합의 모든 지점을 순회하는 무차별 대입 검색과 비교하여 해시를 사용하여 쿼리 샘플이 어느 버킷에 속하는지 먼저 찾습니다. 쿼리 샘플의 버킷에 속할 가능성이 높으므로 모든 데이터 세트에서 순회하는 대신 현재 버킷에서 순회하고 비교하기만 하면 됩니다. 해시 함수 H의 수가 너무 많으면 쿼리 샘플과 해당 가장 가까운 이웃이 동일한 버킷에 속할 가능성이 매우 약해집니다. 이 문제를 해결하기 위해 이 과정을 L번 반복할 수 있습니다. 기능), 가장 가까운 이웃의 회수율을 증가시킵니다.

사례: word2vec 기반 벡터 호출

2.4 정렬

추천 시스템의 눈의 사과

분류 단계는 대략적인 분류와 세밀한 분류로 나뉘는데 대략적인 분류는 일반적으로 회상 결과의 데이터 크기가 상대적으로 클 때 발생한다.

진화

와이드앤딥에 대한 간략한 소개

배경: 수동 특성 조합의 메모리 효과는 좋지만 특성 엔지니어링은 너무 노동 집약적이며 이전에 나타나지 않은 특성 조합은 기억할 수 없으며 일반화할 수 없습니다.

목적: 일반화와 기억력(역사적 정보의 효과적인 활용 및 강력한 표현력)을 모두 고려한 모델 만들기

(1) 기억력 모델은 과거 데이터의 분포 특성을 기억하기 위해 과거 데이터에서 항목이나 특징의 동시 발생 빈도 능력을 직접 학습하고 활용하며, 단순 모델은 데이터에서 특징이나 결합된 특징을 쉽게 찾을 수 있다. 결과에 더 큰 영향을 미치고 강력한 기능에 대한 메모리를 달성하기 위해 가중치를 조정합니다.

(2) 모델의 일반화 능력은 특징의 상관관계를 전달하고 희박하거나 희귀한 특징과 최종 레이블 간의 상관관계를 탐색하는 능력 매우 희소한 특징 벡터 입력이라도 안정적이고 원활한 추천 확률을 얻을 수 있습니다. 개선된 일반화의 예: 행렬 분해, 신경망

메모리 및 일반화 기능(결과 정확도 및 확장성)을 모두 고려하여 넓은 부분은 모델 메모리에 중점을 두어 많은 과거 행동 특징을 빠르게 처리하고 깊은 부분은 모델 일반화, 새로운 세계 탐색 및 모델의 상관 관계에 중점을 둡니다. 희소한 기능을 탐색하고 심지어 희귀한 기능의 상관 관계를 최종 레이블에 노출하는 기능은 강력한 표현력을 가지고 있습니다. 마지막으로 넓은 부분과 깊은 부분이 결합되어 통일된 모델을 형성합니다.

넓은 부분은 y=W^T X+b로 표현되는 기본 선형 모델입니다. X 기능 부분에는 기본 기능과 교차 기능이 포함됩니다. 크로스 피처는 넓은 부분에서 매우 중요하며 피처 간의 상호 작용을 포착하고 비선형성을 추가하는 역할을 할 수 있습니다.

깊은 부분은 임베딩 레이어 + 3 레이어 신경망(relu), 피드포워드 공식

합동 훈련

장점과 단점: 기존의 알고리즘에서 딥러닝 알고리즘에 이르기까지 추천/광고/검색 순위 알고리즘 개발의 중요한 기반을 마련한 이정표입니다. 메모리 및 일반화 기능을 모두 고려하지만 Wide 측에서는 여전히 기능을 수동으로 결합해야 합니다.

참고 문서: 추천 시스템을 위한 와이드 앤 딥 러닝

2.5 재정렬

정의: 한편으로는 글로벌 최적화를 달성하고 다른 한편으로는 비즈니스 요구 사항을 충족하고 사용자 경험을 개선하기 위해 미세 조정 후 결과 순서를 미세 조정합니다. 예를 들어 분산 전략, 강력한 삽입 전략, 노출 증가, 민감한 필터링

MMR 알고리즘

제품 다양성 문제 달성

목적: 추천 결과의 다양성과 관련성 균형을 위해 추천 결과의 정확성을 보장하면서 추천 결과의 다양성을 보장하기 위함

수식과 같은 알고리즘 원리

D: 제품 컬렉션, Q: 사용자, S: 선택된 제품 컬렉션, R\S: R에서 선택되지 않은 제품 컬렉션

def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):
    #s 排序后列表 r 候选项
    s, r = [], list(itemScoreDict.keys())
    while len(r) > 0:
        score = 0
        selectOne = None
        # 遍历所有剩余项
        for i in r:
            firstPart = itemScoreDict[i]
            # 计算候选项与"已选项目"集合的最大相似度
            secondPart = 0
            for j in s:
                sim2 = similarityMatrix[i][j]
                if sim2 > second_part:
                    secondPart = sim2
            equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)
            if equationScore > score:
                score = equationScore
                selectOne = i
        if selectOne == None:
            selectOne = i
        # 添加新的候选项到结果集r,同时从s中删除
        r.remove(selectOne)
        s.append(selectOne)
    return (s, s[:topN])[topN > len(s)]




의미는 사용자에게 가장 관련성이 높고 선택한 항목과 가장 관련성이 낮은 항목을 선택하는 것 입니다 . 시간 복잡도 O(n2)는 선택의 수를 제한하여 시간 복잡도를 줄일 수 있습니다.

엔지니어링 구현 : 사용자와 아이템의 상관관계 및 아이템의 유사도를 입력으로 요구 사용자와 아이템의 상관관계는 정렬 모델의 결과로 대체할 수 있으며 협업 필터링 등의 알고리즘을 통해 아이템 간의 유사도를 얻을 수 있음 코사인 거리를 계산하기 위한 상품 벡터. 동일한 3단계 카테고리, 동일한 상점 등으로 표시되는지 여부만큼 간단할 수도 있습니다.

3. 요약

모두들 추천 시스템을 이해하고 전체 추천 아키텍처와 전체 추천의 모듈을 소개하기를 바랍니다. 제한된 수준으로 인해 각 모듈이 특별히 상세하지는 않지만 작업에서 이 분야를 계속 연구하고 세부 사항을 깊이 파고들어 모두를 위해 더 나은 것을 생산할 수 있기를 바랍니다. 고마워하는! ! !

저자: Jingdong Retail Yan Xiandong

출처: JD 클라우드 개발자 커뮤니티

산업 정보 기술부: 등록되지 않은 앱에 대한 네트워크 액세스 서비스 제공하지 않음 Go 1.21 공식 출시 Ruan Yifeng 출시 " TypeScript Tutorial" Vim의 아버지 Bram Moolenaar가 질병으로 사망 자체 개발 커널 Linus가 직접 코드 검토 , Bcachefs 파일 시스템에 의해 주도되는 "내분"을 진정시키기를 희망합니다. ByteDance는 공용 DNS 서비스를 시작했습니다 . 훌륭합니다. 이번 달에 Linux 커널 메인라인에 전념했습니다.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4090830/blog/10093996