이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
ClassificationNaiveBayes
다중 클래스 분류를 위한 나이브 베이즈 분류
설명
ClassificationNaiveBayes
는 다중 클래스 학습을 위한 나이브 베이즈(Naive Bayes) 분류기입니다. 훈련된 ClassificationNaiveBayes
분류기는 훈련 데이터, 모수 값, 데이터 분포, 사전 확률을 저장합니다. 이러한 분류기를 사용하여 재대입 예측값 추정(resubPredict
참조) 및 새 데이터에 대한 레이블 또는 사후 확률 예측(predict
참조) 등의 작업을 수행합니다.
생성
ClassificationNaiveBayes
객체는 fitcnb
를 사용하여 생성할 수 있습니다.
속성
예측 변수 속성
PredictorNames
— 예측 변수 이름
문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
예측 변수 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. PredictorNames
에 포함된 요소의 순서는 예측 변수 이름이 훈련 데이터 X
에 나타나는 순서와 일치합니다.
ExpandedPredictorNames
— 확장 예측 변수 이름
문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
확장 예측 변수 이름으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
모델이 범주형 변수에 대한 가변수 인코딩을 사용하는 경우 ExpandedPredictorNames
는 확장 변수를 설명하는 이름을 포함합니다. 그렇지 않은 경우, ExpandedPredictorNames
는 PredictorNames
와 동일합니다.
CategoricalPredictors
— 범주형 예측 변수의 인덱스
양의 정수로 구성된 벡터 | []
읽기 전용 속성입니다.
범주형 예측 변수의 인덱스로, 양의 정수로 구성된 벡터로 지정됩니다. CategoricalPredictors
는 대응하는 예측 변수가 범주형임을 나타내는 인덱스 값을 포함합니다. 인덱스 값은 1과 p
사이입니다. 여기서 p
는 모델을 훈련시킬 때 사용되는 예측 변수의 개수입니다. 범주형 예측 변수가 없는 경우 이 속성은 비어 있습니다([]
).
데이터형: single
| double
CategoricalLevels
— 다변량 다항 수준
셀형 배열
읽기 전용 속성입니다.
다변량 다항 수준으로, 셀형 배열로 지정됩니다. CategoricalLevels
의 길이는 예측 변수의 개수와 같습니다(size(X,2)
).
CategoricalLevels
의 셀은 훈련 중에 사용자가 'mvmn'
으로 지정하는 예측 변수, 즉 다변량 다항 분포를 갖는 예측 변수에 대응됩니다. 다변량 다항 분포에 대응되지 않는 셀은 비어 있습니다([]
).
예측 변수 j가 다변량 다항인 경우 CategoricalLevels{
j}
는 표본에 있는 예측 변수 j의 모든 고유한 값의 목록입니다. NaN
은 unique(X(:,j))
에서 제거되었습니다.
X
— 표준화되지 않은 예측 변수
숫자형 행렬
읽기 전용 속성입니다.
나이브 베이즈 분류기를 훈련시키는 데 사용되는 표준화되지 않은 예측 변수로, 숫자형 행렬로 지정됩니다. X
의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 변수에 대응됩니다. 소프트웨어는 하나 이상의 누락값을 포함하는 관측값을 제외시키고, Y에서 대응되는 요소를 제거합니다.
예측 변수 분포 속성
DistributionNames
— 예측 변수 분포
'normal'
(디폴트 값) | 'kernel'
| 'mn'
| 'mvmn'
| 문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
예측 변수 분포로, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. fitcnb
는 예측 변수 분포를 사용하여 예측 변수를 모델링합니다. 다음 표에는 사용 가능한 분포가 나열되어 있습니다.
값 | 설명 |
---|---|
'kernel' | 커널 평활화 밀도 추정값 |
'mn' | 다항 분포. mn 을 지정할 경우 모든 특징이 다항 분포의 성분입니다. 따라서 string형 배열이나 문자형 벡터로 구성된 셀형 배열의 요소로 'mn' 을 포함시킬 수 없습니다. 자세한 내용은 다항 분포에 대해 추정된 확률 항목을 참조하십시오. |
'mvmn' | 다변량 다항 분포. 자세한 내용은 다변량 다항 분포에 대해 추정된 확률 항목을 참조하십시오. |
'normal' | 정규(가우스) 분포 |
DistributionNames
이 문자형 벡터로 구성된 1×P 셀형 배열이면 fitcnb
는 셀형 배열의 요소 j의 분포를 사용하여 특징 j를 모델링합니다.
예: 'mn'
예: {'kernel','normal','kernel'}
데이터형: char
| string
| cell
DistributionParameters
— 분포 모수 추정값
셀형 배열
읽기 전용 속성입니다.
분포 모수 추정값으로, 셀형 배열로 지정됩니다. DistributionParameters
는 K×D 셀형 배열입니다. 여기서 셀 (k,d)는 k 클래스의 예측 변수 d의 인스턴스에 대한 분포 모수 추정값을 포함합니다. 행 순서는 속성 ClassNames
에 있는 클래스 순서와 일치하고, 예측 변수 순서는 X
의 열 순서와 일치합니다.
k
클래스에 예측 변수 j
에 대한 관측값이 없으면 Distribution{
는 비어 있습니다(k
,j
}[]
).
DistributionParameters
의 요소는 예측 변수의 분포에 따라 달라집니다. 다음 표에서는 DistributionParameters{
의 값을 설명합니다.k
,j
}
예측 변수 j의 분포 | 예측 변수 j 및 k 클래스에 대한 셀형 배열의 값 |
---|---|
kernel | KernelDistribution 모델. 셀 인덱싱과 점 표기법을 사용하여 속성을 표시합니다. 예를 들어, 세 번째 클래스의 예측 변수 2에 대한 커널 밀도의 추정된 대역폭을 표시하려면 Mdl.DistributionParameters{3,2}.Bandwidth 를 사용합니다. |
mn | 토큰 j가 k 클래스에 나타날 확률을 나타내는 스칼라. 자세한 내용은 다항 분포에 대해 추정된 확률 항목을 참조하십시오. |
mvmn | k 클래스의 예측 변수 j의 가능한 각 수준에 대한 확률을 포함하는 숫자형 벡터. 속성 CategoricalLevels 에 저장된 예측 변수 j의 모든 고유한 수준의 정렬된 순서로 확률을 정렬합니다. 자세한 내용은 다변량 다항 분포에 대해 추정된 확률 항목을 참조하십시오. |
normal | 2×1 숫자형 벡터. 첫 번째 요소는 표본평균이고 두 번째 요소는 표본 표준편차입니다. 자세한 내용은 정규분포 추정량 항목을 참조하십시오. |
Kernel
— 커널 평활화 방법의 유형
'normal'
(디폴트 값) | 'box'
| 셀형 배열 | ...
읽기 전용 속성입니다.
커널 평활화 방법의 유형으로, 커널의 이름 또는 커널 이름으로 구성된 셀형 배열로 지정됩니다. Kernel
의 길이는 예측 변수의 개수와 같습니다(size(X,2)
). Kernel{
j}
는 예측 변수 j에 대응되고, 커널 평활화 방법의 유형을 설명하는 문자형 벡터를 포함합니다. 어떤 셀이 비어 있으면([]
) fitcnb
가 커널 분포를 그 셀에 대응되는 예측 변수에 피팅하지 않은 것입니다.
다음 표에서는 지원되는 커널 평활화 방법의 유형을 설명합니다. I{u}는 표시 함수를 나타냅니다.
값 | 커널 | 공식 |
---|---|---|
'box' | 상자(균일) |
|
'epanechnikov' | Epanechnikov |
|
'normal' | 가우스 |
|
'triangle' | 삼각 |
|
예: 'box'
예: {'epanechnikov','normal'}
데이터형: char
| string
| cell
Mu
— 예측 변수 평균
숫자형 벡터 | []
R2023b 이후
읽기 전용 속성입니다.
예측 변수 평균으로, 숫자형 벡터로 지정됩니다. fitcnb
를 사용하여 나이브 베이즈 분류기를 훈련시킬 때 Standardize
를 1
또는 true
로 지정하면 Mu
벡터의 길이는 예측 변수 개수와 같습니다. 커널 분포가 아닌 예측 변수(예: 범주형 예측 변수)인 경우 벡터에는 0
값이 포함됩니다(DistributionNames
항목 참조).
fitcnb
를 사용하여 나이브 베이즈 분류기를 훈련시킬 때 Standardize
를 0
또는 false
로 설정하면 Mu
값은 빈 벡터([]
)입니다.
데이터형: double
Sigma
— 예측 변수 표준편차
숫자형 벡터 | []
R2023b 이후
읽기 전용 속성입니다.
예측 변수 표준편차로, 숫자형 벡터로 지정됩니다. fitcnb
를 사용하여 나이브 베이즈 분류기를 훈련시킬 때 Standardize
를 1
또는 true
로 지정하면 Sigma
벡터의 길이는 예측 변수 개수와 같습니다. 커널 분포가 아닌 예측 변수(예: 범주형 예측 변수)인 경우 벡터에는 1
값이 포함됩니다(DistributionNames
항목 참조).
fitcnb
를 사용하여 나이브 베이즈 분류기를 훈련시킬 때 Standardize
를 0
또는 false
로 설정하면 Sigma
값은 빈 벡터([]
)입니다.
데이터형: double
Support
— 커널 평활화 방법 밀도 지지 범위
셀형 배열
읽기 전용 속성입니다.
커널 평활화 방법 밀도 지지 범위로, 셀형 배열로 지정됩니다. Support
의 길이는 예측 변수의 개수와 같습니다(size(X,2)
). 셀은 fitcnb
가 커널 밀도를 적용하는 영역을 나타냅니다. 어떤 셀이 비어 있으면([]
) fitcnb
가 커널 분포를 그 셀에 대응되는 예측 변수에 피팅하지 않은 것입니다.
다음 표에서는 지원되는 옵션을 설명합니다.
값 | 설명 |
---|---|
1×2 숫자형 행 벡터 | 밀도 지지 범위가 지정된 범위(예: [L,U] )에 적용됩니다. 여기서 L 과 U 는 각각 유한한 하한과 상한입니다. |
'positive' | 밀도 지지 범위가 모든 양의 실수 값에 적용됩니다. |
'unbounded' | 밀도 지지 범위가 모든 실수 값에 적용됩니다. |
Width
— 커널 평활화 방법의 윈도우 너비
숫자형 행렬
읽기 전용 속성입니다.
커널 평활화 방법에서의 윈도우 너비로, 숫자형 행렬로 지정됩니다. Width
는 K×P 행렬입니다. 여기서 K는 데이터에 있는 클래스 개수이고 P는 예측 변수의 개수(size(X,2)
)입니다.
Width(
는 k
,j
)k
클래스 내의 예측 변수 j
의 커널 평활화 밀도에 대한 커널 평활화 방법의 윈도우 너비입니다. j
열에 있는 NaN
은 fitcnb
가 커널 밀도를 사용하여 예측 변수 j
를 피팅하지 않았음을 나타냅니다.
응답 변수 속성
ClassNames
— 고유한 클래스 이름
categorical형 배열 | 문자형 배열 | 논리형 벡터 | 숫자형 벡터 | 문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
훈련 모델에 사용되는 고유한 클래스 이름으로, categorical형 배열 또는 문자형 배열, 논리형 벡터 또는 숫자형 벡터, 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
ClassNames
는 Y
와 데이터형이 동일하며, 문자형 배열의 경우 K개의 요소 또는 행을 갖습니다. (소프트웨어는 string형 배열을 문자형 벡터로 구성된 셀형 배열로 처리합니다.)
데이터형: categorical
| char
| string
| logical
| double
| cell
ResponseName
— 응답 변수 이름
문자형 벡터
읽기 전용 속성입니다.
응답 변수 이름으로, 문자형 벡터로 지정됩니다.
데이터형: char
| string
Y
— 클래스 레이블
categorical형 배열 | 문자형 배열 | 논리형 벡터 | 숫자형 벡터 | 문자형 벡터로 구성된 셀형 배열
읽기 전용 속성입니다.
나이브 베이즈 분류기를 훈련시키는 데 사용되는 클래스 레이블로, categorical형 배열이나 문자형 배열, 논리형 벡터나 숫자형 벡터, 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. Y
의 각 행은 이에 대응되는 X
행의 관측된 분류를 나타냅니다.
Y
는 Y
에서 모델을 훈련시키는 데 사용되는 데이터와 데이터형이 동일합니다. (소프트웨어는 string형 배열을 문자형 벡터로 구성된 셀형 배열로 처리합니다.)
데이터형: single
| double
| logical
| char
| string
| cell
| categorical
훈련 속성
ModelParameters
— 모델을 훈련시키는 데 사용되는 모수 값
객체
읽기 전용 속성입니다.
ClassificationNaiveBayes
모델을 훈련시키는 데 사용되는 모수 값으로, 객체로 지정됩니다. ModelParameters
는 모수 값(예: 나이브 베이즈 분류기 훈련에 사용되는 이름-값 쌍의 인수 값)을 포함합니다.
점 표기법을 사용하여 ModelParameters
의 속성에 액세스할 수 있습니다. 예를 들어, Mdl.ModelParameters.Support
를 사용하여 커널 지지 범위에 액세스합니다.
NumObservations
— 훈련 관측값 개수
숫자형 스칼라
읽기 전용 속성입니다.
X
및 Y
에 저장된 훈련 데이터에 포함된 훈련 관측값 개수로, 숫자형 스칼라로 지정됩니다.
Prior
— 사전 확률
숫자형 벡터
사전 확률로, 숫자형 벡터로 지정됩니다. Prior
의 요소 순서는 Mdl.ClassNames
의 요소 순서와 일치합니다.
fitcnb
는 sum(Prior)
= 1
이 되도록 사용자가 'Prior'
이름-값 쌍의 인수를 사용하여 설정한 사전 확률을 정규화합니다.
Prior
의 값은 최적 피팅 모델에 영향을 주지 않습니다. 따라서 Prior
는 Mdl
을 훈련시킨 후에 점 표기법을 사용하여 재설정할 수 있습니다.
예: Mdl.Prior = [0.2 0.8]
데이터형: double
| single
W
— 관측값 가중치
음이 아닌 값으로 구성된 벡터
읽기 전용 속성입니다.
관측값 가중치로, Y
와 동일한 행 개수를 갖는, 음이 아닌 값으로 구성된 벡터로 지정됩니다. W
의 각 요소는 이에 대응되는 Y
의 관측값의 상대적 중요도를 지정합니다. fitcnb
는 특정 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 사용자가 'Weights'
이름-값 쌍의 인수에 대해 설정한 값을 정규화합니다.
분류기 속성
Cost
— 오분류 비용
정사각 행렬
오분류 비용으로, 숫자형 정사각 행렬로 지정됩니다. 여기서 Cost(i,j)
는 어떤 점의 실제 클래스가 i
인 경우 이 점을 j
클래스로 분류하는 데 드는 비용입니다. 행은 실제 클래스에 대응되고, 열은 예측 클래스에 대응됩니다. Cost
의 행과 열 순서는 ClassNames
의 클래스 순서와 일치합니다.
오분류 비용 행렬의 대각선상 요소는 0이어야 합니다.
Cost
의 값은 훈련에 영향을 주지 않습니다. Cost
는 Mdl
을 훈련시킨 후에 점 표기법을 사용하여 재설정할 수 있습니다.
예: Mdl.Cost = [0 0.5 ; 1 0]
데이터형: double
| single
HyperparameterOptimizationResults
— 하이퍼파라미터에 대한 교차 검증 최적화
BayesianOptimization
객체 | table형
읽기 전용 속성입니다.
하이퍼파라미터에 대한 교차 검증 최적화로, BayesianOptimization
객체 또는 하이퍼파라미터 및 관련 값으로 구성된 테이블로 지정됩니다. 이 속성은 모델을 생성할 때 'OptimizeHyperparameters'
이름-값 쌍의 인수가 비어 있지 않은 경우 비어 있지 않습니다. HyperparameterOptimizationResults
의 값은 모델을 생성할 당시의 HyperparameterOptimizationOptions
구조체 내 Optimizer
필드의 설정에 따라 달라집니다.
Optimizer 필드의 값 | HyperparameterOptimizationResults 의 값 |
---|---|
'bayesopt' (디폴트 값) | BayesianOptimization 클래스의 객체 |
'gridsearch' 또는 'randomsearch' | 사용된 하이퍼파라미터, 관측된 목적 함수 값(교차 검증 손실), 그리고 관측값 순위가 가장 낮은 값(최상)에서 가장 높은 값(최하)순으로 포함된 테이블 |
ScoreTransform
— 분류 점수 변환 방식
'none'
(디폴트 값) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| 함수 핸들 | ...
분류 점수 변환 방식으로, 문자형 벡터 또는 함수 핸들로 지정됩니다. 다음 표에는 사용 가능한 문자형 벡터가 요약되어 있습니다.
값 | 설명 |
---|---|
"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 = 'logit'
데이터형: char
| string
| function handle
객체 함수
compact | Reduce size of machine learning model |
compareHoldout | Compare accuracies of two classification models using new data |
crossval | Cross-validate machine learning model |
edge | Classification edge for naive Bayes classifier |
incrementalLearner | Convert naive Bayes classification model to incremental learner |
lime | Local interpretable model-agnostic explanations (LIME) |
logp | Log unconditional probability density for naive Bayes classifier |
loss | Classification loss for naive Bayes classifier |
margin | Classification margins for naive Bayes classifier |
partialDependence | Compute partial dependence |
plotPartialDependence | Create partial dependence plot (PDP) and individual conditional expectation (ICE) plots |
predict | Classify observations using naive Bayes classifier |
resubEdge | Resubstitution classification edge |
resubLoss | Resubstitution classification loss |
resubMargin | Resubstitution classification margin |
resubPredict | Classify training data using trained classifier |
shapley | Shapley values |
testckfold | Compare accuracies of two classification models by repeated cross-validation |
예제
나이브 베이즈 분류기 훈련시키기
피셔(Fisher)의 붓꽃 데이터 세트에 사용할 나이브 베이즈 분류기를 생성합니다. 그런 다음, 분류기를 훈련시킨 후에 사전 확률을 지정합니다.
fisheriris
데이터 세트를 불러옵니다. X
를 150개 붓꽃에 대한 4개의 꽃잎 측정값을 포함하는 숫자형 행렬로 생성합니다. Y
를 이에 대응되는 붓꽃 종을 포함하는 문자형 벡터로 구성된 셀형 배열로 생성합니다.
load fisheriris
X = meas;
Y = species;
예측 변수 X
와 클래스 레이블 Y
를 사용하여 나이브 베이즈 분류기를 훈련시킵니다. fitcnb
는 각 예측 변수가 독립적이라고 가정하며 기본적으로 정규분포를 사용하여 각 예측 변수를 피팅합니다.
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}
Mdl
은 훈련된 ClassificationNaiveBayes
분류기입니다. Mdl
속성 중 일부는 명령 창에 나타납니다.
점 표기법을 사용하여 Mdl
의 속성을 표시합니다. 예를 들어, 클래스 이름과 사전 확률을 표시합니다.
Mdl.ClassNames
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
Mdl.Prior
ans = 1×3
0.3333 0.3333 0.3333
Mdl.Prior
에서 클래스 사전 확률의 순서는 Mdl.ClassNames
에 포함된 클래스의 순서와 일치합니다. 기본적으로, 사전 확률은 데이터에서 이러한 클래스가 나타날 각각의 상대 도수입니다. 또는 'Prior'
이름-값 쌍의 인수를 사용하여 fitcnb
를 호출할 때 사전 확률을 설정할 수 있습니다.
분류기를 훈련시킨 후에 점 표기법을 사용하여 사전 확률을 설정합니다. 예를 들어, 사전 확률을 각각 0.5, 0.2, 0.3으로 설정합니다.
Mdl.Prior = [0.5 0.2 0.3];
이제 이 훈련된 분류기를 사용하여 추가적인 작업을 수행할 수 있습니다. 예를 들어, predict
를 사용해 새 측정값에 레이블을 지정하거나 crossval
을 사용해 분류기를 교차 검증할 수 있습니다.
나이브 베이즈 분류기 훈련 및 교차 검증하기
나이브 베이즈 분류기를 훈련시키고 교차 검증합니다. fitcnb
는 기본적으로 10겹 교차 검증을 구현합니다. 그런 다음 교차 검증된 분류 오차를 추정합니다.
ionosphere
데이터 세트를 불러옵니다. 안정성을 위해 처음 두 개의 예측 변수를 제거합니다.
load ionosphere X = X(:,3:end); rng('default') % for reproducibility
예측 변수 X
와 클래스 레이블 Y
를 사용하여 나이브 베이즈 분류기를 훈련시키고 교차 검증합니다. 권장되는 방법은 클래스 이름을 지정하는 것입니다. fitcnb
는 각 예측 변수가 조건부 분포 및 정규분포된다고 가정합니다.
CVMdl = fitcnb(X,Y,'ClassNames',{'b','g'},'CrossVal','on')
CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {'x1' 'x2' 'x3' 'x4' 'x5' 'x6' 'x7' 'x8' 'x9' 'x10' 'x11' 'x12' 'x13' 'x14' 'x15' 'x16' 'x17' 'x18' 'x19' 'x20' 'x21' 'x22' 'x23' 'x24' 'x25' 'x26' 'x27' 'x28' 'x29' 'x30' 'x31' 'x32'} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none'
CVMdl
은 ClassificationPartitionedModel
모델로 교차 검증된 나이브 베이즈 분류기입니다. 또는, 훈련된 ClassificationNaiveBayes
모델을 crossval
로 전달하여 교차 검증할 수 있습니다.
점 표기법을 사용하여 CVMdl
의 첫 번째 훈련 겹을 표시합니다.
CVMdl.Trained{1}
ans = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}
각각의 겹은 데이터의 90%에 대해 훈련된 CompactClassificationNaiveBayes
모델입니다.
새 데이터에 대해 예측을 수행할 때에는 전체 나이브 베이즈 모델이나 간소 나이브 베이즈 모델이 사용되지 않습니다. 대신, CVMdl
을 kfoldLoss
에 전달하여 일반화 오차를 추정하는 데 사용하십시오.
genError = kfoldLoss(CVMdl)
genError = 0.1852
평균적으로 일반화 오차는 약 19%입니다.
예측 변수에 대해 서로 다른 조건부 분포를 지정하거나, 일반화 오차를 줄이기 위해 조건부 분포 모수를 조정할 수 있습니다.
세부 정보
Bag-of-Tokens 모델
bag-of-tokens 모델에서, 예측 변수 j의 값은 이 관측값에서 토큰 j의 음이 아닌 발생 횟수입니다. 다항 모델의 범주(Bin) 개수는 고유한 토큰의 개수(예측 변수의 개수)입니다.
나이브 베이즈(Naive Bayes)
나이브 베이즈는 데이터에 밀도 추정을 적용하는 분류 알고리즘입니다.
이 알고리즘은 베이즈 정리를 사용하며, 주어진 클래스에 대해 예측 변수가 조건부 독립이라고 낙관적으로(naively) 가정합니다. 이 가정은 실제로는 보통 위반되지만, 나이브 베이즈 분류기는 편향된 클래스 밀도 추정값의 영향을 덜 받는(robust) 사후 분포를 산출하는 경향이 있습니다(특히 사후분포가 0.5인 경우(결정 경계)) [1].
나이브 베이즈 분류기는 가장 가능성이 높은 클래스에 관측값을 할당합니다(이는 다른 말로 하면 최대 사후 확률 결정 규칙임). 이 알고리즘은 명시적으로 다음 단계를 수행합니다.
각 클래스 내의 예측 변수의 밀도를 추정합니다.
베이즈 규칙에 따라 사후 확률을 모델링합니다. 즉, 모든 k = 1,...,K에 대해 다음과 같습니다.
여기서
Y는 관측값의 클래스 인덱스에 대응되는 확률 변수입니다.
X1,...,XP는 관측값의 확률 예측 변수입니다.
는 클래스 인덱스가 k인 사전 확률입니다.
각 클래스에 대해 사후 확률을 추정하여 관측값을 분류한 다음, 최대 사후 확률을 산출하는 클래스에 관측값을 할당합니다.
예측 변수가 다항 분포를 구성하는 경우 사후 확률은 입니다. 여기서 는 다항 분포의 확률 질량 함수입니다.
알고리즘
정규분포 추정량
예측 변수 j
가 조건부 정규분포를 가지는 경우(DistributionNames
속성 참조), 소프트웨어는 가중 평균과 가중 표준편차의 무편향 추정을 클래스별로 계산하여 데이터에 분포를 피팅합니다. 각 클래스 k에 대해 다음과 같습니다.
예측 변수 j의 가중 평균은 다음과 같습니다.
여기서 wi는 관측값 i의 가중치입니다. 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 가중치가 정규화됩니다.
예측 변수 j의 가중 표준편차의 무편향 추정량은 다음과 같습니다.
여기서 z1|k는 k 클래스 내의 가중치 합이고 z2|k는 k 클래스 내의 제곱 가중치 합입니다.
다항 분포에 대해 추정된 확률
모든 예측 변수가 조건부 다항 분포를 구성하는 경우(DistributionNames
속성 참조), 소프트웨어는 Bag-of-Tokens 모델을 사용하여 분포를 피팅합니다. 토큰 j
가 클래스 k
에 나타날 확률이 속성 DistributionParameters{
에 저장됩니다. 가산성 평활화 [2]를 사용하여 추정한 확률은 다음과 같습니다.k
,j
}
여기서
입니다. 이는 클래스 k에서 토큰 j의 가중 발생 횟수입니다.
nk는 클래스 k의 관측값 개수입니다.
는 관측값 i에 대한 가중치입니다. 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 가중치가 정규화됩니다.
입니다. 이는 클래스 k에서 모든 토큰의 총 가중 발생 횟수입니다.
다변량 다항 분포에 대해 추정된 확률
예측 변수 j
가 조건부 다변량 다항 분포를 가지는 경우(DistributionNames
속성 참조) 다음과 같은 절차가 진행됩니다.
고유한 수준의 목록이 수집되고, 정렬된 목록이
CategoricalLevels
에 저장되고, 각 수준이 Bin으로 간주됩니다. 예측 변수와 클래스의 각 조합은 개별적이고 독립적인 다항 확률 변수입니다.각 클래스 k에 대해,
CategoricalLevels{
에 저장된 목록에 따라 각 범주형 수준의 인스턴스를 세게 됩니다.j
}CategoricalLevels{
에 있는 모든 수준에 대해, 클래스j
}k
의 예측 변수j
가 수준 L을 가질 확률이 속성DistributionParameters{
에 저장됩니다. 가산성 평활화 [2]를 사용하여 추정한 확률은 다음과 같습니다.k
,j
}여기서
입니다. 이는 클래스 k에서 예측 변수 j가 L과 동일한 관측값의 가중 개수입니다.
nk는 클래스 k의 관측값 개수입니다.
xij = L이면 이고, 그렇지 않으면 0입니다.
는 관측값 i에 대한 가중치입니다. 클래스 내의 가중치 합이 해당 클래스의 사전 확률이 되도록 가중치가 정규화됩니다.
mj는 예측 변수 j의 고유한 수준 개수입니다.
mk는 클래스 k의 관측값의 가중 개수입니다.
참고 문헌
[1] Hastie, Trevor, Robert Tibshirani, and Jerome Friedman. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. 2nd ed. Springer Series in Statistics. New York, NY: Springer, 2009. https://doi.org/10.1007/978-0-387-84858-7.
[2] Manning, Christopher D., Prabhakar Raghavan, and Hinrich Schütze. Introduction to Information Retrieval, NY: Cambridge University Press, 2008.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
predict
함수가 코드 생성을 지원합니다.fitcnb
를 사용하여 나이브 베이즈 모델을 훈련시키는 경우 다음 제한 사항이 적용됩니다.'DistributionNames'
이름-값 쌍의 인수의 값은'mn'
을 포함할 수 없습니다.'ScoreTransform'
이름-값 쌍의 인수의 값은 익명 함수일 수 없습니다.
자세한 내용은 Introduction to Code Generation 항목을 참조하십시오.
버전 내역
R2014b에 개발됨R2023b: 나이브 베이즈 모델이 커널 분포를 갖는 예측 변수의 표준화를 지원함
fitcnb
가 커널 분포를 갖는 예측 변수의 표준화를 지원합니다. 즉, DistributionNames
이름-값 인수에 "kernel"
분포가 하나라도 들어 있으면 Standardize
이름-값 인수를 true
로 지정할 수 있습니다. 나이브 베이즈 모델에는 각각 평균과 표준편차를 포함하는 Mu
속성과 Sigma
속성이 있으며, 훈련 전에 이 속성을 사용하여 예측 변수를 표준화합니다. fitcnb
가 어떤 표준화도 수행하지 않을 때는 이 속성은 비어 있습니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)