Thuật toán SVM (Support Vector Machine) là một thuật toán học máy giám sát được sử dụng rộng rãi trong các bài toán phân loại và hồi quy. Thuật toán này được phát triển bởi Vladimir N. Vapnik và đồng nghiệp vào những năm 1990.

Bản chất của SVM là tìm một đường phân chia (hyperplane) trong không gian đặc trưng (feature space) để phân tách các điểm dữ liệu thuộc các lớp khác nhau sao cho khoảng cách từ các điểm dữ liệu gần nhất tới đường phân chia là lớn nhất (được gọi là margin).

Thuật toán SVM có thể giải quyết bài toán phân loại tuyến tính và phi tuyến tính bằng cách sử dụng một hàm kernel để ánh xạ dữ liệu vào không gian cao chiều (high-dimensional space) và tìm đường phân chia tuyến tính trong không gian mới này.

Cách thức hoạt động của thuật toán SVM có các bước sau:Chuẩn bị dữ liệu và phân chia dữ liệu thành tập huấn luyện và tập kiểm tra.
Xây dựng một hàm mục tiêu (objective function) để tối đa hóa margin và đồng thời giảm thiểu sai số phân loại (classification error).
Sử dụng các phương pháp tối ưu hóa (optimization methods) để tìm giá trị tối ưu của hàm mục tiêu.
Tìm đường phân chia tối ưu trong không gian đặc trưng hoặc không gian cao chiều (nếu sử dụng kernel).

Thuật toán SVM được coi là một trong những thuật toán học máy mạnh nhất và có khả năng xử lý các dữ liệu lớn, phức tạp và có nhiễu. Tuy nhiên, để sử dụng thuật toán này hiệu quả, cần phải chọn các tham số phù hợp và xử lý dữ liệu đầu vào một cách cẩn thận.


Các hàm kernel được sử dụng trong thuật toán SVM đóng vai trò quan trọng trong việc ánh xạ các điểm dữ liệu từ không gian đặc trưng ban đầu vào không gian cao chiều để tìm được đường phân chia tối ưu. Dưới đây là một số hàm kernel phổ biến trong thuật toán SVM:

  • Linear kernel: Hàm kernel tuyến tính được sử dụng để phân loại dữ liệu tuyến tính.
  • Polynomial kernel: Hàm kernel đa thức được sử dụng để phân loại dữ liệu phi tuyến tính. Hàm kernel này ánh xạ các điểm dữ liệu vào các không gian có số chiều lớn hơn để tìm đường phân chia.
  • Radial basis function (RBF) kernel: Hàm kernel RBF là một trong những hàm kernel phổ biến nhất trong thuật toán SVM. Hàm kernel này ánh xạ các điểm dữ liệu vào không gian có số chiều vô hạn để tìm đường phân chia phi tuyến tính.
  • Sigmoid kernel: Hàm kernel sigmoid được sử dụng để phân loại dữ liệu phi tuyến tính. Hàm kernel này tương tự như hàm sigmoid trong mạng neuron nhân tạo.
    Các hàm kernel khác như Laplacian kernel, chi-squared kernel, histogram intersection kernel cũng được sử dụng trong thuật toán SVM. Tuy nhiên, việc lựa chọn hàm kernel phù hợp với bài toán cụ thể là rất quan trọng để đạt được hiệu suất cao nhất của thuật toán.

Đây là một ví dụ về cách triển khai thuật toán SVM bằng MATLAB sử dụng hàm "fitcsvm" của MATLAB:

% Chuẩn bị dữ liệu huấn luyện và kiểm tra
load fisheriris
X = meas(:,3:4);
Y = species;
rng(1); % Để đảm bảo kết quả có thể tái lập được, ta sẽ sử dụng seed cho hàm ngẫu nhiên
cv = cvpartition(Y,'Holdout',0.3); % Phân chia dữ liệu thành tập huấn luyện và tập kiểm tra
XTrain = X(cv.training,:);
YTrain = Y(cv.training,:);
XTest = X(cv.test,:);
YTest = Y(cv.test,:);
% Xây dựng mô hình SVM
SVMModel = fitcsvm(XTrain,YTrain,'KernelFunction','rbf','BoxConstraint',1);
% Dự đoán kết quả trên tập kiểm tra
YTestPredicted = predict(SVMModel,XTest);
% Đánh giá hiệu suất của mô hình
ConfusionMatrix = confusionmat(YTest,YTestPredicted);
Accuracy = sum(diag(ConfusionMatrix))/sum(ConfusionMatrix(:));
Precision = diag(ConfusionMatrix)./sum(ConfusionMatrix,2);
Recall = diag(ConfusionMatrix)./sum(ConfusionMatrix,1)';
F1Score = 2*(Precision.*Recall)./(Precision+Recall);
% Hiển thị kết quả
disp("Confusion Matrix:");
disp(ConfusionMatrix);
disp("Accuracy:");
disp(Accuracy);
disp("Precision:");
disp(Precision);
disp("Recall:");
disp(Recall);
disp("F1 Score:");
disp(F1Score);

Trong ví dụ này, ta sử dụng tập dữ liệu iris để huấn luyện một mô hình SVM để phân loại loài hoa dựa trên độ dài và độ rộng của cánh hoa. Ta sử dụng hàm "fitcsvm" để xây dựng mô hình SVM với hàm kernel RBF và tham số BoxConstraint là 1. Sau đó, ta sử dụng hàm "predict" để dự đoán kết quả trên tập kiểm tra và tính toán các độ đo hiệu suất như confusion matrix, accuracy, precision, recall và F1 score.

0 nhận xét:

Cài đặt Matlab 2018

Cảm nhận Học viên

Matlabthayhai. Powered by Blogger.

Sản phẩm sinh viên