데이터를 학습 및 테스트 집합으로 분리하는 것은 데이터 마이닝 모델을 평가하는 데 중요한 부분입니다. 일반적으로 데이터 집합을 학습 집합 및 테스트 집합으로 구분하면 대부분의 데이터가 학습에 사용되고 데이터의 더 작은 부분이 테스트에 사용됩니다. Analysis Services는 테스트 및 학습 집합이 유사한지 확인하기 위해 데이터를 임의로 샘플링합니다. 학습 및 테스트에 유사한 데이터를 사용하면 데이터 불일치의 영향을 최소화하고 모델의 특성을 더 잘 이해할 수 있습니다.
학습 집합을 사용하여 모델을 처리한 후에는 테스트 집합에 대해 예측을 수행하여 모델을 테스트합니다. 테스트 집합의 데이터에는 예측하려는 특성에 대한 알려진 값이 이미 포함되어 있으므로 모델의 추측이 올바른지 여부를 쉽게 확인할 수 있습니다.
데이터 마이닝 구조에 대한 테스트 및 학습 집합 만들기
SQL Server 2014에서는 원래 데이터 집합을 마이닝 구조 수준에서 구분합니다. 학습 및 테스트 데이터 집합의 크기와 해당 집합에 속하는 행에 대한 정보는 구조와 함께 저장되며, 해당 구조를 기반으로 하는 모든 모델은 학습 및 테스트에 집합을 사용할 수 있습니다.
다음과 같은 방법으로 마이닝 구조에 대한 테스트 데이터 집합을 정의할 수 있습니다.
데이터 마이닝 마법사를 사용하여 마이닝 구조를 만들 때, 이를 구분합니다.
데이터 마이닝 디자이너의 마이닝 구조 탭에서 구조체 속성 수정
AMO(Analysis Management Objects) 또는 DDL(XML Data Definition Language)을 사용하여 프로그래밍 방식으로 구조를 만들고 수정합니다.
데이터 마이닝 마법사를 사용하여 마이닝 구조 나누기
기본적으로 마이닝 구조에 대한 데이터 원본을 정의한 후 데이터 마이닝 마법사는 데이터를 두 집합으로 나눕니다. 하나는 원본 데이터의 70%, 모델 학습을 위해, 하나는 원본 데이터의 30%를 사용하여 모델을 테스트합니다. 이 기본값은 데이터 마이닝에서 70-30 비율이 자주 사용되기 때문에 선택되었지만 Analysis Services에서는 요구 사항에 맞게 이 비율을 변경할 수 있습니다.
마법사를 구성하여 최대 학습 사례 수를 설정하거나 제한을 결합하여 최대 사례 비율을 지정된 최대 사례 수까지 허용할 수 있습니다. 최대 사례 비율과 최대 사례 수를 모두 지정하면 Analysis Services는 두 제한 중 더 작은 값을 테스트 집합의 크기로 사용합니다. 예를 들어 테스트 사례에 대해 30% 홀드아웃을 지정하고 최대 테스트 사례 수를 1000으로 지정하는 경우 테스트 집합의 크기는 1000건을 초과하지 않습니다. 이는 모델에 더 많은 학습 데이터가 추가된 경우에도 테스트 집합의 크기가 일관성을 유지하도록 하려는 경우에 유용할 수 있습니다.
다른 마이닝 구조에 동일한 데이터 원본 뷰를 사용하고 모든 마이닝 구조 및 해당 모델에 대해 데이터가 거의 동일한 방식으로 분할되도록 하려면 임의 샘플링을 초기화하는 데 사용되는 시드를 지정해야 합니다. 값을 HoldoutSeed지정하면 Analysis Services에서 해당 값을 사용하여 샘플링을 시작합니다. 그렇지 않으면 샘플링은 마이닝 구조의 이름에 해시 알고리즘을 사용하여 시드 값을 만듭니다.
비고
및 IMPORT 문을 사용하여 EXPORT 마이닝 구조의 복사본을 만드는 경우 내보내기 프로세스에서 새 ID를 만들지만 동일한 이름을 사용하기 때문에 새 마이닝 구조는 동일한 학습 및 테스트 데이터 집합을 갖습니다. 그러나 두 마이닝 구조가 동일한 기본 데이터 원본을 사용하지만 이름이 다른 경우 각 마이닝 구조에 대해 만들어진 집합은 달라집니다.
테스트 데이터 집합을 만들기 위해 구조체 속성 수정
마이닝 구조를 만들고 처리한 다음 나중에 테스트 데이터 집합을 따로 설정하려는 경우 마이닝 구조의 속성을 수정할 수 있습니다. 데이터가 분할되는 방식을 변경하려면 다음 속성을 편집합니다.
| 재산 | 설명 |
|---|---|
HoldoutMaxCases |
테스트 집합에 포함할 최대 사례 수를 지정합니다. |
HoldoutMaxPercent |
테스트 집합에 포함할 사례 수를 전체 데이터 집합의 백분율로 지정합니다. 데이터 집합이 없으면 0을 지정합니다. |
HoldoutSeed |
파티션에 대한 데이터를 임의로 선택할 때 시드로 사용할 정수 값을 지정합니다. 이 값은 학습 집합의 사례 수에 영향을 주지 않습니다. 대신 파티션을 반복할 수 있습니다. |
테스트 데이터 집합을 기존 구조체로 추가하거나 변경하는 경우 구조체 및 연결된 모든 모델을 다시 처리해야 합니다. 또한 원본 데이터를 분할하면 모델의 다른 하위 집합에서 모델이 학습되므로 모델에서 다른 결과가 표시될 수 있습니다.
프로그래밍 방식으로 홀드아웃 지정
DMX 문, AMO 또는 XML DDL을 사용하여 마이닝 구조에서 테스트 및 학습 데이터 집합을 정의할 수 있습니다. ALTER MINING STRUCTURE 문은 홀드아웃 매개 변수 사용을 지원하지 않습니다.
DMX (데이터 마이닝 확장) 언어에서 CREATE MINING STRUCTURE 문은 WITH HOLDOUT 절을 포함하도록 확장되었습니다.
ASSL ASSL(Analysis Services Scripting Language)을 사용하여 새 마이닝 구조를 만들거나 기존 마이닝 구조에 테스트 데이터 집합을 추가할 수 있습니다.
AMO AMO를 사용하여 홀드아웃 데이터 집합을 보고 수정할 수도 있습니다.
데이터 마이닝 스키마 행 집합을 쿼리하여 기존 마이닝 구조에서 홀드아웃 데이터 집합에 대한 정보를 볼 수 있습니다. DISCOVER ROWSET 호출을 수행하거나 DMX 쿼리를 사용할 수 있습니다.
홀드아웃 데이터에 대한 정보 검색
기본적으로 학습 및 테스트 데이터 집합에 대한 모든 정보가 캐시되므로 기존 데이터를 사용하여 새 모델을 학습한 다음 테스트할 수 있습니다. 캐시된 홀드아웃 데이터에 적용할 필터를 정의하여 데이터의 하위 집합에서 모델을 평가할 수도 있습니다.
사례를 학습 및 테스트 데이터 집합으로 나누는 방법은 홀드아웃을 구성하는 방법과 제공하는 데이터에 따라 달라집니다. 학습 또는 테스트에 사용되는 사례 수를 확인하거나 학습 및 테스트 집합에 포함된 사례에 대한 추가 세부 정보를 찾으려면 DMX 쿼리를 만들어 모델 구조를 쿼리할 수 있습니다. 예를 들어 다음 쿼리는 모델의 학습 집합에 사용된 사례를 반환합니다.
SELECT * from <structure>.CASES WHERE IsTrainingCase()
테스트 사례만 검색하고 마이닝 구조의 열 중 하나에서 테스트 사례를 추가로 필터링하려면 다음 구문을 사용합니다.
SELECT * from <structure>.CASES WHERE IsTestCase() AND <structure column name> = '<value>'
홀드아웃 데이터 사용에 대한 제한 사항
홀드아웃을 MiningStructureCacheMode 사용하려면 마이닝 구조의 속성을 기본값
KeepTrainingCases으로 설정해야 합니다. 속성을CacheMode에서ClearAfterProcessing로 변경한 후 마이닝 구조를 다시 처리하면 파티션은 손실됩니다.시계열 모델에서는 데이터를 제거할 수 없습니다. 따라서 원본 데이터를 학습 및 테스트 집합으로 구분할 수 없습니다. 마이닝 구조 및 모델을 만들고 Microsoft 시계열 알고리즘을 선택하면 홀드아웃 데이터 집합을 만드는 옵션이 비활성화됩니다. 마이닝 구조체에 사례 또는 중첩 테이블 수준에서 KEY TIME 열이 포함된 경우에도 홀드아웃 데이터를 사용할 수 없습니다.
테스트에 전체 데이터 집합이 사용되고 학습에 남아 있는 데이터가 없도록 홀드아웃 데이터 집합을 실수로 구성할 수 있습니다. 그러나 이렇게 하면 Analysis Services에서 오류를 일으켜 사용자가 문제를 해결할 수 있게 돕습니다. 또한 Analysis Services는 데이터의 50% 이상이 테스트를 위해 유지된 경우 구조가 처리될 때 경고합니다.
대부분의 경우 기본 홀드아웃 값 30은 학습 데이터와 테스트 데이터 간에 적절한 균형을 제공합니다. 충분한 학습을 제공하기 위해 데이터 집합이 얼마나 커야 하는지 또는 학습 집합이 얼마나 스파스일 수 있는지를 결정하는 간단한 방법은 없으며 여전히 과잉 맞춤을 방지할 수 있습니다. 그러나 모델을 빌드한 후에는 교차 유효성 검사를 사용하여 특정 모델과 관련하여 데이터 집합을 평가할 수 있습니다.
이전 표에 나열된 속성 외에도 읽기 전용 속성
HoldoutActualSize이 AMO 및 XML DDL에 제공됩니다. 그러나 파티션의 실제 크기는 구조가 처리될 때까지 정확하게 확인할 수 없으므로 속성 값을HoldoutActualSize검색하기 전에 모델이 처리되었는지 확인해야 합니다.
관련 내용
| 토픽 | 링크 |
|---|---|
| 모델의 필터가 학습 및 테스트 데이터 집합과 상호 작용하는 방법을 설명합니다. | 마이닝 모델에 대한 필터(Analysis Services - 데이터 마이닝) |
| 학습 및 테스트 데이터의 사용이 교차 유효성 검사에 미치는 영향에 대해 설명합니다. | 교차 검증(Analysis Services - 데이터 마이닝) |
| 마이닝 구조에서 학습 및 테스트 집합을 사용하기 위한 프로그래밍 방식 인터페이스에 대한 정보를 제공합니다. |
AMO 개념 및 개체 모델 MiningStructure 요소(ASSL) |
| 홀드아웃 집합을 만들기 위한 DMX 구문을 제공합니다. | 마이닝 구조 생성(DMX) |
| 학습 및 테스트 집합의 사례에 대한 정보를 검색합니다. |
데이터 마이닝 스키마 행 집합 데이터 마이닝 스키마 행 집합 쿼리(Analysis Services - 데이터 마이닝) |