Khi sử dụng SVM, tại sao tôi cần mở rộng các tính năng?


9

Theo tài liệu của đối tượng StandardScaler trong scikit-learn:

Ví dụ, nhiều phần tử được sử dụng trong hàm mục tiêu của thuật toán học tập (chẳng hạn như hạt nhân RBF của Support Vector Machines hoặc bộ điều chỉnh L1 và L2 của các mô hình tuyến tính) cho rằng tất cả các tính năng đều tập trung quanh 0 và có phương sai theo cùng một thứ tự. Nếu một tính năng có phương sai lớn hơn các bậc khác, nó có thể chi phối hàm mục tiêu và làm cho trình ước tính không thể học từ các tính năng khác một cách chính xác như mong đợi.

Tôi nên mở rộng các tính năng của mình trước khi phân loại. Có cách nào dễ dàng để chỉ ra lý do tại sao tôi nên làm điều này? Tài liệu tham khảo cho các bài báo khoa học sẽ còn tốt hơn. Tôi đã tìm thấy một nhưng có lẽ có nhiều người khác.

Câu trả lời:


16

Tất cả các phương thức kernel đều dựa trên khoảng cách. Hàm nhân RBF là (sử dụng cho sự đơn giản).γ = 1κ(u,v)=exp(uv2)γ=1

Cho 3 vectơ đặc trưng:

x1=[1000,1,2],x2=[900,1,2],x3=[1050,10,20].

sau đó , đó là được cho là giống với sau đó với .x 1 x 3 x 2κ(x1,x2)=exp(10000)κ(x1,x3)=exp(2905)x1x3x2

Sự khác biệt tương đối giữa và: x 2[0,1,0,0],x1

x2[0.1,0,0],x3[0.05,10,10].

Vì vậy, không chia tỷ lệ, chúng tôi kết luận rằng giống với hơn so với , mặc dù sự khác biệt tương đối trên mỗi tính năng giữa và lớn hơn nhiều so với và .x 3 x 2 x 1 x 3 x 1 x 2x1x3x2x1x3x1x2

Nói cách khác, nếu bạn không mở rộng tất cả các tính năng thành các phạm vi có thể so sánh, các tính năng có phạm vi lớn nhất sẽ hoàn toàn chiếm ưu thế trong tính toán của ma trận hạt nhân.

Bạn có thể tìm thấy các ví dụ đơn giản để minh họa điều này trong bài báo sau: Hướng dẫn thực hành để hỗ trợ phân loại vectơ (Phần 2.2).


bạn cũng có thể muốn thảo luận về chính quy hóa: thang đo của các trọng số phụ thuộc vào quy mô của các yếu tố đầu vào ...
seanv507

Hiệu quả của việc chính quy hóa là các tỷ lệ khác nhau hàm ý tối ưu khác nhau , có phần trực giao với vấn đề cụ thể này. C
Marc Claesen

2
Nhưng nó thực sự có thể là sự gần gũi dọc theo một chiều là quan trọng hơn. Vì vậy, mục tiêu không thực sự có cùng một phương sai trong tất cả các tính năng mà là để chúng được thu nhỏ sao cho khoảng cách dọc theo mọi tính năng có cùng tầm quan trọng với nhiệm vụ.
isarandi

@Marc Claesen, nếu các biến của bạn có các bậc độ lớn khác nhau, thì trọng số của bạn cũng sẽ có các bậc độ lớn khác nhau và định mức l2 sẽ tập trung vào các đầu vào có phương sai nhỏ và trọng số tương ứng lớn. nói cách khác, chính quy hóa trọng số đảm bảo rằng các đầu vào 'nhỏ' có hiệu ứng nhỏ. Điều này chỉ có ý nghĩa nếu bạn đã chuẩn hóa 'nhỏ' (qua các đầu vào của bạn), ví dụ như bằng cách chuẩn hóa các biến của bạn
seanv507

1
@ seanv507 chỉ áp dụng cho SVM tuyến tính.
Marc Claesen

0

Nó phụ thuộc vào kernel bạn đang sử dụng. Cho đến nay, thường được sử dụng nhất (ngoài tuyến tính) là hạt nhân gaussian, có dạng

f=exp(||x1x2||22σ2)

Một SVM có chức năng này và sử dụng nó để so sánh sự giống nhau của một điểm ( ) với mọi điểm khác trong tập huấn luyện bằng cách tổng hợp các khác biệt như:x1

(x1l1)2+(x2l2)2...+(xnln)2

Trong đó là ví dụ của bạn và các giá trị của là các mốc.lxtôi

Nếu tính năng nằm trong khoảng từ 0 - 50.000 trong khi tính năng nằm trong khoảng từ 0 - 0,01, bạn có thể thấy rằng sẽ thống trị tổng đó trong khi sẽ hầu như không có tác động. Vì lý do này, cần phải mở rộng các tính năng trước khi áp dụng hạt nhân.x1x2x1x2

Nếu bạn muốn tìm hiểu thêm, tôi khuyên bạn nên sử dụng mô-đun 12 (Support Vector Machines) từ khóa học trực tuyến Stanford về học máy tại Coursera (miễn phí và có sẵn bất cứ lúc nào): https://www.coursera.org/cference/ml

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.