Main Content

지도 학습 워크플로와 알고리즘

지도 학습이란?

머신러닝 지도 학습의 목적은 불확실성이 존재하는 상태에서 증거를 기반으로 예측하는 모델을 만드는 것입니다. 적응형 알고리즘으로 데이터의 패턴을 식별하기 때문에, 컴퓨터는 관측값을 통해 "학습"하게 됩니다. 컴퓨터에 더 많은 관측값을 제공하면 예측 성능이 향상됩니다.

특히, 지도 학습 알고리즘은 알려진 입력 데이터 세트와 이 데이터에 대해 알려진 응답 변수(출력값)를 받아들인 후, 새 데이터에 대한 응답 변수에 대해 타당한 예측값을 생성하도록 모델을 훈련시킵니다.

Steps in supervised learning. First, train the model and then use the model, to predict responses.

예를 들어, 1년 이내에 누군가에게 심장 마비가 일어날지 여부를 예측한다고 가정하겠습니다. 연령, 체중, 키, 혈압 등을 포함한 이전 환자들의 데이터 세트가 준비되어 있습니다. 또한, 1년의 측정 기간 동안 이전 환자들에게 심장 마비가 일어났는지 여부도 알고 있습니다. 따라서, 기존의 모든 데이터를 새 환자가 1년 이내에 심장 마비를 일으킬지 여부를 예측할 수 있는 모델로 결합하는 것이 문제입니다.

입력 데이터의 전체 세트를 이종 행렬로 간주할 수 있습니다. 행렬의 행을 관측값, 사례 또는 인스턴스라고 하며, 각 행은 개체(이 예제의 경우 환자)에 대한 측정값 세트를 포함합니다. 행렬의 열을 예측 변수, 특성(Attribute) 또는 특징이라고 하며, 각 열은 각 개체에 대해 얻은 측정값(이 예제의 경우 연령, 체중, 키 등)을 나타내는 변수입니다. 응답 변수 데이터를 하나의 열 벡터로 간주할 수 있는데, 이 열 벡터의 각 행은 대응하는 입력 데이터의 관측값에 대한 출력값(환자에게 심장 마비가 일어났는지 여부)을 포함합니다. 지도 학습 모델을 피팅하거나 훈련시키려면 적합한 알고리즘을 선택한 후 입력 데이터와 응답 변수 데이터를 이 알고리즘에 전달하십시오.

지도 학습은 크게 두 가지 범주, 즉 분류와 회귀로 나뉩니다.

  • 분류의 목표는 유한한 클래스 세트에서 하나의 특정 클래스(또는 레이블)를 하나의 관측값에 할당하는 것입니다. 즉, 응답 변수가 범주형 변수입니다. 응용 사례로는 스팸 필터, 광고 추천 시스템, 이미지/음성 인식 등이 있습니다. 환자에게 1년 이내에 심장 마비가 일어날지 여부를 예측하는 것은 분류 문제이며, 가능한 클래스는 truefalse입니다. 분류 알고리즘은 대개 명목형 응답 변수 값에 적용됩니다. 그러나, 일부 알고리즘은 순서형 클래스를 수용할 수 있습니다(fitcecoc 참조).

  • 회귀의 목표는 관측값에 대한 연속적인(Continuous) 측정값을 예측하는 것입니다. 즉, 응답 변수가 실수입니다. 응용 사례로는 주가, 에너지 소비량 또는 발병률 전망 등이 있습니다.

Statistics and Machine Learning Toolbox™ 지도 학습 기능은 간소화된 객체 프레임워크로 구성됩니다. 다양한 알고리즘을 효율적으로 훈련시키고, 여러 모델을 하나의 앙상블로 결합하고, 모델 성능을 평가하고, 교차 검증을 수행하며, 새 데이터에 대한 응답 변수를 예측할 수 있습니다.

지도 학습의 단계

지도 학습을 위한 많은 Statistics and Machine Learning Toolbox 알고리즘이 있지만 대부분 예측 변수 모델을 얻는 데 동일한 기본 워크플로를 사용합니다. 앙상블 학습 단계에 대한 자세한 지침은 Framework for Ensemble Learning에 나와 있습니다. 지도 학습의 단계는 다음과 같습니다.

데이터 준비하기

모든 지도 학습 방법은 입력 데이터 행렬(여기서는 일반적으로 X라고 함)로 시작합니다. X의 각 행은 하나의 관측값을 나타냅니다. X의 각 열은 하나의 변수, 즉 예측 변수를 나타냅니다. 누락 요소는 X에서 NaN 값으로 나타냅니다. Statistics and Machine Learning Toolbox 지도 학습 알고리즘은 NaN 값을 무시하거나 NaN 값을 갖는 모든 행을 무시하는 방법으로 이 값을 처리할 수 있습니다.

응답 변수 데이터 Y에 다양한 데이터형을 사용할 수 있습니다. Y의 각 요소는 대응하는 X의 행에 대한 응답 변수를 나타냅니다. 누락된 Y 데이터를 갖는 관측값은 무시됩니다.

  • 회귀를 수행하는 경우, YX의 행 개수와 같은 개수의 요소를 갖는 숫자형 벡터여야 합니다.

  • 분류를 수행하는 경우, Y는 다음 데이터형 중 하나일 수 있습니다. 다음 표에는 또한 누락 요소를 포함하는 방법이 나와 있습니다.

    데이터형누락 요소
    숫자형 벡터NaN
    categorical형 벡터<undefined>
    문자형 배열공백 행
    string형 배열<missing> 또는 ""
    문자형 벡터로 구성된 셀형 배열''
    논리형 벡터(나타낼 수 없음)

알고리즘 선택하기

다음과 같이 여러 알고리즘 특성 간에는 상충하는 장단점이 있습니다.

  • 훈련 속도

  • 메모리 사용량

  • 새 데이터에 대한 예측 정확도

  • 투명도 또는 해석 가능성(알고리즘이 그렇게 예측하는 이유를 인간이 얼마나 쉽게 파악할 수 있는지를 의미함)

알고리즘에 대한 세부 정보는 분류 알고리즘의 특성에 나와 있습니다. 앙상블 알고리즘에 대한 자세한 내용은 Choose an Applicable Ensemble Aggregation Method 항목을 참조하십시오.

모델 피팅하기

사용하는 피팅 함수는 선택하는 알고리즘에 따라 결정됩니다.

알고리즘분류용 피팅 함수회귀용 피팅 함수
결정 트리fitctreefitrtree
판별분석fitcdiscr해당 없음
앙상블(예: 랜덤 포레스트 [1])fitcensemble, TreeBaggerfitrensemble, TreeBagger
가우스 커널 모델fitckernel(SVM 및 로지스틱 회귀 학습기)fitrkernel(SVM 및 최소제곱 회귀 학습기)
가우스 과정 회귀(GPR)해당 없음fitrgp
일반화 가산 모델(GAM)fitcgamfitrgam
k-최근접이웃fitcknn해당 없음
선형 모델fitclinear(SVM 및 로지스틱 회귀)fitrlinear(SVM 및 최소제곱 회귀)
SVM 또는 기타 분류기용 다중클래스 오류 수정 출력 코드(ECOC) 모델fitcecoc해당 없음
나이브 베이즈 모델fitcnb해당 없음
신경망 모델fitcnetfitrnet
서포트 벡터 머신(SVM)fitcsvmfitrsvm

이러한 알고리즘에 대한 비교는 분류 알고리즘의 특성 항목을 참조하십시오.

검증 방법 선택하기

결과로 생성되는 피팅된 모델의 정확도를 검토하는 세 가지 기본 방법은 다음과 같습니다.

만족할 때까지 피팅을 검토하고 업데이트하기

모델을 검증한 후에도 정확도 또는 속도를 높이거나 메모리를 덜 사용하기 위해 모델을 변경해야 할 수 있습니다.

특정 유형의 모델에 만족한 경우 적합한 compact 함수(분류 트리용 compact, 회귀 트리용 compact, 판별분석용 compact, 나이브 베이즈용 compact, SVM용 compact, ECOC 모델용 compact, 분류 앙상블용 compact, 회귀 앙상블용 compact)를 사용하여 이 모델을 자를 수 있습니다. compact는 예측에 필요하지 않은 훈련 데이터와 기타 속성을 제거합니다. 예를 들면, 모델에서 결정 트리에 대한 정보를 가지치기하여 메모리 사용량을 줄입니다. kNN 분류 모델은 레이블을 예측하기 위해 모든 훈련 데이터를 필요로 하므로 ClassificationKNN 모델의 크기는 줄일 수 없습니다.

예측을 위해 피팅된 모델 사용하기

predict 메서드를 사용하여 대부분의 피팅된 모델에 대한 분류 응답 변수 또는 회귀 응답 변수를 예측할 수 있습니다.

Ypredicted = predict(obj,Xnew)
  • obj는 피팅된 모델 또는 피팅된 간소 모델입니다.

  • Xnew는 새 입력 데이터입니다.

  • Ypredicted는 예측된 응답으로, 분류 응답 또는 회귀 응답입니다.

분류 알고리즘의 특성

다음 표에는 다양한 지도 학습 알고리즘의 일반적인 특성이 나와 있습니다. 특정 사례의 경우, 실제 특성이 여기 나열된 특성과 다를 수 있습니다. 알고리즘을 처음 선택할 때의 지침으로 이 표를 사용하십시오. 속도, 메모리 사용량, 유연성, 해석 가능성 사이에서 원하는 절충안을 결정하십시오.

먼저, 빠르고 해석하기 쉬운 분류기인 결정 트리 또는 판별분석을 사용해 보십시오. 모델이 응답 변수를 예측하기에 충분히 정확하지 않을 경우 유연성이 더 높은 다른 분류기를 사용해 보십시오.

유연성을 제어하려면 각 분류기 유형에 대한 세부 정보를 참조하십시오. 과적합을 방지하려면 충분한 수준의 정확도를 제공하는 유연성이 더 낮은 모델을 고려하십시오.

분류기다중클래스 지원categorical형 예측 변수 지원예측 속도메모리 사용량해석 가능성
결정 트리fitctree빠름적음쉬움
판별분석fitcdiscr아니요빠름선형의 경우 적음, 2차의 경우 큼쉬움
SVMfitcsvm아니요.
fitcecoc를 사용하여 여러 이진 SVM 분류기를 결합할 수 있습니다.
선형의 경우 중간.
다른 유형의 경우 느림.
선형의 경우 중간.
다른 모든 유형: 다중클래스의 경우 중간, 이진의 경우 큼.
선형 SVM의 경우 쉬움.
다른 모든 커널 유형의 경우 어려움.
나이브 베이즈fitcnb단순 분포의 경우 중간.
커널 분포 또는 고차원 데이터의 경우 느림
단순 분포의 경우 적음.
커널 분포 또는 고차원 데이터의 경우 중간
쉬움
최근접이웃fitcknn3차의 경우 느림.
다른 유형의 경우 중간.
중간어려움
앙상블fitcensemblefitrensemble선택하는 알고리즘에 따라 빠름~중간선택하는 알고리즘에 따라 낮음~높음.어려움

이 표에 나와 있는 결과는 수많은 데이터 세트에 대한 분석을 기반으로 합니다. 이 연구의 데이터 세트는 최대 7000개 관측값, 80개 예측 변수, 50개 클래스를 가집니다. 다음 목록에는 표에 사용된 용어에 대한 정의가 나와 있습니다.

속도:

  • 빠름 — 0.01초

  • 중간 — 1초

  • 느림 — 100초

메모리

  • 적음 — 1MB

  • 중간 — 4MB

  • 큼 — 100MB

참고

다음 표는 일반적인 지침을 제공합니다. 실제 결과는 데이터와 컴퓨터의 속도에 따라 달라질 수 있습니다.

categorical형 예측 변수 지원

다음 표에는 각 분류기의 예측 변수에 대한 데이터형 지원이 설명되어 있습니다.

분류기모든 예측 변수가 숫자형임모든 예측 변수가 categorical형임일부는 categorical형이고, 일부는 숫자형임
결정 트리
판별분석아니요아니요
SVM
나이브 베이즈(Naive Bayes)
최근접이웃유클리드 거리(Euclidean Distance)만 해당해밍 거리(Hamming Distance)만 해당아니요
앙상블예, 판별분석 분류기의 부분공간 앙상블은 예외예, 부분공간 앙상블은 예외

오분류 비용 행렬, 사전 확률 및 관측값 가중치

분류 모델을 훈련할 때 Cost, PriorWeights 이름-값 인수를 사용하여 오분류 비용 행렬, 사전 확률 및 관측값 가중치를 각각 지정할 수 있습니다. 분류 학습 알고리즘은 비용에 민감한 학습 및 평가에 대해 지정된 값을 사용합니다.

Cost, PriorWeights 이름-값 인수 지정하기

Cost를 C로, Prior를 p로, Weights를 w로 지정한다고 가정하겠습니다. 값 C, p 및 w의 형식은

C=(cij),p=[p1p2pK],w=[w1w2wn].

이어야 합니다.

  • C는 K×K 숫자형 행렬입니다. 여기서 K는 클래스 개수입니다. cij = C(i,j)는 실제 클래스가 i일 때 관측값을 클래스 j로 분류하는 비용입니다.

  • wj는 관측값 j에 대한 관측값 가중치이고 n은 관측값 개수입니다.

  • p는 1×K 숫자형 벡터입니다. 여기서 pk는 클래스 k의 사전 확률입니다. Prior 인수를 "empirical"로 지정한 경우 pk는 클래스 k의 관측값에 대한 관측값 가중치의 합입니다.

    pk=jClass kwj.

분류 모델의 Cost, PriorW 속성

소프트웨어는 사용자가 지정한 비용 행렬(C)을 그대로 Cost 속성에 저장하고, 정규화 후 사전 확률과 관측값 가중치를 PriorW 속성에 각각 저장합니다.

fitcdiscr, fitcgam, fitcknn, fitcnb 또는 fitcnet 함수로 훈련된 분류 모델은 예측에 Cost 속성을 사용하지만, 이러한 함수들은 훈련에 Cost를 사용하지 않습니다. 따라서 모델의 Cost 속성은 읽기 전용이 아닙니다. 훈련된 모델을 만든 후에 점 표기법을 사용하여 속성값을 변경할 수 있습니다. 훈련에 Cost를 사용하는 모델의 경우, 이 속성은 읽기 전용입니다.

소프트웨어는 합해서 1이 되도록 정규화하고 관측값 가중치를 해당 클래스의 사전 확률의 값까지 합하도록 정규화합니다.

p˜k=pkk=1Kpk,w˜j=wjjClass kwjp˜k.

비용에 민감한 학습

다음 분류 모델은 비용에 민감한 학습을 지원합니다.

  • 분류 결정 트리, fitctree 함수로 훈련됨

  • 분류 앙상블, fitcensemble 또는 TreeBagger 함수로 훈련됨

  • SVM 및 로지스틱 회귀 학습기를 사용한 가우스 커널 분류, fitckernel 함수로 훈련됨

  • 다중클래스, 오류 수정 출력 코드(ECOC) 모델, fitcecoc 함수로 훈련됨

  • SVM 및 로지스틱 회귀에 대한 선형 분류, fitclinear 함수로 훈련됨

  • SVM 분류, fitcsvm 함수로 훈련됨

피팅 함수는 모델 훈련에 Cost 이름-값 인수로 지정된 오분류 비용 행렬을 사용합니다. 비용에 민감한 학습에 대한 접근 방식은 분류기에 따라 다릅니다.

  • fitcecoc 함수는 다중클래스 분류를 위해 지정된 비용 행렬과 사전 확률 값을 각 이진 학습기의 이진 분류를 위한 값으로 변환합니다. 자세한 내용은 사전 확률과 오분류 비용 항목을 참조하십시오.

  • fitctree 함수는 트리를 성장시키기 위한 평균 비용 수정을 적용합니다.

  • fitcensemble, TreeBagger, fitckernel, fitclinearfitcsvm 함수는 지정된 비용 행렬에 대해 사전 확률과 관측값 가중치를 조정합니다.

  • fitcensemble 함수와 TreeBagger 함수는 오분류 비용이 큰 클래스를 과다추출하고 오분류 비용이 작은 클래스를 과소추출하여 In-bag 표본을 생성합니다. 따라서, Out-of-bag 표본은 오분류 비용이 큰 클래스의 관측값을 더 적게 가지고 오분류 비용이 작은 클래스의 관측값을 더 많이 가집니다. 작은 데이터 세트와 많이 편중된 비용 행렬을 사용하여 분류 앙상블을 훈련하는 경우 클래스당 Out-of-bag 관측값 개수가 매우 낮을 수 있습니다. 그러므로 추정된 Out-of-bag 오차가 큰 분산을 가질 수 있으며 해석이 어려울 수 있습니다. 큰 사전 확률을 갖는 클래스의 경우 동일한 현상이 발생할 수 있습니다.

오분류 비용 행렬에 대한 사전 확률 및 관측값 가중치 조정하기.  모델 훈련 시, fitcensemble, TreeBagger, fitckernel, fitclinearfitcsvm 함수는 클래스 사전 확률 p를 p*로 업데이트하고 관측값 가중치 w를 w*로 업데이트하여 비용 행렬 C에 있는 벌점을 통합합니다.

이진 분류 모델의 경우, 소프트웨어는 다음 단계를 완료합니다.

  1. p를 업데이트하여 비용 행렬 C를 통합합니다.

    p^1=p1c12,p^2=p2c21.

  2. 업데이트된 사전 확률의 합이 1이 되도록 p^를 정규화합니다.

    p*=1p^1+p^2p^.

  3. 훈련 데이터에서 사전 확률이 0인 클래스에 대응되는 관측값을 제거합니다.

  4. 관측값 가중치 wj를 가중치의 합이 관측값이 속하는 클래스의 업데이트된 사전 확률이 되도록 정규화합니다. 즉, 클래스 k의 관측값 j에 대해 정규화된 가중치는 다음과 같습니다.

    wj*=wjjClass kwjpk*.

  5. 가중치가 0인 관측값을 제거합니다.

fitcensemble 또는 TreeBagger로 훈련된 앙상블 모델에 클래스가 3개 이상 있는 경우, 오분류 비용 행렬에 대한 사전 확률도 조정됩니다. 이 변환은 더 복잡합니다. 먼저 소프트웨어는 Zhou 및 Liu [2]에 있는 행렬식을 풀려고 시도합니다. 솔루션을 찾는 데 실패한 경우, 소프트웨어는 Breiman 외 [3]에 설명된 “평균 비용” 조정을 적용합니다. 자세한 내용은 Zadrozny 외 [4]을 참조하십시오.

비용에 민감한 평가

비용에 민감한 분석을 수행하여 분류 모델 및 데이터 세트의 비용 불균형을 고려할 수 있습니다.

  • compareHoldout 함수 또는 testcholdout 함수를 사용하여 비용에 민감한 검정을 수행합니다. 두 함수 모두 분석에 비용 행렬을 포함시켜 두 분류 모델의 예측 성능을 통계적으로 비교합니다. 자세한 내용은 Cost-Sensitive Testing 항목을 참조하십시오.

  • 분류 모델의 객체 함수 loss, resubLosskfoldLoss에서 반환된 관측 오분류 비용을 비교합니다. LossFun 이름-값 인수를 "classifcost"로 지정합니다. 이 함수들은 입력 데이터, 훈련 데이터 및 교차 검증 데이터의 가중치가 적용된 평균 오분류 비용을 각각 반환합니다. 자세한 내용은 분류 모델 객체의 객체 함수 도움말 페이지를 참조하십시오. 예제는 Classification Loss 항목을 참조하십시오.

비용에 민감한 평가의 예제는 Conduct Cost-Sensitive Comparison of Two Classification Models 항목을 참조하십시오.

참고 문헌

[1] Breiman, L. "Random Forests." Machine Learning 45, 2001, pp. 5–32.

[2] Zhou, Z.-H., and X.-Y. Liu. “On Multi-Class Cost-Sensitive Learning.” Computational Intelligence. Vol. 26, Issue 3, 2010, pp. 232–257 CiteSeerX.

[3] Breiman, L., J. H. Friedman, R. A. Olshen, and C. J. Stone. Classification and Regression Trees. Boca Raton, FL: Chapman & Hall, 1984.

[4] Zadrozny, B., J. Langford, and N. Abe. “Cost-Sensitive Learning by Cost-Proportionate Example Weighting.” Third IEEE International Conference on Data Mining, 435–442. 2003.