Support vector machine (SVM) hỏi gì đáp nấy

SVM classification
SVM classification

Dùng để làm gì? Support vector machine (SVM) xây dựng (learn) một siêu phẳng (hyperplane) để phân lớp (classify) tập dữ liệu thành 2 lớp riêng biệt.

Siêu phẳng là cái gì? Một siêu phẳng là một hàm tương tự như phương trình đường thẳng, y = ax + b. Trong thực tế, nếu ta cần phân lớp tập dữ liệu chỉ gồm 2 feature, siêu phẳng lúc này chính là một đường thẳng.

Về ý tưởng thì SVM sử dụng thủ thuật để ánh xạ tập dữ liệu ban đầu vào không gian nhiều chiều hơn. Khi đã ánh xạ sang không gian nhiều chiều, SVM sẽ xem xét và chọn ra siêu phẳng phù hợp nhất để phân lớp tập dữ liệu đó.

Có ví dụ đơn giản nào không? Ta lấy ví dụ đơn giản về phân chia tập các quả bóng xanh và đỏ đặt trên một cái bàn. Nếu các quả bóng phân bố không quá đan xen vào nhau, ta có thể dùng một cây que dài để chia các quả bóng thành hai tập xanh và đỏ mà không động đến các quả bóng.

Lúc này, khi đưa một quả bóng mới đặt lên mặt bàn, bằng cách xác định nó nằm bên phía nào của cây que, ta có thể dự đoán màu sắc của quả bóng đó.

Vậy các quả bóng, cái bàn và cây que tượng trưng cho cái gì? Các quả bóng tượng trưng cho các điểm dữ liệu, màu xanh và đỏ tượng trưng cho 2 lớp. Cái bàn tượng trưng cho một mặt phẳng. Cây que tượng trưng cho một siêu phẳng đơn giản đó là một đường thẳng.

Điểm hấp dẫn ở đây đó là SVM có thể hình dung ra được đâu là siêu phẳng phù hợp nhất.

Đối với trường hợp phức tạp hơn thì sao? Thật ra dữ liệu ngoài thực tế rất phức tạp. Nếu các quả bóng xen lẫn vào nhau thì một cây que khó có thể phân lớp được.

Ta sử dụng thủ thuật: nhấc bổng cái bàn lên, nhanh chóng hất các quả bóng lên trời. Trong khi các quả bóng đang lơ lửng và nằm ở các vị trí thích hợp, ta dùng một mảnh giấy lớn để phân lớp các quả bóng đang lơ lửng này.

Nghe có vẻ gian dối? Không đâu, việc hất các quả bóng lên trời tương đương với việc ánh xạ tập dữ liệu ban đầu vào không gian nhiều chiều hơn. Trong trường hợp này, ta đi từ không gian 2 chiều đó là cái bàn vào không gian 3 chiều đó các quả bóng đang lơ lửng trên trời.

Làm sao SVM thực hiện được điều này? Bằng cách sử dụng một kernel, ta có thể đơn giản nâng dữ liệu ban đầu vào không gian nhiều chiều hơn. Mảnh giấy lớn lúc này cũng được gọi là một siêu phẳng, chỉ có điều đây là phương trình mặt phẳng chứ không phải phương trình đường thẳng.

Clip bên dưới sẽ minh họa cho thao tác trên của SVM

Việc ánh xạ này trong thực tế được thực hiện như thế nào? Quả bóng nằm trên mặt bàn có một vị trí cụ thể, ta dùng trục tọa độ để xác định vị trí này. Ví dụ, quả bóng nằm cách mép trái 20cm và cách mép dưới 50cm được thể hiện trên trục tọa độ (x, y) tương ứng là (20, 50). x và y chính là không gian hai chiều của quả bóng. Khi đưa lên chiều thứ 3 là z(x, y), ta có thể tính được tọa độ của z trong không gian 3 chiều dựa vào tọa độ x,y ban đầu.

Margin SVM
Margin SVM

Thuật ngữ margin trong SVM có nghĩa là gì? Margin là khoảng cách giữa siêu phẳng đến 2 điểm dữ liệu gần nhất tương ứng với các phân lớp. Trong ví dụ quả bóng và cái bàn, đó là khoảng cách giữa cây que và hai quả bóng xanh và đỏ gần nó nhất.

Điểm mấu chốt ở đây đó là SVM cố gắng maximize margin này, từ đó thu được một siêu phẳng tạo khoảng cách xa nhất so với 2 quả bóng xanh và đỏ. 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ên gọi SVM xuất phát từ đâu? Trong ví dụ cái bàn và quả bóng, siêu phẳng cách đều với bóng xanh và bóng đỏ. Các quả bóng này chính là các điểm dữ liệu gọi là support vectors, vì chúng hỗ trợ (support) để dựng lên siêu phẳng.

Tại sao sử dụng SVM? SVM cho độ chính xác cao đối với tập dữ liệu có kiểu dữ liệu liên tục (continuous value), cùng với thuật toán cây quyết định là hai phương pháp thường được dùng để phân lớp dữ liệu. Tuy nhiên, không có mô hình phân lớp (classifier) nào là tốt nhất theo No Free Lunch Theorem. Thêm vào đó, việc lựa chọn kernel và diễn giải cho người dùng hiểu là một điểm trừ của SVM.

Có thư viện nào cho SVM? Hiện tại có rất nhiều thư viện cài đặt SVM. Một vài thư viện phổ biến như scikit-learn, MATLAB và dĩ nhiên là libsvm.

Nguồn: http://www.kdnuggets.com/2015/05/top-10-data-mining-algorithms-explained.html

Tham khảo thêm: SVM in Practice

Advertisements

21 thoughts on “Support vector machine (SVM) hỏi gì đáp nấy

  1. cho em hỏi bài toán này áp dụng với các dữ liệu liên tục ? thầy giải thích cụ thể hơn được không ạ. Em có một bài toán phân lớp mà dữ liệu đầu vào các feature có thể có mối liên hệ với nhau thì dùng giải thuật này được không ạ, em muốn dùng một giải thuật ANN, giải thuật nào của ANN thì phù hợp bài toán của em ạ.

    Like

      1. Cho em hỏi thêm chút ạ. Ví dụ em có bài toán mà đầu vào vector [12, 10000, 10 , 30, …] mà các số là các feature thể hiện một mặt của dữ liệu, mà các số đó em nghĩ là kết hợp với nhau (có mối quan hệ) để từ đó đưa ra phán đoán tốt nhất cho label ấy ạ. thì giải thuật ANN phù hợp với bài toán này ạ, em hỏi thêm nữa là các số có độc lệch về giá trị kiểu như 10, 20, 100000 thì có cần xử lý sao cho các giá trị gần khoảng lớn với nhau như chia cho bao nhiêu những giá trị feature thứ 2 chẳng hạn không anh.
        Em cảm ơn anh nhiều :))

        Like

              1. Anh ơi, cho em hỏi chút, em có đọc về sự khác biệt giữa deep learning và neural network thì deep learning là neural network with multi layer, có đúng không ạ. Một câu nữa là neural network có thể giải quyết các bài toán mà những thuật toán ML cổ điển có thể giải quyết nhưng vấn đề là tốn thời gian train, có phải không ạ.
                Em cảm ơn

                Like

                1. 1) deep learning là neural network with multi layer -> đúng một phần, phần còn lại phụ thuộc các phép biến đổi giữa các layer (CNN, RNN, LSTM, …)
                  2) neural network có thể giải quyết các bài toán mà những thuật toán ML cổ điển có thể giải quyết nhưng vấn đề là tốn thời gian train -> không đúng, lý do tuỳ bài toán và thuật toán mà thời gian train sẽ khác nhau (k-NN là một ví dụ), hơn nữa nếu NN có độ chính xác kém hơn các mô hình khác thì dĩ nhiên ta không xem NN giải quyết được vấn đề.

                  Like

                  1. cho em hỏi một chút, là những thuật toán ANN như CNN, RNN, LSTM, thì có phải là tạo ra để giải quyết những bài toán đặc trưng về xử lý ảnh hay ngôn ngữ tự nhiên không ạ, hay là nó sẽ giải quyết những bài toán tùy thuộc vào feature đầu vào.

                    Like

                    1. Do ANN là representation model, ta không cần làm feature engineering như các model khác. Và các thuật toán trên chỉ mang tính chất tham khảo để ta dựa trên đó áp dụng vào bào toán của chúng ta. Ta không bó hẹp phạm vi ứng dụng mà có thể áp dụng vào nhiều lĩnh vực khác tuỳ thuộc vào khả năng sáng tạo của nghiên cứu sinh.

                      Like

  2. Em chào anh. Hiện tại em đang thực hiện đồ án tốt nghiệp với đề tài “Nhận dạng đối tượng dựa trên bộ tham số”. Cụ thể bài toán của em như sau:
    – Một đối tượng có thể có nhiều chế độ hoạt động khác nhau.
    – Các tham số của mỗi đối tượng là cố định (khoảng 7-8 tham số)
    – Bộ dữ liệu được cung cấp có 164 đối tượng khác nhau và 302 chế độ hoạt động của các đối tượng naỳ.
    – Khi hệ thống thu nhận được một bộ tham số, ta cần nhận dạng xem bộ tham số này là thuộc loại nào trong số các đối tượng đã biết.
    Em đọc về bài viết SVM của anh, em thấy bài toán của em có thể áp dụng được multi-class, tuy nhiên, trong trường hợp số lớp cần được phân lớp là khá lớn. Anh có bổ sung hay hướng đi nào khác để em có thể tham khảo không ạ.
    Em cám ơn anh!

    Like

    1. Chào em, với bài toán multi-classification, em có thể áp dụng kỹ thuật one-vs-all (quy về bài toán binary-classification) hoặc mô hình Neural Network, Naive Bayes với đầu ra là số lớp cần phân lớp (có thể gán nhãn từ 0-k) hay áp dụng các thuật toán clustering với số k bằng số đối tượng của tập dữ liệu.

      Like

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s