[ISLR] 4. 분류(Classification) - 이차선형판별분석(QDA)

2023. 3. 31. 16:21·AI/Machine Learning

 

 

안녕하세요. 저번 포스팅에서는 선형판별분석(LDA)에 대해 알아보았는데요. 이번 포스팅에서는 분류기법에 사용되는 또다른 기법인 이차선형판별분석(QDA)에 대해 간단하게 정리하려고 합니다.

 

1. LDA와 QDA

이전에 배웠던 LDA의 예측 모델은 베이즈 정리에 의해서 유도되었으며 이 과정에서 몇 가지 가정을 하였습니다. 우선 범주형 반응변수 $Y$의 각 클래스에 따른 관측치 $X$값은 평균(벡터)이 다른 다변량 정규분포를 따른다는 점이였고, 다변량 정규분포를 따르지만 공통인 분산(공분산행렬)을 가진다는 점이였죠.

 

하지만 앞으로 접할 데이터를 살펴보면 공통 분산을 가지고 있지 않은 경우가 많습니다. 이런 경우 적용할 수 있는 기법인 이차선형판별분석(QDA)입니다. 다만 이차선형판별분석 역시 반응변수 Y의 각 클래스에 따른 관측치 X가 다변량 정규분포를 따른다는 것은 같습니다. 따라서 LDA와 QDA의 가정을 수식으로 나타내면 아래와 같습니다.

 

LDA : $X \sim N(u_k, \sum)$, QDA : $X \sim N(u_k, \sum_k)$

 

2. QDA Modeling

LDA 모델을 유도한 것 처럼 베이즈 정리에 의해 유도된 아래 식에 확률밀도함수(pdf)를 대입하면 $\delta_k(x)$을 얻을 수 있습니다.

$$ Pr(Y=k | X=x) = \frac{\pi_kf_k(x)}{\sum_{i=1}^{K}\pi_if_i(x)}$$

$$\delta_k(x)  = -\frac{1}{2}(x-u_k)^T{\sum}_k^{-1}(x-u_k) - \frac{1}{2}log|{\sum}_k| + log\pi_k$$

이때, QDA는 $\delta_k(x)$가 최대가 되는 k를 주어진 x값의 반응변수 Y의 클래스로 할당합니다.

 

참고로 공분산행렬은 설명변수의 수가 p개 일때 $p*p$ shape을 가지고 대칭행렬이므로 추정해야하는 파라미터의 수는 $\frac{p(p+1)}{2}$개 입니다. (대각성분과 상삼각성분만 구하면 되기 때문입니다.) 따라서 공통의 분산을 가진다는 LDA는 추정해야하는 수가 $\frac{p(p+1)}{2}$개이고 QDA는 공통의 분산을 갖지 않으므로 총 범주의 수 K개의 공분산행렬에 해당하는 $\frac{Kp(p+1)}{2}$개의 파라미터를 추정해야합니다. 따라서 편향-분산 절충(Bias-Variance TradeOff)에 의해서 LDA는 QDA보다 편향(Bias)가 크지만 낮은 분산(Variance)을 갖는 경향이 있으며, 반대로 QDA는 LDA보다 편향(Bias) 낮지만 높은 분산(Variance)을 가지는 경향이 있습니다.

 

3. SUMMARY

 

 

4. 예제(Example)

로지스틱 회귀분석 및 LDA와 비교하기 위해서 이전 포스팅에서 사용한 대학원 진학과 관련된 데이터를 이용해 선형판별분석을 진행하였습니다.

data <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
data$rank <- factor(data$rank)

 

LDA모델에 적합하기에 앞서, 범주별 설명변수의 정규성을 검정해야 하는데요. 범주별로 설명변수의 분포가 정규분포를 따르지 않는다면 Box-Cox변환과 같은 변환을 고려해야 합니다. 이번 예시에서는Henze-Zirkler Test와 AD Test를 통해서 다변량 정규성을 검정하였습니다. 아래와 같이 입학 여부에 따른 수치형 변수들의 분포가 다변량 정규분포를 따르는 것을 알 수 있습니다.

  • 다변량 정규성 검정 (귀무가설 $H_0$ : 데이터는 다변량 정규분포를 따른다)
    • [HZ Test] mvnTest::HZ.test 
    • [AD Test] mvnTest::AD.test 
    • 참고 MVN: An R Package for Assessing Multivariate Normality
mvnTest::HZ.test(data %>% filter(admit == 0) %>% dplyr::select(-rank, -admit))
mvnTest::HZ.test(data %>% filter(admit == 1) %>% dplyr::select(-rank, -admit))
mvnTest::AD.test(data %>% filter(admit == 0) %>% dplyr::select(-rank, -admit))
mvnTest::AD.test(data %>% filter(admit == 1) %>% dplyr::select(-rank, -admit))

위 검정에서 각 그룹별 수치형 변수들은 다변량 정규성을 가진다고 말할 수 있습니다. 

 

또한, 다변량 정규분포를 따르는 것을 확인하였으므로 공분산 행렬을 가지는지 확인해 봅시다. P-value가 0.05보다 크므로 공분산행렬이 유의미하게 다르다고 할 수 없습니다. 따라서 수준별로 서로 다른 공분산행렬을 가진다는 QDA의 가정과 다르므로 QDA보다 LDA의 성능이 좋을 것으로 기대됩니다.

  • Test of Homogeneity of Covariance Matrices (공분산행렬의 동등성 검정)
    • multiUS::BoxMTest 또는 rstatix::box_m 함수를 사용해서 검정
rstatix::box_m(data = dplyr::select(data, -admit, -rank), group = factor(data$admit))
multiUS::BoxMTest(dplyr::select(data, -admit, -rank), cl = factor(data$admit))

 

R에서는 MASS::qda( ) 또는 Tidymodeling에서 parsnip::discrim_quad( ) 함수를 사용해서 적합할 수 있습니다.

# Model
qda.fit <- qda(formula = admit ~ ., data = data)

# Predict
predict_grid <- data %>% modelr::data_grid(gre = seq_range(gre, 500, expand = 0.1), rank, gpa = median(gpa)) 
prob <- predict(qda.fit, newdata = predict_grid)$posterior[,2]
predict_grid %>% mutate(prob) %>% 
  ggplot(mapping=aes(x=gre, y=prob)) + geom_line(mapping=aes(color = rank))

 

LDA와 다르게 비선형적 형태를 가지고 있음을 확인할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'AI > Machine Learning' 카테고리의 다른 글

[ISLR] 4. 분류(Classifiction) With R Using Tidymodels  (0) 2023.03.31
[ISLR] 4. 분류모델의 성과지표(Performance Metric)  (0) 2023.03.31
[ISLR] 4.분류(Classification) - 선형판별분석(LDA)  (0) 2023.03.30
[ISLR] 4. 분류(Classification) - 로지스틱 회귀분석(Logistic Regression)  (0) 2023.03.28
[ISR] 3. 선형회귀(Linear Regression) Part 5  (0) 2023.03.11
'AI/Machine Learning' 카테고리의 다른 글
  • [ISLR] 4. 분류(Classifiction) With R Using Tidymodels
  • [ISLR] 4. 분류모델의 성과지표(Performance Metric)
  • [ISLR] 4.분류(Classification) - 선형판별분석(LDA)
  • [ISLR] 4. 분류(Classification) - 로지스틱 회귀분석(Logistic Regression)
임파카
임파카
[ML & Statistics] 모바일 버전에서 수식 오류가 있어 PC 환경에서 접속하는 것을 권장합니다.
  • 임파카
    무기의 스탯(Stat)
    임파카
  • 전체
    오늘
    어제
    • Study (149)
      • Data Science (44)
        • Modeling (18)
        • Manipulation (21)
        • Visualization (4)
      • Statistics (59)
        • Mathmetical Statistics (53)
        • Categorical DA (1)
      • Web Programming (17)
      • AI (26)
        • Machine Learning (16)
        • Deep Learning (10)
      • 활동 및 프로젝트 (3)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
임파카
[ISLR] 4. 분류(Classification) - 이차선형판별분석(QDA)
상단으로

티스토리툴바