다음을 통해 공유


시퀀스 클러스터링 모델 쿼리 예제

데이터 마이닝 모델에 대한 쿼리를 만들 때 모델에 저장된 정보에 대한 세부 정보를 제공하는 콘텐츠 쿼리를 만들거나 모델의 패턴을 사용하여 사용자가 제공하는 새 데이터를 기반으로 예측을 만드는 예측 쿼리를 만들 수 있습니다. 시퀀스 클러스터링 모델의 경우 콘텐츠 쿼리는 일반적으로 발견된 클러스터 또는 해당 클러스터 내의 전환에 대한 추가 세부 정보를 제공합니다. 쿼리를 사용하여 모델에 대한 메타데이터를 검색할 수도 있습니다.

시퀀스 클러스터링 모델에 대한 예측 쿼리는 일반적으로 시퀀스 및 전환, 모델에 포함된 비시퀀스 특성 또는 시퀀스 및 비시퀀스 특성의 조합에 따라 권장 사항을 만듭니다.

이 섹션에서는 Microsoft 시퀀스 클러스터링 알고리즘을 기반으로 하는 모델에 대한 쿼리를 만드는 방법을 설명합니다. 쿼리를 만드는 방법에 대한 일반적인 내용은 데이터 마이닝 쿼리를 참조하세요.

콘텐츠 쿼리

데이터 마이닝 스키마 행 집합을 사용하여 모델 매개 변수 반환

상태에 대한 시퀀스 목록 가져오기

시스템 저장 프로시저 사용

예측 쿼리

다음 상태 또는 상태 예측

시퀀스 클러스터링 모델에 대한 정보 찾기

마이닝 모델의 콘텐츠에 대한 의미 있는 쿼리를 만들려면 모델 콘텐츠의 구조와 어떤 노드 형식이 어떤 종류의 정보를 저장하는지 이해해야 합니다. 자세한 내용은 시퀀스 클러스터링 모델에 대한 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)를 참조하세요.

샘플 쿼리 1: 데이터 마이닝 스키마 행 집합을 사용하여 모델 매개 변수 반환

데이터 마이닝 스키마 행 집합을 쿼리하여 기본 메타데이터, 모델을 만들고 마지막으로 처리한 날짜 및 시간, 모델의 기반이 되는 마이닝 구조의 이름 및 예측 가능한 특성으로 사용되는 열을 포함하여 모델에 대한 다양한 종류의 정보를 찾을 수 있습니다.

다음 쿼리는 모델을 [Sequence Clustering]빌드하고 학습하는 데 사용된 매개 변수를 반환합니다. 기본 데이터 마이닝 자습서의 5단원에서 이 모델을 만들 수 있습니다.

SELECT MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'Sequence Clustering'  

결과 예:

채굴 매개변수
CLUSTER_COUNT=15,MINIMUM_SUPPORT=10,MAXIMUM_STATES=100,MAXIMUM_SEQUENCE_STATES=64

이 모델은 CLUSTER_COUNT 기본값 10을 사용하여 빌드되었습니다. CLUSTER_COUNT 0이 아닌 개수의 클러스터를 지정하면 알고리즘은 이 숫자를 찾을 대략적인 클러스터 수에 대한 힌트로 처리합니다. 그러나 분석 과정에서 알고리즘은 더 많거나 적은 클러스터를 찾을 수 있습니다. 이 경우 알고리즘은 15개의 클러스터가 학습 데이터에 가장 적합한 것으로 나타났습니다. 따라서 완성된 모델에 대한 매개 변수 값 목록은 모델을 만들 때 전달된 값이 아니라 알고리즘에 의해 결정된 클러스터 수를 보고합니다.

이 동작은 알고리즘이 가장 많은 클러스터 수를 결정하도록 하는 것과 어떻게 다른가요? 실험으로 이 동일한 데이터를 사용하지만 CLUSTER_COUNT 0으로 설정하는 다른 클러스터링 모델을 만들 수 있습니다. 이렇게 하면 알고리즘은 32개의 클러스터를 검색합니다. 따라서 CLUSTER_COUNT 기본값 10을 사용하여 결과 수를 제한합니다.

클러스터 수를 줄이면 대부분의 사람들이 데이터의 그룹화에 대해 더 쉽게 찾아 이해할 수 있으므로 기본적으로 10의 값이 사용됩니다. 그러나 각 모델과 데이터 집합은 다릅니다. 다양한 수의 클러스터를 실험하여 가장 정확한 모델을 생성하는 매개 변수 값을 확인할 수 있습니다.

샘플 쿼리 2: 상태에 대한 시퀀스 목록 가져오기

마이닝 모델 콘텐츠는 학습 데이터에 있는 시퀀스를 모든 관련 두 번째 상태 목록과 결합된 첫 번째 상태로 저장합니다. 첫 번째 상태는 시퀀스의 레이블로 사용되며 관련 두 번째 상태를 전환이라고 합니다.

예를 들어 다음 쿼리는 시퀀스를 클러스터로 그룹화하기 전에 모델에서 첫 번째 상태의 전체 목록을 반환합니다. 모델 루트 노드가 부모(PARENT_UNIQUE_NAME = 0)인 시퀀스 목록(NODE_TYPE = 13)을 반환하여 이 목록을 가져올 수 있습니다. FLATTENED 키워드를 사용하면 결과를 더 쉽게 읽을 수 있습니다.

비고

열 이름인 PARENT_UNIQUE_NAME, Support, Probability는 같은 이름의 예약된 키워드와 구분하기 위해 대괄호로 묶어야 합니다.

SELECT FLATTENED NODE_UNIQUE_NAME,  
(SELECT ATTRIBUTE_VALUE AS [Product 1],  
[Support] AS [Sequence Support],   
[Probability] AS [Sequence Probability]  
FROM NODE_DISTRIBUTION) AS t  
FROM [Sequence Clustering].CONTENT  
WHERE NODE_TYPE = 13  
AND [PARENT_UNIQUE_NAME] = 0  

일부 결과:

NODE_UNIQUE_NAME 제품 1 시퀀스 지원 시퀀스 확률
1081327 없어진 0 #######
1081327 All-Purpose 자전거 스탠드 17 0.00111
1081327 자전거 세척 64 0.00418
1081327 행 4-36 생략
1081327 여성용 마운틴 쇼츠 506 0.03307

모델의 시퀀스 목록은 항상 사전순으로 오름차순으로 정렬됩니다. 시퀀스의 순서 번호를 확인하여 관련 전환을 찾을 수 있으므로 시퀀스의 순서가 중요합니다. Missing 값은 항상 전환 0입니다.

예를 들어 이전 결과에서 "Women's Mountain Shorts" 제품은 모델의 시퀀스 번호 37입니다. 이 정보를 사용하여 "여성 산 쇼츠" 이후 구매한 모든 제품을 볼 수 있습니다.

이렇게 하려면 먼저 이전 쿼리에서 NODE_UNIQUE_NAME 대해 반환된 값을 참조하여 모델에 대한 모든 시퀀스가 포함된 노드의 ID를 가져옵니다. 이 값을 부모 노드의 ID로 쿼리에 전달하여, 모델의 모든 시퀀스 목록을 포함하는 이 노드에 포함된 전환만 가져옵니다. 그러나 특정 클러스터에 대한 전환 목록을 보려면 클러스터 노드의 ID를 전달하고 해당 클러스터와 연결된 시퀀스만 볼 수 있습니다.

SELECT NODE_UNIQUE_NAME  
FROM [Sequence Clustering].CONTENT  
WHERE NODE_DESCRIPTION = 'Transition row for sequence state 37'  
AND [PARENT_UNIQUE_NAME] = '1081327'  

결과 예:

노드_고유_이름
1081365

이 ID로 표시되는 노드에는 지원 및 확률 값과 함께 "Women's Mountain Shorts" 제품을 따르는 시퀀스 목록이 포함됩니다.

SELECT FLATTENED  
(SELECT ATTRIBUTE_VALUE AS Product2,  
[Support] AS [P2 Support],  
[Probability] AS [P2 Probability]  
FROM NODE_DISTRIBUTION) AS t  
FROM [Sequence Clustering].CONTENT  
WHERE NODE_UNIQUE_NAME = '1081365'  

결과 예:

t.Product2 t.P2 지원 t.P2 확률
없어진 230.7419 0.456012
클래식 조끼 8.16129 0.016129
사이클링 캡 60.83871 0.120235
Half-Finger 장갑 30.41935 0.060117
Long-Sleeve 로고 저지 86.80645 0.171554
레이싱 양말 28.93548 0.057185
Short-Sleeve 클래식 유니폼 60.09677 0.118768

여성용 산악 반바지와 관련된 다양한 시퀀스에 대한 지원은 모델에서 506입니다. 전환에 대한 지원 값도 최대 506개까지 추가됩니다. 그러나 숫자는 정수가 아니며, 지원에서 각 전환이 포함된 사례 수를 단순히 나타낼 것으로 예상하는 경우 약간 이상해 보입니다. 그러나 클러스터를 만드는 방법은 부분 멤버 자격을 계산하기 때문에 클러스터 내의 전환 확률은 해당 특정 클러스터에 속할 확률에 따라 가중치가 적용되어야 합니다.

예를 들어 4개의 클러스터가 있는 경우, 특정 시퀀스는 클러스터 1에 속할 확률이 40%%, 클러스터 2에 속할 확률은 30%%, 클러스터 3에 속할 확률은 20%%, 클러스터 4에 속할 확률은 10%%일 수 있습니다. 알고리즘은 전환이 대부분 속할 가능성이 높은 클러스터를 확인한 후 클러스터 내의 확률을 클러스터 이전 확률에 따라 가중치를 적용합니다.

샘플 쿼리 3: 시스템 저장 프로시저 사용

이러한 쿼리 샘플에서 모델에 저장된 정보가 복잡하며 필요한 정보를 얻기 위해 여러 쿼리를 만들어야 할 수도 있음을 확인할 수 있습니다. 그러나 Microsoft 시퀀스 클러스터링 뷰어는 시퀀스 클러스터링 모델에 포함된 정보를 그래픽으로 검색하기 위한 강력한 도구 집합을 제공하며, 뷰어를 사용하여 모델을 쿼리하고 드릴다운할 수도 있습니다.

대부분의 경우 Microsoft 시퀀스 클러스터링 뷰어에 표시되는 정보는 Analysis Services 시스템 저장 프로시저를 사용하여 모델을 쿼리하여 생성됩니다. 모델 콘텐츠에 대해 DMX(데이터 마이닝 확장) 쿼리를 작성하여 동일한 정보를 검색할 수 있지만 Analysis Services 시스템 저장 프로시저는 탐색 또는 모델 테스트 시 편리한 바로 가기를 제공합니다.

비고

시스템 저장 프로시저는 서버 및 Microsoft에서 Analysis Services 서버와 상호 작용하기 위해 제공하는 클라이언트의 내부 처리에 사용됩니다. 따라서 Microsoft는 언제든지 변경할 수 있는 권한을 보유합니다. 편의를 위해 여기에 설명되어 있지만 프로덕션 환경에서는 해당 사용을 지원하지 않습니다. 프로덕션 환경에서 안정성과 호환성을 보장하려면 항상 DMX를 사용하여 사용자 고유의 쿼리를 작성해야 합니다.

이 섹션에서는 시스템 저장 프로시저를 사용하여 시퀀스 클러스터링 모델에 대한 쿼리를 만드는 방법에 대한 몇 가지 샘플을 제공합니다.

클러스터 프로필 및 샘플 사례

클러스터 프로필 탭에는 모델의 클러스터 목록, 각 클러스터의 크기 및 클러스터에 포함된 상태를 나타내는 히스토그램이 표시됩니다. 쿼리에서 유사한 정보를 검색하는 데 사용할 수 있는 두 가지 시스템 저장 프로시저가 있습니다.

  • GetClusterProfile 는 클러스터의 NODE_DISTRIBUTION 테이블에 있는 모든 정보와 함께 클러스터의 특성을 반환합니다.

  • GetNodeGraph 는 시퀀스 클러스터링 보기의 첫 번째 탭에 표시되는 항목에 해당하는 클러스터의 수학 그래프 표현을 생성하는 데 사용할 수 있는 노드 및 가장자리를 반환합니다. 노드는 클러스터이고 에지는 가중치 또는 강도를 나타냅니다.

다음 예제에서는 시스템 저장 프로시저 GetClusterProfiles를 사용하여 모델의 모든 클러스터를 해당 프로필과 함께 반환하는 방법을 보여 줍니다. 이 저장 프로시저는 모델의 전체 프로필 집합을 반환하는 일련의 DMX 문을 실행합니다. 그러나 이 저장 프로시저를 사용하려면 모델의 주소를 알고 있어야 합니다.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterProfiles('Sequence Clustering', 2147483647, 0)

다음 예제에서는 시스템 저장 프로시저 GetNodeGraph를 사용하고 클러스터 ID를 지정하여 특정 클러스터 클러스터(클러스터 12)에 대한 프로필을 검색하는 방법을 보여 줍니다. 이 ID는 일반적으로 클러스터 이름의 숫자와 같습니다.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','12',0)  

다음 쿼리 GetNodeGraph 와 같이 클러스터 ID를 생략하면 모든 클러스터 프로필의 정렬된 평면화된 목록을 반환합니다.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetNodeGraph('Sequence Clustering','',0)  

클러스터 프로필 탭에는 모델 샘플 사례의 히스토그램도 표시됩니다. 이러한 샘플 사례는 모델의 이상화된 사례를 나타냅니다. 이러한 경우는 학습 데이터와 동일한 방식으로 모델에 저장되지 않습니다. 모델에 대한 샘플 사례를 검색하려면 특수 구문을 사용해야 합니다.

SELECT * FROM [Sequence Clustering].SAMPLE_CASES WHERE IsInNode('12')  

자세한 내용은 SELECT FROM <model>.SAMPLE_CASES(DMX)를 참조하세요.

클러스터 특성 및 클러스터 차별

클러스터 특성 탭에는 확률별로 순위가 지정된 각 클러스터의 주요 특성이 요약되어 있습니다. 클러스터에 속한 사례 수와 클러스터에서 사례 분포가 어떤지 확인할 수 있습니다. 각 특성은 특정 지원을 받습니다. 특정 클러스터의 특성을 보려면 클러스터의 ID를 알고 있어야 합니다.

다음 예제에서는 시스템 저장 프로시저 GetClusterCharacteristics를 사용하여 지정된 임계값 0.0005보다 확률 점수가 높은 클러스터 12의 모든 특성을 반환합니다.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','12',0.0005)  

모든 클러스터의 특성을 반환하려면 클러스터 ID를 비워 둘 수 있습니다.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterCharacteristics('Sequence Clustering','',0.0005)  

다음 예제에서는 시스템 저장 프로시저 GetClusterDiscrimination 를 호출하여 클러스터 1과 클러스터 12의 특성을 비교합니다.

CALL System.Microsoft.AnalysisServices.System.DataMining.Clustering.GetClusterDiscrimination('Sequence Clustering','1','12',0.0005,true)  

DMX에서 고유한 쿼리를 작성하여 두 클러스터를 비교하거나 클러스터를 보완과 비교하려면 먼저 하나의 특성 집합을 검색한 다음 관심 있는 특정 클러스터의 특성을 검색하고 두 집합을 비교해야 합니다. 이 시나리오는 더 복잡하며 일반적으로 일부 클라이언트 처리가 필요합니다.

상태 및 전환

Microsoft 시퀀스 클러스터링의 상태 전환 탭은 백 엔드에서 복잡한 쿼리를 수행하여 다른 클러스터에 대한 통계를 검색하고 비교합니다. 이러한 결과를 재현하려면 더 복잡한 쿼리와 일부 클라이언트 처리가 필요합니다.

그러나 콘텐츠 쿼리 섹션의 예제 2에 설명된 DMX 쿼리를 사용하여 시퀀스 또는 개별 전환에 대한 확률 및 상태를 검색할 수 있습니다.

모델을 사용하여 예측 만들기

시퀀스 클러스터링 모델의 예측 쿼리는 다른 클러스터링 모델에서 사용되는 많은 예측 함수를 사용할 수 있습니다. 또한 특수 예측 함수인 PredictSequence(DMX)를 사용하여 권장 사항을 만들거나 다음 상태를 예측할 수 있습니다.

샘플 쿼리 4: 다음 상태 또는 상태 예측

값이 지정된 경우 PredictSequence(DMX) 함수를 사용하여 다음으로 가능성이 가장 큰 상태를 예측할 수 있습니다. 여러 다음 상태를 예측할 수도 있습니다. 예를 들어 고객이 구매할 가능성이 있는 상위 3개 제품 목록을 반환하여 권장 사항 목록을 표시할 수 있습니다.

다음 샘플 쿼리는 상위 5개 예측과 해당 확률을 함께 반환하는 단일 예측 쿼리입니다. 모델에 중첩 테이블이 포함되어 있으므로 예측을 수행할 때 중첩 테이블을 [v Assoc Seq Line Items]열 참조로 사용해야 합니다. 또한 값을 입력으로 제공할 때 중첩된 SELECT 문에 표시된 대로 사례 테이블과 중첩 테이블 열을 모두 조인해야 합니다.

SELECT FLATTENED PredictSequence([v Assoc Seq Line Items], 7)  
FROM [Sequence Clustering]  
NATURAL PREDICTION JOIN  
(SELECT  (SELECT 1 as [Line Number],  
   'All-Purpose Bike Stand' as [Model]) AS [v Assoc Seq Line Items])   
AS t  

결과 예:

표현.$시퀀스 Expression.Line 번호 익스프레션.모델
1 사이클링 캡
2 사이클링 캡
3 스포츠-100
4 Long-Sleeve 로고 유니폼
5 Half-Finger 장갑
6 All-Purpose 자전거 스탠드
7 All-Purpose 자전거 스탠드

쿼리는 항상 사례 테이블에 대한 열을 반환하기 때문에 하나의 열만 예상할 수 있지만 결과에는 세 개의 열이 있습니다. 여기서 결과는 평면화됩니다. 그렇지 않으면 쿼리는 두 개의 중첩 테이블 열을 포함하는 단일 열을 반환합니다.

$sequence 열은 예측 결과를 정렬하기 위해 함수에서 기본적으로 PredictSequence 반환하는 열입니다. 열 [Line Number]은 모델의 시퀀스 키와 일치해야 하지만 키는 출력되지 않습니다.

흥미롭게도, All-Purpose 자전거 스탠드 후 상위 예측 시퀀스는 사이클링 캡과 사이클링 캡입니다. 이는 오류가 아닙니다. 데이터가 고객에게 표시되는 방법 및 모델을 학습할 때 그룹화되는 방법에 따라 이러한 종류의 시퀀스를 사용할 수 있습니다. 예를 들어 고객은 사이클링 캡(빨간색)과 다른 사이클링 캡(파란색)을 구매하거나 수량을 지정할 방법이 없는 경우 두 개 연속 구매를 할 수 있습니다.

행 6과 7의 값은 자리 표시자입니다. 예측 결과를 종료하는 대신 가능한 전환 체인의 끝에 도달하면 입력으로 전달된 값이 결과에 추가됩니다. 예를 들어 예측 수를 20으로 늘리면, 행 6-20의 값은 모두 동일하며 All-Purpose 자전거 거치대입니다.

함수 목록

모든 Microsoft 알고리즘은 일반적인 함수 집합을 지원합니다. 그러나 Microsoft 시퀀스 클러스터링 알고리즘은 다음 표에 나열된 추가 함수를 지원합니다.

예측 함수 사용법
클러스터(DMX) 입력 사례를 포함할 가능성이 가장 큰 클러스터를 반환합니다.
ClusterDistance(DMX) 지정된 클러스터에서 입력 사례의 거리를 반환하거나 클러스터가 지정되지 않은 경우 가장 가능성이 큰 클러스터에서 입력 사례의 거리를 반환합니다.

이 함수는 모든 종류의 클러스터링 모델(EM, K-평균 등)과 함께 사용할 수 있지만 결과는 알고리즘에 따라 다릅니다.
ClusterProbability(DMX) 입력 사례가 지정된 클러스터에 속할 확률을 반환합니다.
IsInNode(DMX) 지정된 노드에 현재 사례가 포함되어 있는지 여부를 나타냅니다.
PredictAdjustedProbability(DMX) 지정된 상태의 조정된 확률을 반환합니다.
PredictAssociation(DMX) 결합 멤버 자격을 예측합니다.
PredictCaseLikelihood(DMX) 입력 사례가 기존 모델에 맞을 가능성을 반환합니다.
PredictHistogram(DMX) 지정된 열의 예측에 대한 히스토그램을 나타내는 테이블을 반환합니다.
PredictNodeId(DMX) 사례가 분류되는 노드의 Node_ID 반환합니다.
PredictProbability(DMX) 지정된 상태에 대한 확률을 반환합니다.
PredictSequence(DMX) 지정된 시퀀스 데이터 집합에 대한 이후 시퀀스 값을 예측합니다.
PredictStdev(DMX) 지정된 열에 대해 예측된 표준 편차를 반환합니다.
PredictSupport(DMX) 지정된 상태에 대한 지원 값을 반환합니다.
PredictVariance(DMX) 지정된 열의 분산을 반환합니다.

모든 Microsoft 알고리즘에 공통적인 함수 목록은 DMX(일반 예측 함수)를 참조하세요. 특정 함수의 구문은 DMX(데이터 마이닝 확장) 함수 참조를 참조하세요.

또한 참조하십시오

데이터 마이닝 쿼리
Microsoft 시퀀스 클러스터링 알고리즘 기술 참조
Microsoft 시퀀스 클러스터링 알고리즘
시퀀스 클러스터링 모델에 대한 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)