나이브 베이즈 (Naive Bayes) : 어떠한 환경/상황에서 특정 사건(2가지 이상의 결과)에 대한 분류 정리(조건부 확률 개념과 유사 P(A|B) : 특정 환경 B에서 어떤 사건 A가 일어날 확률)
간단하고, 빠르지만, 모든 조건에 대해 동등한 가중치를 부여하기 때문에 복잡한 환경, 조건에 대해서는 정확도가 낮아진다.
나이브 베이즈는 '정답'이 존재하는 데이터에 대해 패턴을 학습시키는 지도학습의 일종으로, 두가지 종류의 데이터(학습용, 시험용)로 나누어 예제를 실습한다.
학습용 : https://github.com/datawithnosense/R/blob/main/01.Practice_Dataset/ch6-2_train.csv
시험용 : https://github.com/datawithnosense/R/blob/main/01.Practice_Dataset/ch6-2_test.csv
실습 순서
Step 1 . 나이브 베이즈를 통한 학습 모델 생성
Step 2. 학습 모델을 통한 시험 데이터의 값 예측
Step 3. 정오분류표를 통한 실제 성능 확인
Step 1. 나이브 베이즈를 통한 학습 모델 생성
nb_train <- read.csv("ch6-2_train.csv", header = TRUE) 훈련용 데이터 행 수 : 240
nb_test <- read.csv("ch6-2_test.csv", header = TRUE) 시험용 데이터 행 수 : 60
※ 일반적인 지도학습 모델은 훈련-검증-테스트의 데이터 셋으로 80:10:10 또는 70:15:15 비율로 진행되나, 훈련-테스트, 80:20, 70:30 의 비율로 분할하여 사용되는 경우도 존재한다.
library(e1071)
나이브 베이즈 분류 함수의 라이브러리는 e1071 이다.
naiveBayes(Y ~ X1[,X2,X3....], data = 데이터 셋)
-> 해당 데이터 셋에 대해 사건Y의 결과들에 대해 X(1,2,3,...)들의 패턴을 학습
model_nb <- naiveBayes(breeds~., data = nb_train) .(마침표)는 모든 행을 뜻함
Step 2. 학습 모델을 통한 시험 데이터의 값 예측
예측 함수 : 예측 모델을 기반으로 해당 데이터 셋의 예측 값을 반환(모델에 사용된 데이터 셋의 열이 꼭 있어야 함)
predicr(모델, newdata = 데이터 셋, type = 타입)
nb_test$pred <- predict(model_nb, newdata = nb_test, type="class") 시험용 데이터 셋에 나이브 베이즈 모델을 통한 예측 값을 삽입(pred 열을 새로 생성)
Step 3. 정오분류표를 통한 실제 성능 확인
library(caret) 정오분류표 생성 함수 라이브러리
confusionMatrix(nb_test$pred ,nb_test$breeds) 생성된 예측 값과 정답 값의 비교
※confusionMatrix(열A, 열B) 열 B를 실제 값, 열 A를 예측 값으로 하여 해당 값에 대해 '평가'
댓글
댓글 쓰기