이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
fitcsvm
단일 클래스 및 이진 분류를 위한 서포트 벡터 머신(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-클래스 분류에 대한 클래스 레이블을 포함하는 변수의 이름입니다.
클래스 레이블 변수에 클래스가 한 개만 포함된 경우(예: 1로 구성된 벡터) fitcsvm
은 단일 클래스 분류에 대해 모델을 훈련시킵니다. 그렇지 않은 경우, 함수는 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
와 일치하지 않을 수 있습니다.Cost
,Prior
및Weights
이름-값 인수를 지정할 경우 출력 모델 객체는 지정된 값을 각각Cost
,Prior
및W
속성에 저장합니다.Cost
속성이 사용자가 지정한 비용 행렬(C)을 수정 없이 저장합니다.Prior
속성과W
속성은 각각 정규화한 후의 사전 확률 및 관측값 가중치를 저장합니다. 모델 훈련 시, 소프트웨어는 비용 행렬에 있는 벌점을 통합하도록 사전 확률과 관측값 가중치를 업데이트합니다. 자세한 내용은 오분류 비용 행렬, 사전 확률 및 관측값 가중치 항목을 참조하십시오.Cost
및Prior
이름-값 인수는 2-클래스 학습에 사용됩니다. 단일 클래스 학습의 경우Cost
및Prior
속성은 각각0
과1
을 저장합니다.2-클래스 학습의 경우,
fitcsvm
은 상자 제약 조건을 훈련 데이터의 각 관측값에 할당합니다. 관측값 j의 상자 제약 조건에 대한 공식은 다음과 같습니다.여기서 C0은 초기 상자 제약 조건이고(
BoxConstraint
이름-값 인수 참조), wj*는 관측값 j에 대해Cost
및Prior
에 의해 조정된 관측값 가중치입니다. 관측값 가중치에 대한 자세한 내용은 오분류 비용 행렬에 대한 사전 확률 및 관측값 가중치 조정하기 항목을 참조하십시오.Standardize
를true
로 지정하고Cost
,Prior
또는Weights
이름-값 인수를 설정하면fitcsvm
이 대응되는 가중 평균과 가중 표준편차를 사용하여 예측 변수를 표준화합니다. 즉,fitcsvm
은 다음을 사용하여 예측 변수 j(xj)를 표준화합니다.여기서 xjk는 예측 변수 j(열)의 관측값 k(행)이며 다음이 성립됩니다.
p
가 훈련 데이터에서 사용자가 예상하는 이상값 비율이고'OutlierFraction',p
를 설정한다고 가정합니다.단일 클래스 학습의 경우, 소프트웨어가 훈련 데이터에 포함된 관측값의 100
p
%가 음의 점수를 가지도록 편향 항을 훈련시킵니다.2-클래스 학습의 경우 소프트웨어가 로버스트 학습을 구현합니다. 다시 말해, 최적화 알고리즘이 수렴될 때 소프트웨어가 관측값의 100
p
%를 제거한다는 의미입니다. 제거되는 관측값은 크기가 큰 기울기에 해당합니다.
예측 변수 데이터에 범주형 변수가 포함된 경우 소프트웨어가 일반적으로 이러한 변수에 대해 전체 가변수 인코딩을 사용합니다. 소프트웨어는 각 범주형 변수의 각 수준마다 하나의 가변수를 생성합니다.
PredictorNames
속성은 원래 예측 변수 이름마다 하나의 요소를 저장합니다. 예를 들어, 세 개의 예측 변수가 있고, 그중 하나가 세 개 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면PredictorNames
는 예측 변수의 원래 이름을 포함하는 문자형 벡터로 구성된 1×3 셀형 배열이 됩니다.ExpandedPredictorNames
속성은 가변수를 포함하여 예측 변수마다 하나의 요소를 저장합니다. 예를 들어, 세 개의 예측 변수가 있고, 그중 하나가 세 개 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면ExpandedPredictorNames
는 예측 변수 이름 및 새 가변수의 이름을 포함하는 문자형 벡터로 구성된 1×5 셀형 배열이 됩니다.마찬가지로,
Beta
속성은 가변수를 포함하여 예측 변수마다 하나의 베타 계수를 저장합니다.SupportVectors
속성은 가변수를 포함하여 서포트 벡터에 대한 예측 변수 값을 저장합니다. 예를 들어, m개의 서포트 벡터와 세 개의 예측 변수가 있고, 그중 하나가 세 개의 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면SupportVectors
는 n×5 행렬이 됩니다.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을 추정합니다.
대체 기능
ocsvm
함수를 사용하여 이상 감지를 위한 단일 클래스 SVM 모델을 훈련시킬 수도 있습니다.
ocsvm
함수는fitcsvm
함수보다 간단하고 선호되는 이상 감지 워크플로를 제공합니다.ocsvm
함수는OneClassSVM
객체, 이상 표시자, 이상 점수를 반환합니다. 출력값을 사용하여 훈련 데이터의 이상을 식별할 수 있습니다.OneClassSVM
의isanomaly
객체 함수를 사용하여 새 데이터에서 이상을 찾을 수 있습니다.isanomaly
함수는 새 데이터에 대한 이상 표시자와 점수를 반환합니다.fitcsvm
함수는 단일 클래스 및 이진 분류를 모두 지원합니다. 클래스 레이블 변수에 클래스가 한 개만 포함된 경우(예: 1로 구성된 벡터)fitcsvm
은 단일 클래스 분류에 대해 모델을 훈련시키고ClassificationSVM
객체를 반환합니다. 이상을 식별하려면 먼저ClassificationSVM
의resubPredict
또는predict
객체 함수를 사용하여 이상 점수를 계산한 다음 음수 점수를 갖는 관측값을 찾아 이상을 식별해야 합니다.큰 양의 이상 점수는
ocsvm
의 이상을 나타내고, 음의 점수는ClassificationSVM
의predict
의 이상을 나타냅니다.
ocsvm
함수는 SVM의 원문제 식을 기반으로 결정 경계를 찾는 반면fitcsvm
함수는 SVM의 쌍대 문제 식을 기반으로 결정 경계를 찾습니다.ocsvm
의 솔버는 대규모 데이터 세트(대규모 n)에 대해fitcsvm
의 솔버보다 계산 비용이 저렴합니다.fitcsvm
의 솔버는 n×n 그람 행렬의 계산을 필요로 하지만,ocsvm
의 솔버는 n×m 크기의 행렬만 형성하면 됩니다. 여기서 m은 확장된 공간의 차원 수이며 일반적으로 빅데이터의 경우 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.
확장 기능
버전 내역
R2014a에 개발됨참고 항목
ClassificationSVM
| CompactClassificationSVM
| ClassificationPartitionedModel
| predict
| fitSVMPosterior
| rng
| quadprog
(Optimization Toolbox) | fitcecoc
| fitclinear
| ocsvm