Naive Bayes 모델 쿼리 예제

 

적용 대상: SQL Server 2016

데이터 마이닝 모델에 대한 쿼리를 작성할 때 분석 중에 발견된 패턴에 대한 세부 정보를 제공하는 내용 쿼리를 작성하거나, 모델의 패턴을 사용하여 새 데이터에 대한 예측을 만드는 예측 쿼리를 작성할 수 있습니다. 데이터 마이닝 스키마 행 집합에 대한 쿼리를 사용하여 모델에 대한 메타데이터를 검색할 수도 있습니다. 이 섹션에서는 Microsoft Naive Bayes 알고리즘을 기반으로 하는 모델에 대해 이러한 쿼리를 만드는 방법을 설명합니다.

내용 쿼리

DMX를 사용하여 모델 메타데이터 가져오기

학습 데이터의 요약 검색

특성에 대한 추가 정보 찾기

시스템 저장 프로시저 사용

예측 쿼리

단일 쿼리를 사용하여 결과 예측

확률 및 지지도 값과 함께 예측 가져오기

연결 예측

Naive Bayes 모델의 모델 콘텐츠는 학습 데이터의 값 분포에 대한 집계 정보를 제공합니다. 데이터 마이닝 스키마 행 집합에 대한 쿼리를 만들어 모델의 메타데이터에 대한 정보를 검색할 수도 있습니다.

예제 쿼리 1: DMX를 사용하여 모델 메타데이터 가져오기

데이터 마이닝 스키마 행 집합을 쿼리하면 모델에 대한 메타데이터를 찾을 수 있습니다. 이러한 메타데이터로는 모델이 만들어진 시기, 모델이 마지막으로 처리된 시기, 모델의 기반이 되는 마이닝 구조의 이름, 예측 가능한 특성으로 사용된 열 이름 등이 포함됩니다. 모델을 만들 때 사용된 매개 변수를 반환할 수도 있습니다.

SELECT MODEL_CATALOG, MODEL_NAME, DATE_CREATED, LAST_PROCESSED,  
SERVICE_NAME, PREDICTION_ENTITY, FILTER  
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'TM_NaiveBayes_Filtered'  

예제 결과:

MODEL_CATALOGAdventureWorks
MODEL_NAMETM_NaiveBayes_Filtered
DATE_CREATED3/1/2008 19:15
LAST_PROCESSED3/2/2008 20:00
SERVICE_NAMEMicrosoft_Naive_Bayes
PREDICTION_ENTITYBike Buyer,Yearly Income
FILTER[Region] = 'Europe' OR [Region] = 'North America'

이 예에 사용된 모델은 Basic Data Mining Tutorial에서 만드는 Naive Bayes 모델을 기반으로 하되 여기에 두 번째 예측 가능한 특성을 추가하고 학습 데이터에 필터를 적용하여 수정한 것입니다.

예제 쿼리 2: 학습 데이터의 요약 검색

Naive Bayes 모델에서 한계 통계 노드에는 학습 데이터의 값 분포에 대한 집계 정보가 저장됩니다. 따라서 이와 같은 요약 정보를 찾기 위해 학습 데이터에 대한 SQL 쿼리를 만들지 않아도 되므로 편리합니다.

다음 예에서는 DMX 내용 쿼리를 사용하여 노드(NODE_TYPE = 24)에서 데이터를 검색합니다. 통계는 중첩 테이블에 저장되어 있으므로 결과를 보기 쉽게 만들기 위해 FLATTENED 키워드가 사용됩니다.

SELECT FLATTENED MODEL_NAME,  
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE, [SUPPORT], [PROBABILITY], VALUETYPE FROM NODE_DISTRIBUTION) AS t  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 26  

System_CAPS_ICON_note.jpg 참고


SUPPORT 및 PROBABILITY 열의 이름을 대괄호로 묶어 동일한 이름의 MDX(Multidimensional Expressions) 예약 키워드와 구별해야 합니다.

일부 결과:

MODEL_NAMEt.ATTRIBUTE_NAMEt.ATTRIBUTE_VALUEt.SUPPORTt.PROBABILITYt.VALUETYPE
TM_NaiveBayesBike BuyerMissing001.
TM_NaiveBayesBike Buyer088690.5072637844
TM_NaiveBayesBike Buyer1.86150.4927362164
TM_NaiveBayesGenderMissing001.
TM_NaiveBayesGenderF86560.4950812174
TM_NaiveBayesGenderM88280.5049187834

예를 들어 이러한 결과는 누락 값(VALUETYPE = 1)에 대해 조정된 계산된 확률과 함께 각 불연속 값(VALUETYPE = 4)의 학습 사례 수를 나타냅니다.

Naive Bayes 모델의 NODE_DISTRIBUTION 테이블에 제공되는 값에 대한 정의는 Naive Bayes 모델에 대한 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)를 참조하세요. 누락 값이 지지도 및 확률 계산에 주는 영향에 대한 자세한 내용은 누락 값(Analysis Services - 데이터 마이닝)을 참조하세요.

예제 쿼리 3: 특성에 대한 추가 정보 찾기

Naive Bayes 모델에는 서로 다른 특성 간의 관계에 대한 복잡한 정보가 들어 있는 경우도 있으므로 이러한 관계를 가장 쉽게 보는 방법은 Microsoft Naive Bayes 뷰어를 사용하는 것입니다. 그러나 DMX 쿼리를 만들어 데이터를 반환할 수도 있습니다.

다음 예에서는 모델에서 특정 특성 Region에 대한 정보를 반환하는 방법을 보여 줍니다.

SELECT NODE_TYPE, NODE_CAPTION,   
NODE_PROBABILITY, NODE_SUPPORT, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE ATTRIBUTE_NAME = 'Region'  

이 쿼리는 두 가지 유형의 노드를 반환합니다. 한 노드(NODE_TYPE = 10)는 입력 특성을 나타내고 다른 노드(NODE_TYPE = 11)는 특성의 각 값에 대한 노드입니다. 노드 캡션에는 특성 이름과 특성 값이 모두 표시되므로 노드 이름 대신 노드 캡션이 노드를 식별하는 데 사용됩니다.

NODE_TYPENODE_CAPTIONNODE_PROBABILITYNODE_SUPPORTMSOLAP_NODE_SCORENODE_TYPE
10Bike Buyer -> Region1.1748484.5155587510
11Bike Buyer -> Region = Missing00011
11Bike Buyer -> Region = North America0.5082361028886011
11Bike Buyer -> Region = Pacific0.1938915583390011
11Bike Buyer -> Region = Europe0.297872345208011

노드에 저장된 노드 확률 점수 및 노드 지지도 값 등의 일부 열은 한계 통계 노드에서 가져올 수 있는 것과 동일합니다. 그러나 MSOLAP_NODE_SCORE는 입력 특성 노드에 대해서만 제공되는 특수 값이며 모델에서 이 특성의 상대적 중요도를 나타냅니다. 뷰어의 종속성 네트워크 창에서도 동일한 정보를 볼 수 있지만 뷰어에는 점수가 표시되지 않습니다.

다음 쿼리는 모델에 있는 모든 특성의 중요도 점수를 반환합니다.

SELECT NODE_CAPTION, MSOLAP_NODE_SCORE  
FROM TM_NaiveBayes.CONTENT  
WHERE NODE_TYPE = 10  
ORDER BY MSOLAP_NODE_SCORE DESC  

예제 결과:

NODE_CAPTIONMSOLAP_NODE_SCORE
Bike Buyer -> Total Children181.3654836
Bike Buyer -> Commute Distance179.8419482
Bike Buyer -> English Education156.9841928
Bike Buyer -> Number Children At Home111.8122599
Bike Buyer -> Region84.51555875
Bike Buyer -> Marital Status23.13297354
Bike Buyer -> English Occupation2.832069191

Microsoft 일반 콘텐츠 트리 뷰어에서 모델 콘텐츠를 찾아보면 주목할 만한 통계를 보다 잘 확인할 수 있습니다. 여기에서는 몇 개의 간단한 예를 보여 주지만 여러 쿼리를 실행하거나 결과를 저장하고 클라이언트에서 처리해야 하는 경우는 보다 많이 있습니다.

예제 쿼리 4: 시스템 저장 프로시저 사용

사용자가 직접 내용 쿼리를 작성할 수 있을 뿐 아니라 몇 가지 Analysis Services 시스템 저장 프로시저를 사용하여 결과를 탐색할 수도 있습니다. 시스템 저장 프로시저를 사용하려면 저장 프로시저 이름 앞에 CALL 키워드를 붙입니다.

CALL GetPredictableAttributes ('TM_NaiveBayes')  

일부 결과:

ATTRIBUTE_NAMENODE_UNIQUE_NAME
Bike Buyer100000001
System_CAPS_ICON_note.jpg 참고


이러한 시스템 저장 프로시저는 Analysis Services 서버와 클라이언트 간의 내부 통신을 위한 것으로서, 마이닝 모델을 개발하고 테스트할 때 편의를 위해서만 사용해야 합니다. 프로덕션 시스템에 대한 쿼리를 만들 때는 항상 DMX를 사용하여 사용자가 직접 쿼리를 작성해야 합니다.

Analysis Services 시스템 저장 프로시저에 대한 자세한 내용은 데이터 마이닝 저장 프로시저(Analysis Services - 데이터 마이닝)를 참조하세요.

Microsoft Naive Bayes 알고리즘은 일반적으로 예측에 사용되는 경우보다 입력 및 예측 가능한 특성 간의 관계를 탐색하는 데 사용되는 경우가 더 많습니다. 그러나 이 모델에서는 예측 및 연결 모두에 대해 예측 함수를 사용할 수 있습니다.

예제 쿼리 5: 단일 쿼리를 사용하여 결과 예측

다음 쿼리에서는 단일 쿼리를 사용하여 새 값을 제공하고 모델을 기반으로 해당 특성을 갖는 고객이 자전거를 구입할 가능성이 있는지를 예측합니다. 회귀 모델에서 단일 쿼리를 만드는 가장 쉬운 방법은 단일 쿼리 입력 대화 상자를 사용하는 것입니다. 예를 들어 TM_NaiveBayes 모델을 선택하고 단일 쿼리를 선택한 다음 드롭다운 목록에서 [Commute Distance]Gender의 값을 선택하여 다음과 같은 DMX 쿼리를 작성할 수 있습니다.

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

예제 결과:

0

이 예측 함수는 가장 가능성이 높은 값(이 경우 0)을 반환합니다. 이 값은 이 유형의 고객이 자전거를 구입할 가능성이 없다는 것을 의미합니다.

예제 쿼리 6: 확률 및 지지도 값과 함께 예측 가져오기

결과를 예측하는 것 외에도 예측의 정확도를 알고 싶은 경우가 있습니다. 다음 쿼리에서는 앞의 예와 동일한 단일 쿼리를 사용하되 예측 함수 PredictHistogram(DMX)을 추가하여 해당 예측을 지원하는 통계가 들어 있는 중첩 테이블을 반환합니다.

SELECT  
  Predict([TM_NaiveBayes].[Bike Buyer]),  
  PredictHistogram([TM_NaiveBayes].[Bike Buyer])  
FROM  
  [TM_NaiveBayes]  
NATURAL PREDICTION JOIN  
(SELECT '5-10 Miles' AS [Commute Distance],  
  'F' AS [Gender]) AS t  

예제 결과:

Bike Buyer$SUPPORT$PROBABILITY$ADJUSTEDPROBABILITY$VARIANCE$STDEV
010161.57140.5811925990.01053098100
1.7321.4287680.4187502150.00894568400
0.9998284445.72E-055.72E-0500

표의 마지막 행에서는 누락 값의 지지도 및 확률에 대한 조정을 보여 줍니다. 분산 및 표준 편차 값은 항상 0이지만 Naive Bayes 모델에서는 연속 값을 모델링할 수 없습니다.

예제 쿼리 7: 연결 예측

마이닝 구조에 예측 가능한 특성을 키로 사용하는 중첩 테이블이 들어 있는 경우 연결 분석에 Microsoft Naive Bayes 알고리즘을 사용할 수 있습니다. 예를 들어 데이터 마이닝 자습서의 3단원: 시장 바구니 시나리오 구축(중급 데이터 마이닝 자습서)에서 만든 마이닝 구조를 사용하여 Naive Bayes 모델을 작성할 수 있습니다. 이 예에 사용된 모델을 수정하여 사례 테이블에 수입 및 고객 지역에 대한 정보를 추가했습니다.

다음 쿼리 예에서는 'Road Tire Tube'제품의 구매와 관련된 제품을 예측하는 단일 쿼리를 보여 줍니다. 이 정보를 사용하여 특정 유형의 고객에게 제품을 추천할 수 있습니다.

SELECT   PredictAssociation([Association].[v Assoc Seq Line Items])  
FROM [Association_NB]  
NATURAL PREDICTION JOIN  
(SELECT 'High' AS [Income Group],  
  'Europe' AS [Region],  
  (SELECT 'Road Tire Tube' AS [Model])   
AS [v Assoc Seq Line Items])   
AS t  

일부 결과:

Model
Women's Mountain Shorts
Water Bottle
Touring-3000
Touring-2000
Touring-1000

모든 Microsoft 알고리즘은 공통 함수 집합을 지원합니다. 그러나 Microsoft Naive Bayes 알고리즘은 다음 표에 나열된 추가 함수도 지원합니다.

예측 함수사용법
IsDescendant(DMX)한 노드가 모델에서 다른 노드의 자식인지 여부를 확인합니다.
예측(DMX)지정한 열에 대한 예측 값을 반환합니다.
PredictAdjustedProbability(DMX)가중치 확률을 반환합니다.
PredictAssociation(DMX)연관 데이터 집합에서의 멤버 자격을 예측합니다.
PredictNodeId(DMX)각 사례에 대한 Node_ID를 반환합니다.
PredictProbability(DMX)예측 값의 확률을 반환합니다.
PredictSupport(DMX)지정한 상태에 대한 지원 값을 반환합니다.

특정 함수의 구문을 보려면 DMX(Data Mining Extensions) 함수 참조를 참조하세요.

Microsoft Naive Bayes 알고리즘 기술 참조
Microsoft Naive Bayes 알고리즘
Naive Bayes 모델에 대한 마이닝 모델 콘텐츠(Analysis Services - 데이터 마이닝)

커뮤니티 추가 항목

추가
표시: