데이터 집합 학습 및 테스트

적용 대상: SQL Server 2019 및 이전 Analysis Services Azure Analysis Services Fabric/Power BI Premium

중요

데이터 마이닝은 SQL Server 2017 Analysis Services에서 더 이상 사용되지 않으며 이제 SQL Server 2022 Analysis Services에서 중단되었습니다. 더 이상 사용되지 않는 기능 및 중단된 기능에 대해서는 설명서가 업데이트되지 않습니다. 자세한 내용은 Analysis Services 이전 버전과의 호환성을 참조하세요.

데이터를 학습 집합과 테스트 집합으로 분할하는 작업은 데이터 마이닝 모델 평가의 중요한 부분입니다. 데이터 집합을 학습 집합과 테스트 집합으로 분리할 경우 일반적으로 대부분의 데이터가 학습에 사용되고 나머지 데이터가 테스트에 사용되지만, SQL Server Analysis Services 테스트 및 학습 집합이 유사한지 확인하기 위해 데이터를 임의로 샘플합니다. 학습 및 테스트에 유사한 데이터를 사용하면 데이터 불일치의 영향을 최소화하고 모델의 특징을 보다 잘 이해할 수 있습니다.

학습 집합을 사용하여 모델을 처리한 후에는 테스트 집합에 대한 예측을 만들어 모델을 테스트합니다. 테스트 집합의 데이터에는 예측할 특성의 알려진 값이 이미 포함되어 있으므로 모델의 예측이 올바른지 여부를 쉽게 확인할 수 있습니다.

데이터 마이닝 구조에 대한 테스트 및 학습 집합 만들기

2017년 SQL Server 마이닝 구조 수준에서 원래 데이터 집합을 분리합니다. 학습 및 테스트 데이터 집합의 크기와 각 집합에 포함되는 행에 대한 정보가 구조와 함께 저장되며, 이 구조를 기반으로 하는 모든 모델이 학습 및 테스트에 해당 집합을 사용할 수 있습니다.

다음과 같은 방법으로 마이닝 구조에 테스트 데이터 집합을 정의할 수 있습니다.

  • 마이닝 구조를 만들 때 데이터 마이닝 마법사를 사용하여 마이닝 구조를 분할합니다.

  • 데이터 마이닝 디자이너의 마이닝 구조 탭에서 구조 속성을 수정합니다.

  • AMO(Analysis Management Objects) 또는 XML DDL(데이터 정의 언어)을 사용하여 프로그래밍 방식으로 구조를 생성하고 수정합니다.

데이터 마이닝 마법사를 사용하여 마이닝 구조 분할

기본적으로 사용자가 마이닝 구조의 데이터 원본을 정의하면 데이터 마이닝 마법사에서 데이터를 두 가지 집합으로 분할합니다. 원본 데이터의 70%는 모델 학습을 위한 집합에, 나머지 30%는 모델 테스트를 위한 집합에 할당합니다. 이 기본값은 데이터 마이닝에서 70-30 비율이 자주 사용되기 때문에 선택되었지만 SQL Server Analysis Services 사용하면 요구 사항에 맞게 이 비율을 변경할 수 있습니다.

마법사를 구성하여 최대 학습 사례 수를 설정하거나 여러 제한을 조합하여 지정한 최대 사례 수까지 최대 사례 비율을 허용할 수도 있습니다. 최대 사례 비율과 최대 사례 수를 모두 지정하는 경우 SQL Server Analysis Services 두 제한 중 더 작은 를 테스트 집합의 크기로 사용합니다. 예를 들어 테스트 사례에 대해 30%의 홀드아웃을 지정하고 최대 테스트 사례 수를 1000으로 지정하는 경우 테스트 집합의 크기는 1000개의 사례를 초과하지 않습니다. 이는 보다 많은 학습 데이터가 모델에 추가되더라도 테스트 집합의 크기를 일관되게 유지하려는 경우 유용할 수 있습니다.

다른 마이닝 구조에 대해 같은 데이터 원본 뷰를 사용하고 데이터가 모든 마이닝 구조 및 해당 모델에 대해 대략 같은 방식으로 분할되도록 하려면 무작위 샘플링을 초기화하는 데 사용되는 초기값을 지정해야 합니다. HoldoutSeed에 대한 값을 지정하면 SQL Server Analysis Services 해당 값을 사용하여 샘플링을 시작합니다. 그렇지 않으면 샘플링은 마이닝 구조의 이름에 해시 알고리즘을 사용하여 초기값을 만듭니다.

참고

EXPORTIMPORT 문을 사용하여 마이닝 구조의 복사본을 만들면 내보내기 프로세스에서 새 ID를 만들지만 같은 이름을 사용하므로 새 마이닝 구조가 같은 학습 및 테스트 데이터 집합을 갖게 됩니다. 그러나 두 마이닝 구조가 같은 기본 데이터 원본을 사용하지만 이름이 다를 경우에는 각 마이닝 구조에 대해 생성되는 집합이 달라집니다.

테스트 데이터 집합을 만들기 위한 구조 속성 수정

마이닝 구조를 만들고 처리한 다음 나중에 테스트 데이터 집합을 새로 만들려는 경우 마이닝 구조의 속성을 수정할 수 있습니다. 데이터가 분할되는 방식을 변경하려면 다음 속성을 편집합니다.

속성 설명
HoldoutMaxCases 테스트 집합에 포함할 최대 사례 수를 지정합니다.
HoldoutMaxPercent 테스트 집합에 포함할 사례 수를 전체 데이터 집합의 비율로 지정합니다. 데이터 집합을 갖지 않으려면 0을 지정합니다.
HoldoutSeed 파티션에 대한 데이터를 무작위로 선택할 때 초기값으로 사용할 정수 값을 지정합니다. 이 값은 학습 집합의 사례 수에 영향을 주는 대신 파티션이 반복될 수 있도록 합니다.

테스트 데이터 집합을 기존 구조에 추가하거나 변경하는 경우 구조 및 모든 관련 모델을 다시 처리해야 합니다. 또한 원본 데이터를 분할하면 데이터의 다른 하위 집합에서 모델이 학습되므로 모델의 다른 결과를 확인할 수 있습니다.

프로그래밍 방식으로 홀드아웃 지정

DMX 문, AMO 또는 XML DDL을 사용하여 마이닝 구조에서 테스트 및 학습 데이터 집합을 정의할 수 있습니다. ALTER MINING STRUCTURE 문은 홀드아웃 매개 변수의 사용을 지원하지 않습니다.

  • DMX DMX(Data Mining Extensions) 언어에서 CREATE MINING STRUCTURE 문은 WITH HOLDOUT 절을 포함하도록 확장되었습니다.

  • Assl ASSL(SQL Server Analysis Services 스크립팅 언어)을 사용하여 새 마이닝 구조를 만들거나 기존 마이닝 구조에 테스트 데이터 집합을 추가할 수 있습니다.

  • 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 Time Series 알고리즘을 선택하면 홀드아웃 데이터 집합을 만드는 옵션이 비활성화됩니다. 마이닝 구조의 사례 테이블 또는 중첩 테이블 수준에 KEY TIME 열이 포함되어 있어도 홀드아웃 데이터를 사용할 수 없습니다.

  • 실수로 테스트에 전체 데이터 집합이 사용되고 학습에는 데이터 집합이 전혀 사용되지 않도록 홀드아웃 데이터 집합을 구성할 수 있습니다. 그러나 이렇게 하면 문제를 해결할 수 있도록 SQL Server Analysis Services 오류가 발생합니다. SQL Server Analysis Services 또한 데이터의 50% 이상이 테스트를 위해 보관된 경우 구조가 처리될 때 경고합니다.

  • 대부분의 사례에서 기본 홀드아웃 값인 30을 사용하면 학습 데이터와 테스트 데이터 간에 균형이 맞춰집니다. 충분한 학습을 제공하기 위해 데이터 집합이 얼마나 커야 하는지, 또는 과도한 적합화(overfitting)를 방지하기 위해 학습 집합이 얼마나 작아도 되는지를 결정할 수 있는 간단한 방법은 없습니다. 그러나 모델을 작성한 후에는 교차 유효성 검사를 사용하여 특정 모델과 관련된 데이터 집합을 평가할 수 있습니다.

  • AMO 및 XML DDL에서는 앞의 표에 나열된 속성 외에 읽기 전용 속성인 HoldoutActualSize가 제공됩니다. 그러나 구조를 처리할 때까지 파티션의 실제 크기를 정확하게 확인할 수 없으므로 HoldoutActualSize 속성의 값을 검색하기 전에 모델이 처리되었는지 여부를 확인해야 합니다.

참고 항목

데이터 마이닝 도구
데이터 마이닝 개념
데이터 마이닝 솔루션
테스트 및 유효성 검사(데이터 마이닝)