분류, Classification
반응변수는 크게 양적 반응변수와 질적 반응변수(categorical)로 나눌 수 있다. 질적 반응변수는 동물(개, 고양이, 치타)처럼 분류할 수 있는 반응변수를 말한다. (범주형, categorical)
반응변수가 질적인 경우 선형회귀는 적합하지 않다.
분류 클래스 수가 3 이상인 경우 선형회귀?
범주에 따라 Y값을 1, 2, 3으로 나눌 수는 있는데, 1과 2, 2와 3의 차이가 비슷한 경우에만 해볼만하다. 분류 케이스가 3 이상인 경우 질적 반응변수를 선형 회귀를 위해 양적 반응변수로 바꾸는 자연스러운 방법은 없다. 그래서 후술할 LDA 분류기를 사용한다.
분류 클래스 수가 2인 경우 선형회귀?
분류해야하는 케이스가 2개면 0, 1로 할 수 있으니까 가능은 하지만… 이런 경우 f가 직선이라 Y값이 음수로 나오거나 1보다 커져 확률로 해석하기가 어렵다는 문제점이 있다. 그래서 케이스가 2개인 질적 반응변수에 잘 맞는 분류 방법으로 나온 것이 무엇이냐~하면 로지스틱 회귀다.
로지스틱 회귀(Logistic Regression) - 이진 분류
* 여기서 \(p(X)\)는 \(Pr(Y = True | X)\) 라고 생각하면 된다. 이진 분류 이니까. 로지스틱 함수는 항상 Y값의 범위가 0~1이라 확률로 해석 가능하다. \[p(X) = \frac{e^{\beta_0 + \beta_1 X}}{1 + e^{\beta_0 + \beta_1 X} }\] \[log(\frac{p(X)}{1 - p(X)}) = \beta_0 + \beta_1 X\] 아래의 좌변을 logit 또는 로그 공산(log-odds)이라 부른다. 저기서 로그를 없애면 공산(odds)이다.
모델 적합(fitting)은 최대 가능도(maximum likelihood)라는 방법을 사용하며, 아래의 가능도 함수(likelihood function)을 최대화하는 \(\beta\) 를 선택하는 방식이다.
\[\ell(\beta_0, \beta_1) = \prod_{i:y_i=1} p(x_i) \prod_{i’:y_{i’}=0} (1 - p(x_{i’})) \] \(\Pi\)는 곱기호다. 시그마처럼 다 더하듯 그냥 다 곱하면 된다.
2-클래스 로지스틱 회귀도 다중클래스 모델로 확장할 수 있지만, 일반적으로 다중 클래스에는 LDA 분류기가 사용된다.
LDA 분류기 (선형판별분석, Linear Discriminant Analysis) - 다중 클래스 분류
* 여기서 \(p_k(x)\)는 \(Pr(Y = k | X)\) 라고 생각하면 된다. 조건부 확률임.
분류를 위한 베이즈 정리
2018/04/21 - [Math/Probability and Statistics] - 조건부 확률과 베이즈 정리 (Bayes’ theorem)
설명 변수가 하나인 경우(p=1)
\(\pi_k = Pr(Y)\)는 랜덤하게 선택된 관측치가 k번째 클래스에서 나올 전체 확률(사전확률) \(f_k(X) = Pr(X = x | Y = k)\)는 k번째 클래스에 속하는 관측치에 대한 X의 밀도함수(정규분포 곡선 형태를 생각하면 된다.) 사전확률 \(Pr(Y)\)를 알 때 \(Pr(Y|X)\)를 구하는게 베이즈 정리이니까, \[Pr(Y = k | X = x) = p_k(x) = \frac{\pi_k f_k(x)}{\Sigma_{l=1}^K \pi_l f_l(x)} \quad (4.10) \] * 분모는 전확률
\(f_k(x)\)를 추정하려면 그 형태를 가정해야 한다. 정규분포라고 가정 한다. 왜냐면, f_k(x)는 어떤 클래스 k를 가지는 x값들의 분포이므로. 이 때 평균은 k마다 다르고\(u_k\) 분산은 어떤 클래스든지 같다고 해보자\(\sigma^2\) \(f_k(x)\)를 (4.10) 식에다 넣고 양변 로그취하고 항들을 정리하면 다음 식을 얻을 수 있다. \[\delta_k(x) = x \cdot \frac{u_k}{\sigma^2} - \frac{u_k^2}{2 \sigma^2} + \log \pi_k \quad (4.13) \]
베이즈 분류기는 (4.13)을 최대로 하는 클래스Y=k에 관측치X=x를 할당하는 방식이다.
위와 같은 경우는 X가 각 클래스 내의 가우스분포로부터 나왔고, 관련 파라미터를 다 알고 있기 때문에 베이즈 분류기를 계산할 수 있지만, real-life에서는 베이즈 분류기를 계산할 수 없다. 그래서 있는게 linear discriminatnt analysis(LDA, 선형판별분석)이다.
LDA 방법은 \(\pi_k, u_k, \sigma^2\)에 대한 추정치를 구하고 이를 (4.13)에 대입하여 베이즈 분류기를 근사하는 방법이다. 추정치를 구하는 방법은 다음과 같다. \[\hat{u_k} = \frac{1}{n_k} \sum_{i:y_i = k} x_i\] \[\hat{\sigma^2} = \frac{1}{n-K} \sum_{k=1}^K \sum_{i:y_i = k} (x_i - \hat{u_k})^2\] \[\hat{\pi_k} = \frac{n_k}{n}\] n은 총 훈련 관측치의 개수이고, \(n_k\)는 k번째 클래스의 훈련 관측치 개수. K는 클래스의 수이다.
다중설명변수인 경우 (p > 1)
\(X = (X_1, X_2, …, X_p)\)는 클래스 특정 평균벡터와 모든 클래스들이 공통의 공분산(cov) 행렬을 가지는 다변량가우스분포(또는 다변량 정규분포 )를 따른다고 가정한다. * 이 가정 (다른 평균, 공통의 공분산, 정규분포 )이 근사적으로 성립하면 LDA가 로지스틱 회귀보다 나은 성능을 낼 수 있다. 반대의 경우 LDA가 성능이 좋을 수 있다.
다변량 정규분포 공식도 이미 정해져 있다. 구글에 검색하면 나옴. \(E(X)=\mu\)는 클래스 k에 속하는 \(X\)의 원소들 각각에 대한 평균(p개 원소를 가진 벡터) \(cov(X) = \Sigma\)는 \(X\)의 \(p \times p\) 공분산행렬(각각의 원소끼리의 상관정도를 나타내야 하니까 p*p개의 원소가 있어야 한다.) 그래서 다변량 정규분포를 또 (4.10) 식에다 넣고 양변 로그취하고 항들을 정리하면 다음 식을 얻을 수 있다. \[\delta_k(x) = x^T \Sigma^{-1} \mu_k - \frac{1}{2} \mu_k^T \Sigma^{-1} \mu_k + \log \pi_k \quad (4.19) \]
[Machine Learning ML-Theory] - 민감도와 특이도 (sensitivity, specificity)
어떤 경우 LDA로 예측한 것이 민감도가 낮을 수 있다. LDA는 모든 분류기 중에 총오류율이 가장 낮은 베이즈 분류기에 근접하고자 하기 때문에, 오류가 어느 클래스에서 발생하든 관계없이 잘못 분류되는 관측치의 총 수가 가장 낮다. 근데 어떤 클래스에서 발생하는 오류를 더 피하고 싶은 경우가 있다.(연체할 사람을 연체하지 않을 사람으로 예측하는게 그 반대보다 더 치명적일 수 있다.) 이런 경우 사후확률의 임계치를 조정하는 방식으로 클래스 분류 결과를 조절할 수 있다. 이러면 총오류율은 커질 수 있지만 특정 클래스에서 발생하는 오류를 줄일 수 있다. 임계치를 어떻게 조정해야 할 것인가?는 ROC 곡선 :https://en.wikipedia.org/wiki/Receiver_operating_characteristic
QDA 분류기(이차판별분석, Quadratic Discriminant Analysis)
LDA가 K개 클래스 모두에 공통인 공분산행렬을 갖는 다변량가우스분포에서 나왔다고 가정하는 반면, QDA는 각 클래스가 자체 공분산행렬을 갖는다고 가정한다는 점이 차이점이다. QDA는 LDA보다 좀 더 복잡하므로, bias-variance trade-off를 고려해서 해결하려는 문제의 복잡도에 따라 선택하도록 한다.
2019/04/07 - [Math/Probability and Statistics] - 편향-분산 절충, Bais-Variance Decomposition
* 참고로 Quadratic은 4차가 아니고 2차를 의미한다.