1

프로그래밍 집단 지성 책을 읽고 Northwind 데이터베이스에 대해 내가 배운 것을 적용하려고합니다. 내가 제시 한 알고리즘에 대한 나의 이해에 아직 확신이 없지만, 나는 일반적인 개념에 대한 아이디어를 얻기 시작했다. 추천 시스템 실험

Northwind 데이터베이스를 사용

, 나는 다음과 같은 의사 로직을 사용하여 "이것은 또한 XYZ를 구입 구입 고객"의 목록을 표시하려고 해요 :

  1. 하는 것도 내 아이템을 구매 한 다른 고객을 찾기를
  2. 이전 단계에서
  3. 반환 상위 N 항목을 계산
  4. 순위 항목이 구매를 기반으로하는 고객이 구입 한 다른 모든 항목 찾기
내가 (모든 역사 구매 반대) 나는 최근 구매 기준으로 필터링 할 수 있도록 내 다음 단계가 쿼리를 파괴하는 것입니다 생각

declare 
    @customerid nchar(5), 
    @productid int; 

set @customerid = 'ALFKI'; 
set @productid = 59; 

-- find other products from customers who 
-- also purchased my productid 

select top 10 
    od.productid, c.categoryname, p.productname, p.unitsonorder, count(od.productid) 
from 
    [order details] od 
     inner join orders o on o.orderid = od.orderid 
     inner join products p on p.productid = od.productid 
     inner join categories c on c.categoryid = p.categoryid 
where 
    o.customerid <> @customerid and 
    od.productid <> @productid and 
    p.discontinued = 0 
group by 
    od.productid, c.categoryname, p.productname, p.unitsonorder 
order by 5 desc,4 desc 

및 제한 고객 :

나는 아래의 쿼리 함께 일하고 있어요 내 제품을 구입 한 모든 고객이 아닌 N 명의 고객과 일치합니다. 누구든지 어떤 포인터를 제공 할 수 있습니까? 나는 올바른 방향으로 향하고 있는가? 나는 완전히 다른 방향을 택해야 하는가?

지금까지 알고리즘을 최대한 활용할 수있는 경험이 아직 없다는 것을 알았 기 때문에,이 시점에서 저의 목표는 정확도를 능가하는 성능입니다. 나는 단지 그 개념을 적용하려고하고있다. 만족 스럽다면 충분히 이해할 수 있습니다. 더 현실적인 고객 데이터를 사용하여 더 큰 데이터베이스에 대해이 쿼리를 테스트 할 생각입니다.

답변

2

일반적으로 "시장 바구니 분석"또는 "선호도 그룹화"라고하며 대개 조합 수가 많아서 간단하지 않습니다. 가장 먼저 고려해야 할 것은 긍정적 인 탐지로 이어질 수있는 최소 사례가 무엇인가하는 것입니다. 예를 들어 1M 개의 바구니가 있고 A 제품을 구입 한 10 명이 동일한 바구니에 B 제품을 구입했다고합시다. "A를 산 사람들은 B도 사 주었다." 이 때문에 "최근"구매를 사용하는 것은 약간 까다 롭습니다. 아이디어는 제품 쌍의 테이블을 만드는 것이지만 N 개의 제품이있는 경우 조합 수는 N * (N-1)이므로 1000 개 제품의 경우 999,000 가지가되므로 알고리즘을 잘라내는 알고리즘은 다음과 같습니다. 간단하지 않습니다.

한 가지 더 고려해야 할 사항은 항목 순서와 각 항목의 값입니다. 예를 들어 자전거를 사는 고객은 종종 "LED 조명"을 구입 (추가) 할 수 있습니다. 그러나 바구니에 LED 조명을 넣으면 시스템에서 자전거를 제공해야합니까?

SQL 서버를 사용하는 것을 고려하면이 목적으로 "MS 연관 알고리즘"을 사용하는 Analysis Services Data Mining을 가리킬 것입니다. 동일한 데이터를 사용하여 결과를 "상업용 솔루션"과 비교할 수 있습니다.