반응변수가 범주형 변수 일 때, 예측변수와 반응변수간의 관계를 설명하는 분류기(classifiers) 모델링이 쓰이게 된다.
다양한 모델들이 있지만, 그 중 Logistic Regression, LDA, QDA, NaiveBayes 모델 이 가장 널리 알려진 것들인데,
이것들은 모두 R에서 이미 구현이 되어있다.
LDA, QDA, NaiveBayes 에 관해 간단히 설명을 하자면, (베이즈 정리를 통한 설명)
이들은 모두 베이즈 정리를 응용하여, 즉 적절한 가정과 이미 주어진 사전확률을 통하여 사후확률(posterior)을 예측하는 모델들이다. 이 때, 사전확률(prior) P(X= k | Y )에 대하여, 각 Y의 수준에서 X의 분포가 정규분포를 따른다고 가정을 한다. 이를 이용하면, 베이즈 정리를 통하여 사후확률 P(Y= y | X = k) 를 구할 수 있고, x의 각 수준에 대하여 y의 확률이 가장 크게 나오는 y값으로 반응변수를 예측하는 것이다.
이 때,(예측변수가 다수일 때) LDA의 경우 Y의 각 값 에 대해서 X의 조건부 분산이 동일함을 가정한다. 반면, QDA의 경우 X의 조건부 분산이 Y의 각 값에 따라 다름을 전제로 한다.
naiveBayes는, 예측변수의 개수가 다수일 때 예측변수간의 상호작용을 모두 생각하는 것은 사실상 힘들기 때문에, 각 예측변수가 서로 독립임을 전제로 한다.
이상 주저리가 길었고,, 이를 R함수를 이용하여 구현해보자.
이들 함수들의 문법 자체는 lm()과 거의 동일하다.
1. LDA
library(MASS) #LDA ,QDA 포함하는 라이브러리
lda.fit <- lda(y ~ x1 + x2, data = Data, subset = index)
plot(lda.fit) #도출한 사후확률을 막대그래프로 그려줌
#Predictions
lda.pred <- predict(lda.fit, Testset)
#Testset에 대하여 lda.fit으로 결과값 예측
lda.pred$class : 결과값 리스트 (범주형)
lda.pred$posterior : 사후확률 반환
lda.pred$x : 사후확률 차이를 알려줌
2. QDA: 문법이 완전히 동일하다.
함수만 qda() 사용
3. naiveBayes
- e1071이라는 라이브러리에 위치한 함수
library(e1071)
nb.fit <- naiveBayes (y ~ x1 + x2 , data = Data ,
subset = index)
predict(nb.fit, testset) # 예측함수 : 예측값을 반환
predict(nb.fit, testset, type = 'raw') : 실제 도출 사후확률값을 반환
'Programming > R' 카테고리의 다른 글
Shrinkage Methods using R (0) | 2022.05.12 |
---|---|
Subset selection using R : regsubsets() (0) | 2022.05.08 |
Resampling using R : Cross-validation / Bootstrap (0) | 2022.05.08 |
R : lm() / glm() (0) | 2022.05.07 |