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

Train multiclase Bayes Ingenuo modelo

Descripción

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

Mdl = fitcnb(Tbl,formula) Devuelve un modelo Bayes ingenuo de varias clases (), entrenado por los predictores en la tabla. es un modelo explicativo de la respuesta y un subconjunto de variables predictoras en uso para ajustarse.MdlTblFórmulaTblMdl

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

ejemplo

Mdl = fitcnb(X,Y) Devuelve un modelo Bayes ingenuo de varias clases (), 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, las 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 los datos con más de dos clases utilizando métodos ingenuos Bayes.

Entrena a un ingenuo clasificador Bayes. Es recomendable especificar el orden de la clase.

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 de predictor 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 entidad dentro.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

Trace 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 son variables aleatorias multivariadas y multinomiales utilizando.'DistributionNames','mvmn'

Construya un clasificador Bayes Ingenuo para el conjunto de datos iris de Fisher. Además, especifique las 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 mediciones de pétalo para 150 iris. es una matriz celular 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 del conjunto de datos, que en este caso es del 33% para cada especie. Sin embargo, supongamos que usted sabe que en la población 50% de los iris son setosa, 20% son versicolor, y 30% son virginica. Puede incorporar esta información especificando esta distribución como una probabilidad previa durante el entrenamiento.

Entrena a un ingenuo clasificador Bayes. Especifique el orden de la 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 los predictores como independientes dada una clase y, de forma predeterminada, se ajusta a ellos mediante distribuciones normales.

El algoritmo Bayes Ingenuo no utiliza las probabilidades de clase previa durante el entrenamiento. Por lo tanto, puede especificar las probabilidades de clase anteriores después del entrenamiento utilizando la notación de puntos. Por ejemplo, suponga que desea ver la diferencia de rendimiento entre un modelo que utiliza las probabilidades de clase anteriores 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 anteriores a sumar.1

Estime el error de validación cruzada para ambos modelos utilizando 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 ingenuo clasificador Bayes usando cada predictor. Es recomendable especificar el orden de la clase.

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 = 3x4 cell array
    {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 de predictor dentro de cada clase como un 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 las anchuras sepales de iris setosa son y, respectivamente.Mdl1.DistributionParameters3.42800.3791

Estime la matriz de confusión para.Mdl1

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

Element (,) del gráfico de matriz de confusión representa el número de observaciones que el software clasifica como, pero son verdaderamente en clase de acuerdo con los datos.jkkj

Vuelva a entrenar el clasificador utilizando la distribución gaussiana para los predictores 1 y 2 (las longitudes y anchos del septo) y la densidad de kernel normal por defecto para los predictores 3 y 4 (las longitudes y anchos del pétalo).

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 kernel. Más bien, el software elige un ancho óptimo. Sin embargo, puede especificar un ancho mediante el argumento de par nombre-valor.'Width'

Estime 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 se realizan de forma similar en la muestra de aprendizaje.

Cargue el conjunto de datos de iris de Fisher.

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

Entrenar y validar de forma cruzada un clasificador Bayes Ingenuo utilizando las opciones predeterminadas y-doblar la validación cruzada.k Es recomendable especificar el orden de la clase.

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

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

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

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

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

Compare el error de clasificación de plegado fuera de 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 (denominados tokens) en un correo electrónico. Los predictores son las frecuencias de determinadas palabras o puntualizaciones en un correo electrónico. Por lo tanto, los predictores componen variables aleatorias multinomiales.

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

Crear datos de entrenamiento

Supongamos que observó 1000 correos electrónicos y los clasificó como spam o no spam. Para ello, asigne aleatoriamente-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 compilar los Datos predictores, 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 aleatoriamente, desviados multinomiales. 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 el clasificador

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

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

es un clasificador entrenado.MdlClassificationNaiveBayes

Evalúe el rendimiento de la muestra calculando el error de clasificación errónea.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

Genere aleatoriamente desvíos que representen 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));

Evalúe el rendimiento del clasificador

Clasifique los nuevos correos electrónicos con el clasificador Bayes Ingenuo entrenado y determine si el algoritmo se generaliza.Mdl

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

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

En este ejemplo se muestra cómo usar 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 de 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 |      1.1778 |    0.053333 |    0.053333 |       normal |            - | |    2 | Best   |    0.046667 |      2.0667 |    0.046667 |    0.049998 |       kernel |      0.11903 | |    3 | Accept |    0.053333 |     0.36302 |    0.046667 |    0.046667 |       normal |            - | |    4 | Accept |    0.086667 |      1.7395 |    0.046667 |    0.046668 |       kernel |       2.4506 | |    5 | Accept |    0.046667 |      1.1221 |    0.046667 |    0.046663 |       kernel |      0.10449 | |    6 | Accept |    0.073333 |      2.1854 |    0.046667 |    0.046665 |       kernel |     0.025044 | |    7 | Accept |    0.046667 |     0.81702 |    0.046667 |    0.046655 |       kernel |      0.27647 | |    8 | Accept |    0.046667 |     0.85505 |    0.046667 |    0.046647 |       kernel |       0.2031 | |    9 | Accept |        0.06 |     0.64561 |    0.046667 |    0.046658 |       kernel |      0.44271 | |   10 | Accept |    0.046667 |     0.84479 |    0.046667 |    0.046618 |       kernel |       0.2412 | |   11 | Accept |    0.046667 |      1.3613 |    0.046667 |    0.046619 |       kernel |     0.071925 | |   12 | Accept |    0.046667 |     0.54632 |    0.046667 |    0.046612 |       kernel |     0.083459 | |   13 | Accept |    0.046667 |      1.0402 |    0.046667 |    0.046603 |       kernel |      0.15661 | |   14 | Accept |    0.046667 |     0.64479 |    0.046667 |    0.046607 |       kernel |      0.25613 | |   15 | Accept |    0.046667 |      1.2116 |    0.046667 |    0.046606 |       kernel |      0.17776 | |   16 | Accept |    0.046667 |      0.5475 |    0.046667 |    0.046606 |       kernel |      0.13632 | |   17 | Accept |    0.046667 |      1.2527 |    0.046667 |    0.046606 |       kernel |     0.077598 | |   18 | Accept |    0.046667 |     0.98237 |    0.046667 |    0.046626 |       kernel |      0.25646 | |   19 | Accept |    0.046667 |      4.2318 |    0.046667 |    0.046626 |       kernel |     0.093584 | |   20 | Accept |    0.046667 |     0.89871 |    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.72749 |    0.046667 |    0.046627 |       kernel |     0.066532 | |   22 | Accept |    0.093333 |     0.54783 |    0.046667 |    0.046618 |       kernel |       5.8968 | |   23 | Accept |    0.046667 |     0.59303 |    0.046667 |    0.046619 |       kernel |     0.067045 | |   24 | Accept |    0.046667 |     0.50278 |    0.046667 |     0.04663 |       kernel |      0.25281 | |   25 | Accept |    0.046667 |     0.45471 |    0.046667 |     0.04663 |       kernel |       0.1473 | |   26 | Accept |    0.046667 |     0.45681 |    0.046667 |    0.046631 |       kernel |      0.17211 | |   27 | Accept |    0.046667 |     0.55658 |    0.046667 |    0.046631 |       kernel |      0.12457 | |   28 | Accept |    0.046667 |      0.5399 |    0.046667 |    0.046631 |       kernel |     0.066659 | |   29 | Accept |    0.046667 |     0.56633 |    0.046667 |    0.046631 |       kernel |       0.1081 | |   30 | Accept |        0.08 |     0.69972 |    0.046667 |    0.046628 |       kernel |       1.1048 |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 125.4817 seconds. Total objective function evaluation time: 30.1795  Best observed feasible point:     DistributionNames     Width      _________________    _______           kernel          0.11903  Observed objective function value = 0.046667 Estimated objective function value = 0.046628 Function evaluation time = 2.0667  Best estimated feasible point (according to models):     DistributionNames     Width      _________________    _______           kernel          0.25613  Estimated objective function value = 0.046628 Estimated function evaluation time = 0.84563 
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, especificado 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 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.TblTblResponseVarName

Si contiene la variable de respuesta y desea usar 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 en debe ser igual.Tbl

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 como, a continuación, especifíquese 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 caracteres o de cadena, un vector lógico o numérico o una matriz 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

Es una buena práctica para especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames

Tipos de datos: char | string

Modelo explicativo de la respuesta y un subconjunto de las variables predictoras, especificadas como un vector de caracteres o un 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 Las variables deben ser nombres de variable en ().TblTbl.Properties.VariableNames

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 en la que no aparezcan.TblFórmula

Tipos de datos: char | string

Etiquetas de clase a las que se entrena el clasificador Bayes ingenuo, especificado como una matriz categórica, de caracteres 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. admite 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 deben ser equivalentes.YX

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

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

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

La longitud y el número de filas de deben ser equivalentes.YX

Tipos de datos: double

Nota:

El software trata el vector de caracteres vacío (), la cadena vacía () y los elementos como valores de datos faltantes.NaN''""<missing><undefined>

  • Si contiene valores faltantes, el software Los elimina y las filas correspondientes de.YX

  • Si contiene cualquier fila compuesta enteramente de valores faltantes, entonces el software elimina esas filas y los elementos correspondientes de.XY

  • Si contiene valores faltantes y se establece, a continuación, 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 disminuye el tamaño de la muestra de entrenamiento o de validación cruzada efectiva.XY

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

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'

Naive Bayes Options

contraer todo

Las distribuciones de datos se utilizan para modelar los datos, especificados 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 vectores de caracteres con valores de esta tabla.fitcnb'DistributionNames'

ValorDescripción
'kernel'Estimación de densidad de suavizado del kernel.
'mn'Distribución multinomial. Si se especifica, todas las entidades 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 vectores de caracteres.'mn' Para obtener más información, consulte.Algoritmos
'mvmn'Distribución multinomial multivariado. Para obtener más información, consulte.Algoritmos
'normal'Distribución normal (gaussiana).

Si especifica un vector de caracteres o un escalar de cadena, el software modela todas las entidades que utilizan esa distribución. Si especifica una matriz de 1 por cadena o una matriz 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 (utilizando el argumento de par nombre-valor).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'NúcleoSupportWidth

Ejemplo: 'DistributionNames','mn'

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

Kernel tipo más suave, 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 kernel. Let {} denota 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 1 por cadena o matriz de celdas, con cada elemento de la matriz que contiene cualquier valor en la tabla, el software entrena el clasificador utilizando el tipo de elemento más suave del kernel para la característica.PjjX El software ignora elementos que no corresponden a un predictor cuya distribución es.Núcleo'kernel'

Debe especificar que al menos un predictor tenga distribución para especificar Adicionalmente, o.'kernel'NúcleoSupportWidth

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

Compatibilidad con la densidad de suavizado del kernel, 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 kernel.

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

Si especifica una matriz de 1 por cadena o matriz de celdas, 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 en la tabla, el software entrena el clasificador utilizando el soporte del kernel en el elemento para la característica en.PjjX El software ignora elementos que no corresponden a un predictor cuya distribución es.Núcleo'kernel'

Debe especificar que al menos un predictor tenga distribución para especificar Adicionalmente, o.'kernel'NúcleoSupportWidth

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

Tipos de datos: char | string | cell | double

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

Supongamos que hay niveles de clase y predictores.KP Esta tabla resume las opciones disponibles para establecer el ancho de la ventana de suavizado del kernel.

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

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

Debe especificar que al menos un predictor tenga distribución para especificar Adicionalmente, o.'kernel'NúcleoSupportWidth

Ejemplo: 'Width',[NaN NaN]

Tipos de datos: double | struct

Opciones de validación cruzada

contraer todo

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

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

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

Alternativamente, valide de forma cruzada 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 un objeto de partición creado por.'CVPartition'cvpartitioncvpartition El objeto de partición especifica el tipo de validación cruzada y la indización para los conjuntos de entrenamiento y validación.

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

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

Fracción de los datos utilizados para la validación de exclusión, especificado 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 aleatoriamente y Reserve% de los datos como datos de validación y capacite al modelo con el resto de los datos.p*100

  2. Almacene el modelo compacto y entrenado en la propiedad del modelo con validación cruzada.Trained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

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

  1. Particionar aleatoriamente los datos en sets.k

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

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda a-por-1 en la propiedad del modelo validado de forma cruzada.kkTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Marca de validación cruzada de Leave-One-out, especificada como el par separado por comas que consta de y o.'Leaveout''on''off' Si especifica, a continuación, 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. Reservar la observación como datos de validación, y entrenar el modelo utilizando el otro – 1 observaciones.n

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

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, 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 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 fitcnb 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 fitcnb 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

Nombres de las clases que se usarán para el entrenamiento, especificadas como el par separado por comas que consta de una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz 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.ClassNamesrow

Utilizar para:ClassNames

  • Ordene las clases durante el entrenamiento.

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

  • 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 utilizando observaciones de clases y sólo, 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 clasificación errónea de un punto, especificado como el par separado por comas que consta de uno de los siguientes:'Cost'

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

  • Estructura que tiene dos campos: que contiene los nombres de grupo como una variable del mismo tipo que, y que contiene la matriz de costes.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

Los 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 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 fitcnb utiliza únicamente las variables predictoras 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 para especificar los predictores para el entrenamiento utilizando cualquiera o sólo.'PredictorNames'Fórmula

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

Tipos de datos: string | cell

Probabilidades previas 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 previas de clase son las frecuencias de clase relativas.Y
'uniform'Todas las probabilidades previas de clase son iguales a 1/, donde está el número de clases.KK
Vector numéricoCada elemento es una clase de probabilidad previa. Ordene los elementos según o especifique el orden mediante el argumento de par nombre-valor.Mdl.ClassNamesClassNames El software normaliza los elementos que suman.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 previas correspondientes.S.ClassProbs El software normaliza los elementos que suman.1

Si establece valores para ambos y, las ponderaciones se renormalizan 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 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

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'

Esta tabla resume 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 grande y establece las puntuaciones de todas las demás clases para10
'logit'1/(1 +ex)
O'none''identity'(sin transformación)x
'sign'– 1 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 grande y establece las puntuaciones de todas las demás clases para1–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

Ponderaciones de observación, especificadas 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 pesa las observaciones en cada fila 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 un vector de caracteres o un escalar de cadena.Weights Por ejemplo, si el vector de ponderaciones se almacena como, a continuación, especifíquese 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 normaliza para resumir 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

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

  • : Optimice todos los parámetros elegibles.'all'

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

  • — busca entre y.DistributionNamesfitcnb'normal''kernel'

  • — busca entre valores reales, de forma predeterminada, con escala logaritmo en el rango.Widthfitcnb[MinPredictorDiff/4,max(MaxPredictorRange,MinPredictorDiff)]

  • — busca entre, y.Núcleofitcnb'normal''box''epanechnikov''triangle'

Establezca parámetros no predeterminados pasando un vector de objetos que tienen 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 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 el clasificador Naive Bayes

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

Argumentos de salida

contraer todo

Modelo de clasificación de Bayes ingenua entrenado, devuelto como un objeto de modelo o un objeto de modelo validado de forma cruzada.ClassificationNaiveBayesClassificationPartitionedModel

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

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

Más acerca de

contraer todo

Modelo de bolsa de tokens

En el modelo de bolsa de tokens, el valor de 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.

Naive Bayes

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

El algoritmo aprovecha el teorema de Bayes y (naively) asume que los predictores son condicionalmente independientes, dada la clase. Aunque la suposición generalmente se viola en la práctica, los clasificadores Bayes ingenuos tienden a producir distribuciones posteriores que son robustas a las estimaciones de densidad de clase 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. Modelos de probabilidades posteriores según la regla de Bayes. Es decir, para todos = 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 es.k

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

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 los datos basados en recuento, como el, 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 de C/C++ que predice etiquetas para nuevos datos. La generación de código C/C++ requiere MATLABCoder™. Para obtener más información, consulte.Introducción a la generación de código

Algoritmos

  • Si especifica cuándo se utiliza el entrenamiento, el software se ajusta a una distribución multinomial utilizando el.'DistributionNames','mn'Mdlfitcnbmodelo de bolsa de tokens El software almacena la probabilidad de que el token j aparece en la clase k en la propiedad DistributionParameters{k,j}. Con el suavizado de aditivos, 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 la clase.k

    • wi es el peso de la observación.i El software normaliza los pesos dentro de una clase de tal forma que suman la probabilidad anterior para esa clase.

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

  • Si especifica cuándo se utiliza el entrenamiento, 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 un bin.CategoricalLevels Cada combinación de predictor/clase es una variable aleatoria independiente multinomial independiente.

    2. Para el predictor j en la 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 la clase k, tiene nivel en la propiedadL DistributionParameters{k,j}, para todos los niveles en CategoricalLevels{j}. Con el suavizado de aditivos, 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 el predictor equivale a la clase.jLk

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

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

      • wi es el peso de la observación.i El software normaliza los pesos dentro de una clase de tal forma que suman 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 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