LIBSVM (version 3.1) chúng ta có thể tìm thấy tại địa chỉ: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Trong libsvm có nhiều file phục vụ cho chương trình nhận dạng, trong đó có hai file mà em sử dụng trong luận văn này là svmtrain.exe và svmpredict.exe.
Sau đây là cách sử dụng LIBSVM:
Định dạng của file dữ liệu huấn luyện và file test là:
<label> <index1>:<value1> <index2>:<value2> ... trong đó:
<label> là giá trị đích của tập huấn luyện. Đối với việc phân lớp, nó là một số nguyên xác định một lớp. Đối với hồi qui, nó là một số thực bất kỳ. <index> là một số nguyên bắt đầu từ 1.
1 2:12 3:34 5: 74 6:22 0 5:85 4:94 6: 17 3:123 ...
<value> là một số thực. Các nhãn trong file dữ liệu test chỉ được sử dụng để tính toán độ chính xác hoặc lỗi.
Ta có thể tạo một file test có tập data như sau :
File test được lưu dưới dạng text (*.txt).
Trong đó số 1 và 0 là <label>, các số 2, 3, 4,5,6 là các index, các số 12, 123, 34, 17… là các value.
Có một tập huấn luyện đơn giản đối với việc phân lớp trong gói này: heart_scale.
Gõ ‘svm-train heart_scale’ thì chương trình sẽ đọc dữ liệu huấn luyện và xuất ra file mô hình heart_scale.model. sau đó ta có thể gõ ‘svm-predict heart_scale heart_sacle.model output’ để xem tỉ lệ phân lớp trên tập huấn luyện. File output chứa giá trị dự đoán của mô hình.
Có một số chương trình ứng dụng trong Libsvm :
svm-scale: Đây là một công cụ đối với việc xác định file dữ liệu vào.
svm-toy: Đây là một giao diện đồ họa đơn giản thể hiện dữ liệu phân tách
SVM trong mặt phẳng. Ta có thể kích vào cửa sổ để vẽ các điểm dữ liệu. Sử dụng nút “change” để chọn lớp 1 hoặc 2, nút “load” để đọc dữ liệu từ một file, nút “save” để lưu dữ liệu vào file, nút “run” để thu được một mô hình SVM và nút “clear” để xóa cửa sổ. Chú ý rằng, nút “load” và “save” chỉ áp dụng cho truờng hợp phân lớp, không áp dụng cho trường hợp hồi qui.
Sử dụng svm-train:
svm-train [options] train.txt tạo ra file train.txt.model để phục vụ cho việc dự đoán. Trong đó options là các thành phần sau:
-s svm_type : kiểu của SVM (mặc định 0) 0 -- C-SVC
1 -- nu-SVC
2 -- one-class SVM 3 -- epsilon-SVR 4 -- nu-SVR
-t kernel_type : kiểu của hàm kernel(default 2) 0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree 2 -- radial basis function: exp(-gamma*|u-v|^2) 3 -- sigmoid: tanh(gamma*u'*v + coef0)
-d degree : bậc của hàm kernel (mặc định 3)
-g gamma : giá trị gamma trong hàm kernel (mặc định 1/số đặc trưng) -r coef0 : giá trị coef0 trong kernel function (mặc định 0)
-c cost : tham số C của C-SVC, epsilon-SVR, and nu-SVR (mặc định 1) -n nu : tham số nu của nu-SVC và nu-SVR (mặc định 0.5)
-p epsilon : giá trị epsilon trong hàm của epsilon-SVR (mặc định 0.1) -m cachesize : kích thước cache bộ nhớ tính theo MB (mặc định 100) -e epsilon : thiết lập tiêu chuẩn cuối chấp nhận được (mặc định 0.001) -wi weight: tham số C của lớp i tới trọng số weight*C trong C-SVC (mặc định 1)
-v n: cho phép tách ngẫu nhiên dữ liệu thành n phần và tính toán độ chính xác có hiệu lực của sự giao nhau các phần.
Giá trị k trong tùy chọn -g nghĩa là số thuộc tính trong dữ liệu đầu vào. Tùy chọn -v phân chia ngẫu nhiên dữ liệu thành n phần.
Sử dụng svm-predict:
svm-predict [options] test_file train.txt.model output_file
trong đó options là: 0 hoặc 1 (default 0);
model_file là file mô hình được sinh bởi svm-train.
test_file là file dữ liệu test mà ta muốn đánh giá.
svm-predict sẽ đưa ra kết quả chứa trong file output.txt. Mẹo sử dụng trong thực hành:
Nếu dữ liệu phân lớp không cân bằng, thử trực tiếp các tham số C khác nhau bởi –wi (xem ví dụ sau).
Ví dụ:
Huấn luyện một lớp phân loại với hàm kernel đa thức (u’v+1)^3 và C=1000.
Với các tham số:
- s=0 cho ta biết loại SVM trong trường hợp này là C-SVC - c=1000 là tham số của C-SVC.
T=1 cho ta biết hàm kernel là hàm đa thức với hàm đa thức tổng quát như sau : (gamma*u'*v + coef0)^degree.
- g=1 là gamma trong đa thức trên. - r=1 là coef0 tong đa thức trên. - d=3 cho biết bậc của đa thức là 3.
Khi đó svmtrain.exe sẽ tạo cho ta file data_file.model, sử dụng file này dùng lệnh \windows\ svm-predict test_file data_file.model output_file để dự đoán kết quả nhận dạng và tỉ lệ lỗi.