데이터 집합 학습 및 테스트Training and Testing Data Sets

적용 대상:예SQL Server Analysis Services아니요Azure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesnoAzure Analysis Services데이터를 학습 집합과 테스트 집합으로 데이터 마이닝 모델 평가의 중요 한 부분이입니다. Separating data into training and testing sets is an important part of evaluating data mining models. 데이터 집합을 학습 집합과 테스트 집합으로 분리할 경우 일반적으로 대부분의 데이터가 학습에 사용되고 나머지 데이터가 테스트에 사용되지만,Typically, when you separate a data set into a training set and testing set, most of the data is used for training, and a smaller portion of the data is used for testing. Analysis ServicesAnalysis Services 에서는 테스트 및 학습 집합의 크기가 비슷하게 되도록 데이터를 무작위로 샘플링합니다. randomly samples the data to help ensure that the testing and training sets are similar. 학습 및 테스트에 유사한 데이터를 사용하면 데이터 불일치의 영향을 최소화하고 모델의 특징을 보다 잘 이해할 수 있습니다.By using similar data for training and testing, you can minimize the effects of data discrepancies and better understand the characteristics of the model.

학습 집합을 사용하여 모델을 처리한 후에는 테스트 집합에 대한 예측을 만들어 모델을 테스트합니다.After a model has been processed by using the training set, you test the model by making predictions against the test set. 테스트 집합의 데이터에는 예측할 특성의 알려진 값이 이미 포함되어 있으므로 모델의 예측이 올바른지 여부를 쉽게 확인할 수 있습니다.Because the data in the testing set already contains known values for the attribute that you want to predict, it is easy to determine whether the model's guesses are correct.

데이터 마이닝 구조에 대한 테스트 및 학습 집합 만들기Creating Test and Training Sets for Data Mining Structures

SQL Server 2017SQL Server 2017에서는 마이닝 구조의 수준에서 원래 데이터 집합을 분할합니다.In SQL Server 2017SQL Server 2017, you separate the original data set at the level of the mining structure. 학습 및 테스트 데이터 집합의 크기와 각 집합에 포함되는 행에 대한 정보가 구조와 함께 저장되며, 이 구조를 기반으로 하는 모든 모델이 학습 및 테스트에 해당 집합을 사용할 수 있습니다.The information about the size of the training and testing data sets, and which row belongs to which set, is stored with the structure, and all the models that are based on that structure can use the sets for training and testing.

다음과 같은 방법으로 마이닝 구조에 테스트 데이터 집합을 정의할 수 있습니다.You can define a testing data set on a mining structure in the following ways:

  • 마이닝 구조를 만들 때 데이터 마이닝 마법사를 사용하여 마이닝 구조를 분할합니다.Using the Data Mining Wizard to divide the mining structure when you create it.

  • 데이터 마이닝 디자이너의 마이닝 구조 탭에서 구조 속성을 수정합니다.Modifying structure properties in the Mining Structure tab of the Data Mining Designer.

  • AMO(Analysis Management Objects) 또는 XML DDL(데이터 정의 언어)을 사용하여 프로그래밍 방식으로 구조를 생성하고 수정합니다.Creating and modifying structures programmatically by using Analysis Management Objects (AMO) or XML Data Definition Language (DDL).

데이터 마이닝 마법사를 사용하여 마이닝 구조 분할Using the Data Mining Wizard to Divide a Mining Structure

기본적으로 사용자가 마이닝 구조의 데이터 원본을 정의하면 데이터 마이닝 마법사에서 데이터를 두 가지 집합으로 분할합니다. 원본 데이터의 70%는 모델 학습을 위한 집합에, 나머지 30%는 모델 테스트를 위한 집합에 할당합니다.By default, after you have defined the data sources for a mining structure, the Data Mining Wizard will divide the data into two sets: one with 70 percent of the source data, for training the model, and one with 30 percent of the source data, for testing the model. Analysis ServicesAnalysis Services 에서는 데이터 마이닝에서 일반적으로 사용되는 이 70:30의 기본 비율 대신, 사용자의 필요에 따라 다른 비율로 변경할 수 있습니다.This default was chosen because a 70-30 ratio is often used in data mining, but with Analysis ServicesAnalysis Services you can change this ratio to suit your requirements.

마법사를 구성하여 최대 학습 사례 수를 설정하거나 여러 제한을 조합하여 지정한 최대 사례 수까지 최대 사례 비율을 허용할 수도 있습니다.You can also configure the wizard to set a maximum number of training cases, or you can combine the limits to allow a maximum percentage of cases up to a specified maximum number of cases. 최대 사례 비율과 최대 사례 수를 모두 지정하면 Analysis ServicesAnalysis Services 에서 두 제한 중 보다 작은 값을 테스트 집합의 크기로 사용합니다.When you specify both a maximum percentage of cases and a maximum number of cases, Analysis ServicesAnalysis Services uses the smaller of the two limits as the size of the test set. 예를 들어 테스트 사례에 대해 30%의 홀드아웃을 지정하고 최대 테스트 사례 수를 1000으로 지정하는 경우 테스트 집합의 크기는 1000개의 사례를 초과하지 않습니다.For example, if you specify 30 percent holdout for the testing cases, and the maximum number of test cases as 1000, the size of the test set will never exceed 1000 cases. 이는 보다 많은 학습 데이터가 모델에 추가되더라도 테스트 집합의 크기를 일관되게 유지하려는 경우 유용할 수 있습니다.This can be useful if you want to ensure that the size of your test set stays consistent even if more training data is added to the model.

다른 마이닝 구조에 대해 같은 데이터 원본 뷰를 사용하고 데이터가 모든 마이닝 구조 및 해당 모델에 대해 대략 같은 방식으로 분할되도록 하려면 무작위 샘플링을 초기화하는 데 사용되는 초기값을 지정해야 합니다.If you use the same data source view for different mining structures, and want to ensure that the data is divided in roughly the same way for all mining structures and their models, you should specify the seed that is used to initialize random sampling. HoldoutSeed의 값을 지정하면 Analysis ServicesAnalysis Services 에서 해당 값을 사용하여 샘플링을 시작합니다.When you specify a value for HoldoutSeed, Analysis ServicesAnalysis Services will use that value to begin sampling. 그렇지 않으면 샘플링은 마이닝 구조의 이름에 해시 알고리즘을 사용하여 초기값을 만듭니다.Otherwise, sampling uses a hashing algorithm on the name of the mining structure to create the seed value.

참고

EXPORTIMPORT 문을 사용하여 마이닝 구조의 복사본을 만들면 내보내기 프로세스에서 새 ID를 만들지만 같은 이름을 사용하므로 새 마이닝 구조가 같은 학습 및 테스트 데이터 집합을 갖게 됩니다.If you create a copy of the mining structure by using the EXPORT and IMPORT statements, the new mining structure will have the same training and testing data sets, because the export process creates a new ID but uses the same name. 그러나 두 마이닝 구조가 같은 기본 데이터 원본을 사용하지만 이름이 다를 경우에는 각 마이닝 구조에 대해 생성되는 집합이 달라집니다.However, if two mining structures use the same underlying data source but have different names, the sets that are created for each mining structure will be different.

테스트 데이터 집합을 만들기 위한 구조 속성 수정Modifying Structure Properties to Create a Test Data Set

마이닝 구조를 만들고 처리한 다음 나중에 테스트 데이터 집합을 새로 만들려는 경우 마이닝 구조의 속성을 수정할 수 있습니다.If you create and process a mining structure, and then later decide that you want to set aside a test data set, you can modify the properties of the mining structure. 데이터가 분할되는 방식을 변경하려면 다음 속성을 편집합니다.To change the way that data is partitioned, edit the following properties:

속성Property DescriptionDescription
HoldoutMaxCasesHoldoutMaxCases 테스트 집합에 포함할 최대 사례 수를 지정합니다.Specifies the maximum number of cases to include in the testing set.
HoldoutMaxPercentHoldoutMaxPercent 테스트 집합에 포함할 사례 수를 전체 데이터 집합의 비율로 지정합니다.Specifies the number of cases to include in the testing set as a percentage of the complete data set. 데이터 집합을 갖지 않으려면 0을 지정합니다.To have no data set, you would specify 0.
HoldoutSeedHoldoutSeed 파티션에 대한 데이터를 무작위로 선택할 때 초기값으로 사용할 정수 값을 지정합니다.Specifies an integer value to use as seed when randomly selecting data for the partitions. 이 값은 학습 집합의 사례 수에 영향을 주는 대신 파티션이 반복될 수 있도록 합니다.This value does not affect the number of cases in the training set; instead, it ensures that the partition can be repeated.

테스트 데이터 집합을 기존 구조에 추가하거나 변경하는 경우 구조 및 모든 관련 모델을 다시 처리해야 합니다.If you add or change a test data set to an existing structure, you must reprocess the structure and all associated models. 또한 원본 데이터를 분할하면 데이터의 다른 하위 집합에서 모델이 학습되므로 모델의 다른 결과를 확인할 수 있습니다.Also, because dividing the source data causes the model to be trained on a different subset of the data, you might see different results from your model.

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

DMX 문, AMO 또는 XML DDL을 사용하여 마이닝 구조에서 테스트 및 학습 데이터 집합을 정의할 수 있습니다.You can define testing and training data sets on a mining structure by using DMX statements, AMO, or XML DDL. ALTER MINING STRUCTURE 문은 홀드아웃 매개 변수의 사용을 지원하지 않습니다.The ALTER MINING STRUCTURE statement does not support the use of holdout parameters.

  • DMX DMX(Data Mining Extensions) 언어에서 CREATE MINING STRUCTURE 문은 WITH HOLDOUT 절을 포함하도록 확장되었습니다.DMX In the Data Mining Extensions (DMX) language, the CREATE MINING STRUCTURE statement has been extended to include a WITH HOLDOUT clause..

  • ASSL ASSL( Analysis ServicesAnalysis Services Scripting Language)을 사용하여 새 마이닝 구조를 만들거나 기존 마이닝 구조에 테스트 데이터 집합을 추가할 수 있습니다.ASSL You can either create a new mining structure, or add a testing data set to an existing mining structure, by using the Analysis ServicesAnalysis Services Scripting Language (ASSL)..

  • AMO AMO를 사용하여 홀드아웃 데이터 집합을 보고 수정할 수도 있습니다.AMO You can also view and modify holdout data sets by using AMO..

    데이터 마이닝 스키마 행 집합을 쿼리하여 기존 마이닝 구조의 홀드아웃 데이터 집합에 대한 정보를 볼 수 있습니다.You can view information about the holdout data set in an existing mining structure by querying the data mining schema rowset. 이렇게 하려면 DISCOVER ROWSET을 호출하거나 DMX 쿼리를 사용하면 됩니다.You can do this by making a DISCOVER ROWSET call, or you can use a DMX query.

홀드아웃 데이터에 대한 정보 검색Retrieving Information about Holdout Data

기본적으로 학습 및 테스트 데이터 집합에 대한 모든 정보는 기존 데이터를 사용하여 새 모델을 학습하고 테스트할 수 있도록 캐시됩니다.By default, all information about the training and test data sets is cached, so that you can use existing data to train and then test new models. 또한 데이터의 하위 집합에서 모델을 평가할 수 있도록 사용자가 캐시된 홀드아웃 데이터에 적용할 필터를 정의할 수도 있습니다.You can also define filters to apply to the cached holdout data so that you can evaluate the model on subsets of the data.

사례가 학습 및 테스트 데이터 집합으로 분할되는 방법은 사용자가 홀드아웃을 구성하는 방법과 사용자가 제공한 데이터에 따라 달라집니다.The way that cases are divided into training and testing data sets depends on the way that you configure holdout, and the data that you provide. 학습 또는 테스트에 사용된 사례 수를 확인하거나 학습 및 테스트 집합에 포함된 사례에 대한 추가 세부 정보를 찾으려는 경우 DMX 쿼리를 만들어 모델 구조를 쿼리할 수 있습니다.If you want to determine the number of cases used for training or for testing, or if you want to find additional details about the cases included in the training and test sets, you can query the model structure by creating a DMX query. 예를 들어 다음 쿼리는 모델의 학습 집합에 사용된 사례를 반환합니다.For example, the following query returns the cases that were used in the training set of the model.

SELECT * from <structure>.CASES WHERE IsTrainingCase()  

테스트 사례만 검색하고 테스트 사례를 마이닝 구조의 열 중 하나에서 추가로 필터링하려면 다음 구문을 사용합니다.To retrieve only the test cases, and additionally filter the test cases on one of the columns in the mining structure, use the following syntax:

SELECT * from <structure>.CASES WHERE IsTestCase() AND <structure column name> = '<value>'  

홀드아웃 데이터 사용의 제한 사항Limitations on the Use of Holdout Data

  • 홀드아웃을 사용하려면 마이닝 구조의 MiningStructureCacheMode 속성을 기본값인 KeepTrainingCases로 설정해야 합니다.To use holdout, the MiningStructureCacheMode property of the mining structure must be set to the default value, KeepTrainingCases. CacheMode 속성을 ClearAfterProcessing으로 변경한 다음 마이닝 구조를 다시 처리하면 파티션이 손실됩니다.If you change the CacheMode property to ClearAfterProcessing, and then reprocess the mining structure, the partition will be lost.

  • 시계열 모델에서는 데이터를 제거할 수 없으므로 원본 데이터를 학습 및 테스트 집합으로 분리할 수 없습니다.You cannot remove data from a time series model; therefore, you cannot separate the source data into training and testing sets. 마이닝 구조와 모델을 만들 때 MicrosoftMicrosoft 시계열 알고리즘을 사용하도록 선택하면 홀드아웃 데이터 집합을 만들 수 없습니다.If you begin to create a mining structure and model and choose the MicrosoftMicrosoft Time Series algorithm, the option to create a holdout data set is disabled. 마이닝 구조의 사례 테이블 또는 중첩 테이블 수준에 KEY TIME 열이 포함되어 있어도 홀드아웃 데이터를 사용할 수 없습니다.Use of holdout data is also disabled if the mining structure contains a KEY TIME column at either the case or nested table level.

  • 실수로 테스트에 전체 데이터 집합이 사용되고 학습에는 데이터 집합이 전혀 사용되지 않도록 홀드아웃 데이터 집합을 구성할 수 있습니다.It is possible to inadvertently configure the holdout data set such that the complete data set is used for testing, and no data remains for training. 그러나 이렇게 구성하면 Analysis ServicesAnalysis Services 에서 오류가 발생하여 문제를 수정하도록 합니다.However, if you do so, Analysis ServicesAnalysis Services will raise an error so that you can correct the problem. Analysis ServicesAnalysis Services 에서 경고를 표시합니다. also warns you when the structure is processed if more than 50 percent of the data has been held out for testing.

  • 대부분의 사례에서 기본 홀드아웃 값인 30을 사용하면 학습 데이터와 테스트 데이터 간에 균형이 맞춰집니다.In most cases, the default holdout value of 30 provides a good balance between training and testing data. 충분한 학습을 제공하기 위해 데이터 집합이 얼마나 커야 하는지, 또는 과도한 적합화(overfitting)를 방지하기 위해 학습 집합이 얼마나 작아도 되는지를 결정할 수 있는 간단한 방법은 없습니다.There is no simple way to determine how large the data set should be to provide sufficient training, or how sparse the training set can be and still avoid overfitting. 그러나 모델을 작성한 후에는 교차 유효성 검사를 사용하여 특정 모델과 관련된 데이터 집합을 평가할 수 있습니다.However, after you have built a model, you can use cross-validation to assess the data set with respect to a particular model.

  • AMO 및 XML DDL에서는 앞의 표에 나열된 속성 외에 읽기 전용 속성인 HoldoutActualSize가 제공됩니다.In addition to the properties listed in the previous table, a read-only property, HoldoutActualSize, is provided in AMO and XML DDL. 그러나 구조를 처리할 때까지 파티션의 실제 크기를 정확하게 확인할 수 없으므로 HoldoutActualSize 속성의 값을 검색하기 전에 모델이 처리되었는지 여부를 확인해야 합니다.However, because the actual size of a partition cannot be determined accurately until after the structure has been processed, you should check whether the model has been processed before you retrieve the value of the HoldoutActualSize property.

항목Topics 링크Links
모델의 필터가 학습 및 테스트 데이터 집합과 상호 작용하는 방법에 대해 설명합니다.Describes how filters on a model interact with training and testing data sets. 마이닝 모델에 대한 필터(Analysis Services - 데이터 마이닝)Filters for Mining Models (Analysis Services - Data Mining)
학습 및 테스트 데이터를 사용하는 방법에 따라 교차 유효성 검사에 미치는 영향에 대해 설명합니다.Describes how the use of training and testing data affects cross-validation. 교차 유효성 검사(Analysis Services - 데이터 마이닝)Cross-Validation (Analysis Services - Data Mining)
마이닝 구조에서 학습 및 테스트 집합을 사용하는 프로그래밍 인터페이스에 대한 정보를 제공합니다.Provides information on the programmatic interfaces for working with training and testing sets in a mining structure. AMO 개념 및 개체 모델AMO Concepts and Object Model

MiningStructure 요소(ASSL)MiningStructure Element (ASSL)
홀드아웃 집합을 만들기 위한 DMX 구문을 제공합니다.Provides DMX syntax for creating holdout sets. CREATE MINING STRUCTURE(DMX)CREATE MINING STRUCTURE (DMX)
학습 및 테스트 집합에서 사례에 대한 정보를 검색합니다.Retrieve information about cases in the training and testing sets. 데이터 마이닝 스키마 행 집합Data Mining Schema Rowsets

데이터 마이닝 스키마 행 집합(SSAs)Data Mining Schema Rowsets (SSAs)

관련 항목:See Also

데이터 마이닝 도구 Data Mining Tools
데이터 마이닝 개념 Data Mining Concepts
데이터 마이닝 솔루션 Data Mining Solutions
테스트 및 유효성 검사(데이터 마이닝)Testing and Validation (Data Mining)