기계 학습의 분야 중 하나로 패턴 인식, 자료 회귀 분석을 위한 지도 학습 모델이며, 주로 분류와 분석에 사용된다. 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 새로운 데이터가 어느 카테고리에 속할지 판단하는 비확률적 이진 선형 분류 모델을 만든다. 분류 용도의 신경망은 학습 데이터에 대한 오류를 최소화하는 가중치를 찾는 것이 학습 단계의 목표이다. 다층 퍼셉트론의 경우에 오차 함수 E를 최소화하는 가중치를 찾는다.

다시말하면 SVM은 원 훈련데이터를 비선형 매핑을 통해 고차원으로 변환한다. 이 새로운 차원에서 초평면을 최적으로 분리하는 선형 분리를 찾는다. 즉 최적의 Decision Boundary(의사결정 영역)을 찾는다.

왜 데이터를 고차원으로 보낼까?

2차원에서 비선형 분리가 있다면 이를 한 차원 높은 3차원으로 Mapping하게 되면 선형분리할수 있게 된다. 따라서 충분히 큰 차원으로 적절히 비선형 매핑을 사용하여 두개의 부류를 가진 데이터는 초평면에서 항상 분리될 수 있다..

SVM은 복잡한 비선형 의사결정 영역을 모형화 할 수 있기 때문에 매우 정확하며, 다른 모델들 보다 Over Fitting되는 경향이 적다.

아래 그림은 부류가 2개인 데이터를 분류하는 분류기의 결정 경계에 해당하는 직선들을 보인 것이다. 결정경계 h1은 회색점과 노란점들을 제대로 구별하지 못하기 때문에 바람직하지 않다. h2와 h3는 모두 두 부류를 젣로 분류하기 때문에 오차 함수 관점에서 두 결정 경계가 같은 정도로 우수한 것으로 판정된다. 학습에 사용되지 않은 데이터를 얼마나 잘 분류하는지를 의미하는 일반화 특성 관점에서 h2와 h3를 비교해 보자. h2는 결정 경계 바로 근처에 학습 데이터가 존재하지만, h3는 학습 데이터에서 멀리 떨어져 있다. 학습 데이터와 조금 차이가 있는 데이터가 발생할 때, h3가 h2보다 더 일관되게 판단을 할 수 있다. 결정 경계와 가장 가까이에 있는 학습 데이터까지의 거리를 여백(margin)이라고 한다. 여백 관점에서 보면 h3가 h2보다 우수하다고 할 수 있다.

SVM은 Vladimir Vapnik이 제안한 분류기로, 분류 오차를 줄이면서 동시에 여백을 최대로 하는 결정 경계를 찾는다. 이때 결정 경계로부터 가장 가까이에 있는 학습 데이터들을 서포트 벡터 라고 한다.

 

1) 초평면(Hyperplane)

데이터를 분류하는 선을 초평면이라하고 ' 데이터 embeding 공간에서 한 차원 낮은 부분 공간' 으로 정의 한다. 즉 n 차원의 공간에서의 hyperplane은 n-1차원의 subspace를 의미하는 것이며, 3차원의 경우 hyperplane은 2차원의 면이 되고, 2차원의 경우는 hyperplane은 1차원의 선이 된다.

SVM알고리즘은 서포트 벡터와 여유간격을 통해 두 클래스 데이터 사이를 분류하는 최적의 초평면을 구한다.

 

2) SVM의 학습

SVM은 2개의 부류가 있는 분류 문제에 적용되는 분류기이다. 긍정 결과는 +1, 부정 결과는 -1로서 하나의 값을 갖는다. 아래 그림은 2차원 데이터로서 선형적으로 분리가 가능하며 분리할 수 있는 직선은 무수히 많지만 분류 오류를 최소화하는 최적의 직선을 찾아야 하고 3차원 이상에서는 직선이 아닌 최적의 평면을 찾아야 한다. 최적의 초평면(Decision Boundary)을 찾아 분리하는 것이다

 

 

 아래 그림은 위 그림을 세분화하여 데이터를 분리하지만 직관적으로 볼때 오른쪽 그림의 초평면이 더 정확해 보인다

 

식으로 표현해보면 아래와 같다. 가중치 벡터위 그림에서 2차원이 두개의 속성값이 있을 것이다. 예를 들어 

는 속성 의 값이고 b와 w를 추가적으로 사용한다

초평면의 모든것은 위 식을 만족하는 서포트 벡터라고 한다. 아래 그림의 노란색이 그것이고 분류하기 가장 어렵지만 가장 중요한 정보를 준다 분리 초평면으로 부터 H1위의 점까지의 거리는 이고, 이며 w의 유클리드 norm이다. 최대 margin은 이다.

 

 

 

여기서 SVM은 최대 마진 초평면과 서포트벡터를 KKT(Karush-Kunh Tucker)조건과 라그랑지 방법을 이용하여 구한다.

이것은 SVM의 학습문제가 아래와 같은 제약조건 최적화 문제(Constrained Optimization Problem)가 되고

 

이것이 라그랑주 승수를 도입하여 단일 목적 함수인 라그랑주 함수(Lagrangian function) L( )을 최적화하는 문제로 변환될 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

분류는 데이터들을 정해진 몇 개의 부류로 대응시키는 문제.

분류 문제에서 주어지는 학습 데이터 : 입력 데이터 와 부류값 출력 의 쌍으로 구성된 집합.

이 학습 데이터의 입출력 대응관계를 만족시키는 y=f(x)를 찾음(f(x)는 함수 또는 규칙)

 

분류에 사용될 수 있는 여러가지 학습 기법 : 결정트리(decision tree) 알고리즘, 서포트벡터머신(support vector machine, SVM), 다층 퍼셉트론 신경망, 에이다부스트(AdaBoost), 임의 숲(random forest), 확률 그래프 모델 등.

 

학습된 함수 f(x)를 사용하여 데이터를 분류하는 프로그램을 classifier라 함

classifier 는 입력 데이터가 분포하는 공간을 부류별로 분할

학습은 각 부류를 나누는 결정 영역(decision boundary)을 찾고, 새로운 입력이 주어지면 결정영역에 따라 해당 위치에 대응하는 부류(별표)를 출력

classifier는 학습 데이터에 대해서 잘 맞도록 학습되지만 학습 데이터는 해당 문제영역에서 발생하는 모든 데이터가 아닌 샘플링된 일부 데이터이다. 그러므로 학습 데이터에 잘 맞는 classifier라도 새로운 데이터를 올바로 분류할 것이라는 확보는 없음.

 

예를 들면, 과일의 색을 기준으로 과일이 사과인지 귤인지 분류해보자

색이 오렌지색이면 귤로 빨간색이면 사과로 분류해 놓는다. 다음으로 빨간색 과일을 보여주면 사과라고 결과를 도출한다.

그런데,, 특성 추출 단계에서 특성을 과일의 색으로 할 것인지, 과일 크기로 할 것인지, 아니면 과일을 만질때의 감촉으로 할 것인지 정해야 하는데, 이것을 특성추출이라고 한다. 과일 색, 크기, 감촉 모두를 특성으로 추출 할 수도 있다.

만약 훈련용 데이터가 무한대로 많다면 이들 모두를 특성으로 만들 수도 있지만 대부분 훈련용 데이터가 부족하고 모두를 특성으로 만드는 것이 효율적이지도 않다. 이렇게 특성을 추출하는 것을 특성 설계제작, 즉 Feature Engineering이라고 함

 

학습방법의 일반화(generalization) : 오류가 있는 학습 데이터가 사용된다면 실제로 잘못된 결정영역을 찾을 수도 있으므로 학습에 사용되지 않은 데이터에 대해서 분류를 잘하는 calssifier가 좋은 것

 

 

[Clasification]

 

 

입력층(input layer)과 출력층(output layer) 사이에 다중의 은닉층(hidden layer)을 포함하는 인공 신경망(ANN: Artificial Neural Network).

심층 신경망은 다중의 은닉층을 포함하여 다양한 비선형적 관계를 학습할 수 있다. 그러나 학습을 위한 많은 연산량과 과하게 학습하여 실제 데이터에 대해 오차가 증가하는 과적합(overfitting), 기울기 값의 소실 문제(vanishing gradient problem) 등의 문제가 발생할 수 있다. 2000년대 이후 드롭아웃(drop-out), ReLU(Rectified Linear Unit), 배치 정규화(batch normalization) 등의 기법이 적용되면서 딥 러닝(deep learning)의 핵심 모델로 활용되고 있다.

심층 신경망알고리즘에 따라 비지도 학습 방법(unsupervised learning)을 기반으로 하는 심층 신뢰 신경망(DBN: Deep Belief Network), 심층 오토인코더(deep autoencoder) 등이 있고, 이미지와 같은 2차원 데이터 처리를 위한 합성곱 신경망(CNN: Convolutional Neural Network), 시계열 데이터 처리를 위한 순환 신경망(RNN: Recurrent Neural Network) 등이 있다.

[네이버 지식백과] 심층 신경망 [Deep Neural Network, 深層神經網] (IT용어사전, 한국정보통신기술협회)

 

 

2. Learning Rate(학습계수)

학습계수는 Gradient descent에서 간격을 어느정도로 할지를 결정하는것으로 너무 크면 결과점을 지나치거나 밖으로 나가는 경우가 생기고 너무 작으면 결과값까지 가는데 너무 많은 시간이 걸리므로 적절한 수치를 정해야 함. 경험 + 지식 

 

 

3. Overfitting(과적합, 과학습)

Clasifier 성능을 평가할 때는 학습에 사용되지 않은 데이터를 사용해야 하는데, 이 데이터들을 테스트 데이터(TEST DATA)집합이라고 한다. 학습데이터에 대한 오류를 최소화하기 위해서는 너무 세밀하게 학습을 시키면, 학습데이터에 대한 clasifier의 분류 성능은 개선되는 반면, 테스트데이터에 대해서는 오히려 성능이 떨어질 수 있다. 이러한 상황을 Overfitting이라고한다. 

즉, 데이터를 분류(Classification)하거나 또는 데이터에 인접한 그래프를 그리는 것(Regression) 

 

 

그러나, 학습데이터 부족으로 학습이 정확히 안되어 트레이닝데이터에 가깝게 가지 못하거나, 트레이닝 데이터에 그래프가 너무 정확히 들어맞아서 발생하는것을 under fitting, over fitting 이라 한다 

 

 

오버피팅은 너무 정확히 학습 되기때문에 샘플데이터는 거의 100%의 정확도를 나타내지만 다른 데이터를 사용하면 정확도가 급격히 떨어진다

 

오버피팅의 해결

1) 충분한 학습 데이터

2) 정규화(Regulation)

3) Feature의 수를 감소

 

※ 불균형 데이터 문제

특정 부류에 속하는 학습 데이터의 갯수가 다른 부류에 비하여 지나치게 많은 경우. A부류의 데이터가 전체의 99%를 차지한다면, 어떤 분류기가 입력에 상관없이 무조건 A부류를 출력한다고 해보자. 이 분류기의 정확도는 99%이다. 이런 경우에는 정확도로 분류기 성능을

 

평가하는 것이 무의미하다. 이와 같이 학습데이터의 부류 분표가 고르지 못해서 생기는 현상을 분균형 데이터 문제라고 함.

 

문제를 해결하기 위한 방법

1. 가중치를 고려하여 정확도를 결정하는 것. 빈도가 많은 데이터에 작은 가중치를 부여하고, 빈도가 적은 데이터에는 높은 가중치를 부여한다. 빈도가 적은 데이터가 틀리면 더 많은 틀린 것처럼 간주하고, 반대의 경우에는 틀리더라도 조금 틀린 것처럼 보이도록 하는 것.

2. 빈도가 높은 부류의 학습 데이터를 그대로 사용하지 않고, 그 중 일부만 무작위로 표본추출해서 사용하는 것임. 즉, 빈도가 높은 부류의 갯수를 줄여서 균형을 맞추도록 함. 이 경우는 학습 데이터를 일부 버리는 셈이 됨.

3. 빈도가 낮은 부류의 학습 데이터를 인공적으로 더 만드는 것임.  이때 새로운 데이터는 기존의 데이터를 사용하여 만든다. 이를 위한 대표적인 방법이 SMOTE(Synthetic Minority Over-Sampling Technique)알고리즘.

이는 먼저 빈도가 낮은 부류의 학습 데이터로부터 데이터를 하나 선택한다. 선택한 데이터 x의 k-근접이웃(k-NN, k-nearest neighbor)들을 낮은 부류의 학습 데이터로 부터 찾는다. k-근접이웃은 가장 가까운 데이터부터 k번째 가까운 것까지의 데이터를 의미한다. 아래 그림은 3-근접이웃까지 고려한 예이다. k-근접이웃들 중에서 무작위로 데이터 y를 선택한다. x와 y를 연결한 선 위에서 무작위로 선택한 위치를 새로운 데이터 z로 생성한다. 새로운 데이터 z의 위치를 수식으로 나타내는 다음과 같다. 여기서는 는 0과 1사이의 값임

 

 

 

데이터 x를 기준으로 한 3-근접이웃 중에서 y가 선택되었을때 x와 y를 연겨한 선 위에서 무작위로 선택한 점 z를 새로운 데이터로 생성한다.

 

 

 

 

 

일반화 선형 모델

(Generalized linear

models, GLM)

선형 회귀(linear regression)의 발전된 형태로, 다양한 가능성 분산과 연결 함수를 지원해 분석가가 더 효과적으로 데이터를 모델링할 수 있도록 한다. 그리드 탐색(grid search)으로 강화된 GLM은 전통적인 통계와 가장 발전된 머신러닝의 조합이다.

일반화 선형 모형은 종속변수가 정규분포하지 않는 경우를 포함하는 선형모형의 확장이며 glm()함수를 사용한다. 

  • 종속변수가 범주형변수인 경우 : 이항변수( 0 또는 1, 합격/불합격, 사망.생존 등)인 경우도 있으며 다항변수(예를 들어 poor/good/excellent 또는 공화당/민주당/무소속 등)인 경우 정규분포 하지 않는다.
  • 종속변수가 count(예를 들면 한 주간 교통사고 발생 건수, 하루에 마시는 물이 몇잔인지 등)인 경우. 이들 값은 매우 제한적이며 음수가 되지 않고 평균과 분산이 밀접하게 관련되어 있고 정규분포하지 않는다.

의사결정 트리

(Decision trees)

각 속성들이 포함되어 있는가 아닌가를 기반으로 분류를 수행함.

'일병'이라는 단어가 있는 집합과 들어있지 않은 집합으로 나누고, '육군'이라는 단어가 들어있는 집합과 들어 있지 않은 집합으로 분류하여, '일병과 육군이 동시에 들어 있으면 군인 카테고리로 구분할 수 있다'와 같은 룰을 만드는 방식으로 질문 트리를 자동으로 만든다. 

결론적으로, 질문에 들어 있는 각각의 요소에 대해 그 단어가 들어 있는지 아닌지를 가지고 가장 그럴듯한 분류와 그 결과를 뽑아 내는 것  

나이브 베이즈법(Naive Bayes)

확률에 관한 유명한 정리인 '베이즈의 정리'를 사용해 나누는 방법으로, 데이터의 특징마다 어느 카테고리에 꼭 들어 맞는가에 대한 확률들을 곱해 가장 그럴 법한 분류를 찾는다.

예를 들어 기사에 '여당'이라는 단어가 들어 있었다면 아마도 그 기사는 정치 기사일 가능성이 높을 것이다. 이것은 확률적으로 다음과 같이 생각할 수 있다.  모든 카테고리의 기사에 '여당'이라는 단어가 포함되는 확률과 정치 카테고리에 '여당'이라는 단어가 포함되는 확률을 비교한다. 이 확률의 비교가 예를 들어 '1:10'이라면 정치 카테고리에 log(10/1), 즉, 1포인트 추가한다. 이 비교가 극단적일수록 높은 점수가 들어간다. 이것을 조사하고 싶은 기사 중에 포함되는 모든 단어로 시도한후에, 최종적인 '정치' 카테고리의 점수, '과학'카테고리의 점수, '문학'카테고리의 점수를 계산하여 가장 높은 것을 옳은 분류의 결과로 판정한다는 것이다.

그러나 차별적인 결과를 나타낼 가능성도 있어서 속성에 근거한 평가에 의해 합리적인 의사결정을 만들어야 함.

스팸메일 분류를 위해 그 필터는 하나하나의 키워드가 '어떤 확률로 스팸 메일이 될 가능성이 있나'를 수치로 갖고 있도록 함.

서포트 벡터 머신(Support Vector Machine, SVM)

최근 15년 정도 유행하던 방법으로 데이터를 구분 짓는 구분선과 각 데이터 그룹간의 간격을 최대로 나누는 방법.

 

 

 

 

 

즉. 3가지의 정보가 널려있다면 1과 2의 각각의 가장자리에서 동일한 간격의 중앙점을 찾아 나누어 구분한다면 2개를 나눌수 있을 것이다. 다른 나머지 1개도 마찬가지로 구분 짓는다. 정밀도가 높은서 잘 이용되어 왔으나 큰 데이터에 대한 계산은 시간이 걸리는 단점이 있다.

뉴럴네트워크

(Neural Network)

지금까지의 방법이 단순하게 분류하는 것인데 반하여 뉴럴네트웍은 인간의 뇌신경 회로를 흉내 내 매우 복잡한 구조의 힘을 통해 분류하는것.

앞에서도 언급한것과 같이 뉴런과 시냅스의 작동과 유사한 작동을 한다. 여기에 자극이 일정 임계값을 넘지 못하면 전기 신호가 발생되지 않아 그 값을 0으로 처리하고 신호가 발생되면 1로서 정보를 전달하는 방식

 

 

출력이 0.3이므로 발현되지 않는것으로 분류함

이러한 일련의 작업에서 중요한 것은 weight로서 인간의 뉴런이 학습에 의해 시냅스의 결합 강도를 변화시키듯이 학습하는 과정에서 가중치의 부여를 변화시켜 최적인 값을 출력하여 조정하는 것으로 정밀도를 높여 간다. 결과적으로 훈련 데이터를 통해 이 가중치값들이 결정되면 이들의 결정된 네트워크를 통해 입력 데이터를 분류하는 것

그럴다면 기계학습에서느 어떤 데이터가 필요한것인지 또는 어떤 정확한 결과 데이터가 필요한지 이 2개의 조합에 의해 얼마나 새로운 일을 시킬수 있는지 예를 들어보자

- 음식점의 좋고 나쁨을 판별할수 있는가?

- 자신이 좋아하는 음악장르를 분류할 수 있는가?

- 경기 결과에 영향을 주는 생활 패턴을 분류할 수 있는가? 등

딥 러닝

(Deeping Learning)

뉴럴 네트웍의 발전에 의해 혁신적인 결과를 도출해 낸 분야로 데이터의 고수준 패턴을 복합적인 다계층 네트워크로 모델링하는 방법. 문제를 모델링하는 가장 일반적인 방법이며 머신러닝의 가장 어려운 문제를 해결할 잠재력을 지님

 

1) 퍼셉트론
2) 델타 알고리듬
3) 다층퍼셉트론
4) 오류역전파 알고리듬

 

등 앞으로 다루어야할 중요한 부분들이 많다

+ Recent posts