본문 바로가기
SEMINAR/데이터마이닝

데이터마이닝 R - Naive bayes classification 실습

by 스꼬맹이브로 2020. 5. 18.
728x90
반응형
SMALL

1. spam data를 이용하여 분류 모델을 만들고 결과 해석(비복원추출방법 사용)

 spam의 data를 사용하려면 library "kernlab" 을 install 해줘야한다. (명심!)

spam 의 dataset

spam dataset은 총 4601개의 이메일에서 등장하는 단어의 종류와 관련된 58개의 변수로 구성이 되어있다

여기서 마지막 type은 스팸인지 아닌지를 구별하는 변수로 이 변수를 통하여 분류 모델을 구성할 것이다.

 

library "klaR"을 사용하기 위해 먼저 install 해주고, 비복원추출로 분석하며

데이터의 70%를 train data로, 나머지를 test data로 사용한다.

4601개의 데이터이기 때문에 3220개의 데이터를 train 데이터로 지정해주었다.

model1이라는 변수에 학습된 Naïve Bayes Model 정보가 저장되어 있다.

이를 이용해 test setx인자를 넣어 어떻게 예측하는지 확인한다.

확인하는 방법은 다음과 같이 predict함수를 이용하여 test data를 넣는다.

 

여기서 에러가 아닌 warning 이므로 넘어간다...!

각 변수들의 PLOT

nonspam은 빨간색 선으로 나타나며 spam은 파란색 선으로 나타난다.

이 둘의 경계가 잘 보이면 보일수록 스팸으로 분류하기 쉬운 단어라고 해석할 수 있다.

 

결과 해석

confusionMatrix() 함수를 통하여 결과를 해석한다.

다음 행렬의 대각원소가 모델에 의해 정분류된 case이다. 이외에는 오분류라고 판단한다.

해석을 해보면 총 385(357+28)의 데이터가 오분류 되었다고 할 수 있으며,

정확도는 약 72%로 성능이 아주 좋다고 할 수는 없다.

또한 민감도는 약 57%로 나왔으며 특이도는 약 95%로 나왔다.

이는 57%로 스팸메일을 찾아낸다는 의미이며, 95%로 스팸이 아닌 메일을 찾아낸다는 의미이다.

 

2. iris data를 이용하여 분류 모델을 만들고 결과 해석(복원추출방법 사용)

iris data set

위와 같이 "klaR" library를 사용하였으며, iris의 데이터는 150개이기 때문에

100개의 데이터를 학습데이터로 복원추출 후 나머지를 테스트 데이터로 사용한다.

model1이라는 변수에 학습된 Naïve Bayes Model 정보가 저장되어 있다.

이를 이용해 test setx인자를 넣어 어떻게 예측하는지 확인한다.

확인하는 방법은 다음과 같이 predict함수를 이용하여 test data를 넣는다.

Naïve Bayes Model을 통해 예측된 class이다.

여기서 행은 실제 iris Species데이터로 Naïve Bayes로부터 예측된 분류이다.

행렬의 대각원소가 모델에 의해 정분류된 케이스이며, 이외에는 오분류 되었다고 판단한다.

그러므로 해석을 해보면 23열과 32열의 총 4개를 제외하고 모두 정분류됨을 확인할 수 있다.

다음의 정분류율과 오분류율을 보면 학습된 Naïve Bayes 모델의 정분류율은 95%이며

오분류율은 반대로 5%임을 확인할 있다.

한눈에 알아볼 있도록 정오분류표를 간단하게 그래프로 나타내면 다음과 같다.

728x90
반응형
LIST