Machine Learning
서포트 벡터 머신(Support Vector Machine)
R쟁이
2019. 9. 25. 22:24
Support Vector Machine에 대해 공부해보려고 한다.
SVM(Support Vector Machine)이란 데이터 상에 있는 각점들의 거리를 분석해 가장 먼 거리에
있는 점들을 기준으로 support vector를 형성하여 두개의 support vector 중간에 초평면을 만들
어 분류를 하는 방법이다. 쉽게말하면 두점 사이의 거리가 최대가 되는 지점을 찾는 것이다.
다음의 그림을 참고해보자.
그럼이제 SVM모델을 통한 iris데이터를 분류해보자.
## 필요한 패키지
library(kernlab) # SVM
library(caret) # Confusion Matrix
## training/test data set
# data set
df <- iris
# train/test sampling
training_sampling <- sort(sample(1:nrow(df), nrow(df) * 0.7 ))
test_sampling <- setdiff(1:nrow(df),training_sampling)
# traning_set, test_set
training_set <- df[training_sampling,]
test_set <- df[test_sampling,]
## SVM model 생성
# ksvm
svm_m <- ksvm(Species ~. , data = training_set)
## SVM model을 test_set에 적용
# predict
svm_p <- predict(svm_m, newdata = test_set)
##Confusion Matrix로 데이터 확인
# confusionMatrix
confusionMatrix(svm_p, test_set$Species)