2013-12-10 17 views
7

Tôi đã chơi với một số triển khai SVM và tôi tự hỏi - cách tốt nhất để chuẩn hóa các giá trị đối tượng để phù hợp với một phạm vi là gì? (0-1)Chuẩn hóa các giá trị tính năng cho SVM

Giả sử tôi có 3 tính năng với giá trị trong phạm vi:

  1. 3 - 5.

  2. 0,02 - 0,05

  3. 10-15.

Làm cách nào để chuyển đổi tất cả các giá trị đó thành phạm vi [0,1]? Điều gì Nếu, trong quá trình đào tạo, giá trị cao nhất của tính năng số 1 mà tôi sẽ gặp phải là 5 và sau khi tôi bắt đầu sử dụng mô hình của mình trên các tập dữ liệu lớn hơn nhiều, tôi sẽ vấp ngã khi các giá trị cao đến 7? Sau đó, trong phạm vi được chuyển đổi, nó sẽ vượt quá 1 ...

Làm cách nào để bình thường hóa giá trị trong khi đào tạo để tính đến khả năng "giá trị trong tự nhiên" vượt quá giá trị cao nhất (hoặc thấp nhất) của mô hình "đã thấy" trong đào tạo? Mô hình sẽ phản ứng như thế nào và cách tôi làm cho nó hoạt động đúng khi điều đó xảy ra?

Trả lời

7

Bạn chuẩn hóa vectơ bằng cách chuyển đổi nó thành vectơ đơn vị. Điều này đào tạo SVM trên các giá trị tương đối của các tính năng, không phải là độ lớn. Thuật toán chuẩn hóa sẽ hoạt động trên vectơ với bất kỳ giá trị nào.

Để chuyển đổi thành vectơ đơn vị, divide each value by the length of the vector. Ví dụ: vectơ của [4 0.02 12] có độ dài 12.6491. Vector chuẩn hóa sau đó là [4/12.6491 0.02/12.6491 12/12.6491] = [0.316 0.0016 0.949].

Nếu "trong tự nhiên", chúng tôi gặp phải một vectơ là [400 2 1200] nó sẽ bình thường hóa với cùng một đơn vị vectơ như trên. Độ lớn của các đối tượng địa lý bị "hủy bỏ" bằng cách chuẩn hóa và chúng tôi còn lại với các giá trị tương đối giữa 0 và 1.

+0

Cảm ơn bạn. Điều này rất hữu ích. – user3010273

+1

Nếu điều này đã giải quyết được vấn đề của bạn, vui lòng [chấp nhận câu trả lời] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) để những người khác biết rằng bạn không còn cần giúp đỡ. – Tim

+0

có ít nhất một cách khác để mở rộng các tính năng của bạn - hãy xem [phương pháp] này (http://en.wikipedia.org/wiki/Feature_scaling#Methods) – arturomp

7

Bên cạnh chia tỷ lệ theo phương pháp chiều dài đơn vị do Tim cung cấp, standardization thường được sử dụng nhất trong lĩnh vực học máy. Xin lưu ý rằng khi dữ liệu thử nghiệm của bạn xuất hiện, bạn nên sử dụng giá trị trung bình và độ lệch chuẩn từ các mẫu đào tạo của bạn để thực hiện việc mở rộng này. Nếu bạn có số lượng dữ liệu đào tạo rất lớn, có thể giả định rằng họ tuân theo phân phối bình thường, do đó khả năng dữ liệu thử nghiệm mới nằm ngoài phạm vi sẽ không cao. Tham khảo post để biết thêm chi tiết.

Các vấn đề liên quan