반응형

안녕하세요


오늘은 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에서 알아보겠습니다~

반응형

+ Recent posts