Cho một tập hợp các điểm trong không gian hai chiều, làm thế nào một thiết kế có thể quyết định chức năng cho SVM?


10

Ai đó có thể giải thích cho tôi cách người ta thiết kế một chức năng quyết định SVM không? Hoặc chỉ cho tôi tài nguyên thảo luận về một ví dụ cụ thể.

BIÊN TẬP

Với ví dụ dưới đây, tôi có thể thấy rằng phương trình phân tách các lớp có lề tối đa. Nhưng làm thế nào để tôi điều chỉnh các trọng số và viết phương trình cho hyperplanes dưới dạng sau.X2=1.5

H1:w0+w1x1+w2x21forYi=+1H2:w0+w1x1+w2x21forYi=1.

nhập mô tả hình ảnh ở đây

Tôi đang cố gắng đưa ra lý thuyết cơ bản ngay trong không gian 2 chiều (vì nó dễ hình dung hơn) trước khi tôi nghĩ về các chiều cao hơn.

Tôi đã tìm ra giải pháp cho việc này. Ai đó có thể vui lòng xác nhận nếu điều này là chính xác không?

vectơ trọng lượng là (0, -2) và W_0 là 3

H1:3+0x12x21forYi=+1H2:3+0x12x21forYi=1.

Có một minh họa với R ở đây , nhưng tôi cảm thấy câu hỏi của bạn nhiều hơn về khía cạnh thuật toán. Trong trường hợp này, sẽ hữu ích nếu bạn có thể thêm một chút chi tiết về ứng dụng dự định hoặc tài nguyên có sẵn.
chl

@chl Tôi đã cập nhật câu hỏi với thông tin chi tiết
naresh

Câu trả lời:


12

Có ít nhất hai cách để thúc đẩy các SVM, nhưng tôi sẽ đi theo con đường đơn giản hơn ở đây.

Bây giờ, hãy quên mọi thứ bạn biết về SVM vào lúc này và chỉ tập trung vào vấn đề trong tay. Bạn được cung cấp một tập hợp các điểm cùng với một số nhãn ( ) từ . Bây giờ, chúng tôi đang cố gắng tìm một dòng trong 2D sao cho tất cả các điểm có nhãn rơi ở một bên của dòng và tất cả các điểm có nhãn rơi ở phía bên kia.y i { 1 , - 1 } 1 - 1D={(x1i,x2i,yi)}yi{1,1}11

Trước hết, hãy nhận ra rằng là một dòng trong 2D và đại diện cho "một bên" của dòng và đại diện cho "bên kia" của hàng.w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0

Từ những điều trên, chúng tôi có thể kết luận rằng chúng tôi muốn một số vectơ sao cho, cho tất cả các điểm với và cho tất cả các điểm với [1].w 0 + w 1 x i 1 + w 2 x i 20 x i y i = 1 w 0 + w 1 x i 1 + w 2 x i 2 < 0 x i y i = - 1[w0,w1,w2]w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1

Chúng ta hãy giả sử rằng một dòng như vậy thực sự tồn tại thì tôi có thể định nghĩa một bộ phân loại theo cách sau,

min|w0|+|w1|+|w2|subject to:w0+w1x1i+w2x2i0,xi with yi=1w0+w1x1i+w2x2i<0,xi with yi=1

Tôi đã sử dụng một hàm mục tiêu tùy ý ở trên, chúng tôi không thực sự quan tâm tại thời điểm mà hàm mục tiêu được sử dụng. Chúng tôi chỉ muốn một thỏa mãn các ràng buộc của chúng tôi. Vì chúng ta đã giả sử rằng một dòng tồn tại sao cho chúng ta có thể tách hai lớp với dòng đó, chúng ta sẽ tìm ra giải pháp cho vấn đề tối ưu hóa ở trên.w

Ở trên không phải là SVM nhưng nó sẽ cung cấp cho bạn một bộ phân loại :-). Tuy nhiên phân loại này có thể không tốt lắm. Nhưng làm thế nào để bạn xác định một phân loại tốt? Một bộ phân loại tốt thường là bộ phân loại tốt trong bộ kiểm tra. Tốt nhất, bạn sẽ đi qua tất cả các khả năng 's mà tách dữ liệu đào tạo của bạn và xem trong số họ làm tốt trên các dữ liệu thử nghiệm. Tuy nhiên, có vô số , nên điều này khá vô vọng. Thay vào đó, chúng tôi sẽ xem xét một số phương pháp phỏng đoán để xác định một phân loại tốt. Một heuristic là đường phân tách dữ liệu sẽ đủ xa tất cả các điểm (nghĩa là luôn có khoảng cách hoặc lề giữa các điểm và đường). Phân loại tốt nhất trong số này là phân loại có lề tối đa. Đây là những gì được sử dụng trong SVM.ww

Thay vì khăng khăng rằng cho tất cả các điểm với và cho tất cả các điểm với , nếu chúng tôi nhấn mạnh rằng cho tất cả các điểm với và cho tất cả các điểm với , sau đó chúng tôi thực sự khẳng định rằng các điểm cách xa đường. Lề hình học tương ứng với yêu cầu này xuất hiện là .w0+w1x1i+w2x2i0xiyi=1w0+w1x1i+w2x2i<0xiyi=1w0+w1x1i+w2x2i1xiyi=1w0+w1x1i+w2x2i1xiyi=11w2

Vì vậy, chúng tôi nhận được vấn đề tối ưu hóa sau, Một dạng viết ngắn gọn nhẹ này là, Đây về cơ bản là công thức SVM cơ bản. Tôi đã bỏ qua khá nhiều cuộc thảo luận cho ngắn gọn. Hy vọng, tôi vẫn có hầu hết các ý tưởng thông qua.

max1w2subject to:w0+w1x1i+w2x2i1,xi with yi=1w0+w1x1i+w2x2i1,xi with yi=1
minw2subject to:yi(w0+w1x1i+w2x2i)1,i

Kịch bản CVX để giải quyết vấn đề mẫu:

A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end

Phụ lục - Ký quỹ hình học

Ở trên, chúng tôi đã yêu cầu chúng tôi tìm sao cho hoặc nói chung là . LHS ở đây mà bạn thấy được gọi là lề chức năng, vì vậy điều chúng tôi đã yêu cầu ở đây là lề chức năng là . Bây giờ, chúng tôi sẽ cố gắng tính toán lề hình học cho yêu cầu lề chức năng này.wyi(w0+w1x1+w2x2)1yi(w0+wTx)11

Lề hình học là gì? Lề hình học là khoảng cách ngắn nhất giữa các điểm trong các ví dụ tích cực và các điểm trong các ví dụ tiêu cực. Bây giờ, các điểm có khoảng cách ngắn nhất theo yêu cầu ở trên có thể có biên chức năng lớn hơn bằng 1. Tuy nhiên, chúng ta hãy xem xét trường hợp cực đoan, khi chúng ở gần siêu phẳng nhất, lề chức năng cho các điểm ngắn nhất chính xác bằng nhau đến 1. Gọi là điểm trên ví dụ tích cực là một điểm sao cho và là điểm trên ví dụ phủ định là một điểm sao cho . Bây giờ, khoảng cách giữa và sẽ ngắn nhất khix+wTx++w0=1xwTx+w0=1x+xx+x vuông góc với siêu phẳng.

Bây giờ, với tất cả các thông tin trên, chúng tôi sẽ cố gắng tìm là lề hình học. x+x2

wTx++w0=1
wTx+w0=1
wT(x+x)=2
|wT(x+x)|=2
w2x+x2=2
x+x2=2w2

[1] Việc bạn chọn bên nào cho và không thực sự quan trọng . Bạn chỉ cần kiên định với bất cứ điều gì bạn chọn.11


1
@naresh Yeap, giải quyết vấn đề này là trong cvx đã cho tôi giải pháp chính xác giống như bạn có . w=[0,2,3]
TenaliRaman

1
@entropy cảm ơn tôi đã sửa lỗi đánh máy. Tôi sẽ thêm giải thích lề hình học.
TenaliRaman

1
@entropy Tôi đã cập nhật câu trả lời với phần giải thích lề hình học.
TenaliRaman

1
@entropy là một siêu phẳng đi qua gốc. Để bao trùm không gian của tất cả các phương trình tuyến tính, bạn cần thuật ngữ thiên vị. Hãy nghĩ về các điểm nằm trong 2D và hãy để chúng tôi nói rằng bạn đang cố gắng tìm một đường phân tách các điểm này. Tuy nhiên những điểm này đều nằm trong góc phần tư thứ nhất. Bây giờ người ta có thể sắp xếp các điểm này sao cho chúng có thể tách rời nhưng không phải bởi bất kỳ dòng nào đi qua gốc. Tuy nhiên, một dòng với một thiên vị thích hợp có thể làm điều đó. wTx
TenaliRaman

1
@entropy Đã nói ở trên, bây giờ bạn có thể nhận ra rằng nếu bạn xoay và dịch chuyển điểm chính xác, ngay cả một dòng đi qua gốc sẽ có thể tách các lớp. Tuy nhiên, thông thường việc tìm kiếm sự xoay vòng và dịch chuyển đúng này không dễ dàng, so với việc chỉ học thuật ngữ thiên vị.
TenaliRaman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.