반응변수는 크게 양적 반응변수와 질적 반응변수(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) \\]

어떤 경우 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차를 의미한다.