[책 정리]트리기반의 방법, 서포트벡터머신

장우솔·2022년 6월 20일
0

Statistic

목록 보기
4/5

8. 트리기반의 방법

회귀, 분류나무

트리기반의 방법들은 해석하기 쉽고 유용하다. 하지만 처음 분할된 이후 바꿀 수 없기에 최고의지도학습기법들에 비해 예측 정확도가 떨어진다.

트리는 맨 위에서 시작하는 일련의 분할규칙으로 구성된다. 재귀이진분할을 수행하기 위해, 설명변수와 절단점(s)를 선택한다. 이 절단점은 RSS가 가능한 가장 작게 되도록 설명변수 공간을 두개의 영역으로 분할하는 것이다. 다음으로 가장 좋은 설명변수와 절단점을 찾는 과정을 반복하여 각 영역내에서 RSS가 최소가 되도록 데이터를 더 분할한다.

이 과정은 정지기준이 만족될 때까지 계속된다. 영역이 만들어지면, 주어진 검정 관측치에 대한 반응변수는 그 검정관측치가 속하는 영역내에 훈련 관측치들의 평균을 사용하여 예측한다.

트리 pruning

데이터를 과적합할 가능성이 있다. 결과 트리가 너무 복잡할 수 있기 때문이다. 분할 수가 적은 더 작은 트리는 약간의 편향증가가 있지만 분산이 더 낮아지고 해석이 더 쉬울 수 있다.

한가지 대안으로는 각각의 분할로 인한 RSS감소가 어떤 높은 임계값을 초과하는 동안까지만 트리빌딩 과정을 진행하는 것이다.

더 나은 전략으로는 큰 트리를 만든 다음 그것을 다시 가지치기 하여 서브트리를 얻는 것이다.

트리를 prune하는데 가장 좋은 방법은 어떻게 결정할까?
--> 가장 낮은 검정오차율을 제공하는 서브트리를 선택하는 것이 목적이다. 주어진 서브트리에 대해 교차검증 또는 검증셋 기법을 사용하여 서브트리의 검정오차를 추정할 수 있지만 모든 가능한 서브트리를 확인하는 것은 번거롭기 때문에 작은 서브트리 집합을 선택하는 방법이 필요하다.

비용복잡성 pruning은 서브트리를 선택하는 방법을 제공한다.

비용복잡성 식

절댓값 T는 트리의 터미널노드 수를 의미한다. 조율파라미터 알파는 서브트리의 복잡도와 훈련자료 적합사이의 trade-off를 제어한다.

회귀트리 만들기 순서

  1. 훈련자료에 대해 큰 트리를 만든다. 각 터미널 노드가 가진 관측치 수가 어떤 최소값보다 작을 때 빌딩 중지한다.
  2. 이렇게 만든 큰 트리의 비용복잡성 pruning 적용하여 일련의 가장 좋은 서브트리들을 알파의 함수로서 얻는다. (알파를 변화시켜가며 다른 수의 터미널 노드를 가진 서브트리들을 생성한다.)
  3. k-fold 교차검증을 사용하여 알파를 선택한다.(교차검증된 MSE를 보고 알파 선택)
  4. 선택된 알파값에 대응하는 2에서 얻은 서브트리를 반환한다.

분류트리

분류트리 RSS는 이진분할을 위한 기준으로 사용될 수 없다. 그 대신 분류오류율(훈련 관측치들이 영역 내에 가장 많이 포함된 클래스에 할당) 을 기준으로 삼는다.

실제로는 분류오류율이 트리 빌딩에 대해 충분히 민감하지 않아 두가지 측도를 사용한다.
지니지수와 교차엔트로피 두 기법은 분류오류율보다 노드 순도에 더 민감하다.
분류트리를 만들 때 특정 분할의 질을 평가하는데 사용한다.

트리 가지치기 할때는 세기법 중 어느 하나를 사용할 수 있지만 최종 가지치기 된 트리의 예측 정확도가 목적인 경우에는 분류오류율이 선호된다.

왜 예측 정확도를 위해 분류오류율이 선호될까?
검정관측치가 주어졌을 때 책에 있는 분류나무를 확인하면, RestECG < 1이 분류오차를 줄이지는 않지만 두 개로 나눔으로 순도를 높여 노드 순도에 더 민감한 지니 지수와 교차엔트로피 값이 낮아질 것이다.
이러한 이유로 정확도만 본다면 분류오류율이 선호되는 것이다.

트리의 장점

  1. 트리는 설명하기가 매우 쉽다. 비전문가도 쉽게 해석할 수 있다. (특히, 트리 크기가 작을 경우)
  2. 앞에서 다룬 회귀와 분류기법들보다 인간의 의사결정 과정을 더 밀접하게 반영한다고 생각된다.
  3. 가변수들을 만들지 않고도 질적 설명변수들을 쉽게 처리할 수 있다.

트리의 단점

  1. 트리모형이 복잡하면 예측력이 저하되고 해석이 어렵다.
  2. 데이터 변형에 민감하여 안정적이지 않다.
  3. 일반적으로 다른 회귀 및 분류 기법들과 동일한 수준의 예측 정확도를 제공하지 못한다.

배깅

여러개의 붓스트랩 데이터를 생성하고 각 붓스트랩데이터에 예측모형을 만든 후 결합하여 최종 예측모형을 만드는 방법
의사결정트리의 높은 분산이 문제가 되어 훈련자료로부터 반복하여 표본들을 샘플링함으로써 붓스트랩을 하고, 적합하여 예측결과들을 평균하여 얻는다. 이러한 트리들은 크기가 크고 prune이 되지 않은 것이다. 따라서 각 트리는 분산이 크지만 편향은 작다. 이 트리들을 평균내어 편향은 유지하고 분산을 줄인다. 여러 개 트리들을 결합함으로 정확도 향상을 이룬다. 질적변수인 분류문제에서는 다수결로 결과를 예측한다.

OOB 오차 추정

붓스트랩된 부분집합에 트리를 반복하여 적합할 때 평균적으로 각각의 배깅된 트리는 관측치들의 2/3을 사용한다. 나머지 1/3의 관측치들은 out-of-bag 관측치라고한다. 결과 OOB오차는 배깅된 모델에 대한 검정오차의 유효한 추정치이다. 왜냐하면 각 관측치에 대한 반응변수 값은 그 관측치를 사용하여 적합하지 않은 트리들만을 사용하여 예측되기 때문이다.

변수 중요도 측정

배깅은 예측정확도는 향상시키지만 해석은 오히려 어렵다. 대신 RSS 또는 지니지수를 사용하여 각 설명변수의 중요도에 대한 전반적인 개요를 얻을 수 있다.

  • 회귀트리는 RSS감소량이 크면 설명변수가 중요하다는 것을 나타낸다. 분류트리는 지니지수!

랜덤포리스트

배깅과 흡사하고 분할이 필요할 때마다 변수를 랜덤하게 골라 이 변수들에서만 분할을 한다.

직관적 근거 : 주어진 변수 중 한 개의 변수가 매우 중요하면 배깅을 할 때 모든 나무들이 중요한 변수부터 분할을 할 것이다. 그러면 나무들이 서로 비슷해지고 나무를 이용한 추정치 사이에 상관계수들이 커질 것이다. 근데 m개의 변수만 고려한다면 매우 중요한 변수로 분할을 시작하지 않은 나무가 (p-m)/p확률이 된다. 이는 붓스트랩 나무들의 상관성을 줄여 평균의 분산을 줄여준다.

트리들의 상관성을 제거하는 간단한 방법으로 붓스트랩된 훈련표본에 대해 다수의 의사결정트리를 만든다. 하지만 이러한 의사결정트리들을 만들 때, 각 분할에서 m개의 설명변수들로 구성된 랜덤표본이 분할로 선택된다. 보통 m=루트p 를 사용한다. M=p는 배깅과 같음!

배깅과 다른점

변수 중요도는 지니지수의 평균감소를 사용하여 계산하고 최대값에 대한 상대값으로 표현한다.
랜덤포리스트를 만드는 중에 수행하는 각각의 트리 분할에서 알고리즘은 사용한 설명변수들의 다수를 고려하는 것도 허용하지 않는다. 높은 상관성있는 값들을 평균하는 것은 분산을 크게 줄이지 않는다. 따라서 매번 분할을 수행할 때마다 설명변수들의 일부분만 고려하여 이러한 문제를 극복한다.
(p-m)/p 분할은 강한 설명변수를 고려하지않고 다른 설명변수들에게 더 많은 기회가 주어질 것이다. 따라서 트리들의 상관성을 제거하는 것으로 간주된다. 그래서 결과 트리들이 평균의 변동성은 적어지고 더 안정적으로 된다.
랜포를 만드는데 작은 m을 사용하는 것은 보통 큰 수의 상관된 설명변수들이 있을 때 유용하다.

부스팅

각 트리는 이전에 만들어진 트리들로부터 정보를 사용하여 순차적으로 만들어진다. 부스팅은 붓스트랩 샘플링을 하지 않는다. 대신 각 트리는 수정된 버전(x의 가중치 변경)의 원래 데이터셋에 적합된다. 오차가 큰 관측치를 뽑아서 잔차를 줄여나가는 기법.

부스팅 기법은 천천히 학습한다. (weaklearner 이기에 f가 조금씩 변화한다.) 주어진 현재 모델에 대해 이 모델의 잔차들에 의사결정트리를 적합한다. 결과 y가 아닌 잔차들을 반응변수로 사용하여 트리를 적합하고 잔차들을 업데이트한다. 수축파라미터 람다는 잔차에 적합함으로써 f hat을 개선시키는 과정을 더욱 느리게 하여 더 많은 형태의 트리들이 잔차들을 공략하게 한다. (optimize해야하기에 기울기를 천천히 감소시킴.) 배깅과 달리 부스팅은 이미 만들어진 트리들에 강하게 의존한다.

부스팅 조율파라미터

  • 트리의 수(B) : 너무 크면 noise까지 적합하여 과적합할 수 있다.
    수축파라미터 람다(작은 양수): 부스팅이 학습하는 속도를 제어한다. 보통 0.01~0.001 람다가 너무작으면 좋은 성능을 달성하기위해 트리의 수를 크게 늘려야한다.

  • 분할의 수(d) : 복잡도를 제어한다.(상호작용깊이를 의미한다.) 보통 d=1이면 잘 작동하며 이러한 경우 부스팅 구성은 각 항이 하나의 변수만 포함하므로 가법모델을 적합하는 것이다.

검정오차는 총 트리의 수와 상호작용 깊이의 함수로 표시된다.

내 생각 요약!
배깅- 붓스트랩으로 훈련관측치 뽑고 서브트리들로 예측한 y값 평균냄
랜포- 설명변수 수를 줄여 예측함 -> 상관성줄이고 분산 줄이기 위해.
부스팅 – 하나의 모델로 계속 가중치 업데이트시키고 x잔차들을 예측

9. 서포트벡터머신

서포트벡터머신은 최대마진분류기를 일반화한 것이다. 최대마진분류기는 클래스들이 선형경계에 의해 구별될 수 있어야하는 조건이 있기에 대부분의 데이터셋에 적용될 수 없다.
서포트 벡터 분류기는 더 넓은 경우에 적용될 수 있도록 최대 마진 분류기를 확장한 것이다.

최대마진분류기

훈련 관측치들로부터 가장 멀리 떨어진 분리 초평면인 최대마진초평면을 선택하는 것이 자연스럽다. 각각의 훈련관측치에서 주어진 초평면까지 수직거리를 계산할 수 있으며 관측치들에서 초평면까지 가장 짧은 거리가 마진이다, 최적 마진 초평면은 마진이 가장 큰 것이다. 이것은 훈련 관측치들까지의 최소거리가 가장 먼 초평면이다.

최대마진분류기는 P값이 클 때 과적합에 이를 수 있다. 최대마진초평면과 마진 사이의 점들이 ‘서포트 벡터’이다. 최대마진초평면은 서포트 벡터에는 직접적으로 의존적이지만 다른 어떤 관측치의 이동도 이러한 이동으로 인해 관측치가 마진에 의해 설정된 경계를 넘어가지 않으면 분리 초평면에 영향을 주지 않는다. 즉 관측치의 작은 부분집합에만 의존적이다.

최적화 문제는 초평면마진(M : 마진 폭)을 최대로 하는 베타들을 선택하는 것이다.

모든 훈련 관측치들을 완벽하게 분류하는 것은 개별 관측치에 민감해질 수 있다. 단일 관측치 변화에 극도로 민감하다는 사실은 훈련 데이터를 과적합할 수 있다는 의미이다.

따라서 개별관측치에 대해 더 로버스트하고, 대부분의 훈련 관측치들을 더 잘 분류하는 소프트 벡터 분류기를 사용한다. (일부 관측치들은 마진의 옳지 않은 쪽에 있을 수 있도록 허용)

소프트라고 하는 이유는 일부 훈련 관측치들에 의해 마진이 위반되기 때문이다.

C

C는 음수가 아닌 조율 파라미터로 마진에 대한 허용될 위반의 수와 그 정도를 결정한다. C는 위반될 수 있는 양에 대한 예산으로 생각할 수 있다. C가 증가함에 따라 허용정도가 크게 되어 마진의 폭이 넓어진다. C는 교차검증을 통해 선택된다. 편향-분산 절충을 제어한다. C가 작을 때 좀처럼 위반되지 않는 좁은 마진을 찾으려고 하고 이 분류기는, 편향은 낮지만 분산이 높을 수 있다. (=서포트 벡터가 적다.) 즉, C가 감소함에 따라 관측치가 마진의 옳지 않은 쪽에 있어도 되는 허용수준이 줄어들어 마진의 폭이 좁아진다.

슬랙변수

슬랙변수(ei>=0) 는 i번째 관측치가 초평면과 마진에 관해 어디에 위치하는지 알려준다. (다른 여백쪽에 데이터가 발생되는 경우 슬랙변수를 고려한다.)
=0 마진의 올바른 쪽에 있다. ei>0이면 I번째 관측치는 마진에 옳지않은 쪽, ei>1이면 초평면에 옳지않은 쪽.

LDA분류와 SVM

LDA분류 규칙은 각 클래스 내에 모든 관측치들을 사용하여 클래스 내 공분산 행렬에 의존한다. 로지스틱 회귀는 결정경계에서 멀리 떨어진 관측치들에 대한 민감도가 매우 작다. 서포트 벡터와 밀접하게 관련되어있다.

최대여백초평면 : 수많은 분리초평면 중 여백이 가장 큰 것
서포트벡터 : 최대여백초평면으로부터 거래가 최대여백인 관측치들

profile
공부한 것들을 정리하는 블로그

0개의 댓글