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

Ajuste un modelo de regresión de proceso Gaussiano (GPR)

Descripción

ejemplo

gprMdl = fitrgp(tbl,ResponseVarName) Devuelve un modelo de regresión de proceso Gaussiano (GPR) entrenado con los datos de ejemplo en, donde es el nombre de la variable de respuesta en.tblResponseVarNametbl

gprMdl = fitrgp(tbl,formula) Devuelve un modelo de regresión de proceso Gaussiano (GPR), entrenado con los datos de ejemplo en, para las variables predictoras y las 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 más 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 con validación cruzada.

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

Si entrena un modelo con validación cruzada, entonces es un objeto.gprMdlRegressionPartitionedModel Para un análisis más detallado sobre el objeto de validación cruzada, utilice los métodos de clase.RegressionPartitionedModel Para los métodos de esta clase, vea la página de clase.RegressionPartitionedModel

Ejemplos

contraer todo

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

Almacene los datos en un.table Visualice 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 de abulón de ocho mediciones físicas. La última variable, 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 del método 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 utilizando el modelo entrenado.

ypred = resubPredict(gprMdl);

Trace la respuesta real y las respuestas previstas.

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;

Calcule la pérdida de regresión en los datos de entrenamiento (pérdida de reenvío) para el modelo entrenado.

L = resubLoss(gprMdl)
L =      4.0064

Genere 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 reenvío) mediante el modelo entrenado.x

ypred = resubPredict(gprMdl);

Trace la respuesta real con los valores previstos.

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 cuadrada con parámetros predeterminados del kernel.

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

Ahora, ajuste un segundo modelo, donde se especifican 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);

Calcule las predicciones de reenvío de ambos modelos.

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

Trace 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 maximiza la estimación de los parámetros 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 de kernel iniciales predeterminados corresponde a una señal de baja frecuencia con alto nivel de ruido, mientras que la segunda solución con parámetros de kernel iniciales personalizados corresponde a una señal de alta frecuencia con bajo nivel de 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 cuadrada con una escala de longitud separada 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 kernel 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 del parámetro del kernel. Estandarice 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);

Calcule 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}

Visualice 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.1730
    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 aprendida.

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

El logaritmo de la escala de longitud para las variables predictoras 4th y 5th son altos en relación con los otros. Estas variables predictoras no parecen ser tan influyentes en la respuesta como las otras variables predictoras.

Ajuste el modelo GPR sin utilizar las variables 4th y 5th 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);

Calcule 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 cuando todas las variables se utilizan como variables predictoras.

Calcule la respuesta pronosticada para los datos de prueba.

 ypred = predict(gprMdl,xtest);

Trace 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 El ejemplo utiliza los datos que se suministra 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 cuadrada con parámetros predeterminados del kernel.

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

Encuentre hiperparámetros que minimicen la pérdida de validación cruzada de 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 |             | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |    1 | Best   |     0.29417 |      2.1518 |     0.29417 |     0.29417 |    0.0015045 | |    2 | Best   |    0.037898 |      1.3153 |    0.037898 |    0.060792 |      0.14147 | |    3 | Accept |      1.5693 |     0.76112 |    0.037898 |    0.040633 |       25.279 | |    4 | Accept |     0.29417 |      1.7549 |    0.037898 |    0.037984 |    0.0001091 | |    5 | Accept |     0.29393 |      1.8182 |    0.037898 |    0.038029 |     0.029932 | |    6 | Accept |     0.13152 |      1.2091 |    0.037898 |    0.038127 |      0.37127 | |    7 | Best   |    0.037785 |      1.4368 |    0.037785 |    0.037728 |      0.18116 | |    8 | Accept |     0.03783 |      1.3877 |    0.037785 |    0.036524 |      0.16251 | |    9 | Accept |    0.037833 |      1.5439 |    0.037785 |    0.036854 |      0.16159 | |   10 | Accept |    0.037835 |      1.8267 |    0.037785 |    0.037052 |      0.16072 | |   11 | Accept |     0.29417 |      1.8249 |    0.037785 |     0.03705 |   0.00038214 | |   12 | Accept |     0.42256 |      1.0248 |    0.037785 |     0.03696 |       3.2067 | |   13 | Accept |     0.03786 |      1.3548 |    0.037785 |    0.037087 |      0.15245 | |   14 | Accept |     0.29417 |      1.8118 |    0.037785 |    0.037043 |    0.0063584 | |   15 | Accept |     0.42302 |       1.027 |    0.037785 |     0.03725 |       1.2221 | |   16 | Accept |    0.039486 |      1.2477 |    0.037785 |    0.037672 |      0.10069 | |   17 | Accept |    0.038591 |      1.3022 |    0.037785 |    0.037687 |      0.12077 | |   18 | Accept |    0.038513 |       1.334 |    0.037785 |    0.037696 |       0.1227 | |   19 | Best   |    0.037757 |      1.3904 |    0.037757 |    0.037572 |      0.19621 | |   20 | Accept |    0.037787 |       1.452 |    0.037757 |    0.037601 |      0.18068 | |======================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        Sigma | |      | result |             | runtime     | (observed)  | (estim.)    |              | |======================================================================================| |   21 | Accept |     0.44917 |     0.90673 |    0.037757 |     0.03766 |       8.7818 | |   22 | Accept |    0.040201 |      1.2108 |    0.037757 |    0.037601 |     0.075414 | |   23 | Accept |    0.040142 |      1.1481 |    0.037757 |    0.037607 |     0.087198 | |   24 | Accept |     0.29417 |      1.8435 |    0.037757 |     0.03758 |    0.0031018 | |   25 | Accept |     0.29417 |      1.7875 |    0.037757 |    0.037555 |   0.00019545 | |   26 | Accept |     0.29417 |      1.7721 |    0.037757 |    0.037582 |     0.013608 | |   27 | Accept |     0.29417 |      1.8143 |    0.037757 |    0.037556 |   0.00076147 | |   28 | Accept |     0.42162 |      1.0185 |    0.037757 |    0.037854 |       0.6791 | |   29 | Best   |    0.037704 |      1.3398 |    0.037704 |    0.037908 |       0.2367 | |   30 | Accept |    0.037725 |      1.4091 |    0.037704 |    0.037881 |      0.21743 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 59.3447 seconds. Total objective function evaluation time: 43.2254  Best observed feasible point:     Sigma      ______      0.2367  Observed objective function value = 0.037704 Estimated objective function value = 0.037881 Function evaluation time = 1.3398  Best estimated feasible point (according to models):      Sigma      _______      0.16159  Estimated objective function value = 0.037881 Estimated function evaluation time = 1.3583 

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 de abulón, del repositorio de aprendizaje automático de UCI.[1][2][3] Descargue los datos y guárdela en su carpeta actual con el nombre ' Abalone. Data '.

Almacene los datos en un.table Visualice 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 de abulón de ocho mediciones físicas. La última variable, 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.

Entrenar un modelo GPR validado mediante el 25% de los datos para la validación.

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

Calcule la pérdida media en los pliegues utilizando modelos entrenados en observaciones desdobladas.

kfoldLoss(cvgprMdl) 
ans =    4.6409

Predecir las respuestas para los datos que no se pliegan.

ypred = kfoldPredict(cvgprMdl); 

Trace las respuestas verdaderas usadas 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 cuadrada como una función de kernel personalizada.

Puede calcular la función de kernel exponencial cuadrada 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 puede ser aplicada por la parametrización no restringida,
<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 algunos vectores de parametrización sin restricciones
<math display="block">
<mrow>
<mi>θ</mi>
</mrow>
</math>
.

Por lo tanto, puede definir la función de kernel exponencial cuadrada 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í 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 los parámetros cuando se utiliza una función incorporada del kernel, mientras que cuando se utiliza una función de kernel personalizada usa derivados numéricos.fitrgp

Calcule la pérdida de reenvío para este modelo.

L = resubLoss(gprMdl)
L = 0.0391 

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

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

Calcule la pérdida de reenvío para este modelo.

L2 = resubLoss(gprMdl2)
L2 = 0.0391 

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

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

Establezca la inicialización y el tipo del generador de números aleatorios para 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 4, 7 y 13.

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 a.1

sigmaN0 = 1;

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

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

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

Especifique el tamaño de paso inicial como 1 para determinar la aproximación inicial de hessian 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 a la hessian es más eficiente en memoria que el almacenamiento de la matriz completa de hessian. Además, el uso del tamaño de paso inicial para determinar la aproximación inicial de hessian puede ayudar a acelerar la optimización.

Encuentre los pesos predictores tomando el exponencial de las escalas de longitud aprendida 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

Trace los pesos predictores normalizados.

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

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

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificado como un.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 las variables de varias columnas ni 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 en debe ser igual.tbl

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

Si los Datos predictores 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 variable de respuesta, especificado como el nombre de una variable en.tbl Debe especificar como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si la variable de respuesta se almacena en (as), a continuación, especifíquese como.ytbltbl.y'y' De lo contrario, el software trata todas las columnas de, incluidos, como predictores al entrenar el modelo.tbly

Tipos de datos: char | string

Variables de respuesta y predictoras que se utilizarán en la formación del modelo, especificadas como un vector de caracteres o un escalar de cadena en forma de.'y~x1+x2+x3' En esta forma, 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 que se usarán al entrenar el modelo.tbl Si especifica una fórmula, las variables que no aparezcan no se utilizarán para entrenar el modelo.Fórmula

La fórmula no indica la forma de la.BasisFunction

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

Tipos de datos: char | string

Datos predictores para el modelo GPR, especificados como una-por-matriz. 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 deben ser iguales.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 vector a-por-1.n Puede omitir si proporciona los datos de entrenamiento que también incluye.ytbly En ese caso, utilice para identificar la variable de respuesta o utilizar para identificar las variables de respuesta y predictores.ResponseVarNameFórmula

Tipos de datos: double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.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étodo de aproximación regresivos para la estimación de parámetros, utiliza una función de base lineal, utiliza una aproximación de matriz expansiva 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 usar ningún argumento de par nombre-valor de validación cruzada junto con el argumento de par nombre-valor.'OptimizeHyperparameters' Solo puede modificar la validación cruzada 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 FITDescripció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 ≤ 2000, donde es el número de observaciones.nn
'sd'Subconjunto de aproximación de puntos de datos. Por defecto si > 2000, donde está el número de observaciones.nn
'sr'Subconjunto de aproximación 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 de base y β es un vector de coeficientes base de-por-1.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].

El manejador de funciones

Identificador de función, que llama como:hfcnfitrgp

H=hfcn(X),

donde es una-por-matriz de predictores y es una-por-matriz de funciones de 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 consta de y-por-1 Vector, donde es el número de columnas en la matriz de 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 (ver también).BasisFunction

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

Tipos de datos: double

Valor inicial de 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 Cuando es, no optimiza el valor de, pero en su lugar toma el valor inicial como el valor a lo largo de sus cálculos.ConstantSigmatruefitrgpSigma

Ejemplo: 'ConstantSigma',true

Tipos de datos: logical

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

Ejemplo: 'SigmaLowerBound',0.02

Tipos de datos: double

Lista de predictores categóricos, especificada como el par separado por comas que consta de uno de estos valores:'CategoricalPredictors'

ValorDescripción
Vector de enteros positivosUna entrada en el vector es el 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.PredictorNames Pad los nombres con espacios en blanco adicionales por lo que cada fila de la matriz de caracteres tiene la misma longitud.
Matriz de cadenas o matriz de vectores de caracteresCada elemento de la matriz es el nombre de una variable predictora. Los nombres deben coincidir con las entradas.PredictorNames
todosTodos los predictores son categóricos.

De forma predeterminada, si los Datos predictores están en una tabla (),tbl fitrgp asume que una variable es categórica si contiene valores lógicos, valores categóricos, una matriz de cadenas o una matriz de vectores de caracteres. Si los Datos predictores son una matriz (),X fitrgp asume que todos los predictores son continuos. Para identificar los predictores categóricos cuando los datos son una matriz, utilice el argumento de par nombre-valor.'CategoricalPredictors'

Ejemplo: 'CategoricalPredictors','all'

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

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

Si establece, el software centra y escala cada columna de los Datos predictores, por la media de la 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 los 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 el registro de verosimilitud y degradado para la estimación de parámetros mediante el subconjunto de regresores () y métodos de aproximación condicionales () totalmente independientes, especificados como el par separado por comas que consta de 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 degradados de probabilidad de registro.

Ejemplo: 'ComputationMethod','v'

Función de 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'Kernel exponencial cuadrado.
'matern32'Kernel de Matern con el parámetro 3/2.
'matern52'Kernel de Matern con el parámetro 5/2.
'rationalquadratic'Kernel cuadrático racional.
'ardexponential'Kernel exponencial con una escala de longitud separada por predictor.
'ardsquaredexponential'Kernel exponencial cuadrado con una escala de longitud separada por predictor.
'ardmatern32'Kernel de Matern con el parámetro 3/2 y una escala de longitud separada por predictor.
'ardmatern52'Kernel de Matern con el parámetro 5/2 y una escala de longitud separada por predictor.
'ardrationalquadratic'Kernel cuadrático racional con una escala de longitud separada por predictor.
El manejador de funcionesUn identificador de función que se puede llamar así: donde es una-por-matriz, es una-por-matriz y es una-por-matriz de productos del kernel tal que (,) es el producto del kernel 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.Opciones de función de kernel (covarianza)

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 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 '
o o'exponential''squaredexponential''matern32''matern52'Vector 2 por 1, 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'Vector 3 por 1, donde contiene la escala de longitud, contiene el parámetro de mezcla de escala 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-mezcla es 1. Es decir
phi = [mean(std(X));1;std(y)/sqrt(2)]
o o'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-mezcla es 1. Es decir
phi = [std(X)';1;std(y)/sqrt(2)]
El manejador de funciones-por-1 vector como el valor inicial del vector de parámetros sin restricciones para la función del kernel personalizado.rphikfcn Cuando es un identificador de función, debe proporcionar los valores iniciales para los parámetros del kernel.
KernelFunction

Para obtener más información sobre las funciones del kernel, consulte.Opciones de función de kernel (covarianza)

Ejemplo: 'KernelParameters',theta

Tipos de datos: double

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

Ejemplo: 'DistanceMethod','accurate'

Selección de conjunto activo

contraer todo

Las observaciones en el conjunto activo, especificadas como el par separado por comas que consta de y un vector de-por-1 de enteros que van desde 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 para entrenar el modelo GPR.fitrgpActiveSet El conjunto activo no puede tener elementos duplicados.

Si usted 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 es el número de observaciones.'sd''sr''fic''ActiveSetSize'mmnn

El valor predeterminado es min (1000,) cuando es o, y min (2000,), de lo contrario.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'La aproximación de matriz expansiva dispersa
'entropy'Selección diferencial basada en la entropía
'likelihood'Subconjunto de regresores registra la selección basada en la verosimilitud

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

Ejemplo: 'ActiveSetMethod','entropy'

Tamaño de conjunto de búsqueda aleatorio por inclusión expansiva para la selección de conjunto activo, 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 del conjunto activo, especificada como el par separado por comas que consta de 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 conjunto activo intercalado 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 uno de los siguientes.'PredictMethod'

MétodoDescripción
'exact'Método de regresión de proceso Gaussiano exacto. Por defecto, si ≤ 10000.n
'bcd'Bloquear descenso de coordenadas. Por defecto, si > 10000.n
'sd'Subconjunto de la aproximación de datapoints.
'sr'Subconjunto de aproximación de regresores.
'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 intervalo de 1 a, donde es el número de observaciones.'bcd''BlockSizeBCD'nn

Ejemplo: 'BlockSizeBCD',1500

Tipos de datos: double

Número de selecciones codiciosas 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 las iteraciones del método de descenso de coordenadas de bloque (), especificadas 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 (), especificadas 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 de método de descenso de coordenadas de bloque (), especificadas como el par separado por comas que consta de y un valor entero.'bcd''IterationLimitBCD'

Ejemplo: 'IterationLimitBCD',10000

Tipos de datos: double

Optimización

contraer todo

Optimizador que se usará 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'La aproximación densa, simétrica de rango 1, quasi-Newton al hessian
'lbfgs'La aproximación cuasi-Newton basada en LBFGS a la
'fminsearch'Optimización no lineal no restringida 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 una estructura u objeto creado por, o.Optimizer'OptimizerOptions'optimsetstatset('fitrgp')optimoptions

OptimizerCrear opciones de optimizador mediante
'fminsearch'estructuraoptimset
O'quasinewton''lbfgs'estructurastatset('fitrgp')
O'fminunc''fmincon'objetooptimoptions

Las opciones predeterminadas dependen del tipo de optimizador.

Ejemplo: 'OptimizerOptions',opt

Tamaño del paso inicial, especificado como el par separado por comas que consta de un escalar positivo real 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 inicial del paso puede determinar la aproximación inicial de hessian durante la optimización.

De forma predeterminada, no utiliza el tamaño de paso inicial para determinar la aproximación inicial de hessian.fitrgp Para usar el tamaño de paso inicial, establezca un valor para el argumento de par nombre-valor o especifique que determine un valor automáticamente.'InitialStepSize''InitialStepSize','auto'fitrgp Para obtener más información, 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 cualquiera o.'CrossVal''off''on' Si es así, devuelve un modelo GPR validado de forma cruzada con 10 pliegues.'on'fitrgp

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

Como alternativa, puede utilizar el método para su 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 se especifica, no se puede especificar, o.CVPartitionHoldoutKFoldLeaveout

Fracción de los datos que se usarán para las pruebas en la validación de exclusión, especificadas 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.
Se reserva aleatoriamente alrededor de * 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 se especifica, no se puede especificar, o.HoldoutCVPartitionKFoldLeaveout

Tipos de datos: double

Número de pliegues que se utilizarán en el modelo GPR con validación cruzada, especificado como el par separado por comas y que consta de un valor entero positivo. debe ser mayor que 1.'KFold'KFold Si especifica entonces el software:'KFold',k 1.
Divide aleatoriamente los datos en conjuntos. 2.k
Para cada conjunto, reserva el conjunto como datos de prueba, y entrena el modelo usando el otro – 1 sets. 3.k
Almacena los modelos compactos y entrenados en las celdas de un array de celdas a-por-1.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 se especifica, no se puede especificar, o.KFoldCVPartitionHoldoutLeaveout

Tipos de datos: double

Indicador de validación cruzada de Leave-One-out, especificado como el par separado por comas que consta de y cualquiera o.'Leaveout''off''on'

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

Ejemplo: 'Leaveout','on'

Si se especifica, no se puede especificar, o.LeaveoutCVPartitionHoldoutKFold

La optimización de hiperparámetros

contraer todo

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

  • — No optimice.'none'

  • Uso.'auto'{'Sigma'}

  • : Optimice todos los parámetros elegibles, equivalentes a.'all'{'BasisFunction','KernelFunction','KernelScale','Sigma','Standardize'}

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

  • Vector de objetos, normalmente la salida de.optimizableVariablehiperparámetros

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

Nota

valores reemplazan los valores que se establecen con otros argumentos de par nombre-valor.'OptimizeHyperparameters' Por ejemplo, si se establece en hace que los valores se apliquen.'OptimizeHyperparameters''auto''auto'

Los parámetros elegibles para son:fitrgp

  • — busca entre, y.BasisFunctionfitrgp'constant''none''linear''pureQuadratic'

  • : busca 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 kernel, que se mantiene constante durante el ajuste.KernelScalefitrgpKernelParameters En este caso, todas las cotas de entrada están restringidas para tener el mismo valor. busca entre 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 de ARD.KernelScale

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

    .ResponseStd = std(y)

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

  • — busca entre y.Standardizefitrgptruefalse

Establezca parámetros no predeterminados pasando un vector de objetos que tienen 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 comandos y los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y los trazados, 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 ver un ejemplo, vea.Optimice la regresión GPR

Ejemplo: 'auto'

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

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

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

  • — Búsqueda aleatoria entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en orden aleatorio, utilizando muestreo uniforme sin sustitución de la rejilla.'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 objetiva.per-second Las funciones de adquisición cuyos nombres incluyen modificar su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte.Tipos de función de adquisición

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

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

Inf
NumGridDivisionsPara el número de valores de cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que da 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 mostrarán los trazados. Si, este campo traza el mejor valor de la función objetiva con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es así, también traza un modelo de la función objetiva contra los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se guardan los resultados cuando es.Optimizer'bayesopt' Si, este campo sobrescribe una variable de espacio de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Mostrar en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Visualización iterativa con información adicional2

Para obtener información detallada, vea 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™ Para obtener más información, consulte.Optimización bayesiana paralelafalse
Repartition

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

normalmente proporciona los resultados más sólidos, ya que esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, requiere al menos el doble de evaluaciones de función.true

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

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

Tipos de datos: struct

Otro

contraer todo

Los 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 se suministra y, a continuación, se puede utilizar para dar las variables predictoras en los nombres.Xy'PredictorNames'X

    • El orden de los nombres en debe corresponder al orden de las columnas de.PredictorNamesX Es decir, es el nombre de, es el nombre de, y así sucesivamente.PredictorNames{1}X(:,1)PredictorNames{2}X(:,2) También, y debe ser igual.size(X,2)numel(PredictorNames)

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

  • Si usted suministra, entonces usted puede utilizar para elegir qué variables predictoras a 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 para especificar los predictores para el entrenamiento utilizando uno de o sólo.'PredictorNames'Fórmula

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

Tipos de datos: string | cell

Nombre de 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 usted suministra o, entonces usted no puede utilizar.ResponseVarNameFórmula'ResponseName'

Ejemplo: 'ResponseName','response'

Tipos de datos: char | string

Nivel de verbosidad, 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 conjunto activo 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 conjunto activo 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 un escalar positivo.'CacheSize' El tamaño de la caché es la memoria adicional que está disponible además de la necesaria para el ajuste y la selección activa del conjunto. utiliza para:fitrgpCacheSize

  • Decida si las distancias entre puntos deben ser almacenadas 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 a o un objeto.RegressionGPRegressionPartitionedModel

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

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

Más acerca de

contraer todo

Selección de conjunto activo y estimación de parámetros

Para el subconjunto de datos, subconjunto de regresores o métodos de ajuste 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 del logaritmo marginal GPR o su aproximación usando η0 como los valores iniciales y un1 para calcular el nuevo parámetro estima η1. A continuación, calcula la nueva probabilidad de registroL1 usando η1 y un1.

En la segunda iteración, el software selecciona el conjunto activo A2 utilizando los valores de parámetro en η1. Luego, usando η1 como los valores iniciales y un2, maximiza la probabilidad del registro marginal GPR o su aproximación y estima los nuevos valores de parámetro η2. A continuación, utilizando η2 y un2, 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ónActive setVector de parámetrosLog verosimilitud
1Un1Η1L1
2Un2Η2L2
3Un3Η3L3
............

El software se repite de forma similar para un número especificado de repeticiones. Puede especificar el número de replicaciones para la selección de conjunto activo 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 puede que no sea posible calcular las desviaciones estándar de las respuestas pronosticadas, por lo tanto, 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 variables predictoras originales.PredictorNames Por ejemplo, si hay tres predictores, uno de los cuales es una variable categórica con tres niveles, es una matriz de 1 por 3 celdas 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 1 por 5 celdas 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 hessian en 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 del paso inicial.'auto'

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

  • Después de entrenar un modelo, puede generar código de C/C++ que predice las respuestas de los nuevos datos. La generación de código C/C++ requiere MATLAB®Coder™. Para obtener más información, consulte.Introducción a la generación de código.

Algoritmos

  • El ajuste de un modelo GPR implica estimar los siguientes parámetros del modelo a partir de los datos:

    • Función de covarianza k(xi,xj|θ) parametrizado en términos de parámetros del kernel en Vector θ VerOpciones de función de kernel (covarianza)

    • Variación de ruido, σ2

    • Vector de coeficiente de 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ística σl. La función utiliza estos valores para determinar los parámetros del kernel.fitrgp De forma similar, el argumento de par nombre-valor contiene el valor inicial de la desviación estándar de ruido'Sigma' σ.

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

  • 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 al inicializar 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 quasi-Newton utiliza un método de región de confianza con una aproximación densa, simétrica de rango 1 (SR1), quasi-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) aproximación cuasi-Newton al hessian. Véase Nocedal y Wright [6].

  • Si establece el argumento de par nombre-valor, 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 los valores de parámetro iniciales sin restricciones.

  • Durante la optimización, utiliza el tamaño de paso inicial,fitrgp s0, de la siguiente manera:

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

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

    g0 es el vector de degradado 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