고객 기반이 < 100k가 될 경우 PROC DISTANCE
이 도움이 될 수 있습니다. @DomPazz에서 만든 데이터 세트를 사용하면 다음 코드를 실행하고 결과를 검사 할 수 있습니다. 이 경우에는 16 초 만에 실행되는 첫 번째 10K 고객 만 시험해 보겠습니다. 그게 속임수로 당신을 거짓된 안보 의식에 빠뜨리지 마라. 너가 두배가되면 고객의 시간은 4 배가됩니다. (실제 시간 : 10K - 16secs, 20K - 47 초, 40K - 3mins ...) (N이고 노 고객의 사용자 입력 데이터 세트.)
이 절차는 NxN
정방 행렬을 생성한다. SAS가 어느 시점에서 RAM
메모리 문제 (적어도 1.10 * NxN * 8 바이트 정도의 하드 드라이브 공간을 확보해야하는지)를 시도하고 실험 해 볼 수 있습니다. 행렬의 각 셀은 '고객'과 '고객'의 열 (행) 거리가 i
입니다. 일단 거리를 얻으면 고객의 방문 거리와 평균 거리를 곱하는 간단한 문제입니다.
proc distance data = test(obs = 100)
OUT=test_distances(compress = binary)
METHOD= EUCLID shape = SQUARE
UNDEF=1000000
VARDEF=wdf;
var INTERVAL(x y)
;
copy cn visits;
run;
data avg_dist;
set train_distances;
array dist{*} dist:;
prod=0;
do i = 1 to dim(dist);
prod = visits*dist{i}+prod;
end;
avg_dist=prod/dim(dist);
dims=dim(dist);
drop i dist:
;
run;
proc sql;
drop table test_distances;
quit;
해결하려는 문제의 유형은 일반적으로 k-nearest neighbour
문제로 알려져 있습니다. 이 분야에서 수십 년에 걸친 연구가 있었으며, 대부분이 성능을 위해 Kd-trees
과 같은 특별한 데이터 구조를 사용하여 해결되었습니다.대부분의 사람들은 who are the top-10 (or K) closest customers to this customer I'm interested in?
과 같은 질문에 대답하는 데 관심이 있습니다. 이러한 유형의 문제를 효율적으로 해결하는 또 다른 절차는 이며 kd-tree
과 Rd-tree
이라고하는 SAS의 독점 구조를 모두 지원합니다. 그러면 PDF 문서 만 찾을 수 있습니다 from SAS Eminer 4.3 일
N * N 개 항목 사이의 거리를 계산해야하는 순간 문제가 발생합니다. 코멘트에서 프로젝트 설명을 읽는 것만으로는 모든 고객과 모든 고객 사이의 거리를 계산하는 것이 아니라 모든 고객과 모든 상점 간의 거리와 같은 거리를 계산하는 것이 필요합니다.
이렇게하면 문제의 차원이 크게 줄어들어 쿼리 성능이 크게 향상됩니다.
N 개의 고객과 S 점포가 있고 N * S 점 사이의 거리 만 계산하면됩니다. (단순한 데이터 단계는 직교 좌표계 제품이나 특수 데이터 구조가 필요하지 않으므로 작업을 수행합니다.)
거기에서 S의 각 상점에 대해 해당 매장에서 구매 한 고객의 비율을 볼 수 있습니다 1KM에서 2KM는 3KM .... 그런
당신은 라이브 2KM 등 내에서 1km, 15 % 내에서 다음과 같은 80 % 라이브 답변 ...
이 디자인 문제 같은 소리를 올 수로 : 이유 이 방법으로 설계된 프로젝트입니까? 아마도 이런 종류의 계산을 필요로하지 않는 더 나은 디자인을 고려해보십시오. 클러스터 분석을하고 있다면 SAS 프로 시저를 사용해보십시오. – Joe
@ Joe, 나는 이것이 일부 클러스터 분석 인 경우 덜 집중적 인 절차를 사용하여 절차에서 더 잘 수행 될 것이라고 동의합니다. 그러나, 모든 점 사이에서 이와 같은 연계를 계산한다는 것을 알고있는 절차는 없습니다. 저자가 그룹의 유사성을 나타 내기 위해 숫자를 찾고 있다면 평균으로부터의 가중 평균 거리가 더 나은 선택 일 수 있으며 계산하기가 훨씬 쉽습니다. – DomPazz
@Joe, 프로젝트는 상점 주변의 고객 유치원을 계산하는 것입니다. 우리는 지리적으로 위치한 60k 고객을 보유하고 있으며 52 주 방문 행동을 계산했습니다. 아이디어는 각 고객에 대해 주변 고객의 유형을 설명하는 점수를 작성하는 것입니다. 여기서 주요 아이디어는 고객 A가 상점을 자주 방문하는 다른 고객과 가까운 곳에 거주하면 고객 A가 상점의 집수 영역에 살 가능성이 높다는 것입니다. 반대로, 고객 Z가 간신히 상점을 방문하는 다른 고객과 가까운 곳에 살면 그 고객은 저수지에 살지 않을 가능성이 높습니다. –