Conjuntos de datos de entrenamiento y de prueba

Se aplica a: SQL Server 2019 y versiones anteriores de Analysis Services Azure Analysis Services Fabric/Power BI Premium

Importante

La minería de datos estaba en desuso en SQL Server 2017 Analysis Services y ahora se ha interrumpido en SQL Server 2022 Analysis Services. La documentación no se actualiza para las características en desuso e interrumpidas. Para más información, consulte Compatibilidad con versiones anteriores de Analysis Services.

Separar los datos en conjuntos de entrenamiento y de prueba es una parte importante de la evaluación de los modelos de minería de datos. Normalmente, al dividir un conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba, la mayoría de los datos se usan para el entrenamiento y una parte menor se emplea para las pruebas. SQL Server Analysis Services muestrea aleatoriamente los datos para ayudar a garantizar que las pruebas y los conjuntos de entrenamiento sean similares. Si usa datos similares para el entrenamiento y las pruebas, puede minimizar los efectos de las diferencias en los datos y comprender mejor las características del modelo.

Una vez procesado un modelo utilizando el conjunto de entrenamiento, se prueba realizando predicciones con el conjunto de pruebas. Dado que los datos del conjunto de prueba ya contienen valores conocidos para el atributo que desea predecir, es fácil determinar si las estimaciones del modelo son correctas.

Crear conjuntos de entrenamiento y de prueba para las estructuras de minería de datos

En SQL Server 2017, se separa el conjunto de datos original en el nivel de la estructura de minería de datos. La información sobre el tamaño de los conjuntos de datos de entrenamiento y de prueba, y qué filas pertenecen a cada conjunto, se almacena junto con la estructura, y todos los modelos basados en esa estructura pueden usar los conjuntos de entrenamiento y de prueba.

Para definir un conjunto de datos de prueba en una estructura de minería de datos puede realizar una de las acciones siguientes:

  • Usar el Asistente para minería de datos para dividir la estructura de minería de datos en el momento de crearla.

  • Modificar las propiedades de la estructura en la pestaña Estructura de minería de datos del Diseñador de minería de datos.

  • Crear y modificar estructuras mediante programación si usa Objetos de administración de análisis (AMO) o el Lenguaje de definición de datos XML (DDL).

Usar el Asistente para minería de datos para dividir una estructura de minería de datos

De forma predeterminada, después de haber definido los orígenes de datos para una estructura de minería de datos, el Asistente para minería de datos dividirá los datos en dos conjuntos: uno con el 70 por ciento de los datos de origen para entrenar el modelo y otro con el 30 por ciento para probarlo. Este valor predeterminado se ha elegido porque una relación de 70 a 30 se usa a menudo en la minería de datos, pero con SQL Server Analysis Services puede cambiar esta relación para adaptarse a sus requisitos.

También puede configurar el asistente para establecer un número máximo de casos de entrenamiento o bien, puede combinar los límites para permitir un porcentaje máximo de casos hasta un número máximo especificado de casos. Cuando se especifica un porcentaje máximo de casos y un número máximo de casos, SQL Server Analysis Services usa el menor de los dos límites como el tamaño del conjunto de pruebas. Por ejemplo, si especifica una exclusión del 30 por ciento para los casos de pruebas, y el número máximo de casos de pruebas como 1000, el tamaño del conjunto de pruebas nunca superará 1000 casos. Esto puede ser útil si desea asegurarse de que el tamaño de su conjunto de pruebas permanece coherente incluso si se agregan más datos de aprendizaje al modelo.

Si usa la misma vista del origen de datos para diferentes estructuras de minería de datos, y desea asegurarse de que los datos se dividen aproximadamente de la misma manera para todas las estructuras de minería de datos y sus modelos, debe especificar el valor de inicialización que se usa para inicializar el muestreo aleatorio. Al especificar un valor para HoldoutSeed, SQL Server Analysis Services usará ese valor para comenzar el muestreo. De lo contrario, el muestreo aplica un algoritmo hash al nombre de la estructura de minería de datos para crear el valor de inicialización.

Nota:

Si crea una copia de la estructura de minería de datos mediante las instrucciones EXPORT e IMPORT , la nueva estructura de minería de datos tendrá los mismos conjuntos de datos de entrenamiento y de prueba porque el proceso de exportación crea un nuevo identificador, aunque usa el mismo nombre. Sin embargo, si dos estructuras de minería de datos usan el mismo origen de datos subyacente, pero tienen nombres diferentes, los conjuntos creados para cada estructura de minería de datos serán diferentes.

Modificar las propiedades de la estructura para crear un conjunto de datos de prueba

Si crea y procesa una estructura de minería de datos y, a continuación, decide que desea reservar un conjunto de datos de prueba, puede modificar las propiedades de la estructura de minería de datos. Para cambiar la manera en que se crean las particiones de los datos, modifique las propiedades siguientes:

Propiedad Descripción
HoldoutMaxCases Especifica el número máximo de casos que se van a incluir en el conjunto de pruebas.
HoldoutMaxPercent Especifica el número de casos que se van a incluir en el conjunto de pruebas como porcentaje del conjunto de datos completo. Para no tener ningún conjunto de datos, especificaría 0.
HoldoutSeed Especifica un valor entero para usarlo como valor de inicialización al seleccionar los datos para las particiones de forma aleatoria. Este valor no afecta al número de casos del conjunto de entrenamiento; sino que sirve para asegurarse de que la partición se puede repetir.

Si agrega un conjunto de datos de prueba a una estructura existente, o lo cambia, deberá volver a procesar la estructura y todos los modelos asociados. Además, dado que dividir el origen de datos hace que el modelo se entrene con un subconjunto diferente de los datos, podría ver resultados diferentes del modelo.

Especificar los datos de exclusión mediante programación

Puede definir conjuntos de datos de entrenamiento y de prueba en una estructura de minería de datos usando instrucciones DMX, AMO o XML DDL. La instrucción ALTER MINING STRUCTURE no admite el uso de parámetros de datos de exclusión.

  • DMX En el lenguaje de Extensiones de minería de datos (DMX), la instrucción CREATE MINING STRUCTURE se ha extendido para incluir una cláusula WITH HOLDOUT.

  • ASSL Puede crear una nueva estructura de minería de datos o agregar un conjunto de datos de prueba a una estructura de minería de datos existente mediante el lenguaje de scripting (ASSL) de SQL Server Analysis Services).

  • AMO También puede ver y modificar conjuntos de datos de espera mediante AMO..

Para ver información sobre el conjunto de datos de exclusión de una estructura de minería de datos existente, haga una consulta en el conjunto de filas de esquema de minería de datos. Para hacer esto, puede realizar una llamada a DISCOVER ROWSET o puede usar una consulta DMX.

Recuperar información acerca de los datos de exclusión

De forma predeterminada, toda la información sobre los conjuntos de datos de entrenamiento y de prueba se almacena en la memoria caché con el fin de que pueda usar los datos existentes para entrenar y probar los nuevos modelos. También puede definir filtros y aplicarlos a los datos de exclusión almacenados en caché para evaluar el modelo con los subconjuntos de los datos.

La manera en que los casos se dividen en conjuntos de datos de entrenamiento y de prueba depende de la forma en que se configuren los datos de exclusión y en los datos que se proporcionen. Si desea determinar el número de casos usados para el entrenamiento o las pruebas, o buscar detalles adicionales sobre los casos incluidos en los conjuntos de entrenamiento y de prueba, puede consultar la estructura de modelo creando una consulta DMX. Por ejemplo, la consulta siguiente devuelve los casos usados en el conjunto de entrenamiento del modelo.

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

Para recuperar solo los casos de prueba y además filtrarlos según el valor contenido en una de las columnas de la estructura de minería de datos, use la sintaxis siguiente:

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

Limitaciones en el uso de los datos de exclusión

  • Para usar datos de exclusión, es necesario establecer la propiedad MiningStructureCacheMode de la estructura de minería en el valor predeterminado, KeepTrainingCases. Si cambia la propiedad CacheMode a ClearAfterProcessingy, a continuación, vuelve a procesar la estructura de minería de datos, se perderá la partición.

  • No puede quitar datos de un modelo de serie temporal; por consiguiente, no puede dividir los datos de origen en conjuntos de entrenamiento y de prueba. Si comienza a crear una estructura y un modelo de minería de datos y elige el algoritmo de serie temporal de Microsoft, la opción para crear un conjunto de datos de espera está deshabilitado. También se deshabilita el uso de datos de exclusión si la estructura de minería de datos contiene una columna KEY TIME en el nivel de tabla anidada o caso.

  • Se puede configurar accidentalmente el conjunto de datos de exclusión de tal manera que el conjunto de datos completo se use para las pruebas y no queden datos para el entrenamiento. Sin embargo, si lo hace, SQL Server Analysis Services generará un error para que pueda corregir el problema. SQL Server Analysis Services también le advierte cuando se procesa la estructura si se ha mantenido más del 50 % de los datos para realizar pruebas.

  • En la mayoría de los casos, el valor de exclusión predeterminado de 30 proporciona un buen equilibrio entre los datos de pruebas y los de entrenamiento. No es fácil determinar lo grande que debería ser el conjunto de datos para proporcionar entrenamiento suficiente, ni el grado de dispersión que puede alcanzar el conjunto de entrenamiento antes de que se llegue al sobreajuste. Sin embargo, después de haber generado un modelo, puede usar la validación cruzada para evaluar el conjunto de datos con respecto a un modelo determinado.

  • Además de las propiedades indicadas en la tabla anterior, se proporciona una propiedad de solo lectura, HoldoutActualSize, en AMO y XML DDL. Sin embargo, dado que el tamaño real de una partición no se puede determinar con precisión hasta que se ha procesado la estructura, debería comprobar si se ha procesado el modelo antes de recuperar el valor de la propiedad HoldoutActualSize .

Consulte también

Herramientas de minería de datos
Conceptos de minería de datos
Soluciones de minería de datos
Prueba y validación (minería de datos)