SVM là gì?

SVM (Support Vector Machine) là một trong những thuật tân oán học tập trang bị ở trong nhóm Supervised Learning (học tập gồm giám sát) được thực hiện trong những bài toán thù phân lớp dữ liệu (classification) xuất xắc hồi qui (Regression).

Bạn đang xem: Support vector machine là gì

SVM là 1 thuật toán thù phân các loại nhị phân, SVM nhận dữ liệu vào với phân một số loại nó vào nhì lớp không giống nhau. Với 1 bộ những ví dụ luyện tập trực thuộc nhì thể loại mang đến trước, thuật toán luyện tập SVM xây cất 1 quy mô SVM nhằm phân các loại những ví dụ khác vào nhị thể nhiều loại đó.

Ví dụ về SVM tuyến đường tính

Có 1 không khí có tương đối nhiều điểm cùng các kí hiệu nhỏng sau:

*
yi: là các lớp (bạn dạng lề) đựng các điểm tài liệu xi, ví dụ này mang quý giá 1 cùng -1.xi: là một trong những vector thực những chiều (p chiều). Nhiệm vụ là cần phải tìm 1 khôn cùng phẳng (Optimal hyperplane) bao gồm lề lớn số 1 phân tách bóc tách các điểm tài liệu gồm thuở đầu để đào tạo và giảng dạy cùng những điểm sau này. Mỗi siêu phẳng (Optimal hyperplane) phần lớn rất có thể được viết dưới dạng 1 tập các điểm thỏa mãn nhu cầu w.x-b = 0
*
w: là một trong những vector pháp tuyến của khôn xiết phẳng (optimal hyperplane).b/||w||: xác định khoảng cách giữa nơi bắt đầu tọa độ với rất phẳng theo hướng vectơ pháp đường w.Giả sử bao gồm cho tới 3 siêu phẳng (Optimal hyperplane) là H1 (Xanh dương), H2 (Đỏ), H3 (Xanh lá). H3 vẫn bị loại bỏ thứ nhất vị thiết yếu phân các loại các điểm huấn luyện và đào tạo mang đến trước. H1 bị loại bỏ do khoảng cách tự các điểm Support Vector mang đến rất phẳng (Optimal hyperplane) không hẳn là cực lớn. H2 là siêu phẳng cần kiếm tìm. Hiện giờ những rất phẳng này được xác định: w.x - b = 1 và w.x - b = -1Các điểm tài liệu mang lại trước vị trí những cực kỳ phẳng song tuy nhiên được Điện thoại tư vấn là Support Vector.

Xem thêm: Ba Người Con Tài Giỏi Của Ca Sĩ Mỹ Linh, Tiểu Sử Diva Mỹ Linh

Tổng quan:

SVM là mô hình xây dừng 1 khôn xiết phẳng hoặc 1 tập vừa lòng những cực kỳ phẳng trong 1 không khí nhiều chiều hoặc vô hạn chiều, có thể được sử dụng đến phân loại, hồi quy, hoặc những nhiệm vụ không giống. Để phân loại cực tốt thì phải xác định hết sức phẳng (Optimal hyperplane) nằm ở càng xa các điểm tài liệu của tất cả những lớp (Hàm lề) càng giỏi, do nói phổ biến lề càng mập thì không nên số tổng quát hóa của thuật tân oán phân một số loại càng nhỏ xíu.Muốn các điểm tài liệu có thể được chia bóc tách 1 cách tuyến tính, thì bạn cần cần chọn nhị khôn xiết phẳng của lề sao cho không có điểm như thế nào ở giữa bọn chúng và khoảng cách thân chúng là về tối nhiều.Trong nhiều trường phù hợp, cần yếu phân loại các lớp dữ liệu một cách đường tính trong 1 không khí ban đầu được dùng để làm biểu lộ 1 vụ việc. Vì vậy, đôi khi bắt buộc phải ánh xạ các điểm dữ liệu trong không gian ban đầu vào 1 không gian mới nhiều chiều rộng, để Việc phân bóc tách chúng trlàm việc đề nghị dễ ợt hơn trong không gian new. 

Với các điểm tổng quan tiền sống bên trên thì trách nhiệm đó là phân một số loại những thống kê.

Thuật toán thù được cho trước một số điểm dữ liệu cùng với nhãn của bọn chúng nằm trong các lớp mang đến trước (Huấn luyện).Mục tiêu của thuật toán là xác định xem 1 điểm dữ liệu mới sẽ tiến hành trực thuộc về lớp làm sao (Phân loại).

SVM trong OpenCV

Source code

#include #include #include "opencv2/imgcodecs.hpp"#include #include using namespace cv;using namespace cv::ml;int main(int, char**)int width = 512, height = 512;Mat image = Mat::zeros(height, width, CV_8UC3);int labels<4> = 1, 1, 1, -1 ;Mat labelsMat(4, 1, CV_32SC1, labels);float trainingData<4><2> = 501, 10 , 255, 10 , 501, 255 , 10, 501 ;Mat trainingDataMat(4, 2, CV_32FC1, trainingData);Ptr svm = ml::SVM::create();svm->setType(ml::SVM::C_SVC);svm->setKernel(ml::SVM::LINEAR);svm->setTermCriteria(cv::TermCriteria(CV_TERMCRIT_ITER, 100, 1e-6));svm->train(trainingDataMat, ml::ROW_SAMPLE, labelsMat);Vec3b green(0, 255, 0), blue(255, 0, 0);for (int i = 0; i (1, 2) predict(sampleMat);if (response == 1)image.at(i, j) = green;else if (response == -1)image.at(i, j) = blue;int thickness = -1;int lineType = 8;circle(image, Point(501, 10), 5, Scalar(0, 0, 0), thickness, lineType); // blackcircle(image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType); // whitecircle(image, Point(501, 255), 5, Scalar(0, 0, 255), thickness, lineType); // redcircle(image, Point(10, 501), 5, Scalar(0, 255, 0), thickness, lineType); // greenimshow("SVM Simple Example", image); waitKey(0);}

Phân tích

Thiết lập tài liệu huấn luyệnfloat labels<4> = 1.0, -1.0, -1.0, -1.0;float trainingData<4><2> = 501, 10, 255, 10, 501, 255, 10, 501;

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *