ClassificationNaiveBayes 클래스

슈퍼클래스: CompactClassificationNaiveBayes

나이브 베이즈 분류

설명

ClassificationNaiveBayes는 다중클래스 학습을 위한 나이브 베이즈 분류기입니다. fitcnb와 훈련 데이터를 사용하여 ClassificationNaiveBayes 분류기를 훈련시킵니다.

훈련된 ClassificationNaiveBayes 분류기는 훈련 데이터, 모수 값, 데이터 분포, 사전 확률을 저장합니다. 이러한 분류기를 사용하여 다음을 수행할 수 있습니다.

  • 재대입 예측값을 추정합니다. 자세한 내용은 resubPredict를 참조하십시오.

  • 새 데이터에 대한 레이블 또는 사후 확률을 예측합니다. 자세한 내용은 predict를 참조하십시오.

생성

ClassificationNaiveBayes 객체는 fitcnb를 사용하여 생성할 수 있습니다.

속성

모두 확장

범주형 예측 변수의 인덱스로, 양의 정수로 구성된 벡터로 지정됩니다. CategoricalPredictors는 범주형 예측 변수 예측 변수를 포함하는 예측 변수 데이터로 구성된 열에 대응되는 인덱스 값을 포함합니다. 범주형 예측 변수가 없는 경우 이 속성은 비어 있습니다([]).

데이터형: single | double

다변량 다항 수준으로, 숫자형 벡터로 구성된 셀형 벡터로 지정됩니다. CategoricalLevels는 예측 변수의 개수(size(X,2))와 길이가 동일합니다.

CategoricalLevels의 셀은 훈련 중에 'mvmn'으로 지정한 예측 변수(즉, 다변량 다항 분포를 갖는 예측 변수)에 대응됩니다. 다변량 다항 분포에 대응되지 않는 셀은 비어 있습니다([]).

예측 변수 j가 다변량 다항인 경우 CategoricalLevels{j}는 표본에 있는 예측 변수 j의 모든 고유한 값의 목록(unique(X(:,j))에서 NaN이 제거된 것)입니다.

데이터형: cell

고유한 클래스 이름으로, categorical형 배열이나 문자형 배열, 논리형 벡터나 숫자형 벡터, 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

ClassNamesY와 데이터형이 동일하며, 문자형 배열의 경우 K개의 요소 또는 행을 갖습니다. (소프트웨어는 string형 배열을 문자형 벡터로 구성된 셀형 배열로 처리합니다.)

데이터형: categorical | char | logical | single | double | cell

오분류 비용으로, KXK 정사각 행렬로 지정됩니다.

Cost(i,j)의 값은 실제 클래스가 i인 한 점을 클래스 j로 분류하는 비용입니다. Cost의 행과 열 순서는 ClassNames의 클래스 순서와 일치합니다.

Cost의 값은 훈련에 영향을 주지 않습니다. CostMdl을 훈련시킨 후에 점 표기법을 사용하여 재설정할 수 있습니다(예: Mdl.Cost = [0 0.5; 1 0];).

데이터형: double | single

fitcnb가 예측 변수를 모델링하는 데 사용하는 예측 변수 분포로, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

다음 표에는 사용 가능한 분포가 요약되어 있습니다.

설명
'kernel'커널 스무딩 밀도 추정값.
'mn'다항 bag-of-tokens 모델. 모든 예측 변수가 이 분포를 가짐을 나타냅니다.
'mvmn'다변량 다항 분포.
'normal'정규(가우스) 분포.

Distribution이 문자형 벡터로 구성된 1xP 셀형 배열이면 셀형 배열의 요소 j의 분포를 사용하여 특징 j를 모델링하게 됩니다.

데이터형: char | cell

분포 모수 추정값으로, 셀형 배열로 지정됩니다. DistributionParameters는 KxD 셀형 배열입니다. 여기서 셀 (k,d)는 k 클래스의 예측 변수 d의 인스턴스에 대한 분포 모수 추정값을 포함합니다. 행 순서는 속성 ClassNames에 있는 클래스 순서와 일치하고, 예측 변수 순서는 X의 열 순서와 일치합니다.

k 클래스에 예측 변수 j에 대한 관측값이 없으면 Distribution{k,j}는 비어 있습니다([]).

DistributionParameters의 요소는 예측 변수의 분포에 따라 달라집니다. 다음 표에서는 DistributionParameters{k,j}의 값을 설명합니다.

예측 변수 j의 분포
kernelKernelDistribution 모델. 셀 인덱싱과 점 표기법을 사용하여 속성을 표시합니다. 예를 들어, 세 번째 클래스의 예측 변수 2에 대한 커널 밀도의 추정된 대역폭을 표시하려면 Mdl.DistributionParameters{3,2}.BandWidth를 사용합니다.
mn토큰 j가 k 클래스에 나타날 확률을 나타내는 스칼라. 자세한 내용은 알고리즘 항목을 참조하십시오.
mvmnk 클래스의 예측 변수 j의 가능한 각 수준에 대한 확률을 포함하는 숫자형 벡터. 속성 CategoricalLevels에 저장된 예측 변수 j의 모든 고유한 수준의 정렬된 순서로 확률을 정렬합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.
normal2x1 숫자형 벡터. 첫 번째 요소는 표본평균이고 두 번째 요소는 표본 표준편차입니다.

데이터형: cell

확장 예측 변수 이름으로, 문자형 벡터로 구성된 셀형 배열로 저장됩니다.

모델이 범주형 변수에 대한 인코딩을 사용하는 경우 ExpandedPredictorNames는 확장 변수를 설명하는 이름을 포함합니다. 그렇지 않은 경우, ExpandedPredictorNamesPredictorNames와 동일합니다.

데이터형: cell

초모수에 대한 교차 검증 최적화와 관련된 설명으로, BayesianOptimization 객체 또는 초모수 및 관련 값으로 구성된 테이블로 지정됩니다. 이 속성은 모델을 생성할 때 'OptimizeHyperparameters' 이름-값 쌍의 인수가 비어 있지 않은 경우 비어 있지 않습니다. HyperparameterOptimizationResults의 값은 모델을 생성할 당시의 HyperparameterOptimizationOptions 구조체 내 Optimizer 필드의 설정에 따라 달라집니다(다음 표의 설명 참조).

Optimizer 필드의 값HyperparameterOptimizationResults의 값
'bayesopt'(디폴트 값)BayesianOptimization 클래스의 객체
'gridsearch' 또는 'randomsearch'사용된 초모수, 관측된 목적 함수 값(교차 검증 손실), 그리고 관측값 순위가 가장 낮은 값(최상)에서 가장 높은 값(최하)순으로 포함된 테이블

커널 스무딩 방법의 유형으로, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. Kernel은 예측 변수의 개수(size(X,2))와 길이가 동일합니다. Kernel{j}는 예측 변수 j에 대응되고, 커널 스무딩 방법의 유형을 설명하는 문자형 벡터를 포함합니다. 다음 표에서는 지원되는 커널 스무딩 방법의 유형을 설명합니다. I{u}는 표시 함수를 나타낸다고 하겠습니다.

커널공식
'box'상자(균일)

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

'epanechnikov'에파네츠니코프(Epanechnikov)

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

'normal'가우스

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

'triangle'삼각

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

어떤 셀이 비어 있으면([]) 커널 분포를 그 셀에 대응되는 예측 변수에 피팅하지 않은 것입니다.

데이터형: char | cell

분류기를 훈련시키는 데 사용된 모수 값(예: 이름-값 쌍의 인수 값)으로, 객체로 지정됩니다. 다음 표에는 ModelParameters의 속성이 요약되어 있습니다. 속성은 분류기를 훈련시키기 위해 설정된 이름-값 쌍의 인수 값에 대응됩니다.

속성용도
DistributionNames데이터 분포. 속성 DistributionNames와 동일한 값입니다.
Kernel커널 스무딩 방법의 유형. 속성 Kernel과 동일한 값입니다.
Method훈련 방법. 나이브 베이즈의 경우 값이 'NaiveBayes'입니다.
Support커널 스무딩 밀도 지지 범위. 속성 Support와 동일한 값입니다.
Type학습 유형. 분류의 경우 값이 'classification'입니다.
Width커널 스무딩 윈도우 너비. 속성 Width와 동일한 값입니다.

점 표기법을 사용하여 ModelParameters의 필드에 액세스할 수 있습니다. 예를 들어, Mdl.ModelParameters.Support를 사용하여 커널 지지 범위에 액세스합니다.

훈련 관측값 개수로, 숫자형 스칼라로 지정됩니다.

X 또는 Y가 결측값을 포함하는 경우 NumObservationsY의 길이보다 작을 수 있습니다.

데이터형: double

예측 변수 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. PredictorNames의 요소 순서는 X의 순서와 일치합니다.

데이터형: cell

클래스 사전 확률로, 숫자형 행 벡터로 지정됩니다. Prior는 1xK 벡터이고, 요소 순서는 ClassNames의 요소 순서와 일치합니다.

fitcnbsum(Prior) = 1이 되도록 사용자가 이름-값 쌍 모수 'Prior'를 사용하여 설정한 사전 확률을 정규화합니다.

Prior의 값은 최적 피팅 모델을 변경하지 않습니다. 따라서 PriorMdl을 훈련시킨 후에 점 표기법을 사용하여 재설정할 수 있습니다(예: Mdl.Prior = [0.2 0.8];).

데이터형: double | single

응답 변수 이름으로, 문자형 벡터로 지정됩니다.

데이터형: char

분류 점수 변환 함수로, 문자형 벡터 또는 함수 핸들로 지정됩니다.

예를 들어, 점수 변환 함수를 function으로 변경하려면 점 표기법을 사용하십시오.

  • 내장 함수의 경우, 다음 코드를 입력하고 function을 다음 표에 있는 값으로 바꾸십시오.

    Mdl.ScoreTransform = 'function';

    설명
    'doublelogit'1/(1 + e–2x)
    'invlogit'log(x / (1 – x))
    'ismax'최대 점수를 갖는 클래스의 점수를 1로 설정하고, 다른 모든 클래스의 점수를 0으로 설정합니다.
    'logit'1/(1 + e–x)
    'none' 또는 'identity'x(변환 없음)
    'sign'x < 0의 경우 –1
    x = 0의 경우 0
    x > 0의 경우 1
    'symmetric'2x – 1
    'symmetricismax'최대 점수를 갖는 클래스의 점수를 1로 설정하고, 다른 모든 클래스의 점수를 –1로 설정합니다.
    'symmetriclogit'2/(1 + e–x) – 1

  • MATLAB® 함수나 사용자가 직접 정의하는 함수의 경우, 이에 대한 함수 핸들을 입력하십시오.

    Mdl.ScoreTransform = @function;

    function은 행렬(원래 점수)을 받아 동일한 크기의 행렬(변환된 점수)을 반환합니다.

데이터형: char | function_handle

커널 스무딩 방법 밀도 지지 범위로, 셀형 벡터로 지정됩니다. Support는 예측 변수의 개수(size(X,2))와 길이가 동일합니다. 셀은 커널 밀도를 적용할 영역을 나타냅니다.

다음 표에서는 지원되는 옵션을 설명합니다.

설명
1x2 숫자형 행 벡터예를 들면 [L,U]와 같습니다. 여기서 LU는 각각 밀도 지지 범위에 대한 유한한 하한과 상한입니다.
'positive'밀도 지지 범위가 모두 양의 실수 값입니다.
'unbounded'밀도 지지 범위가 모두 실수 값입니다.

어떤 셀이 비어 있으면([]) 커널 분포를 그 셀에 대응되는 예측 변수에 피팅하지 않은 것입니다.

관측값 가중치로, 숫자형 벡터로 지정됩니다.

W의 길이는 NumObservations입니다.

fitcnb는 특정 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 사용자가 이름-값 쌍 모수 'Weights'에 대해 설정한 값을 정규화합니다.

데이터형: double

커널 스무딩 방법에서의 윈도우 너비로, 숫자형 행렬로 지정됩니다. Width는 KxP 행렬입니다. 여기서 K는 데이터에 있는 클래스 개수이고 P는 예측 변수의 개수(size(X,2))입니다.

Width(k,j)는 클래스 k 내의 예측 변수 j의 커널 스무딩 밀도에 대한 커널 스무딩 방법의 윈도우 너비입니다. j열에 있는 NaN은 예측 변수 j가 커널 밀도에 의해 피팅되지 않았음을 나타냅니다.

표준화되지 않은 예측 변수 데이터로, 숫자형 행렬로 지정됩니다. XNumObservations개 행과 P개 열을 갖습니다.

X의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 변수에 대응됩니다.

결측값으로 인해 제거된 행은 X에서 제외됩니다.

데이터형: double

관측된 클래스 레이블로, categorical형 배열이나 문자형 배열, 논리형 벡터나 숫자형 벡터, 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. Yfitcnb의 입력 인수 Y와 데이터형이 같습니다. (소프트웨어는 string형 배열을 문자형 벡터로 구성된 셀형 배열로 처리합니다.)

Y의 각 행은 이에 대응되는 X 행의 관측된 분류를 나타냅니다.

결측값으로 인해 제거된 요소는 Y에서 제외됩니다.

데이터형: categorical | char | logical | single | double | cell

메서드

compactCompact naive Bayes classifier
crossvalCross-validated naive Bayes classifier
resubEdgeClassification edge for naive Bayes classifiers by resubstitution
resubLossClassification loss for naive Bayes classifiers by resubstitution
resubMarginClassification margins for naive Bayes classifiers by resubstitution
resubPredictPredict resubstitution labels of naive Bayes classifier

상속된 메서드

edgeClassification edge for naive Bayes classifiers
logPLog unconditional probability density for naive Bayes classifier
lossClassification error for naive Bayes classifier
marginClassification margins for naive Bayes classifiers
predictPredict labels using naive Bayes classification model

복사 의미 체계

값. 값 클래스가 복사 작업에 미치는 영향에 대한 내용은 객체 복사 (MATLAB) 항목을 참조하십시오.

예제

모두 축소

피셔(Fisher)의 붓꽃 데이터에 사용할 나이브 베이즈 분류기를 생성합니다. 또한, 훈련을 수행한 후에 사전 확률을 지정합니다.

피셔의 붓꽃 데이터를 불러옵니다.

load fisheriris
X = meas;
Y = species;

X는 150개 붓꽃에 대한 4개의 꽃잎 측정값을 포함하는 숫자형 행렬입니다. Y는 이에 대응되는 붓꽃 종을 포함하는 문자형 벡터로 구성된 셀형 배열입니다.

나이브 베이즈 분류기를 훈련시킵니다.

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


  Properties, Methods

Mdl은 훈련된 ClassificationNaiveBayes 분류기이며, 이에 대한 속성 중 일부는 명령 창에 표시됩니다. 기본적으로 각 예측 변수를 독립 변수로 취급하며 정규분포를 사용하여 피팅합니다.

Mdl의 속성에 액세스하려면 점 표기법을 사용하십시오.

Mdl.ClassNames
ans = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Mdl.Prior
ans = 1×3

    0.3333    0.3333    0.3333

Mdl.Priorfitcnb의 이름-값 쌍의 인수 'Prior'를 사용하여 설정할 수 있는 클래스 사전 확률을 포함합니다. 클래스 사전 확률의 순서는 Mdl.ClassNames에 포함된 클래스의 순서와 일치합니다. 기본적으로, 사전 확률은 데이터에서 이러한 클래스가 나타날 각각의 상대 빈도입니다.

훈련을 수행한 후 사전 확률을 재설정할 수도 있습니다. 예를 들어, 사전 확률을 각각 0.5, 0.2, 0.3으로 설정합니다.

Mdl.Prior = [0.5 0.2 0.3];

Mdlpredict에 전달하여 새 측정값에 레이블을 지정하거나 crossval에 전달하여 분류기를 교차 검증할 수 있습니다.

세부 정보

모두 확장

알고리즘

  • fitcnb를 사용하여 Mdl을 훈련시킬 때 'DistributionNames','mn'을 지정하면 bag-of-tokens 모델에 의해 다항 분포가 피팅됩니다. 토큰 j가 클래스 k에 나타날 확률이 속성 DistributionParameters{k,j}에 저장됩니다. 가산성 스무딩[2]을 사용하여 추정한 확률은 다음과 같습니다.

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

    여기서

    • cj|k=nki:yiclass kxijwii:yiclass kwi;입니다. 이는 클래스 k에서 토큰 j의 가중 발생 횟수입니다.

    • nk는 클래스 k의 관측값 개수입니다.

    • wi는 관측값 i에 대한 가중치입니다. 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 가중치가 정규화됩니다.

    • ck=j=1Pcj|k;입니다. 이는 클래스 k에서 모든 토큰의 총 가중 발생 횟수입니다.

  • fitcnb를 사용하여 Mdl을 훈련시킬 때 'DistributionNames','mvmn'을 지정하면,

    1. 각 예측 변수에 대해, 고유한 수준의 목록이 수집되고, 정렬된 목록이 CategoricalLevels에 저장되고, 각 수준이 Bin으로 간주됩니다. 각 예측 변수/클래스 조합은 개별적이고 독립적인 다항 확률 변수입니다.

    2. 클래스 k의 예측 변수 j에 대해, CategoricalLevels{j}에 저장된 목록에 따라 각 범주형 수준의 인스턴스를 세게 됩니다.

    3. CategoricalLevels{j}에 있는 모든 수준에 대해, 클래스 k의 예측 변수 j가 수준 L을 가질 확률이 속성 DistributionParameters{k,j}에 저장됩니다. 가산성 스무딩[2]을 사용하여 추정한 확률은 다음과 같습니다.

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

      여기서

      • mj|k(L)=nki:yi class kI{xij=L}wii:yi class kwi;입니다. 이는 클래스 k에서 예측 변수 j가 L과 동일한 관측값의 가중 개수입니다.

      • nk는 클래스 k의 관측값 개수입니다.

      • xij = L이면 I{xij=L}=1이고 그렇지 않으면 0입니다.

      • wi는 관측값 i에 대한 가중치입니다. 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 가중치가 정규화됩니다.

      • mj는 예측 변수 j의 고유한 수준 개수입니다.

      • mk는 클래스 k의 관측값의 가중 개수입니다.

참고 문헌

[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.

확장 기능