Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

fitrgp

Ajustar un modelo de regresión del proceso gaussiano (GPR)

Descripción

ejemplo

gprMdl = fitrgp(Tbl,ResponseVarName) devuelve un modelo de regresión de proceso gaussiano (GPR) entrenado utilizando los datos de ejemplo en , donde está el nombre de la variable de respuesta en .TblResponseVarNameTbl

gprMdl = fitrgp(Tbl,formula) devuelve un modelo de regresión del proceso gaussiano (GPR), entrenado utilizando los datos de muestra en , para las variables predictoras y variables de respuesta identificadas por .TblFórmula

gprMdl = fitrgp(Tbl,y) devuelve un modelo GPR para los predictores en la tabla y el vector de respuesta continua.Tbly

ejemplo

gprMdl = fitrgp(X,y) devuelve un modelo GPR para predictores y vector de respuesta continua.Xy

ejemplo

gprMdl = fitrgp(___,Name,Value) devuelve un modelo GPR para cualquiera de los argumentos de entrada de las sintaxis anteriores, con opciones adicionales especificadas por uno o varios argumentos de par.Name,Value

Por ejemplo, puede especificar el método de ajuste, el método de predicción, la función de covarianza o el método de selección de conjunto activo. También puede entrenar un modelo validado entre vías cruzadas.

es un objeto.gprMdlRegressionGP Para conocer los métodos y propiedades de esta clase, consulte la página de clases.RegressionGP

Si entrena un modelo validado de forma cruzada, es un objeto.gprMdlRegressionPartitionedModel Para un análisis más disemitivo sobre el objeto validado entre cruces, utilice los métodos de clase.RegressionPartitionedModel Para conocer los métodos de esta clase, consulte la página de clase.RegressionPartitionedModel

Ejemplos

contraer todo

En este ejemplo se utilizan los datos abulón , , del repositorio de aprendizaje automático de UCI.[1][2][3] Descargue los datos y guárdelos en su carpeta actual con el nombre .abalone.data

Almacene los datos en una tabla. Muestre las primeras siete filas.

tbl = readtable('abalone.data','Filetype','text',...      'ReadVariableNames',false); tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height',...      'WWeight','SWeight','VWeight','ShWeight','NoShellRings'}; tbl(1:7,:)
 ans =       Sex    Length    Diameter    Height    WWeight    SWeight    VWeight    ShWeight    NoShellRings     ___    ______    ________    ______    _______    _______    _______    ________    ____________      'M'    0.455     0.365       0.095      0.514     0.2245      0.101      0.15       15               'M'     0.35     0.265        0.09     0.2255     0.0995     0.0485      0.07        7               'F'     0.53      0.42       0.135      0.677     0.2565     0.1415      0.21        9               'M'     0.44     0.365       0.125      0.516     0.2155      0.114     0.155       10               'I'     0.33     0.255        0.08      0.205     0.0895     0.0395     0.055        7               'I'    0.425       0.3       0.095     0.3515      0.141     0.0775      0.12        8               'F'     0.53     0.415        0.15     0.7775      0.237     0.1415      0.33       20

El conjunto de datos tiene 4177 observaciones. El objetivo es predecir la edad del abulón a partir de ocho mediciones físicas. La última variable, el número de anillos de vaciado muestra la edad del abulón. El primer predictor es una variable categórica. La última variable de la tabla es la variable de respuesta.

Ajuste un modelo GPR utilizando el subconjunto de regresores para la estimación de parámetros y el método condicional totalmente independiente para la predicción. Estandarizar los predictores.

gprMdl = fitrgp(tbl,'NoShellRings','KernelFunction','ardsquaredexponential',...       'FitMethod','sr','PredictMethod','fic','Standardize',1) 
grMdl =     RegressionGP        PredictorNames: {1x8 cell}          ResponseName: 'Var9'     ResponseTransform: 'none'       NumObservations: 4177        KernelFunction: 'ARDSquaredExponential'     KernelInformation: [1x1 struct]         BasisFunction: 'Constant'                  Beta: 10.9148                 Sigma: 2.0243     PredictorLocation: [10x1 double]        PredictorScale: [10x1 double]                 Alpha: [1000x1 double]      ActiveSetVectors: [1000x10 double]         PredictMethod: 'FIC'         ActiveSetSize: 1000             FitMethod: 'SR'       ActiveSetMethod: 'Random'     IsActiveSetVector: [4177x1 logical]         LogLikelihood: -9.0013e+03      ActiveSetHistory: [1x1 struct]        BCDInformation: []  

Predecir las respuestas mediante el modelo entrenado.

ypred = resubPredict(gprMdl);

Trazar la respuesta verdadera y las respuestas pronosticadas.

figure(); plot(tbl.NoShellRings,'r.'); hold on plot(ypred,'b'); xlabel('x'); ylabel('y'); legend({'data','predictions'},'Location','Best'); axis([0 4300 0 30]); hold off;

Calcular la pérdida de regresión en los datos de entrenamiento (pérdida de resustitución) para el modelo entrenado.

L = resubLoss(gprMdl)
L =      4.0064

Generar datos de ejemplo.

rng(0,'twister'); % For reproducibility n = 1000; x = linspace(-10,10,n)'; y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(n,1);

Ajuste un modelo GPR utilizando una función de base lineal y el método de ajuste exacto para estimar los parámetros. Utilice también el método de predicción exacto.

gprMdl = fitrgp(x,y,'Basis','linear',...       'FitMethod','exact','PredictMethod','exact');

Predecir la respuesta correspondiente a las filas de (predicciones de resustitución) mediante el modelo entrenado.x

ypred = resubPredict(gprMdl);

Trazar la respuesta verdadera con los valores predichos.

plot(x,y,'b.'); hold on; plot(x,ypred,'r','LineWidth',1.5); xlabel('x'); ylabel('y'); legend('Data','GPR predictions'); hold off

Cargue los datos de ejemplo.

load(fullfile(matlabroot,'examples','stats','gprdata2.mat'))

Los datos tienen una variable predictora y una respuesta continua. Se trata de datos simulados.

Ajuste un modelo GPR utilizando la función de kernel exponencial al cuadrado con los parámetros predeterminados del kernel.

gprMdl1 = fitrgp(x,y,'KernelFunction','squaredexponential');

Ahora, ajuste un segundo modelo, donde especifique los valores iniciales para los parámetros del kernel.

sigma0 = 0.2; kparams0 = [3.5, 6.2]; gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential',...      'KernelParameters',kparams0,'Sigma',sigma0);

Calcular las predicciones de resustitución de ambos modelos.

ypred1 = resubPredict(gprMdl1); ypred2 = resubPredict(gprMdl2);

Trazar las predicciones de respuesta de ambos modelos y las respuestas en los datos de entrenamiento.

figure(); plot(x,y,'r.'); hold on plot(x,ypred1,'b'); plot(x,ypred2,'g'); xlabel('x'); ylabel('y'); legend({'data','default kernel parameters',... 'kparams0 = [3.5,6.2], sigma0 = 0.2'},... 'Location','Best'); title('Impact of initial kernel parameter values'); hold off

La probabilidad de registro marginal que se maximiza para estimar los parámetros de GPR tiene varias soluciones locales; la solución a la que converge depende del punto inicial.fitrgp Cada solución local corresponde a una interpretación particular de los datos. En este ejemplo, la solución con los parámetros iniciales predeterminados del kernel corresponde a una señal de baja frecuencia con alto ruido, mientras que la segunda solución con parámetros iniciales del kernel personalizados corresponde a una señal de alta frecuencia con poco ruido.

Cargue los datos de ejemplo.

load(fullfile(matlabroot,'examples','stats','gprdata.mat'))

Hay seis variables predictoras continuas. Hay 500 observaciones en el conjunto de datos de entrenamiento y 100 observaciones en el conjunto de datos de prueba. Se trata de datos simulados.

Ajuste un modelo GPR utilizando la función de kernel exponencial al cuadrado con una escala de longitud independiente para cada predictor. Esta función de covarianza se define como:

<math display="block">
<mrow>
<mi>k</mi>
<mo stretchy="false">(</mo>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
</mrow>
<mo>,</mo>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
<mo>|</mo>
<mi>θ</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msubsup>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
<mrow>
<mspace width="0.05555555555555556em"></mspace>
</mrow>
<mrow>
<mspace width="0.05555555555555556em"></mspace>
</mrow>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mrow>
<mi>e</mi>
<mi>x</mi>
<mi>p</mi>
</mrow>
</mrow>
</mstyle>
</mrow>
<mrow>
<mo>[</mo>
<mrow>
<mo>-</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</mfrac>
<munderover>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>m</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>d</mi>
</mrow>
</munderover>
<mrow>
<mfrac>
<mrow>
<mrow>
<mrow>
<msup>
<mrow>
<mo stretchy="false">(</mo>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>i</mi>
<mi>m</mi>
</mrow>
</msub>
</mrow>
<mo>-</mo>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
<mi>m</mi>
</mrow>
</msub>
</mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mrow>
</mrow>
<mrow>
<mrow>
<msubsup>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>m</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
</mrow>
</mrow>
</mfrac>
</mrow>
</mrow>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>m</mi>
</mrow>
</msub>
</mrow>
</math>
representa la escala de longitud para el predictor
<math display="block">
<mrow>
<mi>m</mi>
</mrow>
</math>
,
<math display="block">
<mrow>
<mi>m</mi>
</mrow>
</math>
1, 2, ...,
<math display="block">
<mrow>
<mi>d</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
</msub>
</mrow>
</mrow>
</math>
es la desviación estándar de la señal. La parametrización sin restricciones
<math display="block">
<mrow>
<mi>θ</mi>
</mrow>
</math>
Es

<math display="block">
<mrow>
<mtable columnalign="left">
<mtr>
<mtd>
<mrow>
<mrow>
<msub>
<mrow>
<mi>θ</mi>
</mrow>
<mrow>
<mi>m</mi>
</mrow>
</msub>
</mrow>
<mo>=</mo>
<mi mathvariant="normal">log</mi>
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>m</mi>
</mrow>
</msub>
</mrow>
<mo>,</mo>
<mspace width="1em"></mspace>
<mrow>
<mstyle mathvariant="normal">
<mrow>
<mrow>
<mi>f</mi>
<mi>o</mi>
<mi>r</mi>
</mrow>
</mrow>
</mstyle>
</mrow>
<mspace width="0.2777777777777778em"></mspace>
<mi>m</mi>
<mo>=</mo>
<mn>1</mn>
<mo>,</mo>
<mn>2</mn>
<mo>,</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>,</mo>
<mi>d</mi>
<mspace width="1em"></mspace>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mrow>
<msub>
<mrow>
<mi>θ</mi>
</mrow>
<mrow>
<mi>d</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
</mrow>
<mo>=</mo>
<mi mathvariant="normal">log</mi>
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
</msub>
</mrow>
<mo>.</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</mrow>
</math>

Inicializar las escalas de longitud de la función del núcleo a 10 y las desviaciones estándar de señal y ruido en la desviación estándar de la respuesta.

sigma0 = std(ytrain); sigmaF0 = sigma0; d = size(Xtrain,2); sigmaM0 = 10*ones(d,1);

Ajuste el modelo GPR utilizando los valores iniciales de los parámetros del kernel. Estandarizar los predictores en los datos de entrenamiento. Utilice los métodos exactos de ajuste y predicción.

gprMdl = fitrgp(Xtrain,ytrain,'Basis','constant','FitMethod','exact',... 'PredictMethod','exact','KernelFunction','ardsquaredexponential',... 'KernelParameters',[sigmaM0;sigmaF0],'Sigma',sigma0,'Standardize',1);

Calcular la pérdida de regresión en los datos de prueba.

L = loss(gprMdl,Xtest,ytest)
L = 0.6919 

Acceda a la información del kernel.

gprMdl.KernelInformation
ans = struct with fields:
                    Name: 'ARDSquaredExponential'
        KernelParameters: [7x1 double]
    KernelParameterNames: {7x1 cell}

Mostrar los nombres de los parámetros del kernel.

gprMdl.KernelInformation.KernelParameterNames
ans = 7x1 cell array
    {'LengthScale1'}
    {'LengthScale2'}
    {'LengthScale3'}
    {'LengthScale4'}
    {'LengthScale5'}
    {'LengthScale6'}
    {'SigmaF'      }

Visualice los parámetros del kernel.

sigmaM = gprMdl.KernelInformation.KernelParameters(1:end-1,1)
sigmaM = 6×1
104 ×

    0.0004
    0.0007
    0.0004
    4.1731
    0.1018
    0.0056

sigmaF = gprMdl.KernelInformation.KernelParameters(end)
sigmaF = 28.1718 
sigma  = gprMdl.Sigma
sigma = 0.8162 

Trazar el registro de escalas de longitud aprendidas.

figure() plot((1:d)',log(sigmaM),'ro-'); xlabel('Length scale number'); ylabel('Log of length scale');

El registro de la escala de longitud para las variables predictoras 4 y 5a son altos en relación con las demás. Estas variables predictoras no parecen ser tan influyentes en la respuesta como las otras variables predictoras.

Ajuste el modelo GPR sin utilizar las variables 4 a 5a como variables predictoras.

X = [Xtrain(:,1:3) Xtrain(:,6)]; sigma0 = std(ytrain); sigmaF0 = sigma0; d = size(X,2); sigmaM0 = 10*ones(d,1);  gprMdl = fitrgp(X,ytrain,'Basis','constant','FitMethod','exact',... 'PredictMethod','exact','KernelFunction','ardsquaredexponential',... 'KernelParameters',[sigmaM0;sigmaF0],'Sigma',sigma0,'Standardize',1);

Calcular el error de regresión en los datos de prueba.

xtest = [Xtest(:,1:3) Xtest(:,6)]; L = loss(gprMdl,xtest,ytest)
L = 0.6928 

La pérdida es similar a la que se utiliza como variables predictoras.

Calcular la respuesta prevista para los datos de prueba.

 ypred = predict(gprMdl,xtest);

Trazar la respuesta original junto con los valores ajustados.

figure; plot(ytest,'r'); hold on; plot(ypred,'b'); legend('True response','GPR predicted values','Location','Best'); hold off

En este ejemplo se muestra cómo optimizar los hiperparámetros automáticamente mediante .fitrgp En el ejemplo se utilizan los datos que se incluye con el software.gprdata2

Cargue los datos.

load(fullfile(matlabroot,'examples','stats','gprdata2.mat'))

Los datos tienen una variable predictora y una respuesta continua. Se trata de datos simulados.

Ajuste un modelo GPR utilizando la función de kernel exponencial al cuadrado con los parámetros predeterminados del kernel.

gprMdl1 = fitrgp(x,y,'KernelFunction','squaredexponential');

Busque hiperparámetros que minimicen la pérdida de validación cruzada cinco veces mediante la optimización automática de hiperparámetros.

Para reproducibilidad, establezca la semilla aleatoria y utilice la función de adquisición.'expected-improvement-plus'

rng default gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential',...     'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',...     struct('AcquisitionFunctionName','expected-improvement-plus'));

|======================================================================================| | Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |        Sigma | |      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |    1 | Best   |     0.29417 |      2.4152 |     0.29417 |     0.29417 |    0.0015045 | |    2 | Best   |    0.037898 |      1.8636 |    0.037898 |    0.060792 |      0.14147 | |    3 | Accept |      1.5693 |      1.1083 |    0.037898 |    0.040633 |       25.279 | |    4 | Accept |     0.29417 |      2.3293 |    0.037898 |    0.037984 |    0.0001091 | |    5 | Accept |     0.29393 |      2.5312 |    0.037898 |    0.038029 |     0.029932 | |    6 | Accept |     0.13152 |      1.7266 |    0.037898 |    0.038127 |      0.37127 | |    7 | Best   |    0.037785 |       2.064 |    0.037785 |    0.037728 |      0.18116 | |    8 | Accept |     0.03783 |       1.837 |    0.037785 |    0.036524 |      0.16251 | |    9 | Accept |    0.037833 |      1.9385 |    0.037785 |    0.036854 |      0.16159 | |   10 | Accept |    0.037835 |      1.9463 |    0.037785 |    0.037052 |      0.16072 | |   11 | Accept |     0.29417 |      2.3556 |    0.037785 |     0.03705 |   0.00038214 | |   12 | Accept |     0.42256 |      1.3779 |    0.037785 |     0.03696 |       3.2067 | |   13 | Accept |     0.03786 |       1.845 |    0.037785 |    0.037087 |      0.15245 | |   14 | Accept |     0.29417 |      2.3797 |    0.037785 |    0.037043 |    0.0063584 | |   15 | Accept |     0.42302 |      1.3971 |    0.037785 |     0.03725 |       1.2221 | |   16 | Accept |    0.039486 |      1.6847 |    0.037785 |    0.037672 |      0.10069 | |   17 | Accept |    0.038591 |       1.745 |    0.037785 |    0.037687 |      0.12077 | |   18 | Accept |    0.038513 |      1.8117 |    0.037785 |    0.037696 |       0.1227 | |   19 | Best   |    0.037757 |      1.8722 |    0.037757 |    0.037572 |      0.19621 | |   20 | Accept |    0.037787 |      1.9044 |    0.037757 |    0.037601 |      0.18068 | |======================================================================================| | Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |        Sigma | |      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |   21 | Accept |     0.44917 |      1.2512 |    0.037757 |     0.03766 |       8.7818 | |   22 | Accept |    0.040201 |      1.6171 |    0.037757 |    0.037601 |     0.075414 | |   23 | Accept |    0.040142 |       1.581 |    0.037757 |    0.037607 |     0.087198 | |   24 | Accept |     0.29417 |      2.3457 |    0.037757 |     0.03758 |    0.0031018 | |   25 | Accept |     0.29417 |      2.3225 |    0.037757 |    0.037555 |   0.00019545 | |   26 | Accept |     0.29417 |      2.3207 |    0.037757 |    0.037582 |     0.013608 | |   27 | Accept |     0.29417 |      2.3569 |    0.037757 |    0.037556 |   0.00076147 | |   28 | Accept |     0.42162 |      1.3194 |    0.037757 |    0.037854 |       0.6791 | |   29 | Best   |    0.037704 |      1.9705 |    0.037704 |    0.037908 |       0.2367 | |   30 | Accept |    0.037725 |      2.0022 |    0.037704 |    0.037881 |      0.21743 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 74.3299 seconds. Total objective function evaluation time: 57.2206  Best observed feasible point:     Sigma      ______      0.2367  Observed objective function value = 0.037704 Estimated objective function value = 0.037881 Function evaluation time = 1.9705  Best estimated feasible point (according to models):      Sigma      _______      0.16159  Estimated objective function value = 0.037881 Estimated function evaluation time = 1.8253 

Compare los ajustes previos y posteriores a la optimización.

ypred1 = resubPredict(gprMdl1); ypred2 = resubPredict(gprMdl2);  figure(); plot(x,y,'r.'); hold on plot(x,ypred1,'b'); plot(x,ypred2,'k','LineWidth',2); xlabel('x'); ylabel('y'); legend({'data','Initial Fit','Optimized Fit'},'Location','Best'); title('Impact of Optimization'); hold off

En este ejemplo se utilizan los datos abulón , , del repositorio de aprendizaje automático de UCI.[1][2][3] Descargue los datos y guárdelos en su carpeta actual con el nombre .abalone.data

Almacene los datos en un archivo .table Muestre las primeras siete filas.

tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false);tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height','WWeight','SWeight','VWeight','ShWeight','NoShellRings'}; tbl(1:7,:)
 ans =       Sex    Length    Diameter    Height    WWeight    SWeight    VWeight    ShWeight    NoShellRings     ___    ______    ________    ______    _______    _______    _______    ________    ____________      'M'    0.455     0.365       0.095      0.514     0.2245      0.101      0.15       15               'M'     0.35     0.265        0.09     0.2255     0.0995     0.0485      0.07        7               'F'     0.53      0.42       0.135      0.677     0.2565     0.1415      0.21        9               'M'     0.44     0.365       0.125      0.516     0.2155      0.114     0.155       10               'I'     0.33     0.255        0.08      0.205     0.0895     0.0395     0.055        7               'I'    0.425       0.3       0.095     0.3515      0.141     0.0775      0.12        8               'F'     0.53     0.415        0.15     0.7775      0.237     0.1415      0.33       20

El conjunto de datos tiene 4177 observaciones. El objetivo es predecir la edad del abulón a partir de ocho mediciones físicas. La última variable, el número de anillos de vaciado muestra la edad del abulón. El primer predictor es una variable categórica. La última variable de la tabla es la variable de respuesta.

Entrene un modelo GPR validado entre referencias cruzadas utilizando el 25% de los datos para la validación.

rng('default') % For reproducibility cvgprMdl = fitrgp(tbl,'NoShellRings','Standardize',1,'Holdout',0.25); 

Calcular la pérdida media en pliegues utilizando modelos entrenados en observaciones fuera de plegado.

kfoldLoss(cvgprMdl) 
ans =    4.6409

Predecir las respuestas para los datos fuera de la página.

ypred = kfoldPredict(cvgprMdl); 

Trazar las respuestas verdaderas utilizadas para las pruebas y las predicciones.

figure(); plot(ypred(cvgprMdl.Partition.test)); hold on; y = table2array(tbl(:,end)); plot(y(cvgprMdl.Partition.test),'r.'); axis([0 1050 0 30]); xlabel('x') ylabel('y') hold off;

Genere los datos de ejemplo.

rng(0,'twister'); % For reproducibility n = 1000; x = linspace(-10,10,n)'; y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(n,1);

Defina la función de kernel exponencial al cuadrado como una función de kernel personalizada.

Puede calcular la función de kernel exponencial al cuadrado como

<math display="block">
<mrow>
<mi>k</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<mo>|</mo>
<mi>θ</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msubsup>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
<mi mathvariant="normal">exp</mi>
<mrow>
<mo>(</mo>
<mo>-</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</mfrac>
<mfrac>
<mrow>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<msup>
<mrow>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>T</mi>
</mrow>
</msup>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<msubsup>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>l</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
</msub>
</mrow>
</math>
es la desviación estándar de la señal,
<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>l</mi>
</mrow>
</msub>
</mrow>
</math>
es la escala de longitud. Ambos
<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>l</mi>
</mrow>
</msub>
</mrow>
</math>
debe ser mayor que cero. Esta condición se puede aplicar mediante la parametrización sin restricciones,
<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>l</mi>
</mrow>
</msub>
<mo>=</mo>
<mi mathvariant="normal">exp</mi>
<mo stretchy="false">(</mo>
<mi>θ</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
</mrow>
</math>
Y
<math display="block">
<mrow>
<msub>
<mrow>
<mi>σ</mi>
</mrow>
<mrow>
<mi>f</mi>
</mrow>
</msub>
<mo>=</mo>
<mi mathvariant="normal">exp</mi>
<mo stretchy="false">(</mo>
<mi>θ</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
</mrow>
</math>
, para algún vector de parametrización sin restricciones
<math display="block">
<mrow>
<mi>θ</mi>
</mrow>
</math>
.

Por lo tanto, puede definir la función de kernel exponencial al cuadrado como una función de kernel personalizada de la siguiente manera:

kfcn = @(XN,XM,theta) (exp(theta(2))^2)*exp(-(pdist2(XN,XM).^2)/(2*exp(theta(1))^2));

Aquí se calcula la matriz de distancia.pdist2(XN,XM).^2

Ajuste un modelo GPR utilizando la función de kernel personalizada, .kfcn Especifique los valores iniciales de los parámetros del kernel (Dado que utiliza una función de kernel personalizada, debe proporcionar valores iniciales para el vector de parametrización sin restricciones, ).theta

theta0 = [1.5,0.2]; gprMdl = fitrgp(x,y,'KernelFunction',kfcn,'KernelParameters',theta0);

utiliza derivados analíticos para estimar parámetros cuando se utiliza una función de kernel integrada, mientras que cuando se utiliza una función de kernel personalizada utiliza derivados numéricos.fitrgp

Calcular la pérdida de resustitución para este modelo.

L = resubLoss(gprMdl)
L = 0.0391 

Ajuste el modelo GPR utilizando la opción de función de kernel exponencial cuadrada incorporada. Especifique los valores iniciales de los parámetros del kernel (debido a que utiliza la función de kernel personalizada integrada y especifica los valores de los parámetros iniciales, debe proporcionar los valores iniciales para la desviación estándar de la señal y la escala de longitud directamente).

sigmaL0 = exp(1.5); sigmaF0 = exp(0.2); gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential','KernelParameters',[sigmaL0,sigmaF0]);

Calcular la pérdida de resustitución para este modelo.

L2 = resubLoss(gprMdl2)
L2 = 0.0391 

Los dos valores de pérdida son los mismos que se esperaban.

Entrene un modelo GPR en los datos generados con muchos predictores. Especifique el tamaño de paso inicial para el optimizador LBFGS.

Establezca la semilla y el tipo del generador de números aleatorios para la reproducibilidad de los resultados.

rng(0,'twister'); % For reproducibility 

Genere datos de muestra con 300 observaciones y 3000 predictores, donde la variable de respuesta depende de los predictores 4o, 7o y 13o.

N = 300; P = 3000; X = rand(N,P); y = cos(X(:,7)) + sin(X(:,4).*X(:,13)) + 0.1*randn(N,1);

Establezca los valores iniciales para los parámetros del kernel.

sigmaL0 = sqrt(P)*ones(P,1); % Length scale for predictors sigmaF0 = 1; % Signal standard deviation

Establezca la desviación estándar de ruido inicial en .1

sigmaN0 = 1;

Especifique como tolerancia de terminación para la norma de degradado relativo. 1e-2

opts = statset('fitrgp'); opts.TolFun = 1e-2;

Ajuste un modelo GPR utilizando los valores de parámetro sin núcleo iniciales, la desviación estándar de ruido inicial y una función de kernel exponencial cuadrada de determinación de relevancia automática (ARD).

Especifique el tamaño del paso inicial como 1 para determinar la aproximación inicial de Hesse para un optimizador LBFGS.

gpr = fitrgp(X,y,'KernelFunction','ardsquaredexponential','Verbose',1, ...     'Optimizer','lbfgs','OptimizerOptions',opts, ...     'KernelParameters',[sigmaL0;sigmaF0],'Sigma',sigmaN0,'InitialStepSize',1);
o Parameter estimation: FitMethod = Exact, Optimizer = lbfgs   o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |        0 |  3.004966e+02 |   2.569e+02 |   0.000e+00 |        |   3.893e-03 |   0.000e+00 |   YES  | |        1 |  9.525779e+01 |   1.281e+02 |   1.003e+00 |    OK  |   6.913e-03 |   1.000e+00 |   YES  | |        2 |  3.972026e+01 |   1.647e+01 |   7.639e-01 |    OK  |   4.718e-03 |   5.000e-01 |   YES  | |        3 |  3.893873e+01 |   1.073e+01 |   1.057e-01 |    OK  |   3.243e-03 |   1.000e+00 |   YES  | |        4 |  3.859904e+01 |   5.659e+00 |   3.282e-02 |    OK  |   3.346e-03 |   1.000e+00 |   YES  | |        5 |  3.748912e+01 |   1.030e+01 |   1.395e-01 |    OK  |   1.460e-03 |   1.000e+00 |   YES  | |        6 |  2.028104e+01 |   1.380e+02 |   2.010e+00 |    OK  |   2.326e-03 |   1.000e+00 |   YES  | |        7 |  2.001849e+01 |   1.510e+01 |   9.685e-01 |    OK  |   2.344e-03 |   1.000e+00 |   YES  | |        8 | -7.706109e+00 |   8.340e+01 |   1.125e+00 |    OK  |   5.771e-04 |   1.000e+00 |   YES  | |        9 | -1.786074e+01 |   2.323e+02 |   2.647e+00 |    OK  |   4.217e-03 |   1.250e-01 |   YES  | |       10 | -4.058422e+01 |   1.972e+02 |   6.796e-01 |    OK  |   7.035e-03 |   1.000e+00 |   YES  | |       11 | -7.850209e+01 |   4.432e+01 |   8.335e-01 |    OK  |   3.099e-03 |   1.000e+00 |   YES  | |       12 | -1.312162e+02 |   3.334e+01 |   1.277e+00 |    OK  |   5.432e-02 |   1.000e+00 |   YES  | |       13 | -2.005064e+02 |   9.519e+01 |   2.828e+00 |    OK  |   5.292e-03 |   1.000e+00 |   YES  | |       14 | -2.070150e+02 |   1.898e+01 |   1.641e+00 |    OK  |   6.817e-03 |   1.000e+00 |   YES  | |       15 | -2.108086e+02 |   3.793e+01 |   7.685e-01 |    OK  |   3.479e-03 |   1.000e+00 |   YES  | |       16 | -2.122920e+02 |   7.057e+00 |   1.591e-01 |    OK  |   2.055e-03 |   1.000e+00 |   YES  | |       17 | -2.125610e+02 |   4.337e+00 |   4.818e-02 |    OK  |   1.974e-03 |   1.000e+00 |   YES  | |       18 | -2.130162e+02 |   1.178e+01 |   8.891e-02 |    OK  |   2.856e-03 |   1.000e+00 |   YES  | |       19 | -2.139378e+02 |   1.933e+01 |   2.371e-01 |    OK  |   1.029e-02 |   1.000e+00 |   YES  |  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |       20 | -2.151111e+02 |   1.550e+01 |   3.015e-01 |    OK  |   2.765e-02 |   1.000e+00 |   YES  | |       21 | -2.173046e+02 |   5.856e+00 |   6.537e-01 |    OK  |   1.414e-02 |   1.000e+00 |   YES  | |       22 | -2.201781e+02 |   8.918e+00 |   8.484e-01 |    OK  |   6.381e-03 |   1.000e+00 |   YES  | |       23 | -2.288858e+02 |   4.846e+01 |   2.311e+00 |    OK  |   2.661e-03 |   1.000e+00 |   YES  | |       24 | -2.392171e+02 |   1.190e+02 |   6.283e+00 |    OK  |   8.113e-03 |   1.000e+00 |   YES  | |       25 | -2.511145e+02 |   1.008e+02 |   1.198e+00 |    OK  |   1.605e-02 |   1.000e+00 |   YES  | |       26 | -2.742547e+02 |   2.207e+01 |   1.231e+00 |    OK  |   3.191e-03 |   1.000e+00 |   YES  | |       27 | -2.849931e+02 |   5.067e+01 |   3.660e+00 |    OK  |   5.184e-03 |   1.000e+00 |   YES  | |       28 | -2.899797e+02 |   2.068e+01 |   1.162e+00 |    OK  |   6.270e-03 |   1.000e+00 |   YES  | |       29 | -2.916723e+02 |   1.816e+01 |   3.213e-01 |    OK  |   1.415e-02 |   1.000e+00 |   YES  | |       30 | -2.947674e+02 |   6.965e+00 |   1.126e+00 |    OK  |   6.339e-03 |   1.000e+00 |   YES  | |       31 | -2.962491e+02 |   1.349e+01 |   2.352e-01 |    OK  |   8.999e-03 |   1.000e+00 |   YES  | |       32 | -3.004921e+02 |   1.586e+01 |   9.880e-01 |    OK  |   3.940e-02 |   1.000e+00 |   YES  | |       33 | -3.118906e+02 |   1.889e+01 |   3.318e+00 |    OK  |   1.213e-01 |   1.000e+00 |   YES  | |       34 | -3.189215e+02 |   7.086e+01 |   3.070e+00 |    OK  |   8.095e-03 |   1.000e+00 |   YES  | |       35 | -3.245557e+02 |   4.366e+00 |   1.397e+00 |    OK  |   2.718e-03 |   1.000e+00 |   YES  | |       36 | -3.254613e+02 |   3.751e+00 |   6.546e-01 |    OK  |   1.004e-02 |   1.000e+00 |   YES  | |       37 | -3.262823e+02 |   4.011e+00 |   2.026e-01 |    OK  |   2.441e-02 |   1.000e+00 |   YES  | |       38 | -3.325606e+02 |   1.773e+01 |   2.427e+00 |    OK  |   5.234e-02 |   1.000e+00 |   YES  | |       39 | -3.350374e+02 |   1.201e+01 |   1.603e+00 |    OK  |   2.674e-02 |   1.000e+00 |   YES  |  |====================================================================================================| |   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT | |====================================================================================================| |       40 | -3.379112e+02 |   5.280e+00 |   1.393e+00 |    OK  |   1.177e-02 |   1.000e+00 |   YES  | |       41 | -3.389136e+02 |   3.061e+00 |   7.121e-01 |    OK  |   2.935e-02 |   1.000e+00 |   YES  | |       42 | -3.401070e+02 |   4.094e+00 |   6.224e-01 |    OK  |   3.399e-02 |   1.000e+00 |   YES  | |       43 | -3.436291e+02 |   8.833e+00 |   1.707e+00 |    OK  |   5.231e-02 |   1.000e+00 |   YES  | |       44 | -3.456295e+02 |   5.891e+00 |   1.424e+00 |    OK  |   3.772e-02 |   1.000e+00 |   YES  | |       45 | -3.460069e+02 |   1.126e+01 |   2.580e+00 |    OK  |   3.907e-02 |   1.000e+00 |   YES  | |       46 | -3.481756e+02 |   1.546e+00 |   8.142e-01 |    OK  |   1.565e-02 |   1.000e+00 |   YES  |           Infinity norm of the final gradient = 1.546e+00               Two norm of the final step     = 8.142e-01, TolX   = 1.000e-12 Relative infinity norm of the final gradient = 6.016e-03, TolFun = 1.000e-02 EXIT: Local minimum found.  o Alpha estimation: PredictMethod = Exact 

Debido a que el modelo GPR utiliza un kernel ARD con muchos predictores, el uso de una aproximación LBFGS al Hessian es más eficiente en memoria que almacenar la matriz completa de Hesse. Además, el uso del tamaño del paso inicial para determinar la aproximación inicial de Hesse puede ayudar a acelerar la optimización.

Encuentre los pesos del predictor tomando el exponencial de las escalas de longitud aprendidas negativas. Normalizar los pesos.

sigmaL = gpr.KernelInformation.KernelParameters(1:end-1); % Learned length scales weights = exp(-sigmaL); % Predictor weights weights = weights/sum(weights); % Normalized predictor weights

Trazar los pesos del predictor normalizado.

figure; semilogx(weights,'ro'); xlabel('Predictor index'); ylabel('Predictor weight');

El modelo GPR entrenado asigna los pesos más grandes a los predictores 4o, 7o y 13o. Los predictores irrelevantes tienen pesos cercanos a cero.

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificados como un archivo .table Cada fila de corresponde a una observación y cada columna corresponde a una variable. contiene las variables predictoras y, opcionalmente, también puede contener una columna para la variable de respuesta.TblTbl No se permiten variables de varias columnas y matrices de celdas que no sean matrices de celdas de vectores de caracteres.

  • Si contiene la variable de respuesta y desea utilizar todas las variables restantes como predictores, especifique la variable de respuesta mediante .TblResponseVarName

  • Si contiene la variable de respuesta y desea utilizar solo un subconjunto de los predictores en el entrenamiento del modelo, especifique la variable de respuesta y las variables predictoras mediante .TblFórmula

  • Si no contiene la variable de respuesta, especifique una variable de respuesta mediante .Tbly La longitud de la variable de respuesta y el número de filas deben ser iguales.Tbl

Para obtener más información sobre el tipo de datos, consulte .tabletable

Si los datos del predictor contienen variables categóricas, el software utiliza la codificación ficticia completa para estas variables. El software crea una variable ficticia para cada nivel de la variable categórica.

Tipos de datos: table

Nombre de la variable de respuesta, especificado como el nombre de una variable en .Tbl Debe especificar como vector de caracteres o escalar de cadena.ResponseVarName Por ejemplo, si la variable de respuesta se almacena en (as ), escórbela como .yTblTbl.y'y' De lo contrario, el software trata todas las columnas de , incluyendo , como predictores al entrenar el modelo.Tbly

Tipos de datos: char | string

Variables de respuesta y predictor que se utilizarán en el entrenamiento del modelo, especificadas como vector de caracteres o escalar de cadena en forma de .'y~x1+x2+x3' En este formulario, representa la variable de respuesta; , , representan las variables predictoras que se utilizarán en el entrenamiento del modelo.yx1x2x3

Utilice una fórmula si desea especificar un subconjunto de variables como predictores para utilizarales al entrenar el modelo.Tbl Si especifica una fórmula, las variables que no aparecen en no se utilizan para entrenar el modelo.Fórmula

Los nombres de variable de la fórmula deben ser ambos nombres de variable en ( ) como identificadores válidos.TblTbl.Properties.VariableNamesMATLAB®

Puede verificar los nombres de las variables mediante la función.Tblisvarname El código siguiente devuelve logical ( ) para cada variable que tiene un nombre de variable válido.1true Si los nombres de variable en no son válidos, a continuación, convertirlos mediante la función.

cellfun(@isvarname,Tbl.Properties.VariableNames)
Tblmatlab.lang.makeValidName
Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);

La fórmula no indica la forma del archivo .BasisFunction

Ejemplo: identifica la variable como la variable de respuesta y como variables predictoras.'PetalLength~PetalWidth+Species'PetalLengthPetalWidthSpecies

Tipos de datos: char | string

Datos del predictor para el modelo GPR, especificados como una matriz -by-. es el número de observaciones (filas), y es el número de predictores (columnas).ndnd

La longitud y el número de filas de debe ser igual.yX

Para especificar los nombres de los predictores en el orden de su aparición en , utilice el argumento de par nombre-valor.XPredictorNames

Tipos de datos: double

Datos de respuesta para el modelo GPR, especificados como un vector -by-1.n Puede omitir si proporciona los datos de entrenamiento que también incluyen .yTbly En ese caso, se utiliza para identificar la variable de respuesta o utilizar para identificar las variables de respuesta y predictor.ResponseVarNameFórmula

Tipos de datos: double

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: entrena el modelo GPR utilizando el subconjunto de métodos de aproximación de regresores para la estimación de parámetros, utiliza una función de base lineal, utiliza una aproximación de matriz codiciosa dispersa para la selección activa y un método de aproximación condicional totalmente independiente para Predicción.'FitMethod','sr','BasisFunction','linear','ActiveSetMethod','sgma','PredictMethod',fic'

Nota

No puede utilizar ningún argumento de par nombre-valor de validación cruzada junto con el argumento de par nombre-valor.'OptimizeHyperparameters' Puede modificar la validación cruzada solo mediante el argumento de par nombre-valor.'OptimizeHyperparameters''HyperparameterOptimizationOptions'

Guarnición

contraer todo

Método para estimar los parámetros del modelo GPR, especificado como el par separado por comas que consta de y uno de los siguientes.'FitMethod'

Método de ajusteDescripción
'none'Sin estimación, utilice los valores de parámetro iniciales como valores de parámetro conocidos.
'exact'Regresión exacta del proceso gaussiano. Por defecto si es 2000, ¿dónde está el número de observaciones.nn
'sd'Subconjunto de aproximación de puntos de datos. Predeterminado si > 2000, donde está el número de observaciones.nn
'sr'Subconjunto de aproximaciones de regresores.
'fic'Aproximación condicional totalmente independiente.

Ejemplo: 'FitMethod','fic'

Base explícita en el modelo GPR, especificada como el par separado por comas que consta de y uno de los siguientes.'BasisFunction' Si es el número de observaciones, la función base añade el términon H*β al modelo, donde H es la matriz base y β es un vector -by-1 de coeficientes base.p

Base explícitaMatriz de base
'none'Matriz vacía.
'constant'

H=1

( -por-1 vector de 1s, donde está el número de observaciones)nn

'linear'

H=[1,X]

'pureQuadratic'

H=[1,X,X2],

Dónde

X2=[x112x122x1d2x212x222x2d2xn12xn22xnd2].

Mango de función

Identificador de función, , que llama como:hfcnfitrgp

H=hfcn(X),

donde es una matriz -por- de predictores y es una matriz -por- de funciones base.XndHnp

Ejemplo: 'BasisFunction','pureQuadratic'

Tipos de datos: char | string | function_handle

Valor inicial de los coeficientes para la base explícita, especificado como el par separado por comas que consiste en un vector y -por-1, donde está el número de columnas en la matriz base'Beta'pp H.

La matriz de base depende de la elección de la función de base explícita de la siguiente manera (véase también ).BasisFunction

utiliza los valores iniciales del coeficiente como los valores de coeficiente conocidos, sólo cuando es .fitrgpFitMethod'none'

Tipos de datos: double

Valor inicial para la desviación estándar de ruido del modelo de proceso gaussiano, especificado como el par separado por comas que consta de un valor escalar positivo.'Sigma'

Ejemplo: 'Sigma',2

Tipos de datos: double

Valor constante de la desviación estándar de ruido del modelo de proceso gaussiano, especificado como un escalar lógico.Sigma When is , no optimiza el valor de , sino que toma el valor inicial como valor en sus cálculos.ConstantSigmatruefitrgpSigma

Ejemplo: 'ConstantSigma',true

Tipos de datos: logical

Límite inferior en la desviación estándar de ruido, especificado como el par separado por comas que consta de y un valor escalar positivo.'SigmaLowerBound'

Ejemplo: 'SigmaLowerBound',0.02

Tipos de datos: double

Lista de predictores categóricos, especificada como el par separado por comas que consta de y uno de los valores de esta tabla.'CategoricalPredictors'

ValorDescripción
Vector de enteros positivosCada entrada del vector es un valor de índice correspondiente a la columna de los datos predictores ( o ) que contiene una variable categórica.XTbl
Vector lógicoUna entrada significa que la columna correspondiente de datos predictores ( o ) es una variable categórica.trueXTbl
Matriz de caracteresCada fila de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas de .PredictorNames Rellena los nombres con espacios en blanco adicionales para que cada fila de la matriz de caracteres tenga la misma longitud.
Matriz de cadenas o matriz de celdas de vectores de caracteresCada elemento de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas de .PredictorNames
'todos'Todos los predictores son categóricos.

De forma predeterminada, si los datos del predictor están en una tabla ( ),Tbl fitrgp supone que una variable es categórica si es un vector lógico, vector categórico, matriz de caracteres, matriz de cadenas o matriz de celdas de vectores de caracteres. Si los datos del predictor son una matriz ( ),X fitrgp asume que todos los predictores son continuos. Para identificar cualquier otro predictor como predictores categóricos, escépéscalos mediante el argumento de par nombre-valor.'CategoricalPredictors'

Para los predictores categóricos identificados, fitrgp crea variables ficticias utilizando dos esquemas diferentes, dependiendo de si una variable categórica está desordenada u ordenada. Para obtener más información, consulte .Automatic Creation of Dummy Variables

Ejemplo: 'CategoricalPredictors','all'

Tipos de datos: single | double | logical | char | string | cell

Indicador para estandarizar datos, especificado como el par separado por comas que consta de y un valor lógico.'Standardize'

Si establece , el software centra y escala cada columna de los datos del predictor, por la media de columna y la desviación estándar, respectivamente.'Standardize',1 El software no estandariza los datos contenidos en las columnas de variables ficticias que genera para los predictores categóricos.

Ejemplo: 'Standardize',1

Ejemplo: 'Standardize',true

Tipos de datos: logical

Desviación estándar de regularización para métodos dispersos subconjunto de regresores ( ) y condicional totalmente independiente ( ), especificado como el par separado por comas que consta de y un valor escalar positivo.'sr''fic''Regularization'

Ejemplo: 'Regularization',0.2

Tipos de datos: double

Método para calcular la probabilidad de registro y el gradiente para la estimación de parámetros utilizando subconjunto según ( ) y métodos de aproximación condicional totalmente independientes ( ), especificados como el par separado por comas que consta de y uno de los siguientes.'sr''fic''ComputationMethod'

  • — Utilice el enfoque basado en la factorización QR, esta opción proporciona una mejor precisión.'qr'

  • — Utilice el enfoque basado en el método V.'v' Esta opción proporciona un cálculo más rápido de los gradientes de probabilidad de registro.

Ejemplo: 'ComputationMethod','v'

Función Kernel (Covarianza)

contraer todo

Forma de la función de covarianza, especificada como el par separado por comas que consta de y uno de los siguientes.'KernelFunction'

FunciónDescripción
'exponential'Kernel exponencial.
'squaredexponential'Núcleo exponencial cuadrado.
'matern32'Núcleo Matern con parámetro 3/2.
'matern52'Núcleo Matern con parámetro 5/2.
'rationalquadratic'Núcleo cuadrático racional.
'ardexponential'Núcleo exponencial con una escala de longitud separada por predictor.
'ardsquaredexponential'Núcleo exponencial cuadrado con una escala de longitud separada por predictor.
'ardmatern32'Núcleo Matern con parámetro 3/2 y una escala de longitud separada por predictor.
'ardmatern52'Núcleo Matern con parámetro 5/2 y una escala de longitud separada por predictor.
'ardrationalquadratic'Núcleo cuadrático racional con una escala de longitud separada por predictor.
Mango de funciónUn identificador de función que se puede llamar así: ¿dónde hay una matriz -by-, es una matriz -by- y es una matriz -by- de productos de núcleo de tal manera que ( , ) es el producto del núcleo entre ( ,:) y ( ,:). es el vector de parámetros sin restricciones -by-1 para .
Kmn = kfcn(Xm,Xn,theta)
XmmdXnndKmnmnKmnijXmiXnj
thetarkfcn

Para obtener más información sobre las funciones del kernel, consulte .Kernel (Covariance) Function Options

Ejemplo: 'KernelFunction','matern32'

Tipos de datos: char | string | function_handle

Valores iniciales para los parámetros del kernel, especificados como el par separado por comas que consta de un vector y un vector.'KernelParameters' El tamaño del vector y los valores dependen de la forma de la función de covarianza, especificada por el argumento de par nombre-valor.KernelFunction

'KernelFunction''KernelParameters'
or or or'exponential''squaredexponential''matern32''matern52'2 por 1 vector, donde contiene la escala de longitud y contiene la desviación estándar de la señal.phiphi(1)phi(2) El valor inicial predeterminado del parámetro de escala de longitud es la media de las desviaciones estándar de los predictores, y la desviación estándar de la señal es la desviación estándar de las respuestas divididas por la raíz cuadrada de 2.
Es decir
phi = [mean(std(X));std(y)/sqrt(2)]
'rationalquadratic'3 por 1 vector , donde contiene la escala de longitud, contiene el parámetro escala-mezcla y contiene la desviación estándar de la señal.phiphi(1)phi(2)phi(3) El valor inicial predeterminado del parámetro de escala de longitud es la media de las desviaciones estándar de los predictores, y la desviación estándar de la señal es la desviación estándar de las respuestas divididas por la raíz cuadrada de 2.
El valor inicial predeterminado para el parámetro scale-mixture es 1. Es decir
phi = [mean(std(X));1;std(y)/sqrt(2)]
or or or'ardexponential''ardsquaredexponential''ardmatern32''ardmatern52'( +1)-por-1 vector , donde contiene la escala de longitud para el predictor y contiene la desviación estándar de la señal. es el número de variables predictoras.dphiphi(i)iphi(d+1)d El valor inicial predeterminado de los parámetros de escala de longitud son las desviaciones estándar de los predictores y la desviación estándar de la señal es la desviación estándar de las respuestas divididas por la raíz cuadrada de 2.
Es decir
phi = [std(X)';std(y)/sqrt(2)]
'ardrationalquadratic'( +2)-por-1 vector , donde contiene la escala de longitud para el predictor , contiene el parámetro de mezcla de escala y contiene la desviación estándar de la señal. El valor inicial predeterminado de los parámetros de escala de longitud son las desviaciones estándar de los predictores y la desviación estándar de la señal es la desviación estándar de las respuestas divididas por la raíz cuadrada de 2.dphiphi(i)iphi(d+1)phi(d+2)
El valor inicial predeterminado para el parámetro scale-mixture es 1. Es decir
phi = [std(X)';1;std(y)/sqrt(2)]
Mango de función-by-1 vector como valor inicial del vector de parámetros sin restricciones para la función de kernel personalizada.rphikfcn Cuando es un identificador de función, debe proporcionar valores iniciales para los parámetros del kernel.
KernelFunction

Para obtener más información sobre las funciones del kernel, consulte .Kernel (Covariance) Function Options

Ejemplo: 'KernelParameters',theta

Tipos de datos: double

Método para calcular distancias entre puntos para evaluar las funciones del kernel integradas, especificadas como el par separado por comas que consta de y o . Calcula'DistanceMethod''fast''accurate'fitrgp (xy)2 Como x2+y22*x*y cuando usted elige la opción y comofast (xy)2 cuando elija la opción.accurate

Ejemplo: 'DistanceMethod','accurate'

Selección de conjunto activo

contraer todo

Observaciones en el conjunto activo, especificados como el par separado por comas que consta de un vector -by-1 de enteros que van de 1 a ( ) o un vector lógico de longitud con al menos un elemento. es el número total de observaciones en los datos de entrenamiento.'ActiveSet'mnmnntruen

utiliza las observaciones indicadas por para entrenar el modelo GPR.fitrgpActiveSet El conjunto activo no puede tener elementos duplicados.

Si suministra , entonces:ActiveSet

Tipos de datos: double | logical

Tamaño del conjunto activo para los métodos dispersos ( , , ), especificado como el par separado por comas que consta de y un entero, 1 , , donde está el número de observaciones.'sd''sr''fic''ActiveSetSize'mmnn

El valor predeterminado es min(1000, ) when is or , y min(2000, ), otherwise.nFitMethod'sr''fic'n

Ejemplo: 'ActiveSetSize',100

Tipos de datos: double

Método de selección de conjunto activo, especificado como el par separado por comas que consta de y uno de los siguientes.'ActiveSetMethod'

MétodoDescripción
'random'Selección aleatoria
'sgma'Aproximación de matriz codiciosa dispersa
'entropy'Selección diferencial basada en entropía
'likelihood'Subconjunto de regresores registran la selección basada en la probabilidad

Todos los métodos de selección de conjuntos activos (excepto ) requieren el almacenamiento de una matriz -by-, donde está el tamaño del conjunto activo y es el número de observaciones.'random'nmmn

Ejemplo: 'ActiveSetMethod','entropy'

Tamaño del conjunto de búsqueda aleatoria por inclusión expansiva para la selección de conjuntos activos, especificado como el par separado por comas que consta de y un valor entero.'RandomSearchSetSize'

Ejemplo: 'RandomSearchSetSize',30

Tipos de datos: double

Tolerancia relativa para terminar la selección de conjuntos activos, especificada como el par separado por comas que consta de un valor escalar positivo y un valor escalar positivo.'ToleranceActiveset'

Ejemplo: 'ToleranceActiveset',0.0002

Tipos de datos: double

Número de repeticiones para cuando no es , especificado como el par separado por comas que consta de y un valor entero.selección de conjuntos activos intercalados y estimación de parámetrosActiveSetMethod'random''NumActiveSetRepeats'

Ejemplo: 'NumActiveSetRepeats',5

Tipos de datos: double

Predicción

contraer todo

Método utilizado para realizar predicciones a partir de un modelo de proceso gaussiano dados los parámetros, especificados como el par separado por comas que consta de y uno de los siguientes.'PredictMethod'

MétodoDescripción
'exact'Método exacto de regresión del proceso gaussiano. Predeterminado, si es 10000.n
'bcd'Descenso de coordenadas de bloque. Predeterminado, si > 10000.n
'sd'Subconjunto de aproximación de puntos de datos.
'sr'Subconjunto de aproximación de Regressores.
'fic'Aproximación condicional totalmente independiente.

Ejemplo: 'PredictMethod','bcd'

Tamaño de bloque para el método de descenso de coordenadas de bloque ( ), especificado como el par separado por comas que consta de y un entero en el rango de 1 a , donde está el número de observaciones.'bcd''BlockSizeBCD'nn

Ejemplo: 'BlockSizeBCD',1500

Tipos de datos: double

Número de selecciones expansivas para el método de descenso de coordenadas de bloque ( ), especificado como el par separado por comas que consta de y un entero en el intervalo de 1 a .'bcd''NumGreedyBCD'BlockSizeBCD

Ejemplo: 'NumGreedyBCD',150

Tipos de datos: double

Tolerancia relativa en la norma de degradado para terminar iteraciones del método de descenso de coordenadas de bloque ( ), especificada como el par separado por comas que consta de un escalar positivo.'bcd''ToleranceBCD'

Ejemplo: 'ToleranceBCD',0.002

Tipos de datos: double

Tolerancia absoluta en el tamaño del paso para terminar las iteraciones del método de descenso de coordenadas de bloque ( ), especificada como el par separado por comas que consta de un escalar positivo.'bcd''StepToleranceBCD'

Ejemplo: 'StepToleranceBCD',0.002

Tipos de datos: double

Número máximo de iteraciones del método de descenso de coordenadas de bloque ( ), especificado como el par separado por comas que consta de un valor entero y un valor entero.'bcd''IterationLimitBCD'

Ejemplo: 'IterationLimitBCD',10000

Tipos de datos: double

Optimización

contraer todo

Optimizador que se utilizará para la estimación de parámetros, especificado como el par separado por comas que consta de y uno de los valores de esta tabla.'Optimizer'

ValorDescripción
'quasinewton'Densa, simétrica basada en el rango 1, aproximación cuasi-Newton al Hessian
'lbfgs'Aproximación cuasi-Newton basada en LBFGS al Hessian
'fminsearch'Optimización no lineal sin restricciones utilizando el método de búsqueda simplex de Lagarias et al. [5]
'fminunc'Optimización no lineal sin restricciones (requiere una licencia)Optimization Toolbox™
'fmincon'Optimización no lineal restringida (requiere una licencia)Optimization Toolbox

Para obtener más información sobre los optimizadores, consulte .Algoritmos

Ejemplo: 'Optimizer','fmincon'

Opciones para el optimizador que elija mediante el argumento de par nombre-valor, especificado como el par separado por comas que consta de y una estructura u objeto creado por , , o .Optimizer'OptimizerOptions'optimsetstatset('fitrgp')optimoptions

OptimizerCrear opciones de optimizador mediante
'fminsearch'(estructura)optimset
O'quasinewton''lbfgs'(estructura)statset('fitrgp')
O'fminunc''fmincon'(objeto)optimoptions

Las opciones predeterminadas dependen del tipo de optimizador.

Ejemplo: 'OptimizerOptions',opt

Tamaño de paso inicial, especificado como el par separado por comas que consta de un escalar o .'InitialStepSize''auto'

es el valor absoluto máximo aproximado del primer paso de optimización cuando el optimizador es o .'InitialStepSize''quasinewton''lbfgs' El tamaño del paso inicial puede determinar la aproximación inicial de Hesse durante la optimización.

De forma predeterminada, no utiliza el tamaño de paso inicial para determinar la aproximación inicial de Hesse.fitrgp Para utilizar el tamaño de paso inicial, establezca un valor para el argumento de par nombre-valor o especifique que se determine un valor automáticamente.'InitialStepSize''InitialStepSize','auto'fitrgp Para obtener más información sobre , consulte .'auto'Algoritmos

Ejemplo: 'InitialStepSize','auto'

Validación cruzada

contraer todo

Indicador de validación cruzada, especificado como el par separado por comas que consta de y uno o .'CrossVal''off''on' Si es así, devuelve un modelo GPR validado con 10 pliegues.'on'fitrgp

Puede utilizar uno de los argumentos de par , , o nombre-valor para cambiar la configuración de validación cruzada predeterminada.KFoldHoldoutLeaveoutCVPartition Solo puede utilizar uno de estos pares nombre-valor a la vez.

Como alternativa, puede utilizar el método para el modelo.crossval

Ejemplo: 'CrossVal','on'

Partición aleatoria para una validación cruzada de plegado estratificado, especificada como el par separado por comas que consta de y un objeto.k'CVPartition'cvpartition

Ejemplo: utiliza la partición aleatoria definida por .'CVPartition',cvpcvp

Si especifica , no puede especificar , , o .CVPartitionHoldoutKFoldLeaveout

Fracción de los datos que se van a utilizar para las pruebas en la validación de retención, especificada como el par separado por comas que consta de y un valor escalar en el intervalo de 0 a 1.'Holdout' Si especifica , el software:'Holdout',p 1.
Reserva aleatoriamente alrededor del *100% de los datos como datos de validación y entrena el modelo utilizando el resto de los datos 2.p
Almacena el modelo compacto y entrenado en .cvgprMdl.Trained

Ejemplo: utiliza el 30% de los datos para las pruebas y el 70% de los datos para la formación.'Holdout', 0.3

Si especifica , no puede especificar , , o .HoldoutCVPartitionKFoldLeaveout

Tipos de datos: double

Número de pliegues que se van a utilizar en el modelo GPR validado entre referencias cruzadas, especificado como el par separado por comas que consta de un valor entero positivo. debe ser mayor que 1.'KFold'KFold Si especifica entonces el software:'KFold',k 1.
Particione aleatoriamente los datos en conjuntos. 2.k
Para cada conjunto, reserva el conjunto como datos de prueba y entrena el modelo utilizando los conjuntos otro – 1. 3.k
Almacena los modelos compactos y entrenados en las celdas de una matriz de celdas -by-1 en .kkcvgprMdl.Trained

Ejemplo: utiliza 5 pliegues en la validación cruzada.'KFold',5 Es decir, para cada pliegue, utiliza ese pliegue como datos de prueba y entrena el modelo en los 4 pliegues restantes.

Si especifica , no puede especificar , , o .KFoldCVPartitionHoldoutLeaveout

Tipos de datos: double

Indicador de validación cruzada de salida uno, especificado como el par separado por comas que consta de y , o .'Leaveout''off''on'

Si especifica , entonces, para cada una de las observaciones, el software: 1.'Leaveout','on'n
Reserva la observación como datos de prueba, y entrena el modelo utilizando las otras observaciones – 1. 2.n
Almacena el modelo compacto y entrenado en una celda en la matriz de celdas -by-1 .ncvgprMdl.Trained

Ejemplo: 'Leaveout','on'

Si especifica , no puede especificar , , o .LeaveoutCVPartitionHoldoutKFold

Optimización de hiperparámetros

contraer todo

Parámetros para optimizar, especificados como el par separado por comas que consta de y uno de los siguientes:'OptimizeHyperparameters'

  • — No optimizar.'none'

  • — Utilice .'auto'{'Sigma'}

  • — Optimizar todos los parámetros admisibles, equivalentes a .'all'{'BasisFunction','KernelFunction','KernelScale','Sigma','Standardize'}

  • Matriz de cadenas o matriz de celdas de nombres de parámetros elegibles.

  • Vector de objetos, normalmente la salida de .optimizableVariablehyperparameters

La optimización intenta minimizar la pérdida de validación cruzada (error) para variar los parámetros.fitrgp Para obtener información sobre la pérdida de validación cruzada (aunque en un contexto diferente), consulte .Classification Loss Para controlar el tipo de validación cruzada y otros aspectos de la optimización, utilice el par nombre-valor.HyperparameterOptimizationOptions

Nota

los valores reemplazan los valores que establezca utilizando otros argumentos de par nombre-valor.'OptimizeHyperparameters' Por ejemplo, establecer para hacer que se apliquen los valores.'OptimizeHyperparameters''auto''auto'

Los parámetros elegibles para son:fitrgp

  • — búsquedas entre , , , y .BasisFunctionfitrgp'constant''none''linear''pureQuadratic'

  • — búsquedas entre , , , , , , , , y .KernelFunctionfitrgp'ardexponential''ardmatern32''ardmatern52''ardrationalquadratic''ardsquaredexponential''exponential''matern32''matern52''rationalquadratic''squaredexponential'

  • : utiliza el argumento para especificar el valor del parámetro de escala del núcleo, que se mantiene constante durante el ajuste.KernelScalefitrgpKernelParameters En este caso, todas las dimensiones de entrada están restringidas para tener el mismo valor. búsquedas entre el valor real en el rango, dondeKernelScalefitrgp[1e-3*MaxPredictorRange,MaxPredictorRange]

    MaxPredictorRange = max(max(X) - min(X)).

    no se puede optimizar para ninguno de los kernels ARD.KernelScale

  • — búsquedas entre el valor real en el rango , dondeSigmafitrgp[1e-4, max(1e-3,10*ResponseStd)]

    ResponseStd = std(y).

    Internamente, establece el par nombre-valor en para que el valor de sea constante durante el empalme.fitrgpConstantSigmatrueSigma

  • — búsquedas entre y .Standardizefitrgptruefalse

Establezca parámetros no predeterminados pasando un vector de objetos que tengan valores no predeterminados.optimizableVariable Por ejemplo,

load fisheriris params = hyperparameters('fitrgp',meas,species); params(1).Range = [1e-4,1e6];

Pase como el valor de .paramsOptimizeHyperparameters

De forma predeterminada, la visualización iterativa aparece en la línea de comandoy los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y las gráficas, la función objetivo es log(1 + cross-validation loss) para la regresión y la tasa de clasificación errónea para la clasificación. Para controlar la visualización iterativa, establezca el campo del argumento de par nombre-valor.Verbose'HyperparameterOptimizationOptions' Para controlar los trazados, establezca el campo del argumento de par nombre-valor.ShowPlots'HyperparameterOptimizationOptions'

Para obtener un ejemplo, consulte .Optimizar la regresión GPR

Ejemplo: 'auto'

Opciones para la optimización, especificadas como el par separado por comas que consta de y una estructura.'HyperparameterOptimizationOptions' Este argumento modifica el efecto del argumento de par nombre-valor.OptimizeHyperparameters Todos los campos de la estructura son opcionales.

Nombre del campoValoresPredeterminado
Optimizer
  • — Utilice la optimización bayesiana.'bayesopt' Internamente, esta configuración llama a .bayesopt

  • — Utilice la búsqueda de cuadrícula con valores por dimensión.'gridsearch'NumGridDivisions

  • — Buscar al azar entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en un orden aleatorio, utilizando muestreo uniforme sin reemplazo de la cuadrícula.'gridsearch' Después de la optimización, puede obtener una tabla en orden de cuadrícula mediante el comando .sortrows(Mdl.HyperparameterOptimizationResults)

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Las funciones de adquisición cuyos nombres incluyen no producen resultados reproducibles porque la optimización depende del tiempo de ejecución de la función objetivo.per-second Las funciones de adquisición cuyos nombres incluyen modifican su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte .Acquisition Function Types

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsNúmero máximo de evaluaciones de funciones objetivas.para o , y toda la cuadrícula para30'bayesopt''randomsearch''gridsearch'
MaxTime

Límite de tiempo, especificado como un real positivo. El límite de tiempo es en segundos, medido por y .tictoc El tiempo de ejecución puede superar porque no interrumpe las evaluaciones de funciones.MaxTimeMaxTime

Inf
NumGridDivisionsPara , el número de valores en cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que dan el número de valores para cada dimensión o un escalar que se aplica a todas las dimensiones. Este campo se omite para las variables categóricas.10
ShowPlotsValor lógico que indica si se deben mostrar trazados. Si , este campo traza el mejor valor de función objetivo con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es , también se traza un modelo de la función objetivo con los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se deben guardar los resultados cuando es .Optimizer'bayesopt' Si , este campo sobrescribe una variable de área de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Visualice en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Pantalla iterativa con información adicional2

Para obtener más información, consulte el argumento de par nombre-valor.bayesoptVerbose

1
UseParallelValor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere .Parallel Computing Toolbox™ Debido a la no reproducibilidad de la sincronización paralela, la optimización bayesiana paralela no produce necesariamente resultados reproducibles. Para obtener más información, consulte .Parallel Bayesian Optimizationfalse
Repartition

Valor lógico que indica si se debe volver a particionar la validación cruzada en cada iteración. Si , el optimizador utiliza una sola partición para la optimización.false

por lo general da los resultados más robustos porque esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, se requiere al menos el doble de evaluaciones de funciones.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, tal como lo creó .cvpartitioncvpartitionsi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de retención.(0,1)
KfoldUn entero mayor que 1.

Ejemplo: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Tipos de datos: struct

Otro

contraer todo

Nombres de variables predictoras, especificados como el par separado por comas que consta de y una matriz de cadenas de nombres únicos o una matriz de celdas de vectores de caracteres únicos.'PredictorNames' La funcionalidad de depende de la forma en que proporcione los datos de entrenamiento.'PredictorNames'

  • Si proporciona y , entonces puede utilizar para dar las variables predictoras en los nombres.Xy'PredictorNames'X

    • El orden de los nombres en debe corresponder al orden de columna de .PredictorNamesX Es decir, es el nombre de , es el nombre de , y así sucesivamente.PredictorNames{1}X(:,1)PredictorNames{2}X(:,2) Además, y debe ser igual.size(X,2)numel(PredictorNames)

    • De forma predeterminada, es .PredictorNames{'x1','x2',...}

  • Si proporciona , entonces puede utilizar para elegir qué variables predictoras utilizar en el entrenamiento.Tbl'PredictorNames' Es decir fitrgp utiliza las variables predictoras y la respuesta solo en el entrenamiento.PredictorNames

    • debe ser un subconjunto de y no puede incluir el nombre de la variable de respuesta.PredictorNamesTbl.Properties.VariableNames

    • De forma predeterminada, contiene los nombres de todas las variables predictoras.PredictorNames

    • Es una buena práctica especificar los predictores para el entrenamiento utilizando uno de o solo.'PredictorNames'Fórmula

Ejemplo: 'PredictorNames',{'PedalLength','PedalWidth'}

Tipos de datos: string | cell

Nombre de la variable de respuesta, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena.'ResponseName'

  • Si proporciona , puede usar para especificar un nombre para la variable de respuesta.Y'ResponseName'

  • Si suministra o , entonces no puede utilizar .ResponseVarNameFórmula'ResponseName'

Ejemplo: 'ResponseName','response'

Tipos de datos: char | string

Nivel de detalle, especificado como el par separado por comas que consta de y uno de los siguientes.'Verbose'

  • 0 — suprime los mensajes de diagnóstico relacionados con la selección de conjuntos activos y el descenso de coordenadas de bloque, pero muestra los mensajes relacionados con la estimación de parámetros, dependiendo del valor de in .fitrgp'Display'OptimizerOptions

  • 1: muestra los mensajes de diagnóstico iterativos relacionados con la estimación de parámetros, la selección de conjuntos activos y el descenso de coordenadas de bloque.fitrgp

Ejemplo: 'Verbose',1

Tamaño de caché en megabytes (MB), especificado como el par separado por comas que consta de y un escalar positivo.'CacheSize' El tamaño de caché es la memoria adicional que está disponible además de la necesaria para la selección de ajustes y conjuntos activos. utiliza para:fitrgpCacheSize

  • Decida si las distancias de punto de interpunto deben almacenarse en caché al estimar parámetros.

  • Decida cómo se deben calcular los productos vectoriales de matriz para el método de descenso de coordenadas de bloque y para realizar predicciones.

Ejemplo: 'CacheSize',2000

Tipos de datos: double

Argumentos de salida

contraer todo

Modelo de regresión de proceso gaussiano, devuelto como un objeto o un objeto.RegressionGPRegressionPartitionedModel

  • Si realiza una validación cruzada, es decir, si utiliza uno de los pares , , , , o nombre-valor, entonces es un objeto.'Crossval''KFold''Holdout''Leaveout''CVPartition'gprMdlRegressionPartitionedModel No se puede utilizar un objeto para realizar predicciones mediante .RegressionPartitionedModelpredict Para obtener más información sobre los métodos y propiedades de este objeto, consulte .RegressionPartitionedModel

  • Si no se valida cruzadamente, entonces es un objeto.gprMdlRegressionGP Puede utilizar este objeto para predicciones utilizando el predict Método. Para obtener más información sobre los métodos y propiedades de este objeto, consulte .RegressionGP

Más acerca de

contraer todo

Selección de conjuntos activos y estimación de parámetros

Para subconjuntos de datos, subconjuntos de regresores o métodos de conexión de aproximación condicional totalmente independientes (igual a , , o ), si no proporciona el conjunto activo, selecciona el conjunto activo y calcula las estimaciones de parámetros en una serie de iteraciones.FitMethod'sd''sr''fic'fitrgp

En la primera iteración, el software utiliza los valores de parámetro iniciales en vectorη0 = [β0,σ0,θ0] para seleccionar un conjunto activo A1. Maximiza la probabilidad de registro marginal GPR o su aproximación usando0 como los valores iniciales y A1 para calcular las nuevas estimaciones de parámetros1. A continuación, calcula la nueva probabilidad de registroL1 usando ?1 y A1.

En la segunda iteración, el software selecciona el conjunto activo A2 utilizando los valores de los parámetros en el valor de la1. A continuación, usando ?1 como los valores iniciales y A2, maximiza la probabilidad de registro marginal GPR o su aproximación y estima los nuevos valores de parámetros2. A continuación, el uso de la aplicación de la aplicación2 y A2, calcula el nuevo valor de probabilidad de registroL2.

En la tabla siguiente se resumen las iteraciones y lo que se calcula en cada iteración.

Número de iteraciónConjunto activoVector de parámetrosProbabilidad de registro
1Un1Η1L1
2Un2Η2L2
3Un3Η3L3

El software itera de forma similar para un número especificado de repeticiones. Puede especificar el número de replicaciones para la selección de conjuntos activos mediante el argumento de par nombre-valor.NumActiveSetRepeats

Sugerencias

  • acepta cualquier combinación de métodos de selección de ajuste, predicción y conjunto activo.fitrgp En algunos casos, es posible que no sea posible calcular las desviaciones estándar de las respuestas predichas, de ahí los intervalos de predicción. Ver predict. Y en algunos casos, el uso del método exacto podría ser costoso debido al tamaño de los datos de entrenamiento.

  • La propiedad almacena un elemento para cada uno de los nombres de variable predictor originales.PredictorNames Por ejemplo, si hay tres predictores, uno de los cuales es una variable categórica con tres niveles, es una matriz de celdas de 1 por 3 de vectores de caracteres.PredictorNames

  • La propiedad almacena un elemento para cada una de las variables predictoras, incluidas las variables ficticias.ExpandedPredictorNames Por ejemplo, si hay tres predictores, uno de los cuales es una variable categórica con tres niveles, entonces es una matriz de celdas de 1 por 5 de vectores de caracteres.ExpandedPredictorNames

  • Del mismo modo, la propiedad almacena un coeficiente beta para cada predictor, incluidas las variables ficticias.Beta

  • La propiedad almacena los datos de entrenamiento como entrada original.X No incluye las variables ficticias.

  • El enfoque predeterminado para inicializar la aproximación de Hesse puede ser lento cuando se tiene un modelo GPR con muchos parámetros del kernel, como cuando se utiliza un kernel ARD con muchos predictores.fitrgp En este caso, considere la posibilidad de especificar o un valor para el tamaño de paso inicial.'auto'

    Puede establecer para la visualización de mensajes de diagnóstico iterativos y comenzar a entrenar un modelo GPR mediante un optimizador LBFGS o quasi-Newton con la optimización predeterminada.'Verbose',1fitrgp Si los mensajes de diagnóstico iterativos no se muestran después de unos segundos, es posible que la inicialización de la aproximación de Hesse está tardando demasiado. En este caso, considere reiniciar el entrenamiento y usar el tamaño del paso inicial para acelerar la optimización.

  • Después de entrenar un modelo, puede generar código C/C++ que predice las respuestas para nuevos datos. La generación de código C/C++ requiere MATLAB Coder™. Para obtener más información, consulte .Introduction to Code Generation.

Algoritmos

  • La adaptación de un modelo GPR implica la estimación de los siguientes parámetros de modelo a partir de los datos:

    • Función de covarianza k(xi,xj|θ) parametrizado en términos de parámetros del núcleo en vectores θ (véase )Kernel (Covariance) Function Options

    • Variación de ruido, σ2

    • Vector de coeficiente de las funciones de base fija, β

    El valor del argumento de par nombre-valor es un vector que consta de valores iniciales para la desviación estándar de la señal'KernelParameters' σf y las escalas de longitud características σl. La función utiliza estos valores para determinar los parámetros del kernel.fitrgp Del mismo modo, el argumento de par nombre-valor contiene el valor inicial para la desviación estándar de ruido'Sigma' σ.

  • Durante la optimización, crea un vector de valores de parámetros iniciales sin restriccionesfitrgp η0 utilizando los valores iniciales para la desviación estándar de ruido y los parámetros del núcleo.

  • determina analíticamente los coeficientes de base explícitosfitrgp β, especificado por el argumento de par nombre-valor, a partir de los valores estimados de'Beta' θ Y σ2. por lo tanto β no aparece en el η0 vector cuando inicializa la optimización numérica.fitrgp

    Nota

    Si no especifica ninguna estimación de parámetros para el modelo GPR, utiliza el valor del argumento de par nombre-valor y otros valores de parámetro iniciales como los valores de parámetro GPR conocidos (consulte ).fitrgp'Beta'Beta En todos los demás casos, el valor del argumento se optimiza analíticamente a partir de la función objetiva.'Beta'

  • El optimizador cuasi-Newton utiliza un método de región de confianza con una aproximación densa y simétrica basada en rango 1 (SR1), cuasi-Newton al Hessian, mientras que el optimizador LBFGS utiliza un método de búsqueda de línea estándar con una memoria limitada Broyden-Fletcher-Goldfarb-Shanno (LBFGS) casi-Newton aproximación al Hessian. Véase Nocedal y Wright [6].

  • Si establece el argumento de par nombre-valor en , determina el tamaño del paso inicial,'InitialStepSize''auto'fitrgp s0, utilizando s0=0.5η0+0.1.

    s0 es el vector de paso inicial, y η0 es el vector de valores de parámetros iniciales sin restricciones.

  • Durante la optimización, utiliza el tamaño de paso inicial,fitrgp s0, como se indica a continuación:

    Si utiliza con el tamaño de paso inicial, entonces la aproximación inicial de Hesse es'Optimizer','quasinewton' g0s0I.

    Si utiliza con el tamaño de paso inicial, la aproximación inicial inversa-hessea es'Optimizer','lbfgs' s0g0I.

    g0 es el vector de gradiente inicial, y I es la matriz de identidad.

Referencias

[1] Warwick J. N., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. "The Population Biology of Abalone (_Haliotis_ species) in Tasmania. I. Blacklip Abalone (_H. rubra_) from the North Coast and Islands of Bass Strait." Sea Fisheries Division, Technical Report No. 48 (ISSN 1034-3288), 1994.

[2] S. Waugh. "Extending and Benchmarking Cascade-Correlation", PhD Thesis. Computer Science Department, University of Tasmania, 1995.

[3] Lichman, M. UCI Machine Learning Repository, Irvine, CA: University of California, School of Information and Computer Science, 2013. http://archive.ics.uci.edu/ml.

[4] Rasmussen, C. E. and C. K. I. Williams. Gaussian Processes for Machine Learning. MIT Press. Cambridge, Massachusetts, 2006.

[5] Lagarias, J. C., J. A. Reeds, M. H. Wright, and P. E. Wright. "Convergence Properties of the Nelder-Mead Simplex Method in Low Dimensions." SIAM Journal of Optimization. Vol. 9, Number 1, 1998, pp. 112–147.

[6] Nocedal, J. and S. J. Wright. Numerical Optimization, Second Edition. Springer Series in Operations Research, Springer Verlag, 2006.

Capacidades ampliadas

Introducido en R2015b