SdcaRegressionTrainer Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
IEstimator<TTransformer> para entrenar un modelo de regresión mediante el método de ascenso de coordenada dual estocástico.
public sealed class SdcaRegressionTrainer : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaRegressionTrainer.Options,Microsoft.ML.Data.RegressionPredictionTransformer<Microsoft.ML.Trainers.LinearRegressionModelParameters>,Microsoft.ML.Trainers.LinearRegressionModelParameters>
type SdcaRegressionTrainer = class
inherit SdcaTrainerBase<SdcaRegressionTrainer.Options, RegressionPredictionTransformer<LinearRegressionModelParameters>, LinearRegressionModelParameters>
Public NotInheritable Class SdcaRegressionTrainer
Inherits SdcaTrainerBase(Of SdcaRegressionTrainer.Options, RegressionPredictionTransformer(Of LinearRegressionModelParameters), LinearRegressionModelParameters)
- Herencia
Comentarios
Para crear este entrenador, use Sdca o Sdca(Options).
Columnas de entrada y salida
Los datos de la columna de etiqueta de entrada deben ser Single. Los datos de columna de características de entrada deben ser un vector conocido de Single.
Este instructor genera las columnas siguientes:
| Nombre de columna de salida | Tipo de columna | Description |
|---|---|---|
Score |
Single | Puntuación no delimitada prevista por el modelo. |
Características del entrenador
| Tarea de aprendizaje automático | Regression |
| ¿Se requiere normalización? | Yes |
| ¿Se requiere el almacenamiento en caché? | No |
| NuGet necesario además de Microsoft.ML | Ninguno |
| Exportable a ONNX | Yes |
Detalles del algoritmo de entrenamiento
Este entrenador se basa en el método de ascenso de coordenadas duales estocásticas (SDCA), una técnica de optimización de última generación para funciones objetivo convexas. El algoritmo se puede escalar porque es un algoritmo de entrenamiento de streaming como se describe en un documento mejor de KDD.
La convergencia se subscribe mediante la aplicación periódica de la sincronización entre las variables primarias y duales en un subproceso independiente. También se proporcionan varias opciones de funciones de pérdida, como la pérdida de bisagra y la pérdida logística. Dependiendo de la pérdida usada, el modelo entrenado puede ser, por ejemplo, admitir la máquina de vectores o la regresión logística. El método SDCA combina varias de las mejores propiedades, como la capacidad de realizar el aprendizaje de streaming (sin ajustar todo el conjunto de datos en la memoria), alcanzando un resultado razonable con algunos exámenes del conjunto de datos completo (por ejemplo, vea experimentos en este documento) y no gaste ningún cálculo en ceros en conjuntos de datos dispersos.
Tenga en cuenta que SDCA es un algoritmo de optimización de streaming y estocástico. El resultado depende del orden de los datos de entrenamiento porque la tolerancia de detención no es lo suficientemente ajustada. En optimización fuertemente convexa, la solución óptima es única y, por lo tanto, todos finalmente llegan al mismo lugar. Incluso en casos no convexas, obtendrá soluciones igualmente buenas de ejecutar para ejecutarse. Para los resultados reproducibles, se recomienda establecer "Shuffle" en False y "NumThreads" en 1.
Esta clase usa la minimización de riesgos empíricas (es decir, ERM) para formular el problema de optimización basado en los datos recopilados. Tenga en cuenta que el riesgo empírico se mide normalmente aplicando una función de pérdida en las predicciones del modelo en los puntos de datos recopilados. Si los datos de entrenamiento no contienen suficientes puntos de datos (por ejemplo, para entrenar un modelo lineal en $n espacio dimensional, necesitamos al menos $n$ puntos de datos), el sobreajuste puede ocurrir para que el modelo generado por ERM sea bueno para describir los datos de entrenamiento, pero puede no predecir los resultados correctos en eventos no vistos. La regularización es una técnica común para aliviar este fenómeno penalizando la magnitud (normalmente medida por la función norm) de los parámetros del modelo. Este entrenador admite la regularización de red elástica, que penaliza una combinación lineal de la norma L1 (LASSO), $|| \textbf{w}_c ||_1$, y L2-norm (ridge), $|| \textbf{w}_c ||_2^2$ regularizations for $c=1,\dots,m$. Las regularizaciones L1-norm y L2-norm tienen diferentes efectos y usos que son complementarios en ciertos aspectos.
Junto con el algoritmo de optimización implementado, la regularización L1-norm puede aumentar la dispersión de los pesos del modelo, $\textbf{w}_1,\dots,\textbf{w}_m$. Para conjuntos de datos dispersos y multidimensionales, si los usuarios seleccionan cuidadosamente el coeficiente de la norma L1, es posible lograr una buena calidad de predicción con un modelo que tenga solo unos pocos pesos no cero (por ejemplo, 1% de peso total del modelo) sin afectar a su potencia de predicción. Por el contrario, la norma L2 no puede aumentar la sparsidad del modelo entrenado, pero puede evitar el sobreajuste evitando valores de parámetros grandes. A veces, el uso de la norma L2 conduce a una mejor calidad de predicción, por lo que es posible que los usuarios quieran probarlo y ajustar los coeficientes de la norma L1 y la norma L2. Tenga en cuenta que conceptualmente, el uso de la norma L1 implica que la distribución de todos los parámetros del modelo es una distribución laplace , mientras que la norma L2 implica una distribución gaussiana para ellos.
Una regularización agresiva (es decir, asignar coeficientes grandes a los términos de regularización L1-norm o L2-norm) puede dañar la capacidad predictiva excluyendo variables importantes del modelo. Por ejemplo, un coeficiente L1-norm muy grande puede forzar que todos los parámetros sean ceros y conducir a un modelo trivial. Por lo tanto, elegir los coeficientes de regularización correctos es importante en la práctica.
Para obtener más información, consulte:
- Escalado vertical en ascenso de coordenadas duales estocásticas.
- Métodos estocásticos de ascenso de coordenadas duales para la minimización de pérdida regularizada.
Consulte la sección Ver también para obtener vínculos a ejemplos de uso.
Campos
| Nombre | Description |
|---|---|
| FeatureColumn |
Columna de características que el instructor espera. (Heredado de TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
Columna de etiqueta que el entrenador espera. Puede ser |
| WeightColumn |
Columna de peso que espera el entrenador. Puede ser |
Propiedades
| Nombre | Description |
|---|---|
| Info |
IEstimator<TTransformer> para entrenar un modelo de regresión mediante el método de ascenso de coordenada dual estocástico. (Heredado de StochasticTrainerBase<TTransformer,TModel>) |
Métodos
| Nombre | Description |
|---|---|
| Fit(IDataView) |
Entrena y devuelve un ITransformer. (Heredado de TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
IEstimator<TTransformer> para entrenar un modelo de regresión mediante el método de ascenso de coordenada dual estocástico. (Heredado de TrainerEstimatorBase<TTransformer,TModel>) |
Métodos de extensión
| Nombre | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Anexe un "punto de control de almacenamiento en caché" a la cadena del estimador. Esto garantizará que los estimadores de nivel inferior se entrenarán con los datos almacenados en caché. Resulta útil tener un punto de control de almacenamiento en caché antes de que los instructores tomen varios pases de datos. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dado un estimador, devuelva un objeto de ajuste que llamará a un delegado una vez Fit(IDataView) que se llame. A menudo, es importante que un estimador devuelva información sobre lo que se ha ajustado, por lo que el Fit(IDataView) método devuelve un objeto específicamente tipado, en lugar de simplemente un general ITransformer. Sin embargo, al mismo tiempo, IEstimator<TTransformer> a menudo se forman en canalizaciones con muchos objetos, por lo que es posible que tengamos que crear una cadena de estimadores a través EstimatorChain<TLastTransformer> de donde el estimador para el que queremos obtener el transformador está enterrado en algún lugar de esta cadena. En ese escenario, podemos a través de este método adjuntar un delegado al que se llamará una vez que se llame a fit. |