Hỏi đáp

Giới thiệu về Support Vector Machine (SVM)

SVM chính là một thuật toán giám sát, nó có thể sử dụng cho cả việc phân các loại hoặc đệ quy. Tuy nhiên nó đã được sử dụng chủ yếu cho việc phân loại. Trong thuật toán này, mọi người vẽ đồi thị dữ liệu chính là các điểm trong n chiều ( ở đây n là số lượng các tính năng bạn có) với giá trị của mỗi tính năng sẽ là một phần liên kết. Sau đó mọi người làm tìm “đường bay” (hyper-plane) phân chia các lớp. Hyper-plane nó chỉ hiểu đơn giản là 1 đường thẳng có thể phân chia các lớp ra thành hai phần riêng biệt.

Support Vectors hiểu một cách đơn giản là các đối tượng trên đồ thị tọa độ quan sát, Support Vector Machine là một biên giới để chia hai lớp tốt nhất.

Bạn đang xem: Svm là gì

Ở trên, mọi người đã thấy được việc chia hyper-plane. Bấy giờ làm thế nào chúng ta có thể xác định “Làm sao để vẽ-xác định đúng hyper-plane”. Chúng ta cũng sẽ theo các tiêu chí sau:

Bạn đang đọc: Giới thiệu về Support Vector Machine (SVM)

Identify the right hyper-plane (Scenario-1):

Ở đây, có 3 đường hyper-lane (A,B and C). Bây giờ đường nào chính là hyper-lane đúng cho nhóm ngôi sao và hình tròn.

Quy tắc số một để chọn 1 hyper-lane, chọn một hyper-plane để phân chia hai lớp tốt nhất. Trong thí dụ này chính là đường B.

Identify the right hyper-plane (Scenario-2):

Tìm hiểu thêm: Share Capital

Ở đây chúng ta cũng có 3 đường hyper-plane (A,B và C), theo quy tắc số 1, chúng đều thỏa mãn.

Xem thêm: Hà Nàm Là Gì – Kinh Hãi Món Hà Nàm Rắn

Quy tắc thứ hai chính là xác định khoảng cách lớn số 1 đến từ điểu gần số 1 của một lớp nào đó đến đường hyper-plane. Khoảng cách này được gọi chính là “Margin”, Hãy nhìn hình bên dưới, trong đấy có thể nhìn thấy khoảng cách margin lớn số 1 đấy là đường C. Cần nhớ nếu chọn lầm hyper-lane có margin thấp hơn thì sau này khi dữ liệu tăng lên thì sẽ sinh ra nguy cơ cao về việc xác định nhầm lớp cho dữ liệu.

Identify the right hyper-plane (Scenario-3):

Sử dụng các nguyên tắc đã nêu trên để chọn ra hyper-plane cho trường hợp sau:

Có thể có một vài người cũng sẽ chọn đường B bởi vì nó có margin cao hơn đường A, nhưng đấy sẽ không đúng bởi vì nguyên tắc đầu tiên sẽ là nguyên tắc số 1, mọi người cần chọn hyper-plane để phân chia các lớp thành riêng biệt. Vì vậy đường A mới là chọn lựa chính xác.

Can we classify two classes (Scenario-4)?

Tiếp the hãy xem hình bên dưới, chưa thể chia thành hai lớp riêng biệt với 1 đường thẳng, để tạo 1 phần chỉ có các ngôi sao và một vùng chỉ chứa các điểm tròn.

Ở đây cũng sẽ chấp nhận, một ngôi sao ở bên ngoài cuối được xem như một ngôi sao phía ngoài hơn, SVM có tính năng cho phép bỏ qua các ngoại lệ , và tìm ra hyper-plane có biên giới tối đa . Do đó có thể nói, SVM có khả năng mạnh trong việc chấp nhận ngoại lệ.

Find the hyper-plane to segregate to classes (Scenario-5)

Trong trường hợp dưới đây, không thể tìm ra 1 đường hyper-plane tương đối để chia các lớp, vậy làm thế nào để SVM phân tách dữ liệu thành hai lớp riêng biệt? Cho đến bây giờ mọi người chỉ nhìn vào các đường tuyến tính hyper-plane.

SVM có thể giải quyết vấn đề này, Khá đơn giản, nó sẽ được giải quyết bằng việc thêm một tính năng, Ở đây mọi người cũng sẽ thêm tính năng z = x^2+ y^2. Bây giờ dữ liệu sẽ được biến đổi theo trục x , z như sau

Xem thêm: Marketing Online là gì vậy? Chiến Lược Marketing Online Phù Hợp

Trong sơ đồ trên, các điểm cần xem xét là: • Tất cả dữ liệu trên trục z cũng sẽ chính là số dương vì nó là tổng bình phương x , y • Trên biểu đồ các điểm tròn đỏ xuất hiện gần trục x , và y hơn vì thế z sẽ nhỏ hơn => nằm gần trục x hơn trong đồ thị (z,x) Trong SVM, rất nhiều dễ dàng để có một siêu phẳng tuyến tính (linear hyper-plane) để chia thành hai lớp, Nhưng một câu hỏi sẽ nảy sinh đấy là, mọi người có cần phải thêm một tính năng phân chia này chỉ bằng tay hay không. Không, bởi vì SVM có một kỹ thuật được gọi chính là kernel trick ( kỹ thuật hạt nhân), đây chính là tính năng có chưa gian đầu vào có chiều sâu thấm , biến đổi nó thành chưa gian có chiều cao hơn, tức là nó chưa phân chia các vấn đề thành các vấn đề riêng biệt, các tính năng này được gọi chính là kernel. Nói một cách đơn giản nó thực hiện một vài biết đổi dữ liệu phức tạp, sau đó tìm ra quy trình tách dữ liệu dựa trên các nhãn hoặc đầu ra mà chúng ra đã xác định trước.

Margin chính là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần số 1 tương ứng với các phân lớp. Trong thí dụ quả táo quả lê đặt trên mặt bán, margin chính là khoảng cách giữa cây que , hai quả táo , và lê gần nó nhất. Điều quan trọng ở đây đó chính là phương pháp SVM luôn cố gắng cực đại hóa margin này, đến từ đó thu đã được một siêu phẳng tạo khoảng cách xa số 1 so với 2 quả táo , lê. Nhờ vậy, SVM có thể giảm thiểu việc phân lớp sai (misclassification) đối với điểm dữ liệu mới đưa vào

Tìm nghiệm cho SVM ta sử dụng trực tiếp thư viện sklearn.

Chúng ta sẽ sử dụng hàm*** sentayho.com.vn*** ở đây. các bài toán thực tế thường sử dụng thư viện libsvm được viết trên ngôn ngữ C, có API cho Python và Matlab.

from sentayho.com.vn import SVC model = SVC(kernel=’linear’, probability=True) sentayho.com.vn(emb_array, labels) #Do somethings…. w = sentayho.com.vn_ b = sentayho.com.vnrcept print(‘w = ‘, w) print(‘b = ‘, b)

Là một kĩ thuật phân lớp khá phổ biến, SVM thể hiện đã được nhiều ưu điểm trong số đó có việc tính toán hiệu quả trên các tập dữ liệu lớn. Có thể kể thêm một vài Ưu điểm của phương pháp này như:

Xử lý trên không gian số chiều cao: SVM là một công cụ tính toán tốt nhất trong không gian chiều cao, trong đó đặc biệt áp dụng cho các bài toán phân loại văn bản , và phân tích quan điểm nơi chiều có thể cực kỳ lớn.Tiết kiệm bộ nhớ: Do chỉ có một tập hợp con của các điểm đã được sử dụng trong quá trình huấn luyện và ra quyết định thực tế cho các điểm dữ liệu mới nên chỉ có các điểm cần thiết mới đã được lưu trữ trong bộ nhớ khi ra quyết định.Tính linh hoạt – phân lớp thường là phi tuyến tính. Khả năng áp dụng Kernel mới cho phép linh động giữa các phương pháp tuyến tính và phi tuyến tính từ đó khiến cho hiệu suất phân loại lớn hơn.

Nhược điểm:

Bài toán số chiều cao: Trong trường hợp số lượng thuộc tính (p) của tập dữ liệu lớn hơn rất nhiều so với số lượng dữ liệu (n) thì SVM cho kết quả khá tồi.Chưa thể hiện rõ tính xác suất: Việc phân lớp của SVM chỉ chính là việc cố gắng tách các đối tượng vào hai lớp đã được phân tách bởi siêu phẳng SVM. Điều này không giải thích đã được xác suất xuất hiện của một thành viên trong một nhóm chính là như thế nào. Tuy vậy hiệu quả của việc phân lớp có thể đã được xác định dựa vào khái niệm margin đến từ điểm dữ liệu mới đến siêu phẳng phân lớp mà mọi người đã bàn luận ở trên.

Kết luận: SVM là một phương pháp tốt nhất cho bài toán phân lớp dữ liệu. Nó là một dụng cụ đắc lực cho các bài toán về xử lý ảnh, phân các loại văn bản, phân tích quan điểm. Một yếu tố làm nên hiệu quả của SVM đó chính là việc sử dụng Kernel function khiến cho các phương pháp chuyển không gian trở nên linh hoạt hơn.

Tham khảo thêm: Chironomid: Trùng huyết hay là ruồi nhuế

https://machinelearningcoban.com/2017/04/09/smv/https://en.wikipedia.org/wiki/Support_vector_machinehttps://medium.com/machine-learning-101/chapter-2-svm-support-vector-machine-theory-f0812effc72

Bạn thấy bài viết thế nào?

Tìm hiểu thêm: Cừu đen là gì vậy? Chi tiết về Cừu đen mới nhất 2021