서포트 벡터 머신 학습
SVM 모델을 위한 패키지에는 e1071, kernlab 등이 있다. e1071은 효율적인 SVM 구현체로 잘 알려진 libsvm을 R에서 사용할 수 있도록 한 패키지며, kernlab은 커널 기반의 기계 학습 알고리즘을 R에서 구현한 것으로 사용자가 C++ 코드의 수정 없이 기능을 손쉽게 확장할 수 있다. 표 10-9에 이 장에서 알아볼 kernlab, e1071 패키지의 함수들을 보였다.
kernlab::ksvm : 서포트 벡터 머신을 생성한다. |
kernlab::ksvm( x, # 모델 포뮬러 data=NULL # 포뮬러를 적용할 데이터 ) kernlab::ksvm( x, y=NULL, # 데이터 # 데이터를 정규화할지 여부. 기본값인 TRUE는 평균 0, 분산 1이 되도록 데이터를 변환한다. scaled=TRUE, # 사용할 커널. 기본값은 rbfdot으로 Radial Basis Function이다. kernel에 지정할 수 있는 # 함수의 목록은 help(kernlab::dots)에서 볼 수 있다. kernel="rbfdot", # 커널 파라미터를 리스트로 지정한다. kernel이 rbfdot인 경우 kpar를 automatic으로 # 지정하면 데이터로부터 휴리스틱으로 적절한 파라미터를 찾는다. kpar="automatic" ) 반환 값은 ksvm 객체다. |
ksvm::predict.ksvm : ksvm을 사용한 예측을 수행한다. |
ksvm::predict.ksvm( object, # ksvm 객체 newdata, # 예측을 수행할 데이터 # 예측 결과의 유형. response는 예측값, probabilities는 확률을 반환한다. type="response" ) 반환 값은 예측 결과다. |
e1071::svm : 서포트 벡터 머신을 생성한다. |
e1071::svm( formula, # 모델 포뮬러 data=NULL, # 데이터 ) e1071::svm( x, y=NULL, # 데이터 scale=TRUE, # 변수를 정규화해야 하는지 여부 # 분류, 회귀 등의 모델 중 만들 모델. y 값이 팩터인지 여부에 따라 # 분류 또는 회귀 모델이 자동으로 지정되지만 type에 모델을 지정해 특정 모델을 강제할 수 있다. type = NULL, kernel ="radial", # 커널 함수 gamma=if(is.vector(x)) 1 else 1/ncol(x), # 커널 파라미터 gamma cost=1 # 커널 파라미터 cost ) 반환 값은 svm 객체다. |
e1071::tune : 그리드 탐색(Grid Search; 인자로 주어진 모든 가능한 경우에 대해 테스트해보는 방식)을 사용한 파라미터 튜닝을 수행한다. |
e1071::tune( method, # 최적화할 함수 train.x, # 포뮬러 또는 독립 변수의 행렬을 지정 train.y, # 예측할 분류. 만약 train.x가 포뮬러면 무시 data, # 포뮬러를 적용할 데이터 ... # method에 추가로 전달할 인자 ) 반환 값은 tune 객체다. |