Tôi đang cố gắng viết một triển khai SVM đầy đủ bằng Python và tôi có một vài vấn đề khi tính toán các hệ số Lagrange.
Trước tiên, hãy để tôi viết lại những gì tôi hiểu từ thuật toán để đảm bảo rằng tôi đang đi đúng hướng.
Nếu là một tập dữ liệu và là nhãn lớp của , sau đó
Vì vậy, chúng ta chỉ cần giải quyết một vấn đề tối ưu hóa để
tuân theo
Xét về các hệ số Lagrange, điều này chuyển thành tìm , và và thu nhỏ:b α = ( α 1 , α 2 , . . . α n ) ≠ 0 ≥ 0 L ( α , w , b ) = 1
Bây giờ vì và chúng ta có thể viết lại thành L (\ alpha, w, b) = Q (\ alpha) = \ sum \ alpha_i - \ frac12 \ sum \ sum \ alpha_i \ alpha_j y_i y_j x_i ^ T x_j với các ràng buộc \ alpha_i \ geq 0 \ \ văn bản {và} \ \ sum \ alpha_i y_i = 0∂ L
Vì vậy, tôi đang cố gắng giải quyết vấn đề tối ưu hóa bằng Python và gói miễn phí duy nhất tôi có thể tìm thấy được gọi là cvxopt .
Tôi muốn một số trợ giúp để giải quyết vấn đề này, tôi không thể tìm thấy bất kỳ ví dụ hay nào về điều này, và trong khi tôi hiểu lý thuyết, tôi gặp khó khăn khi dịch nó thành mã (tôi sẽ mong đợi điều ngược lại vì tôi nhiều hơn từ một nền tảng lập trình).
Lưu ý rằng tại một số điểm tôi sẽ muốn giải quyết bằng Kernels nhưng tôi không chắc ý nghĩa của việc giải quyết vấn đề này trong mã là gì.
Bất kỳ trợ giúp sẽ được đánh giá rất cao, tôi thực sự không biết làm thế nào để thực hiện điều này trong Python. Nếu bạn có một mô-đun tốt hơn để giải quyết vấn đề tối ưu hóa, tôi cũng muốn đọc về nó.