이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.
단일 클래스 및 이진 분류를 위한 서포트 벡터 머신(SVM) 분류기 훈련
fitcsvm
은 저차원이나 중간 차원의 예측 변수 데이터 세트에 대한 단일 클래스 및 2-클래스(이진) 분류에 대해 서포트 벡터 머신(SVM) 모델을 훈련시키거나 교차 검증합니다. fitcsvm
은 커널 함수를 사용하여 예측 변수 데이터를 매핑하는 것을 지원하고, 순차적 최소규모 최적화(SMO), 반복 단일 데이터 알고리즘(ISDA)도 지원하며, 목적 함수 최소화를 위한 2차 계획법을 사용하는 L1 소프트 마진(Soft Margin) 최소화를 지원합니다.
고차원 데이터 세트, 즉 많은 예측 변수를 포함하는 데이터 세트에 대한 이진 분류를 수행할 선형 SVM 모델을 훈련시키려면 fitclinear
를 대신 사용하십시오.
이진 SVM 모델을 결합하는 다중클래스 학습에 대해서는 오류 수정 출력 코드(ECOC)를 사용하십시오. 자세한 내용은 fitcecoc
를 참조하십시오.
SVM 회귀 모델을 훈련시키려면 저차원 및 중간 차원의 예측 변수 데이터 세트의 경우 fitrsvm
을 참조하고 고차원 데이터 세트의 경우 fitrlinear
를 참조하십시오.
은 테이블 Mdl
= fitcsvm(Tbl
,ResponseVarName
)Tbl
에 포함된 표본 데이터를 사용하여 훈련된 서포트 벡터 머신(SVM) 분류기 Mdl
을 반환합니다. ResponseVarName
은 Tbl
에서 단일 클래스 또는 2-클래스 분류에 대한 클래스 레이블을 포함하는 변수의 이름입니다.
는 위에 열거된 구문에 나와 있는 입력 인수와 함께 하나 이상의 이름-값 쌍의 인수를 사용하여 옵션을 지정합니다. 예를 들어, 교차 검증 유형, 오분류 비용 그리고 점수 변환 함수 유형을 지정할 수 있습니다.Mdl
= fitcsvm(___,Name,Value
)
fitcsvm
은 단일 클래스 학습 응용 사례와 2-클래스 학습 응용 사례에 대해 SVM 분류기를 훈련시킵니다. 세 개 이상의 클래스를 갖는 데이터를 사용하여 SVM 분류기를 훈련시키려면 fitcecoc
를 사용하십시오.
fitcsvm
은 저차원 및 중간 차원의 데이터 세트를 지원합니다. 고차원 데이터 세트에 대해서는 fitclinear
를 대신 사용하십시오.
데이터 세트가 크지 않다면 항상 예측 변수를 표준화하도록 하십시오(Standardize
참조). 표준화를 수행하면 예측 변수가 측정되는 척도에 영향을 받지 않게 됩니다.
KFold
이름-값 쌍의 인수를 사용하여 교차 검증을 수행하는 것이 좋습니다. 교차 검증 결과를 통해 SVM 분류기가 얼마나 잘 일반화되는지 확인할 수 있습니다.
단일 클래스 학습의 경우:
서포트 벡터의 희소성은 SVM 분류기에 있어서는 이상적인 속성입니다. 서포트 벡터의 개수를 줄이려면 BoxConstraint
를 큰 값으로 설정하십시오. 단, 이 동작을 수행하면 훈련 시간이 증가합니다.
최적의 훈련 시간을 위해 CacheSize
를 컴퓨터의 메모리 제한이 허용하는 한 최대한 높게 설정하십시오.
훈련 세트에서 서포트 벡터의 개수가 관측값보다 훨씬 적을 거라 예상되는 경우, 이름-값 쌍의 인수 'ShrinkagePeriod'
를 사용하여 활성 세트를 축소함으로써 수렴되는 속도를 상당히 높일 수 있습니다. 'ShrinkagePeriod',1000
을 지정하는 것이 좋습니다.
결정 경계에서 멀리 떨어진 중복된 관측값은 수렴에 영향을 미치지 않습니다. 그러나, 결정 경계 가까이에 있는 중복된 관측값은 몇 개만 있더라도 수렴되는 속도가 상당히 느려질 수 있습니다. 다음과 같은 경우 'RemoveDuplicates',true
를 지정하여 수렴되는 속도를 높이십시오.
데이터 세트에 중복된 관측값이 많이 있는 경우.
몇 개의 중복된 관측값이 결정 경계 가까이에 있다고 의심되는 경우.
훈련 중에 원래 데이터 세트를 유지하기 위해 fitcsvm
은 원래 데이터 세트와 중복된 관측값을 제거한 두 개의 데이터 세트를 일시적으로 별도로 저장해야 합니다. 따라서, 몇몇 중복된 관측값을 포함하는 데이터 세트에 대해 true
를 지정할 경우 fitcsvm
은 원래 데이터 메모리의 두 배에 가까운 메모리를 사용합니다.
모델을 훈련시킨 후에는 새 데이터에 대한 레이블을 예측하는 C/C++ 코드를 생성할 수 있습니다. C/C++ 코드를 생성하려면 MATLAB Coder™가 필요합니다. 자세한 내용은 Introduction to Code Generation 항목을 참조하십시오.
SVM 이진 분류 알고리즘의 수학적 공식은 이진 분류를 위한 서포트 벡터 머신 항목과 서포트 벡터 머신 이해하기 항목을 참조하십시오.
NaN
, <undefined>
, 빈 문자형 벡터(''
), 빈 string형(""
), <missing>
값은 결측값을 나타냅니다. fitcsvm
은 결측 응답 변수에 대응되는 데이터의 전체 행을 제거합니다. 총 가중치를 계산할 때(다음 글머리 기호 항목 참조), fitcsvm
은 최소 한 개의 결측 예측 변수를 갖는 관측값에 대응되는 가중치를 모두 무시합니다. 이 동작은 균형 클래스 문제에서 불균형 사전 확률을 초래할 수 있습니다. 따라서, 관측값 상자 제약 조건은 BoxConstraint
와 일치하지 않을 수 있습니다.
fitcsvm
은 가중치 또는 사전 확률이 0인 관측값을 제거합니다.
2-클래스 학습의 경우, 비용 행렬 (Cost
참조)를 지정하면 소프트웨어가 에 설명되어 있는 벌점을 적용하는 방식으로 클래스 사전 확률 p(Prior
참조)를 pc로 업데이트합니다.
구체적으로, fitcsvm
은 다음 단계를 완료합니다.
를 계산합니다.
업데이트된 사전 확률의 합이 1이 되도록 pc*를 정규화합니다.
K는 클래스 개수입니다.
비용 행렬을 다음과 같이 디폴트 값으로 재설정합니다.
훈련 데이터에서 사전 확률이 0인 클래스에 대응되는 관측값을 제거합니다.
2-클래스 학습의 경우, fitcsvm
은 모든 관측값 가중치(Weights
참조)의 합이 1이 되도록 정규화합니다. 그런 다음, 정규화된 가중치를 합이 관측값이 속하는 클래스의 업데이트된 사전 확률이 되도록 다시 정규화합니다. 즉, k 클래스의 관측값 j에 대한 총 가중치는 다음과 같습니다.
wj는 관측값 j에 대한 정규화된 가중치이고, pc,k는 k 클래스의 업데이트된 사전 확률입니다(앞에 나와 있는 글머리 기호 항목 참조).
2-클래스 학습의 경우, fitcsvm
은 상자 제약 조건을 훈련 데이터의 각 관측값에 할당합니다. 관측값 j의 상자 제약 조건에 대한 공식은 다음과 같습니다.
n은 훈련 표본 크기이고, C0은 초기 상자 제약 조건이며('BoxConstraint'
이름-값 쌍의 인수 참조), 는 관측값 j의 총 가중치입니다(앞에 나와 있는 글머리 기호 목록 참조).
'Standardize',true
를 설정하고 'Cost'
, 'Prior'
또는 'Weights'
이름-값 쌍의 인수를 설정하면 fitcsvm
이 대응되는 가중 평균과 가중 표준편차를 사용하여 예측 변수를 표준화합니다. 즉, fitcsvm
은 다음을 사용하여 예측 변수 j(xj)를 표준화합니다.
xjk는 예측 변수 j(열)의 관측값 k(행)입니다.
p
가 훈련 데이터에서 사용자가 예상하는 이상값 비율이고 'OutlierFraction',p
를 설정한다고 가정합니다.
단일 클래스 학습의 경우, 소프트웨어가 훈련 데이터에 포함된 관측값의 100p
%가 음의 점수를 가지도록 편향 항을 훈련시킵니다.
2-클래스 학습의 경우 소프트웨어가 로버스트 학습을 구현합니다. 다시 말해, 최적화 알고리즘이 수렴될 때 소프트웨어가 관측값의 100p
%를 제거한다는 의미입니다. 제거되는 관측값은 크기가 큰 기울기에 해당합니다.
예측 변수 데이터에 범주형 변수가 포함된 경우 소프트웨어가 일반적으로 이러한 변수에 대해 전체 가변수 인코딩을 사용합니다. 소프트웨어는 각 범주형 변수의 각 수준마다 하나의 가변수를 생성합니다.
PredictorNames
속성은 원래 예측 변수 이름마다 하나의 요소를 저장합니다. 예를 들어, 세 개의 예측 변수가 있고, 그중 하나가 세 개 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면 PredictorNames
는 예측 변수의 원래 이름을 포함하는 문자형 벡터로 구성된 1x3 셀형 배열이 됩니다.
ExpandedPredictorNames
속성은 가변수를 포함하여 예측 변수마다 하나의 요소를 저장합니다. 예를 들어, 세 개의 예측 변수가 있고, 그중 하나가 세 개 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면 ExpandedPredictorNames
는 예측 변수 이름 및 새 가변수의 이름을 포함하는 문자형 벡터로 구성된 1x5 셀형 배열이 됩니다.
마찬가지로, Beta
속성은 가변수를 포함하여 예측 변수마다 하나의 베타 계수를 저장합니다.
SupportVectors
속성은 가변수를 포함하여 서포트 벡터에 대한 예측 변수 값을 저장합니다. 예를 들어, m개의 서포트 벡터와 세 개의 예측 변수가 있고, 그중 하나가 세 개의 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면 SupportVectors
는 nx5 행렬이 됩니다.
X
속성은 훈련 데이터를 원래 입력된 대로 저장하고 가변수는 포함하지 않습니다. 입력값이 테이블인 경우, X
는 예측 변수로 사용된 열만 포함합니다.
테이블에 지정된 예측 변수에 대해 변수 중 하나가 순서가 지정된(순서형) 범주를 포함하는 경우 소프트웨어는 이러한 변수에 대해 순서형 인코딩(Ordinal Encoding)을 사용합니다.
순서가 지정된 k개의 수준을 갖는 변수에 대해 소프트웨어는 k – 1개의 가변수를 생성합니다. j번째 가변수는 수준이 j일 때까지는 –1이 되고, 수준이 j + 1과 k 사이인 경우 +1이 됩니다.
ExpandedPredictorNames
속성에 저장된 가변수의 이름은 값 +1을 갖는 첫 번째 수준을 나타냅니다. 소프트웨어는 수준 2, 3, ..., k의 이름을 포함하여 가변수에 대해 k – 1개의 추가 예측 변수 이름을 저장합니다.
모든 솔버는 L1 소프트 마진(Soft-Margin) 최소화를 구현합니다.
단일 클래스 학습의 경우, 소프트웨어는 다음을 만족하는 라그랑주 승수 α1,...,αn을 추정합니다.
[1] Christianini, N., and J. C. Shawe-Taylor. An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods. Cambridge, UK: Cambridge University Press, 2000.
[2] Fan, R.-E., P.-H. Chen, and C.-J. Lin. “Working set selection using second order information for training support vector machines.” Journal of Machine Learning Research, Vol. 6, 2005, pp. 1889–1918.
[3] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, Second Edition. NY: Springer, 2008.
[4] Kecman V., T. -M. Huang, and M. Vogt. “Iterative Single Data Algorithm for Training Kernel Machines from Huge Data Sets: Theory and Performance.” Support Vector Machines: Theory and Applications. Edited by Lipo Wang, 255–274. Berlin: Springer-Verlag, 2005.
[5] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. “Estimating the Support of a High-Dimensional Distribution.” Neural Comput., Vol. 13, Number 7, 2001, pp. 1443–1471.
[6] Scholkopf, B., and A. Smola. Learning with Kernels: Support Vector Machines, Regularization, Optimization and Beyond, Adaptive Computation and Machine Learning. Cambridge, MA: The MIT Press, 2002.
ClassificationPartitionedModel
| ClassificationSVM
| CompactClassificationSVM
| fitcecoc
| fitclinear
| fitSVMPosterior
| predict
| rng
| quadprog
(Optimization Toolbox)