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.

CompactClassificationNaiveBayes

Paquete: classreg.learning.classif

Clasificador Bayes Ingenuo compacto

Descripción

es un clasificador compacto.CompactClassificationNaiveBayesingenuo Bayes

El clasificador compacto no incluye los datos utilizados para entrenar el clasificador Bayes ingenuo. Por lo tanto, no puede realizar tareas, como la validación cruzada, mediante el clasificador compacto.

Utilice un clasificador Bayes ingenuo y compacto para etiquetar nuevos datos (es decir, predecir las etiquetas de los nuevos datos) de manera más eficiente.

Construcción

CMdl = compact(Mdl) Devuelve un clasificador Bayes ingenuo y compacto () de un clasificador Bayes Ingenuo completo y entrenado ().CMdlMdl

Argumentos de entrada

expandir todo

Un clasificador Bayes Ingenuo completamente entrenado, especificado como un modelo entrenado por.ClassificationNaiveBayesfitcnb

Propiedades

expandir todo

Índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos del predictor que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, entonces esta propiedad está vacía ().[]

Tipos de datos: single | double

Niveles multinomiales multivariados, especificados como vector de celdas de vectores numéricos. tiene una longitud igual al número de predictores ().CategoricalLevelssize(X,2)

Las celdas corresponden a los predictores que especificó como (es decir, que tienen una distribución multinomial multivariada) durante el entrenamiento.CategoricalLevels'mvmn' Las celdas que no corresponden a una distribución multinomial multivariada están vacías ().[]

Si el predictor es multinomial multivariado, entonces es una lista de todos los valores distintos de predictor en la muestra (s quitada de).jCategoricalLevels{j}jNaNunique(X(:,j))

Tipos de datos: cell

Nombres de clase distintos, especificados como una matriz categórica o de caracteres, un vector lógico o numérico o un vector de celda de vectores de caracteres.

es el mismo tipo de datos que, y tiene elementos o filas para matrices de caracteres.ClassNamesYK (The software treats string arrays as cell arrays of character vectors.)

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

Costo de clasificación errónea, especificado como matriz a-por-cuadrado.KK

El valor de es el costo de clasificar un punto en la clase si su clase verdadera es.Cost(i,j)ji El orden de las filas y columnas corresponden al orden de las clases en.CostoClassNames

El valor de no influye en el entrenamiento.Costo Puede restablecer después del entrenamiento utilizando la notación de puntos, por ejemplo,.CostoMdlMdl.Cost = [0 0.5; 1 0];

Tipos de datos: double | single

Las distribuciones predictoras utilizan para modelar los predictores, especificados como un vector de caracteres o una matriz de vectores de caracteres.fitcnb

Esta tabla resume las distribuciones disponibles.

ValorDescripción
'kernel'Estimación de densidad de suavizado del kernel.
'mn'Multinomial.modelo de bolsa de tokens Indica que todos los predictores tienen esta distribución.
'mvmn'Distribución multinomial multivariado.
'normal'Distribución normal (gaussiana).

Si es una matriz de vectores de caracteres de 1 por celda, la característica de modelos de software utiliza la distribución en el elemento de la matriz de celdas.DistributionPjj

Tipos de datos: char | cell

Estimaciones de parámetros de distribución, especificadas como una matriz de celdas. es una matriz de celdas, donde Cell (,) contiene las estimaciones de los parámetros de distribución para las instancias de predictor en clase.DistributionParametersKDkddk El orden de las filas corresponde al orden de las clases de la propiedad y el orden de los predictores corresponde al orden de las columnas de.ClassNamesX

Si la clase k no tiene observaciones para el predictor jEntonces Distribution{k,j} está vacía ().[]

Los elementos de depende de las distribuciones de los predictores.DistributionParameters En esta tabla se describen los valores de DistributionParameters{k,j}.

Distribución de predictorjValor
kernelUn modelo.KernelDistribution Mostrar propiedades mediante indexación de celdas y notación de puntos. Por ejemplo, para mostrar el ancho de banda estimado de la densidad del kernel para el predictor 2 en la tercera clase, use.Mdl.DistributionParameters{3,2}.BandWidth
mnUn escalar que representa la probabilidad de que el token aparezca en la clase.jk Para obtener más información, consulte.Algoritmos
mvmnUn vector numérico que contiene las probabilidades para cada nivel posible de predictor en clase.jk El software ordena las probabilidades por el orden ordenado de todos los niveles únicos de predictor (almacenados en la propiedad).jCategoricalLevels Para obtener más información, consulte.Algoritmos
NormalUn vector numérico de 2 por 1. El primer elemento es la media de la muestra y el segundo elemento es la desviación estándar de la muestra.

Tipos de datos: cell

Nombres de predictores ampliados, almacenados como una matriz de vectores de caracteres de celda.

Si el modelo utiliza codificación para variables categóricas, incluye los nombres que describen las variables expandidas.ExpandedPredictorNames De lo contrario, es el mismo que.ExpandedPredictorNamesPredictorNames

Tipos de kernel más suaves, especificados como vector de caracteres o matriz de vectores de caracteres. tiene una longitud igual al número de predictores (). corresponde al predictor y contiene un vector de caracteres que describe el tipo de kernel más suave.Núcleosize(X,2)Kernel{j}j Esta tabla describe los tipos más suaves del kernel soportado. 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 una celda está vacía (), entonces el software no encajaba en una distribución del kernel al predictor correspondiente.[]

Tipos de datos: char | cell

Nombres de predictor, especificados como una matriz de celdas de vectores de caracteres. El orden de los elementos en corresponde a la orden en.PredictorNamesX

Tipos de datos: cell

Probabilidades previas de clase, especificadas como un vector de fila numérico. es un 1 por Vector, y el orden de sus elementos corresponden a los elementos de.PriorKClassNames

Normaliza las probabilidades previas que se establecen utilizando el parámetro de par nombre-valor para que =.fitcnb'Prior'sum(Prior)1

El valor de no cambia el modelo de mejor ajuste.Prior Por lo tanto, puede restablecer después del entrenamiento utilizando la notación de puntos, por ejemplo,.PriorMdlMdl.Prior = [0.2 0.8];

Tipos de datos: double | single

Nombre de la respuesta, especificado como vector de caracteres.

Tipos de datos: char

Función de transformación de puntuación de clasificación, especificada como un controlador de función o vector de caracteres.

Para cambiar la función de transformación de partitura a, por ejemplo, function, utilice la notación de puntos.

  • Para una función incorporada, ingrese este código y reemplace function con un valor en la tabla.

    Mdl.ScoreTransform = 'function';

    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, introduzca su identificador de función.MATLAB®

    Mdl.ScoreTransform = @function;

    function debe aceptar una matriz (las puntuaciones originales) y devolver una matriz del mismo tamaño (las puntuaciones transformadas).

Tipos de datos: char | function_handle

Soporte de densidad más suave del kernel, especificado como vector de celda. tiene una longitud igual al número de predictores ().Supportsize(X,2) Las celdas representan las regiones para aplicar la densidad del kernel.

En esta tabla se describen las opciones admitidas.

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 una celda está vacía (), entonces el software no encajaba en una distribución del kernel al predictor correspondiente.[]

Ancho de ventana más suave del kernel, especificado como una matriz numérica. es un-por-matriz, donde es el número de clases en los datos, y es el número de predictores ().WidthKPKPsize(X,2)

Width(k,j) es el ancho de ventana más suave del kernel para la densidad de suavizado del kernel del predictor j dentro de la clase k. s en la columnaNaN j indican que el software no encajaba en el predictor j utilizando una densidad de kernel.

Métodos

edgeBorde de clasificación para clasificadores Bayes ingenuos
logPRegistre la densidad de probabilidad incondicional para el clasificador Bayes ingenuo
lossError de clasificación para el clasificador Bayes ingenuo
marginLos márgenes de clasificación de los clasificadores Bayes ingenuos
predictPredecir etiquetas utilizando el modelo de clasificación Bayes ingenuo

Semántica de copia

Valor. Para saber cómo afectan las clases de valor a las operaciones de copia, consulte.Copiar objetos (MATLAB)

Ejemplos

contraer todo

Los clasificadores Bayes ingenuos completos (es decir, los modelos) tienen los datos de entrenamiento.ClassificationNaiveBayes Por eficiencia, es posible que no desee predecir nuevas etiquetas con un clasificador grande. Este ejemplo muestra cómo reducir el tamaño de un clasificador Bayes Ingenuo completo.

Cargue el conjunto de datos.ionosphere

load ionosphere X = X(:,3:end); % Remove two predictors for stability

Entrena a un ingenuo clasificador Bayes. Supongamos que cada predictor es condicionalmente, normalmente distribuido dada su etiqueta. Es recomendable especificar el orden de las etiquetas.

Mdl = fitcnb(X,Y,'ClassNames',{'b','g'})
Mdl =    ClassificationNaiveBayes               ResponseName: 'Y'      CategoricalPredictors: []                 ClassNames: {'b'  'g'}             ScoreTransform: 'none'            NumObservations: 351          DistributionNames: {1x32 cell}     DistributionParameters: {2x32 cell}     Properties, Methods  

es un modelo.MdlClassificationNaiveBayes

Reduzca el tamaño del clasificador Bayes ingenuo.

CMdl = compact(Mdl)
CMdl =    classreg.learning.classif.CompactClassificationNaiveBayes               ResponseName: 'Y'      CategoricalPredictors: []                 ClassNames: {'b'  'g'}             ScoreTransform: 'none'          DistributionNames: {1x32 cell}     DistributionParameters: {2x32 cell}     Properties, Methods  

es un modelo.CMdlCompactClassificationNaiveBayes

Muestra cuánta memoria utiliza cada clasificador.

whos('Mdl','CMdl')
  Name      Size             Bytes  Class                                                        Attributes    CMdl      1x1              15596  classreg.learning.classif.CompactClassificationNaiveBayes                 Mdl       1x1             111726  ClassificationNaiveBayes                                                

El clasificador Bayes Ingenuo completo () es mucho más grande que el ingenuo clasificador Bayes ().MdlCMdl

Puede eliminar del área de trabajo de MATLAB® y pasar y nuevos valores predictores para etiquetar de forma eficaz nuevas observaciones.MdlCMdlpredict

Cargue el conjunto de datos.ionosphere

load ionosphere X = X(:,3:end); % Remove two predictors for stability

Train y Cross validan un clasificador Bayes ingenuo. Supongamos que cada predictor es condicionalmente, normalmente distribuido dada su etiqueta. Es recomendable especificar el orden de las clases.

rng(1);  % For reproducibility CVMdl = fitcnb(X,Y,'ClassNames',{'b','g'},'CrossVal','on')
CVMdl =    classreg.learning.partition.ClassificationPartitionedModel     CrossValidatedModel: 'NaiveBayes'          PredictorNames: {1x32 cell}            ResponseName: 'Y'         NumObservations: 351                   KFold: 10               Partition: [1x1 cvpartition]              ClassNames: {'b'  'g'}          ScoreTransform: 'none'     Properties, Methods  

no es un modelo, sino un modelo Bayes con validación cruzada e ingenua.CVMdlClassificationNaiveBayesClassificationPartitionedModel De forma predeterminada, el software implementa la validación cruzada de 10 veces.

Alternativamente, puede cruzar validar un modelo entrenado al pasarlo a.ClassificationNaiveBayescrossval

Inspeccione uno de los pliegues entrenados utilizando la notación de puntos.

CVMdl.Trained{1}
ans =    classreg.learning.classif.CompactClassificationNaiveBayes               ResponseName: 'Y'      CategoricalPredictors: []                 ClassNames: {'b'  'g'}             ScoreTransform: 'none'          DistributionNames: {1x32 cell}     DistributionParameters: {2x32 cell}     Properties, Methods  

Cada pliegue es un modelo entrenado en el 90% de los datos.CompactClassificationNaiveBayes

Calcule el error de generalización.

genError = kfoldLoss(CVMdl)
genError = 0.1795 

En promedio, el error de generalización es de aproximadamente el 17%.

Una forma de intentar reducir un error de generalización insatisfactorio es especificar distribuciones condicionales diferentes para los predictores o ajustar los parámetros de las distribuciones condicionales.

Más acerca de

expandir todo

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