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.

fitcnb

Tren multiclase ingenuo modelo Bayes

Descripción

Mdl = fitcnb(Tbl,ResponseVarName) devuelve un modelo Bayes ingenuo multiclase ( ), entrenado por los predictores en las etiquetas de tabla y clase en la variable .MdlTblTbl.ResponseVarName

Mdl = fitcnb(Tbl,formula) devuelve un modelo Bayes ingenuo multiclase ( ), entrenado por los predictores en la tabla. es un modelo explicativo de la respuesta y un subconjunto de variables predictoras utilizadas para encajar .MdlTblFórmulaTblMdl

Mdl = fitcnb(Tbl,Y) devuelve un modelo Bayes ingenuo multiclase ( ), entrenado por los predictores en las etiquetas de tabla y clase en la matriz .MdlTblY

ejemplo

Mdl = fitcnb(X,Y) devuelve un modelo Bayes ingenuo multiclase ( ), entrenado por predictores y etiquetas de clase.MdlXY

ejemplo

Mdl = fitcnb(___,Name,Value) devuelve un clasificador Bayes ingenuo con opciones adicionales especificadas por uno o más argumentos de par, utilizando cualquiera de las sintaxis anteriores.Name,Value Por ejemplo, puede especificar una distribución para modelar los datos, probabilidades previas para las clases o el ancho de banda de la ventana de suavizado del kernel.

Ejemplos

contraer todo

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas(:,3:4); Y = species; tabulate(Y)
       Value    Count   Percent       setosa       50     33.33%   versicolor       50     33.33%    virginica       50     33.33% 

El software puede clasificar datos con más de dos clases utilizando métodos Bayes ingenuos.

Entrena a un clasificador Bayes ingenuo. Se recomienda especificar el orden de clases.

Mdl = fitcnb(X,Y,...     'ClassNames',{'setosa','versicolor','virginica'})
Mdl =    ClassificationNaiveBayes               ResponseName: 'Y'      CategoricalPredictors: []                 ClassNames: {'setosa'  'versicolor'  'virginica'}             ScoreTransform: 'none'            NumObservations: 150          DistributionNames: {'normal'  'normal'}     DistributionParameters: {3x2 cell}     Properties, Methods  

es un clasificador entrenado.MdlClassificationNaiveBayes

De forma predeterminada, el software modela la distribución predictora dentro de cada clase utilizando una distribución gaussiana que tiene alguna desviación media y estándar. Utilice la notación de puntos para mostrar los parámetros de un ajuste gaussiano determinado, por ejemplo, mostrar el ajuste para la primera función dentro de .setosa

setosaIndex = strcmp(Mdl.ClassNames,'setosa'); estimates = Mdl.DistributionParameters{setosaIndex,1}
estimates = 2×1

    1.4620
    0.1737

La media es y la desviación estándar es .1.46200.1737

Trazar los contornos gaussianos.

figure gscatter(X(:,1),X(:,2),Y); h = gca; cxlim = h.XLim; cylim = h.YLim; hold on Params = cell2mat(Mdl.DistributionParameters);  Mu = Params(2*(1:3)-1,1:2); % Extract the means Sigma = zeros(2,2,3); for j = 1:3     Sigma(:,:,j) = diag(Params(2*j,:)).^2; % Create diagonal covariance matrix     xlim = Mu(j,1) + 4*[-1 1]*sqrt(Sigma(1,1,j));     ylim = Mu(j,2) + 4*[-1 1]*sqrt(Sigma(2,2,j));     f = @(x1,x2)reshape(mvnpdf([x1(:),x2(:)],Mu(j,:),Sigma(:,:,j)),size(x1));     fcontour(f,[xlim ylim]) % Draw contours for the multivariate normal distributions  end h.XLim = cxlim; h.YLim = cylim; title('Naive Bayes Classifier -- Fisher''s Iris Data') xlabel('Petal Length (cm)') ylabel('Petal Width (cm)') legend('setosa','versicolor','virginica') hold off

Puede cambiar la distribución predeterminada mediante el argumento de par nombre-valor .'DistributionNames' Por ejemplo, si algunos predictores son categóricos, puede especificar que sean variables aleatorias multivariantes y multinomiales utilizando .'DistributionNames','mvmn'

Construye un clasificador Bayes ingenuo para el conjunto de datos de iris de Fisher. Además, especifique probabilidades previas durante el entrenamiento.

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas; Y = species; classNames = {'setosa','versicolor','virginica'}; % Class order

es una matriz numérica que contiene cuatro medidas de pétalos para 150 iris. es una matriz de células de vectores de caracteres que contiene las especies de iris correspondientes.XY

De forma predeterminada, la distribución de probabilidad de clase anterior es la distribución de frecuencia relativa de las clases en el conjunto de datos, que en este caso es del 33% para cada especie. Sin embargo, supongamos que usted sabe que en la población el 50% de los iris son setosa, el 20% son versicolor, y el 30% son virginicas. Puede incorporar esta información especificando esta distribución como una probabilidad previa durante el entrenamiento.

Entrena a un clasificador Bayes ingenuo. Especifique el orden de clase y la distribución de probabilidad de clase anterior.

prior = [0.5 0.2 0.3]; Mdl = fitcnb(X,Y,'ClassNames',classNames,'Prior',prior)
Mdl =    ClassificationNaiveBayes               ResponseName: 'Y'      CategoricalPredictors: []                 ClassNames: {'setosa'  'versicolor'  'virginica'}             ScoreTransform: 'none'            NumObservations: 150          DistributionNames: {'normal'  'normal'  'normal'  'normal'}     DistributionParameters: {3x4 cell}     Properties, Methods  

es un clasificador entrenado, y algunas de sus propiedades aparecen en la ventana de comandos.MdlClassificationNaiveBayes El software trata a los predictores como independientes dada una clase y, de forma predeterminada, se ajusta a ellos utilizando distribuciones normales.

El ingenuo algoritmo Bayes no utiliza las probabilidades de clase anterior durante el entrenamiento. Por lo tanto, puede especificar probabilidades de clase anteriores después del entrenamiento mediante la notación de puntos. Por ejemplo, supongaque que desea ver la diferencia de rendimiento entre un modelo que utiliza las probabilidades de clase anterior predeterminadas y un modelo que utiliza .prior

Cree un nuevo modelo Bayes ingenuo basado en , y especifique que la distribución de probabilidad de clase anterior es una distribución de clase empírica.Mdl

defaultPriorMdl = Mdl; FreqDist = cell2table(tabulate(Y)); defaultPriorMdl.Prior = FreqDist{:,3};

El software normaliza las probabilidades de clase anterior a suma a .1

Calcule el error de validación cruzada para ambos modelos mediante la validación cruzada de 10 veces.

rng(1); % For reproducibility defaultCVMdl = crossval(defaultPriorMdl); defaultLoss = kfoldLoss(defaultCVMdl)
defaultLoss = 0.0533 
CVMdl = crossval(Mdl); Loss = kfoldLoss(CVMdl)
Loss = 0.0340 

funciona mejor que .MdldefaultPriorMdl

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas; Y = species;

Entrena a un clasificador Bayes ingenuo usando cada predictor. Se recomienda especificar el orden de clases.

Mdl1 = fitcnb(X,Y,...     'ClassNames',{'setosa','versicolor','virginica'})
Mdl1 =    ClassificationNaiveBayes               ResponseName: 'Y'      CategoricalPredictors: []                 ClassNames: {'setosa'  'versicolor'  'virginica'}             ScoreTransform: 'none'            NumObservations: 150          DistributionNames: {'normal'  'normal'  'normal'  'normal'}     DistributionParameters: {3x4 cell}     Properties, Methods  
Mdl1.DistributionParameters
ans=3×4 cell
    {2x1 double}    {2x1 double}    {2x1 double}    {2x1 double}
    {2x1 double}    {2x1 double}    {2x1 double}    {2x1 double}
    {2x1 double}    {2x1 double}    {2x1 double}    {2x1 double}

Mdl1.DistributionParameters{1,2}
ans = 2×1

    3.4280
    0.3791

De forma predeterminada, el software modela la distribución predictora dentro de cada clase como gaussiano con alguna desviación media y estándar. Hay cuatro predictores y tres niveles de clase. Cada celda en corresponde a un vector numérico que contiene la media y la desviación estándar de cada distribución, por ejemplo, la media y la desviación estándar para los anchos de sépalo de iris setosa son y , respectivamente.Mdl1.DistributionParameters3.42800.3791

Calcule la matriz de confusión para .Mdl1

isLabels1 = resubPredict(Mdl1); ConfusionMat1 = confusionchart(Y,isLabels1);

El elemento ( , ) del gráfico de matriz de confusión representa el número de observaciones que el software clasifica como , pero están realmente en clase según los datos.jkkj

Vuelva a entrenar el clasificador utilizando la distribución gaussiana para los predictores 1 y 2 (las longitudes y anchuras del sépalo), y la densidad normal predeterminada del kernel para los predictores 3 y 4 (las longitudes y anchuras de los pétalos).

Mdl2 = fitcnb(X,Y,...     'DistributionNames',{'normal','normal','kernel','kernel'},...     'ClassNames',{'setosa','versicolor','virginica'}); Mdl2.DistributionParameters{1,2}
ans = 2×1

    3.4280
    0.3791

El software no entrena los parámetros a la densidad del núcleo. Más bien, el software elige un ancho óptimo. Sin embargo, puede especificar un ancho mediante el argumento de par nombre-valor.'Width'

Calcule la matriz de confusión para .Mdl2

isLabels2 = resubPredict(Mdl2); ConfusionMat2 = confusionchart(Y,isLabels2);

En función de las matrices de confusión, los dos clasificadores funcionan de forma similar en la muestra de entrenamiento.

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas; Y = species; rng(1); % For reproducibility

Entrene y valide un clasificador Bayes ingenuo utilizando las opciones predeterminadas y -fold cross-validation.k Se recomienda especificar el orden de clases.

CVMdl1 = fitcnb(X,Y,...     'ClassNames',{'setosa','versicolor','virginica'},...     'CrossVal','on');

De forma predeterminada, el software modela la distribución predictora dentro de cada clase como gaussiano con alguna desviación media y estándar. es un modelo.CVMdl1ClassificationPartitionedModel

Cree una plantilla de clasificador binario Bayes no predeterminada y entrene un modelo multiclase de códigos de salida de corrección de errores.

t = templateNaiveBayes(); CVMdl2 = fitcecoc(X,Y,'CrossVal','on','Learners',t);

es un modelo.CVMdl2ClassificationPartitionedECOC Puede especificar opciones para los alumnos binarios ingenuos de Bayes utilizando los mismos argumentos de par nombre-valor que para .fitcnb

Compare el error de clasificación -fold fuera de la muestra (proporción de observaciones mal clasificadas).k

classErr1 = kfoldLoss(CVMdl1,'LossFun','ClassifErr')
classErr1 = 0.0533 
classErr2 = kfoldLoss(CVMdl2,'LossFun','ClassifErr')
classErr2 = 0.0467 

tiene un error de generalización menor.Mdl2

Algunos filtros de spam clasifican un correo electrónico entrante como spam en función de cuántas veces se produce una palabra o puntuación (llamadas tokens) en un correo electrónico. Los predictores son las frecuencias de palabras o puntuaciones particulares en un correo electrónico. Por lo tanto, los predictores componen variables aleatorias multinomiales.

Este ejemplo ilustra la clasificación mediante Bayes ingenuos y predictores multinomiales.

Crear datos de formación

Supongamos que ha observado 1000 correos electrónicos y los clasificó como spam o no spam. Para ello, asigne al azar -1 o 1 a cada correo electrónico.y

n = 1000;                       % Sample size rng(1);                         % For reproducibility Y = randsample([-1 1],n,true);  % Random labels

Para crear los datos del predictor, suponga que hay cinco tokens en el vocabulario y 20 tokens observados por correo electrónico. Genere datos predictores a partir de los cinco tokens dibujando desviados multinomiales aleatorios. Las frecuencias relativas de los tokens correspondientes a los correos electrónicos no deseados deben diferir de los correos electrónicos que no son spam.

tokenProbs = [0.2 0.3 0.1 0.15 0.25;...     0.4 0.1 0.3 0.05 0.15];             % Token relative frequencies   tokensPerEmail = 20;                    % Fixed for convenience X = zeros(n,5); X(Y == 1,:) = mnrnd(tokensPerEmail,tokenProbs(1,:),sum(Y == 1)); X(Y == -1,:) = mnrnd(tokensPerEmail,tokenProbs(2,:),sum(Y == -1));

Entrena al clasificador

Entrena a un clasificador Bayes ingenuo. Especifique que los predictores son multinomios.

Mdl = fitcnb(X,Y,'DistributionNames','mn');

es un clasificador entrenado.MdlClassificationNaiveBayes

Evalúe el rendimiento en la muestra estimando el error de clasificación incorrecta.Mdl

isGenRate = resubLoss(Mdl,'LossFun','ClassifErr')
isGenRate = 0.0200 

La tasa de clasificación errónea en la muestra es del 2%.

Crear nuevos datos

Generar aleatoriamente desviados que representan un nuevo lote de correos electrónicos.

newN = 500; newY = randsample([-1 1],newN,true); newX = zeros(newN,5); newX(newY == 1,:) = mnrnd(tokensPerEmail,tokenProbs(1,:),...     sum(newY == 1)); newX(newY == -1,:) = mnrnd(tokensPerEmail,tokenProbs(2,:),...     sum(newY == -1));

Evaluar el rendimiento del clasificador

Clasificar los nuevos correos electrónicos utilizando el clasificador Bayes ingenuo entrenado y determinar si el algoritmo generaliza.Mdl

oosGenRate = loss(Mdl,newX,newY)
oosGenRate = 0.0261 

La tasa de clasificación errónea fuera de muestra es del 2,6%, lo que indica que el clasificador generaliza bastante bien.

En este ejemplo se muestra cómo utilizar el par nombre-valor para minimizar la pérdida de validación cruzada en un clasificador Bayes ingenuo mediante .OptimizeHyperparametersfitcnb El ejemplo utiliza los datos de iris de Fisher.

Cargue los datos del iris de Fisher.

load fisheriris X = meas; Y = species; classNames = {'setosa','versicolor','virginica'};

Optimice la clasificación utilizando los parámetros 'auto'.

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

rng default Mdl = fitcnb(X,Y,'ClassNames',classNames,'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',...     'expected-improvement-plus'))
Warning: It is recommended that you first standardize all numeric predictors when optimizing the Naive Bayes 'Width' parameter. Ignore this warning if you have done that. 
|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | Distribution-|        Width | |      | result |             | runtime     | (observed)  | (estim.)    | Names        |              | |=====================================================================================================| |    1 | Best   |    0.053333 |     0.93174 |    0.053333 |    0.053333 |       normal |            - | 
|    2 | Best   |    0.046667 |      1.0933 |    0.046667 |    0.049998 |       kernel |      0.11903 | 
|    3 | Accept |    0.053333 |      0.3372 |    0.046667 |    0.046667 |       normal |            - | 
|    4 | Accept |    0.086667 |     0.86381 |    0.046667 |    0.046668 |       kernel |       2.4506 | 
|    5 | Accept |    0.046667 |     0.65976 |    0.046667 |    0.046663 |       kernel |      0.10449 | 
|    6 | Accept |    0.073333 |       0.944 |    0.046667 |    0.046665 |       kernel |     0.025044 | 
|    7 | Accept |    0.046667 |     0.61814 |    0.046667 |    0.046655 |       kernel |      0.27647 | 
|    8 | Accept |    0.046667 |     0.67763 |    0.046667 |    0.046647 |       kernel |       0.2031 | 
|    9 | Accept |        0.06 |      0.5542 |    0.046667 |    0.046658 |       kernel |      0.44271 | 
|   10 | Accept |    0.046667 |     0.48104 |    0.046667 |    0.046618 |       kernel |       0.2412 | 
|   11 | Accept |    0.046667 |     0.97887 |    0.046667 |    0.046619 |       kernel |     0.071925 | 
|   12 | Accept |    0.046667 |     0.38588 |    0.046667 |    0.046612 |       kernel |     0.083459 | 
|   13 | Accept |    0.046667 |      1.0909 |    0.046667 |    0.046603 |       kernel |      0.15661 | 
|   14 | Accept |    0.046667 |       1.143 |    0.046667 |    0.046607 |       kernel |      0.25613 | 
|   15 | Accept |    0.046667 |     0.33552 |    0.046667 |    0.046606 |       kernel |      0.17776 | 
|   16 | Accept |    0.046667 |     0.47652 |    0.046667 |    0.046606 |       kernel |      0.13632 | 
|   17 | Accept |    0.046667 |     0.85586 |    0.046667 |    0.046606 |       kernel |     0.077598 | 
|   18 | Accept |    0.046667 |     0.40451 |    0.046667 |    0.046626 |       kernel |      0.25646 | 
|   19 | Accept |    0.046667 |      1.1154 |    0.046667 |    0.046626 |       kernel |     0.093584 | 
|   20 | Accept |    0.046667 |      1.4797 |    0.046667 |    0.046627 |       kernel |     0.061602 | 
|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | Distribution-|        Width | |      | result |             | runtime     | (observed)  | (estim.)    | Names        |              | |=====================================================================================================| |   21 | Accept |    0.046667 |     0.43023 |    0.046667 |    0.046627 |       kernel |     0.066532 | 
|   22 | Accept |    0.093333 |      0.3842 |    0.046667 |    0.046618 |       kernel |       5.8968 | 
|   23 | Accept |    0.046667 |      0.4128 |    0.046667 |    0.046619 |       kernel |     0.067045 | 
|   24 | Accept |    0.046667 |     0.37594 |    0.046667 |     0.04663 |       kernel |      0.25281 | 
|   25 | Accept |    0.046667 |     0.32105 |    0.046667 |     0.04663 |       kernel |       0.1473 | 
|   26 | Accept |    0.046667 |     0.50331 |    0.046667 |    0.046631 |       kernel |      0.17211 | 
|   27 | Accept |    0.046667 |     0.44468 |    0.046667 |    0.046631 |       kernel |      0.12457 | 
|   28 | Accept |    0.046667 |      0.3915 |    0.046667 |    0.046631 |       kernel |     0.066659 | 
|   29 | Accept |    0.046667 |     0.52231 |    0.046667 |    0.046631 |       kernel |       0.1081 | 
|   30 | Accept |        0.08 |     0.49057 |    0.046667 |    0.046628 |       kernel |       1.1048 | 

__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 85.8773 seconds. Total objective function evaluation time: 19.7035  Best observed feasible point:     DistributionNames     Width      _________________    _______           kernel          0.11903  Observed objective function value = 0.046667 Estimated objective function value = 0.046628 Function evaluation time = 1.0933  Best estimated feasible point (according to models):     DistributionNames     Width      _________________    _______           kernel          0.25613  Estimated objective function value = 0.046628 Estimated function evaluation time = 0.59408 
Mdl =    ClassificationNaiveBayes                          ResponseName: 'Y'                 CategoricalPredictors: []                            ClassNames: {'setosa'  'versicolor'  'virginica'}                        ScoreTransform: 'none'                       NumObservations: 150     HyperparameterOptimizationResults: [1x1 BayesianOptimization]                     DistributionNames: {1x4 cell}                DistributionParameters: {3x4 cell}                                Kernel: {1x4 cell}                               Support: {1x4 cell}                                 Width: [3x4 double]     Properties, Methods  

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificados como una tabla. Cada fila de corresponde a una observación y cada columna corresponde a una variable predictora.Tbl Opcionalmente, puede contener una columna adicional para la variable de respuesta.Tbl No se permiten variables de varias columnas y matrices de celdas distintas de las 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 .TblTblResponseVarName

Si contiene la variable de respuesta y desea utilizar solo un subconjunto de las variables restantes como predictores, especifique una fórmula mediante .TblTblFó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

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 como , especifice como .YTbl.Y'Y' De lo contrario, el software trata todas las columnas de , incluidos , como predictores al entrenar el modelo.TblY

La variable de respuesta debe ser una matriz categórica, de carácter o de cadena, un vector lógico o numérico o una matriz de celdas de vectores de caracteres. Si es una matriz de caracteres, cada elemento de la variable de respuesta debe corresponder a una fila de la matriz.Y

Se recomienda especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames

Tipos de datos: char | string

Modelo explicativo de la variable de respuesta y un subconjunto de las variables predictoras, especificadas como vector de caracteres o escalar de cadena en el formulario.'Y~X1+X2+X3' En este formulario, representa la variable de respuesta y , , y representa las variables predictoras.YX1X2X3

Para especificar un subconjunto de variables como predictores para entrenar el modelo, utilice una fórmula.Tbl Si especifica una fórmula, el software no utiliza ninguna variable que no aparezca en .TblFó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);

Tipos de datos: char | string

Etiquetas de clase a las que se entrena el clasificador Bayes ingenuo, especificado como una matriz categórica, de carácter o de cadena, un vector lógico o numérico, o una matriz de celdas de vectores de caracteres. Cada elemento de define la pertenencia a la clase de la fila correspondiente de . soporta niveles de clase.YXYK

Si es una matriz de caracteres, cada fila debe corresponder a una etiqueta de clase.Y

La longitud y el número de filas de debe ser equivalente.YX

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

Datos del predictor, especificados como una matriz numérica.

Cada fila de corresponde a una observación (también conocida como instancia o ejemplo) y cada columna corresponde a una variable (también conocida como entidad).X

La longitud y el número de filas de debe ser equivalente.YX

Tipos de datos: double

Nota:

El software trata , vector de caracteres vacíos ( ), cadena vacía ( ), y elementos como valores de datos que faltan.NaN''""<missing><undefined>

  • Si contiene valores que faltan, el software los elimina y las filas correspondientes de .YX

  • Si contiene filas compuestas enteramente de valores que faltan, el software elimina esas filas y los elementos correspondientes de .XY

  • Si contiene valores que faltan y se establece , el software elimina las filas de y los elementos correspondientes de .X'DistributionNames','mn'XY

  • Si un predictor no está representado en una clase, es decir, si todos sus valores están dentro de una clase, el software devuelve un error.NaN

La eliminación de filas y los elementos correspondientes de disminuye el tamaño de la muestra de entrenamiento o validación cruzada efectiva.XY

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: especifica que la distribución de datos es multinomial, las probabilidades anteriores para todas las clases son iguales y el ancho de banda de la ventana de suavizado del kernel para todas las clases es unidades.'DistributionNames','mn','Prior','uniform','KSWidth',0.50.5

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'

Opciones de Bayes ingenuos

contraer todo

Distribuciones de datos se utiliza para modelar los datos, especificados como el par separado por comas que consta de y un vector de caracteres o escalar de cadena, una matriz de cadenas o una matriz de celdas de vectores de caracteres con valores de esta tabla.fitcnb'DistributionNames'

ValorDescripción
'kernel'Estimación de la densidad de suavizado del núcleo.
'mn'Distribución multinomial. Si especifica , todas las operaciones son componentes de una distribución multinomial.mn Por lo tanto, no se puede incluir como un elemento de una matriz de cadenas o una matriz de celdas de vectores de caracteres.'mn' Para obtener más información, consulte .Algoritmos
'mvmn'Distribución multivariante multivariante. Para obtener más información, consulte .Algoritmos
'normal'Distribución normal (gausiana).

Si especifica un vector de caracteres o un escalar de cadena, el software modela todas las entidades utilizando esa distribución. Si especifica una matriz de caracteres de 1 por cadena o una matriz de celdas de vectores de caracteres, la característica de modelos de software utiliza la distribución en el elemento de la matriz.Pjj

De forma predeterminada, el software establece todos los predictores especificados como predictores categóricos (mediante el argumento de par nombre-valor) en .CategoricalPredictors'mvmn' De lo contrario, la distribución predeterminada es .'normal'

Debe especificar que al menos un predictor tenga distribución para especificar adicionalmente , , o .'kernel'KernelSupportWidth

Ejemplo: 'DistributionNames','mn'

Ejemplo: 'DistributionNames',{'kernel','normal','kernel'}

Tipo más suave del núcleo, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena, una matriz de cadenas o una matriz de celdas de vectores de caracteres.'Kernel'

En esta tabla se resumen las opciones disponibles para establecer la región de densidad de suavizado del núcleo. Denotar la función del indicador.Iu

ValorNúcleoFórmula
'box'Caja (uniforme)

f(x)=0.5I{|x|1}

'epanechnikov'Epanechnikov

f(x)=0.75(1x2)I{|x|1}

'normal'Gaussiano

f(x)=12πexp(0.5x2)

'triangle'Triangular

f(x)=(1|x|)I{|x|1}

Si especifica una matriz de celdas o matriz de celdas 1 por cadena, con cada elemento de la matriz que contiene cualquier valor de la tabla, el software entrena el clasificador utilizando el tipo más suave del kernel en el elemento para la entidad en .PjjX El software ignora elementos que no corresponden a un predictor cuya distribución es .Kernel'kernel'

Debe especificar que al menos un predictor tenga distribución para especificar adicionalmente , , o .'kernel'KernelSupportWidth

Ejemplo: 'Kernel',{'epanechnikov','normal'}

Compatibilidad con la densidad de suavizado del núcleo, especificada como el par separado por comas que consta de y , , una matriz de cadenas, una matriz de celdas o un vector de fila numérico.'Support''positive''unbounded' El software aplica la densidad de suavizado del kernel a la región especificada.

En esta tabla se resumen las opciones disponibles para establecer la región de densidad de suavizado del núcleo.

ValorDescripción
Vector de fila numérico 1 por 2Por ejemplo, , donde y son los límites inferior y superior finito, respectivamente, para el soporte de densidad.[L,U]LU
'positive'El soporte de densidad es todos valores reales positivos.
'unbounded'El soporte de densidad es todos valores reales.

Si especifica una matriz de celdas o matriz de celdas 1 por cadena, con cada elemento de la matriz de cadenas que contiene cualquier valor de texto en la tabla y cada elemento de la matriz de celdas que contiene cualquier valor de la tabla, el software entrena el clasificador utilizando el soporte del kernel en el elemento para la función en .PjjX El software ignora elementos que no corresponden a un predictor cuya distribución es .Kernel'kernel'

Debe especificar que al menos un predictor tenga distribución para especificar adicionalmente , , o .'kernel'KernelSupportWidth

Ejemplo: 'KSSupport',{[-10,20],'unbounded'}

Tipos de datos: char | string | cell | double

Ancho de la ventana de suavizado del núcleo, especificado como el par separado por comas que consta de y una matriz de valores numéricos, vector de columna numérico, vector de fila numérico o escalar.'Width'

Supongamos que hay niveles de clase y predictores.KP En esta tabla se resumen las opciones disponibles para establecer el ancho de la ventana de suavizado del kernel.

ValorDescripción
-por matriz de valores numéricosKPEl elemento ( ) especifica el ancho del predictor en la clase .k,jjk
-por 1 vector de columna numéricaKElement especifica el ancho de todos los predictores de la clase .kk
Vector de fila numérico de 1 por medioPElement especifica el ancho en todos los niveles de clase para predictor .jj
EscalarEspecifica el ancho de banda para todas las entidades de todas las clases.

De forma predeterminada, el software selecciona automáticamente un ancho predeterminado para cada combinación de predictor y clase mediante un valor óptimo para una distribución gaussiana. Si especifica y contiene s, el software selecciona anchos para los elementos que contienen s.WidthNaNNaN

Debe especificar que al menos un predictor tenga distribución para especificar adicionalmente , , o .'kernel'KernelSupportWidth

Ejemplo: 'Width',[NaN NaN]

Tipos de datos: double | struct

Opciones de validación cruzada

contraer todo

Marca de validación cruzada, especificada como el par separado por comas que consta de y o .'Crossval''on''off'

Si especifica , el software implementa 10 veces la validación cruzada.'on'

Para invalidar esta configuración de validación cruzada, utilice uno de estos argumentos de par nombre-valor: , , o .CVPartitionHoldoutKFoldLeaveout Para crear un modelo validado entre referencias cruzadas, puede usar un argumento de par nombre-valor de validación cruzada a la vez.

Alternativamente, valide más adelante pasando aMdl crossval.

Ejemplo: 'CrossVal','on'

Partición de validación cruzada, especificada como el par separado por comas que consta de y un objeto de partición creado por .'CVPartition'cvpartitioncvpartition El objeto de partición especifica el tipo de validación cruzada y la indexación de los conjuntos de entrenamiento y validación.

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: Supongamos que crea una partición aleatoria para la validación cruzada de 5 veces en 500 observaciones mediante .cvp = cvpartition(500,'KFold',5) A continuación, puede especificar el modelo validado entre cruces mediante .'CVPartition',cvp

Fracción de los datos utilizados para la validación de retención, especificada como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Holdout' Si usted especifica, después el software completa estos pasos:'Holdout',p

  1. Seleccione y reserve aleatoriamente % de los datos como datos de validación y entrene el modelo con el resto de los datos.p*100

  2. Almacene el modelo compacto y entrenado en la propiedad del modelo validado de forma cruzada.Trained

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

Número de pliegues que se van a utilizar en un modelo validado por cruz, especificado como el par separado por comas que consta de y un valor entero positivo mayor que 1.'KFold' Si usted especifica, después el software completa estos pasos:'KFold',k

  1. Particione aleatoriamente los datos en conjuntos.k

  2. Para cada conjunto, reserve el conjunto como datos de validación y entrene el modelo con el otro k – 1 Establece.

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda -by-1 en la propiedad del modelo validado cruzadamente.kkTrained

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Deje el indicador de validación cruzada uno-out, especificado como el par separado por comas que consta de y o .'Leaveout''on''off' Si especifica , entonces, para cada una de las observaciones (donde está el número de observaciones excluyendo las observaciones faltantes, especificadas en la propiedad del modelo), el software completa estos pasos:'Leaveout','on'nnNumObservations

  1. Reserve la observación como datos de validación y entrene el modelo utilizando las otras observaciones – 1.n

  2. Almacene los modelos compactos y entrenados en las celdas de un vector de celda -by-1 en la propiedad del modelo validado cruzadamente.nnTrained

Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Leaveout','on'

Otras opciones de clasificación

contraer todo

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 fitcnb 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 fitcnb 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, utiliza distribuciones multivariante multinomial.fitcnb Para obtener más información, consulte y .DistributionNamesAlgoritmos

Ejemplo: 'CategoricalPredictors','all'

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

Nombres de clases que se usan para el entrenamiento, especificados como el par separado por comas que consta de y una matriz categórica, de carácter o de cadena, un vector lógico o numérico, o una matriz de celdas de vectores de caracteres. debe tener el mismo tipo de datos que .'ClassNames'ClassNamesY

Si es una matriz de caracteres, cada elemento debe corresponder a uno de la matriz.ClassNamesFila

Utilícelo para:ClassNames

  • Ordene las clases durante el entrenamiento.

  • Especifique el orden de cualquier dimensión de argumento de entrada o salida que corresponda al orden de clases. Por ejemplo, se utiliza para especificar el orden de las dimensiones o el orden de columna de las puntuaciones de clasificación devueltas por .ClassNamesCostpredict

  • Seleccione un subconjunto de clases para el entrenamiento. Por ejemplo, supongamos que el conjunto de todos los nombres de clase distintos en es .Y{'a','b','c'} Para entrenar el modelo mediante observaciones de clases y solo, especifique .'a''c''ClassNames',{'a','c'}

El valor predeterminado para es el conjunto de todos los nombres de clase distintos en .ClassNamesY

Ejemplo: 'ClassNames',{'b','g'}

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

Coste de la clasificación incorrecta de un punto, especificado como el par separado por comas que consta de y uno de los siguientes:'Cost'

  • Matriz cuadrada, donde está el costo de clasificar un punto en clase si su clase verdadera es (es decir, las filas corresponden a la clase verdadera y las columnas corresponden a la clase predicha).Cost(i,j)ji Para especificar el orden de clases para las filas y columnas correspondientes de , especifique además el argumento de par nombre-valor.CostClassNames

  • Estructura que tiene dos campos: que contiene los nombres de grupo como una variable del mismo tipo que , y que contiene la matriz de coste.SS.ClassNamesYS.ClassificationCosts

El valor predeterminado es if , y if .Cost(i,j)=1i~=jCost(i,j)=0i=j

Ejemplo: 'Cost',struct('ClassNames',{{'b','g'}},'ClassificationCosts',[0 0.5; 1 0])

Tipos de datos: single | double | struct

Nombres de variables predictoras, especificados como el par separado por comas que consta de y una matriz de cadenas de nombres únicos o 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 fitcnb utiliza sólo las variables predictoras en y la variable de respuesta 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 usando uno o solo.'PredictorNames'Fórmula

Ejemplo: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

Tipos de datos: string | cell

Probabilidades anteriores para cada clase, especificadas como el par separado por comas que consta de y un valor en esta tabla.'Prior'

ValorDescripción
'empirical'Las probabilidades anteriores de la clase son las frecuencias relativas de la clase en .Y
'uniform'Todas las probabilidades anteriores de clase son iguales a 1/ , donde está el número de clases.KK
vector numéricoCada elemento es una probabilidad previa de clase. Ordene los elementos según o especifique el orden utilizando el argumento de par nombre-valor.Mdl.ClassNamesClassNames El software normaliza los elementos de tal forma que sume a .1
Estructura

Una estructura con dos campos:S

  • contiene los nombres de clase como una variable del mismo tipo que .S.ClassNamesY

  • contiene un vector de las probabilidades anteriores correspondientes.S.ClassProbs El software normaliza los elementos de tal forma que sume a .1

Si establece valores para ambos y , las ponderaciones se vuelven a normalizar para sumar el valor de la probabilidad anterior en la clase respectiva.WeightsPrior

Ejemplo: 'Prior','uniform'

Tipos de datos: char | string | single | double | struct

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

Transformación de puntuación, especificada como el par separado por comas que consta de un vector de caracteres, un escalar de cadena o un identificador de función.'ScoreTransform'

En esta tabla se resumen los vectores de caracteres disponibles y los escalares de cadena.

ValorDescripción
'doublelogit'1/(1 +e–2x)
'invlogit'log( / (1 – ))xx
'ismax'Establece la puntuación de la clase con la puntuación más alta en , y establece las puntuaciones de todas las demás clases en10
'logit'1/(1 +ex)
O'none''identity'(sin transformación)x
'sign'–1 para <0 0 para 0 0 para 0 1 para > 0x
x
x
'symmetric'2 – 1x
'symmetricismax'Establece la puntuación de la clase con la puntuación más alta en , y establece las puntuaciones de todas las demás clases en1–1
'symmetriclogit'2/(1 +ex) – 1

Para una función o una función que defina, utilice su identificador de función para la transformación de puntuación.MATLAB El identificador de función debe aceptar una matriz (las puntuaciones originales) y devolver una matriz del mismo tamaño (las puntuaciones transformadas).

Ejemplo: 'ScoreTransform','logit'

Tipos de datos: char | string | function_handle

Pesos de observación, especificados como el par separado por comas que consta de un vector numérico de valores positivos o el nombre de una variable en .'Weights'Tbl El software sopesa las observaciones en cada fila de o con el valor correspondiente en .XTblWeights El tamaño de debe ser igual al número de filas de o .WeightsXTbl

Si especifica los datos de entrada como una tabla , puede ser el nombre de una variable que contenga un vector numérico.TblWeightsTbl En este caso, debe especificar como vector de caracteres o escalar de cadena.Weights Por ejemplo, si el vector de ponderaciones se almacena como , especifice como .WTbl.W'W' De lo contrario, el software trata todas las columnas de , incluidos , como predictores o la respuesta al entrenar el modelo.TblW

El software se normaliza para sumar hasta el valor de la probabilidad anterior en la clase respectiva.Weights

De forma predeterminada, esWeights ones(n,1)Dónde n es el número de observaciones en o .XTbl

Tipos de datos: double | single | char | string

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'{'DistributionNames','Width'}

  • — Optimizar todos los parámetros elegibles.'all'

  • 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.fitcnb 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:fitcnb

  • — búsquedas entre y .DistributionNamesfitcnb'normal''kernel'

  • — busca entre valores reales, por defecto escalado de registros en el rango .Widthfitcnb[MinPredictorDiff/4,max(MaxPredictorRange,MinPredictorDiff)]

  • — búsquedas entre , , , y .Kernelfitcnb'normal''box''epanechnikov''triangle'

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

load fisheriris params = hyperparameters('fitcnb',meas,species); params(2).Range = [1e-2,1e2];

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 el clasificador Naive Bayes

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

Argumentos de salida

contraer todo

Modelo de clasificación Bayes ingenuo entrenado, devuelto como un objeto de modelo o un objeto de modelo validado entre cruces.ClassificationNaiveBayesClassificationPartitionedModel

Si establece cualquiera de los argumentos de par nombre-valor , , , o , a continuación, es un objeto de modelo validado entre sí.KFoldHoldoutCrossValCVPartitionMdlClassificationPartitionedModel De lo contrario, es un objeto de modelo.MdlClassificationNaiveBayes

Para hacer referencia a las propiedades de , utilice la notación de puntos.Mdl Por ejemplo, para acceder a los parámetros de distribución estimados, escriba .Mdl.DistributionParameters

Más acerca de

contraer todo

Modelo de bolsa de tokens

En el modelo de bolsa de tokens, el valor del predictor es el número no negativo de apariciones de token en esta observación.jj El número de categorías (bins) en este modelo multinomial es el número de tokens distintos, es decir, el número de predictores.

Bayes ingenuos

es un algoritmo de clasificación que aplica la estimación de densidad a los datos.Bayes ingenuos

El algoritmo aprovecha el teorema de Bayes y (ingenuamente) asume que los predictores son condicionalmente independientes, dada la clase. Aunque la suposición se suele violar en la práctica, los clasificadores Bayes ingenuos tienden a producir distribuciones posteriores que son sólidas para las estimaciones de densidad de clases sesgadas, particularmente cuando la posterior es 0,5 (el límite de decisión).[1]

Los clasificadores Naive Bayes asignan observaciones a la clase más probable (en otras palabras, la regla de decisión).máximo a posteriori Explícitamente, el algoritmo:

  1. Estima las densidades de los predictores dentro de cada clase.

  2. Modela las probabilidades posteriores según la regla de Bayes. Es decir, para todos los números 1,..., ,kK

    P^(Y=k|X1,..,XP)=π(Y=k)j=1PP(Xj|Y=k)k=1Kπ(Y=k)j=1PP(Xj|Y=k),

    Dónde:

    • es la variable aleatoria correspondiente al índice de clase de una observación.Y

    • X1,...,XP son los predictores aleatorios de una observación.

    • π(Y=k) es la probabilidad previa de que un índice de clase sea .k

  3. Clasifica una observación estimando la probabilidad posterior para cada clase y, a continuación, asigna la observación a la clase que produce la probabilidad posterior máxima.

Si los predictores componen una distribución multinomial, entonces la probabilidad posteriorP^(Y=k|X1,..,XP)π(Y=k)Pmn(X1,...,XP|Y=k), Dónde Pmn(X1,...,XP|Y=k) es la función de masa de probabilidad de una distribución multinomial.

Sugerencias

  • Para clasificar datos basados en recuento, como , utilice la distribución multinomial (por ejemplo, set ).modelo de bolsa de tokens'DistributionNames','mn'

  • Después de entrenar un modelo, puede generar código C/C++ que predice las etiquetas para los 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

  • Si especifica al entrenar utilizando , el software se ajusta a una distribución multinomial mediante el archivo .'DistributionNames','mn'Mdlfitcnbmodelo de bolsa de tokens El software almacena la probabilidad de que el token j aparece en clase k en la propiedad DistributionParameters{k,j}. Mediante el suavizado aditivo, la probabilidad estimada es[2]

    P(token j|class k)=1+cj|kP+ck,

    Dónde:

    • cj|k=nki:yiclass kxijwii:yiclass kwi; que es el número ponderado de apariciones de token en la clase .jk

    • Nk es el número de observaciones en clase.k

    • wi es el peso para la observación.i El software normaliza las ponderaciones dentro de una clase de modo que sume a la probabilidad anterior para esa clase.

    • ck=j=1Pcj|k; que es el número ponderado total de apariciones de todos los tokens en la clase .k

  • Si especifica al entrenar utilizando , entonces:'DistributionNames','mvmn'Mdlfitcnb

    1. Para cada predictor, el software recopila una lista de los niveles únicos, almacena la lista ordenada en , y considera cada nivel una ubicación.CategoricalLevels Cada combinación predictor/clase es una variable aleatoria multinomial independiente e independiente.

    2. Para predictor j en clase , el software cuenta las instancias de cada nivel categórico utilizando la lista almacenada enk CategoricalLevels{j}.

    3. El software almacena la probabilidad de que el predictor j, en clase k, tiene nivel en la propiedadL DistributionParameters{k,j}, para todos los niveles de CategoricalLevels{j}. Mediante el suavizado aditivo, la probabilidad estimada es[2]

      P(predictor j=L|class k)=1+mj|k(L)mj+mk,

      Dónde:

      • mj|k(L)=nki:yi class kI{xij=L}wii:yi class kwi; que es el número ponderado de observaciones para las que predictor es igual en clase .jLk

      • Nk es el número de observaciones en clase.k

      • I{xij=L}=1 Si Xij En caso contrario, 0.L

      • wi es el peso para la observación.i El software normaliza las ponderaciones dentro de una clase de modo que sume a la probabilidad anterior para esa clase.

      • Mj es el número de niveles distintos en el predictor.j

      • Mk es el número ponderado de observaciones en la clase.k

Referencias

[1] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, Second Edition. NY: Springer, 2008.

[2] Manning, C. D., P. Raghavan, and M. Schütze. Introduction to Information Retrieval, NY: Cambridge University Press, 2008.

Capacidades ampliadas

Introducido en R2014b