conditionalRandomFields

crfTrain

Descripción

La acción `crfTrain` se utiliza para entrenar un modelo de Campos Aleatorios Condicionales (CRF). Los CRF son una clase de método de modelado estadístico que a menudo se aplica en el reconocimiento de patrones y el aprendizaje automático, y se utilizan para la predicción estructurada. A diferencia de los clasificadores discretos, los CRF pueden tener en cuenta el contexto, lo que los hace muy adecuados para tareas de etiquetado de secuencias como el reconocimiento de entidades nombradas.

conditionalRandomFields.crfTrain / model={<crfmodelout>}, nloOpts={<casOptml>}, table={<castable>}, target="string", template="string";
Parámetros
ParámetroDescripción
modelEspecifica las tablas de modelado de salida.
nloOptsEspecifica los parámetros de optimización no lineal (OPTML).
tableEspecifica la tabla CAS que contiene los datos de entrada para el entrenamiento.
targetEspecifica el nombre de la variable predicha/oculta en la tabla de entrada.
templateEspecifica la plantilla textual utilizada para extraer características del texto.
Creación de Datos de Entrenamiento

Este bloque de código crea una tabla CAS simple llamada 'train_data'. Esta tabla contiene tokens y sus etiquetas correspondientes, que se utilizarán para entrenar el modelo CRF para el reconocimiento de entidades nombradas (NER).

¡Copiado!
1DATA mycas.train_data;
2 LENGTH token $20 label $10;
3 INFILE DATALINES dlm='|';
4 INPUT token $ label $;
5 DATALINES;
6John|B-PER
7Smith|I-PER
8lives|O
9in|O
10New|B-LOC
11York|I-LOC
12;
13RUN;

Ejemplos

Este ejemplo muestra cómo entrenar un modelo CRF con los parámetros mínimos requeridos. Utiliza la tabla 'train_data', define la columna 'label' como el objetivo y especifica una plantilla de características simple. El modelo entrenado se guarda en un conjunto de tablas con el prefijo 'crf_model'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2conditionalRandomFields.crfTrain /
3 TABLE={name='train_data'},
4 target='label',
5 template='U00:%w[0,0]',
6 model={name='crf_model', replace=true};
7RUN;
Resultado :
La acción entrena el modelo CRF. Se crean varias tablas de salida en la caslib activa (por ejemplo, 'crf_model_attr', 'crf_model_feature') que contienen los componentes del modelo entrenado. El registro de SAS mostrará el progreso y la finalización del entrenamiento.

Este ejemplo entrena un modelo CRF utilizando una plantilla de características más compleja que incluye unigramas y bigramas. También especifica opciones para el optimizador L-BFGS, estableciendo parámetros de regularización L1 y L2 y un número máximo de iteraciones. Los nombres de las tablas del modelo de salida se definen explícitamente.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2conditionalRandomFields.crfTrain /
3 TABLE={name='train_data'},
4 target='label',
5 template='U00:%w[0,0]
6U01:%w[0,1]
7B',
8 model={
9 attr={name='crf_model_attr', replace=true},
10 feature={name='crf_model_feature', replace=true},
11 label={name='crf_model_label', replace=true},
12 attrfeature={name='crf_model_attrfeature', replace=true},
13 template={name='crf_model_template', replace=true}
14 },
15 nloOpts={
16 algorithm='LBFGS',
17 optmlOpt={regL1=0.1, regL2=0.05, maxIters=50}
18 };
19RUN;
Resultado :
El modelo se entrena utilizando el optimizador L-BFGS con los parámetros de regularización y el límite de iteraciones especificados. Las tablas del modelo se crean con los nombres definidos. El registro de SAS mostrará los detalles de las iteraciones de optimización, reflejando la configuración personalizada.

FAQ

¿Cuál es el propósito de la acción crfTrain en SAS Viya?
¿Qué especifica el parámetro `table` en la acción crfTrain?
¿Para qué se utiliza el parámetro `target`?
¿Qué función tiene el parámetro `template`?
¿Qué tablas de modelado de salida se pueden especificar con el parámetro `model`?
¿Qué son los `nloOpts` y qué solucionador de optimización se usa por defecto?
¿Qué algoritmos de optimización se pueden especificar con el parámetro `algorithm` dentro de `nloOpts`?
¿Cómo se puede regular el modelo para evitar el sobreajuste (overfitting)?
¿Es posible guardar el estado de las iteraciones durante el entrenamiento?