안녕하세요
오늘은 R로 머신러닝하기 마지막 알고리즘, SVM에 대해 알아보겠습니다.
서포트 벡터 머신(SVM)이란,
매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델입니다!
SVM 알고리즘 아이디어는 다음과 같습니다.
다차원 공간을 초평면이라고 하는 경계를 사용하여 데이터를 양쪽에 유사한 클래스 값들의 그룹으로 분할합니다.
[ 용어 설명 ]
경계에 가장 가까운 값들을 support vectors라고 합니다.
예를 들어 위의 이차원 그래프에서의 초평면은 직선(w*x - b = 0)입니다.
여기서 아래의 검정색 원과 흰색 원을 분할하는 직선은 하나이상 존재합니다.
그렇다면 알고리즘은 어떻게 선택해야 할까요?
답은 두 클래스 사이를 가장 멀리 분리하는 최대 마진 초평면(MMH, Maximum Margin Hyperplane)을 찾는 것입니다.
R로 알아보는 SVM 알고리즘
# 1. 데이터 로드
# 데이터출처: "R을 활용한 머신러닝-브레트 란츠"
letters <- read.csv("letterdata.csv")
str(letters) # 2. 훈련 데이터와 테스터 데이터 구분 letters_train <- letters[1:16000, ] letters_test <- letters[16001:20000, ] # 3. 데이터로 모델 훈련 ---- # 단순 선형 SVM을 훈련으로 시작 # install.packages("kernlab") library(kernlab) # knn와 svm과 섞임 # vanilladot letter_classifier <- ksvm(letter ~ ., data = letters_train, kernel = "vanilladot") # 4. 모델에 대한 기본 정보 확인
# C 하이퍼 파라미터를 사용하여 MMH과 support vectors의 폭을 조절할 수 있습니다. # SV type: C-svc (classification)
# parameter : cost C = 1 letter_classifier # 5..모델 성능 평가 ---- # 테스트 데이터셋에 대한 예측 letter_predictions <- predict(letter_classifier, letters_test) head(letter_predictions) table(letter_predictions, letters_test$letter) # 6. 일치/불일치 예측을 표시하는 TRUE/FALSE 벡터 생성 agreement <- letter_predictions == letters_test$letter table(agreement) prop.table(table(agreement))
오늘은 여기까지~
보다 자세한 부분은 python에서 알아보겠습니다~
'R로 머신러닝하기' 카테고리의 다른 글
Python으로 머신러닝하기 | 정확도, 정밀도, 재현율, F-score(F-measure)란? (0) | 2018.11.12 |
---|---|
R로 머신러닝 비지도학습하기 | K-means 알고리즘 (0) | 2018.07.09 |
R로 머신러닝 비지도학습하기 | 연관규칙 (Apriori 알고리즘) (0) | 2018.06.22 |
R로 머신러닝 지도학습하기 | 회귀분석(Regression)_다중회귀분석 (0) | 2018.06.20 |
R로 머신러닝 지도학습하기 | 결정트리 (Decision Tree) (2) | 2018.06.11 |