libsvm 설치 및 예제
이 포스팅은 Support vector machine(SVMs)에서 파생되었습니다. 실제로 SVMs 알고리즘이 적용된 libsvm이라는 라이브러리를 실제로 사용해 봅시다.
libsvm 다운로드
libsvm은 LIBSVM -- A Library for Support Vector Machines에서 다운로드가 가능합니다.
libsvm 사용법
piaip's Using (lib)SVM Tutorial - Using SVM부분을 참조하시기 바랍니다.
실사용 예제
이제 실제로 사용을 해봅시다.
데이터 파일 구성
4 ● ○ 3 ● ● 2 ○ 1 ● ○ ○ 0 1 2 3 4
2차원 평면을 하나 그리고 좌표를 설정해서 검은 동그라미와 하얀 동그라미 두 종류의 집합을 구성했습니다. 이제 이걸 데이터화 시킵니다. 검은색 동그라미를 0번 셋, 하얀색 동그라미를 1번 셋으로 지정하겠습니다. 아래는 완성된 데이터 파일 내용입니다.
0 0:1 1:1 0 0:1 1:3 0 0:2 1:3 0 0:2 1:4 1 0:3 1:1 1 0:4 1:1 1 0:4 1:2 1 0:4 1:4
이 파일을 test.txt라는 이름으로 저장해둡니다.
자바 프로그램
내려 받은 libsvm 압축 파일에서 java라는 이름의 서브 디렉토리를 보면 여러가지 .java 파일이 있습니다. 이중 svm_train.java를 컴파일 하고 test.txt 파일을 인자값으로 넣어봅시다.
svm_train [option] traing_set_file [model_file]
위와 같은 커맨드를 입력하라고 되어 있네요. 전 다음처럼 실행했습니다.
$ java svm_train test.txt
그러면 다음처럼 결과가 나옵니다.
optimization finished, #iter = 13 nu = 0.7322007856176246 obj = -2.9301174504464926, rho = 4.1906232038923066E-4 nSV = 8, nBSV = 1 Total nSV = 8
그리고 실행했던 위치의 디렉토리를 다시 살펴보면 test.txt.model이라는 파일이 있습니다. 이 파일을 이용해 svm_predict 프로그램을 실행시켜 봅시다. 물론, 실행 전에 컴파일 해주는 것은 잊지 말아요.
svm_predict [options] test_file model_file output_file
위와 같은 방법으로 사용하게끔 되어 있네요. 전 아래와 같은 커맨드로 실행했습니다. 물론 test_file에 넣을 파일은 기존 것 그대로 사용합니다.
$ java svm_predict test.txt test.txt.model test.txt.out
결과는 아래처럼 나왔습니다.
Accuracy = 100.0% (8/8) (classification)
그러면 이제 test.txt.out 파일을 열어봅시다.
0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0
잘 분할된 것 같네요. (당연히 테스트 파일하고 모델을 만든 파일하고 같으니까...?) 기본적인 사용법은 이정도면 될 것 같습니다.