[기계학습 2주차B] 베이지안 분류
Multiple Class에서의 Error
앞서 Triple Trade-off와 PAC Learning을 다루면서 error를 작게 해야한다는 것을 살펴보았다. 그렇다면 다중 클래스에서는 에러가 어떻게 계산될까?
먼저 문제에 대한 해석이 중요한데, K-class 분류 문제를 그대로 해석하느냐, K개의 이진 분류 문제로 변환하여 해석하느냐부터 정해야한다. multi-class 지원이 될 경우 레이블 r을 0, 1, 2와 같이 클래스 별로 숫자를 할당하여 r 벡터를 생성할 수 있다.
그러나 multi-class 지원이 되지 않을 경우에는 “이 input이 레이블 0인가 아닌가?”, “이 input이 레이블 1인가 아닌가?” 등 각 레이블별로 일일이 binary하게 물어야할 수 있다. 이번 장에서는 후자의 경우로 살펴보겠다.
이 경우 입력과 출력의 차원을 살펴보면
\[D=\left\{x^t, y^t\right\}_{t=1}^N\] \[x^t = [x_1^t \cdots x_d^t]\text{ , } r^t = [r_1^t \cdots r_d^t]\] \[r^t=\begin{cases} 1\quad \text{if}\;x\;\text{is predicted as class k}\\ 0\quad \text{otherwise}\\ \end{cases}\]이다. 즉 기존의 family car 문제에서 레이블 r이 스칼라가 아닌 원-핫 벡터라는 점이 차이다. 입력 x^t가 속하는 클래스에만 1을 부여하고 나머지는 전부 0인 방식이다. 따라서 가설 공간도 기존과는 다른데
\[\textbf{h(x)}=[h_1(x) \cdots h_K(x)],\;h_k(x)=\begin{cases} 1\quad \text{if}\;x\;\text{is predicted as class k}\\ 0\quad \text{otherwise}\\ \end{cases}\]이렇게 가설도 클래스 K개에 맞춰 K개로 나온다. 각각의 가설 또한 binary한 값을 가지는데, 각 클래스에 속하는지 속하지 않는지를 1과 0으로 구분한다.
여기서 실증 오류(Empirical Error)의 계산 방식이 특이한데, 모든 샘플의 모든 가설마다 에러를 계산하여 합산한다.
\[E(\{h_i\}_{i=1}^K|D)=\sum_{t=1}^N\sum_{t=1}^K1(h_i(x^t)\neq r_i^t)\]해석하자면 input x에 대한 가설 K개가 레이블을 옳게 맞추지 못했을 경우, 매 가설마다 1씩 에러를 환산하여 N개의 샘플을 모두 합산한다는 의미이다. 쉽게말해 r^t=[1, 0, 0]인데 h^t=[0, 1, 1]이면 에러는 1이 아니라 3으로 계산되는 것이다.
확률 REMIND
확랜덤, 회귀에서도 배우는 확률을 기계학습에서도 보게될 줄이야.. 이젠 뭐 다 아는 내용이니까 특기할 것만 적어놓겠다. 이 챕터는 넘겨도 된다.
random한 시행이라는 것은 Nondeterministic한 것을 의미한다. 한국어로 이게 뭘까? 아무튼 ‘논디털미니스틱’하단다.
표본 공간(sample space) Omega는 모든 가능한 결괏값들의 집합으로 각각의 원소들은 Mutually exclusive and exhaustive하다. 즉 교집합이 없어 동시에 해당될 수 없고(상호배타적), 원소를 다 더하면 전체 집합이 된다는 의미.
확률 변수(random variable)는 모든 가능한 ‘값’들의 집합이다. 간혹가다 범주형 함수에서 카테고리로 나올 수 있지만, r.v.가 되기 위해선 일단 숫자로 변환되어야 한다. 이 변수들은 이산적(discrete)일 수도, 연속적(continuous)일 수도 있다.
확률밀도함수(pdf)는 \(p(X=x)=\lim_{dx \to 0} p(x\le X\le x+dx)/dx\)와 같으며 높이가 곧 확률값이라는데, 이 수식은 높이가 아닌 기울기에 대한 식이 아닌가? 이건 교수님께 다시 의미를 물어봐야할 듯 하다.
조건부 확률, 주변 확률, 연쇄 법칙, 확률적 독립, 베이즈 정리는 다 아는 내용이니 패스
베이지안 분류(Bayesian Classfication)
우리가 확률을 사용해야하는 이유는 무엇일까? 우리가 알지 못하거나, 관측할 수 없는 인자가 존재하기 때문이다. 따라서 알고 있는 확률을 통해, 알지 못하는 사건에 대한 유추가 필요하다.
머신러닝에서는 이를 learning을 통한 prediction(학습을 통한 예측)이라 말하고, 통계학에서는 estimation을 통한 inference라고 말한다.
binary 클래스의 경우
교수님이 만든 기호를 LaTex로 표현할 수가 없어 부득이하게 png로 대체한다. 확률이 큰 쪽으로 클래스 분류를 한다고 했을 때
베이즈 정리에 따라 계산을 해보면 likelihood(확랜덤에서 배운 transition)의 비율이 prior의 비율에 비해 크냐 작냐라는 likelihood ratio로 클래스를 분류함을 확인할 수 있다.
여기에 양변 로그를 취한 log likelihood ratio의 경우 우변이 상수값이므로, 상수에 비해 크냐 작냐로 이진 클래스를 분류할 수도 있다
Multiple 클래스의 경우
이 경우에는 클래스가 3개 이상이므로 부등식보단 argmax, 즉 확률이 가장 커질 때의 인덱스 i prime을 반환하도록 한다. 즉
\[i=arg\max_{i'}P(c_{i'}|x)\]여기서 앞서 다룬 likelihood ratio와 log 스케일까지 표현하자면
\[\begin{align} arg\max_{i'}P(c_{i'}|x)&=arg\max_{i'}\frac{P(x|c_{i'})P(c_{i'})}{P(x)}=arg\max_{i'}P(x|c_{i'})P(c_{i'}) \\&= arg\max_{i'}[logP(x|c_{i'})+log(P(c_{i'}))]\end{align}\]Probability of Error
이 곡선은 binary 클래스에서 가설공간을 통과한 input h(x)가 어느 클래스로 분류될 지에 대한 확률 그래프를 나타낸 것이다. 위 도식의 p(x)는 분모, p1(x)와 p2(x)는 분자를 의미하고, 아래 도식의 q1(x)는 c1에 대한 조건부 확률, q2(x)는 c2에 대한 조건부 확률을 의미한다.
여기서 가로축인 x는 x에 대한 오름차순 혹은 내림차순이 아니라, 그냥 확률이 높은 것부터 낮은 것까지 보기 좋게 y에 대해 정리한 것임을 기억하자. 또한 q1과 q2의 확률은 binary class이므로 둘을 합치면 항상 전사건의 확률 1이 나올 것이다.
예를 들어 두 곡선 q1과 q2의 교점을 기준으로 왼쪽은 c1으로, 오른쪽은 c2로 분류한다고 해보자. 당연히 q1값이 높은 곳에선 c1으로, q2값이 높은 곳에선 c2로 분류하는 것이 확률적으로 합당할 것이다.
이때 q1구간에선 q2만큼의 확률이 error로, q2구간에선 q1만큼의 확률이 error로 분류될 것이다. 이때 두 교점을 기준으로 잡으면 색칠한 하늘색 영역만큼이 error가 되고, 이것이 최소 에러이다.
그런데 기준을 조금 더 오른쪽으로 잡는다면 어떻게 될까? 빨간색으로 색칠된 영역만큼 에러가 더 발생하게 된다. 빨간색 영역에서는 원래 q2로 label되어야할 것이 q1으로 되면서 q2의 영역만큼 error가 추가 발생하는데, 이는 기존의 하늘색 에러보다 영역이 더 늘은 상태이다.
따라서 최소 에러를 갖기 위해선 두 곡선의 교점을 기준으로 잡는 것이 합당하다.
출처: 기계학습(COSE362) ㅇㄷㅅ 교수님