10-4. 판별분석(Discriminant Analysis) 2
- 이차판별분석 -
4) 선형판별분석 vs 이차판별분석
5) 이차판별분석(QDA)
- 모집단 등분산 검정
분산-공분산 행렬이 범주별로 다른 경우, 이차판별분석(QDA)을 실시
=> Box's M-test
귀무가설 : 모집단의 분산-공분산 행렬이 동일
대립가설 : 모집단의 분산-공분산 행렬이 동일 X
등분산검정을 위한 패키지 : biotools
install.packages("biotools")
library(biotools)
boxM(iris[1:4], iris$Species)
[출력 결과]
Box's M-test for Homogeneity of Covariance Matrices
data: iris[1:4]
Chi-Sq (approx.) = 140.94, df = 20, p-value < 2.2e-16
p-value~0
=> 귀무가설(등분산 가정)이 기각 -> QDA 실시!
- QDA 함수 : qda(종속변수~독립변수, data=학습 데이터 이름, prior=사전 확률)
iris.qda <- qda(Species ~ ., data=train, prior=c(1/3,1/3,1/3))
iris.qda
[출력 결과]
Call:
qda(Species ~ ., data = train, prior = c(1/3, 1/3, 1/3))
경우에 따라 다르게 줄 수 있음
Prior probabilities of groups:
setosa versicolor virginica
0.3333333 0.3333333 0.3333333
Group means:
Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa 5.047059 3.450000 1.482353 0.2617647
versicolor 5.900000 2.748571 4.240000 1.3085714
virginica 6.500000 2.900000 5.412903 2.0096774
독립변수에 대한 그룹별 평균값
- 검증 데이터에 QDA 결과를 적용하여 범주 추정
testpredq <- predict(iris.qda, test)
testpredq
[출력결과]
추정 범주
세 개 범주의 사후 확률(posterior probability)을 구한 후 max값의 범주로 할당
- 정확도 산정 : 오분류율 (검증데이터)
CrossTable(x=testLabels,y=testpredq$class, prop.chisq=FALSE)
[출력 결과]
- 정확도 : 49/50 -> 98%
- verisicolor를 virginica로 잘못 예측
- 오분류율 : 1/50 -> 2%
6) LDA vs QDA (Partition Plot)
- Partition Plot : partimat()
install.packages("klaR")
library(klaR)
partimat(as.factor(iris$Species) ~ ., data=iris, method="lda")
partimat(as.factor(iris$Species) ~ ., data=iris, method="qda")
전체 데이터 사용시 QDA가 오분류률 적음(petal length와 petal width)
'공부 > R & Python' 카테고리의 다른 글
11-2. 서포트벡터머신 2 (Support Vector Machine) (0) | 2020.03.04 |
---|---|
11-1. 서포트벡터머신 1 (Sipport Vector MAchine) (0) | 2020.03.04 |
10-3. 판별분석(Discriminant Analysis) 1 -선형판별분석- (0) | 2020.03.03 |
10-2. k-인접기법(k-Nearest Neighbor) 2(최적 k 탐색과 가중치 k-인접기법) (0) | 2020.02.26 |
10-1. k-인접기법과 판별분석-k-인접기법(k-Nearest Neighbor) (0) | 2020.02.26 |