2013-09-30 19 views
6

Tôi nên đặt thông số gamma và Chi phí trong libSVM như thế nào khi sử dụng tập dữ liệu mất cân bằng bao gồm 75% nhãn 'true' và 25% nhãn 'false'? Tôi nhận được một lỗi liên tục của việc có tất cả các nhãn được dự đoán được đặt trên 'True' do mất cân bằng dữ liệu.Mất cân bằng dữ liệu trong SVM bằng cách sử dụng libSVM

Nếu vấn đề không phải là với libSVM, nhưng với tập dữ liệu của tôi, tôi nên xử lý sự mất cân bằng này như thế nào từ quan điểm của Máy học lý thuyết? * Số lượng tính năng tôi đang sử dụng là từ 4-10 và tôi có một tập hợp nhỏ gồm 250 điểm dữ liệu.

+2

có một câu hỏi tương tự trong trang Câu hỏi thường gặp có thể giúp: Hỏi: Dữ liệu của tôi không cân bằng. Libsvm có thể xử lý các vấn đề như vậy không? http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f410 – McKelvin

Trả lời

6

Lớp học mất cân bằng không có gì để làm với lựa chọn của C và gamma, để đối phó với vấn đề này, bạn nên sử dụng class weighting scheme đó là có sẵn trong ví dụ scikit-learn gói (xây dựng trên libsvm)

Lựa chọn tốt nhất Cgamma được thực hiện bằng cách sử dụng tìm kiếm lưới với xác thực chéo. Bạn nên thử phạm vi rộng lớn của các giá trị ở đây, đối với C là hợp lý để chọn giá trị giữa 110^15 trong khi giá trị phạm vi đơn giản và tốt của giá trị phạm vi gamma là tính khoảng cách theo cặp giữa tất cả các điểm dữ liệu của bạn và chọn gamma theo phần trăm của giá trị này phân phối - suy nghĩ về việc đưa vào mỗi điểm phân phối gaussian với phương sai bằng 1/gamma - nếu bạn chọn gamma rằng phân phối chồng chéo này sẽ có nhiều điểm, bạn sẽ nhận được mô hình rất "trơn tru", trong khi sử dụng phương sai nhỏ dẫn đến quá mức.

+1

Đề án trọng số lớp ngụ ý rằng 'C' bị thay đổi trong vấn đề đào tạo SVM thực tế, do đó cân bằng lớp * * có một cái gì đó để làm với việc lựa chọn 'C' mặc dù nó xảy ra phía sau màn cửa. –

+1

Đây hoàn toàn là điều ngôn ngữ, như ý định của tôi là việc lựa chọn C sẽ không khắc phục được vấn đề mất cân đối. Các giải pháp của vấn đề này tuy nhiên thay đổi C, tôi không thấy mâu thuẫn thực sự ở đây – lejlot

4

Tập dữ liệu không cân bằng có thể được giải quyết theo nhiều cách khác nhau. Số dư lớp không ảnh hưởng đến các tham số hạt nhân như gamma đối với hạt nhân RBF.

Hai phương pháp phổ biến nhất là:

  1. Sử dụng hình phạt phân loại sai khác nhau cho mỗi lớp, điều này về cơ bản có nghĩa là thay đổi C. Thông thường, lớp nhỏ nhất được cân nặng cao hơn, cách tiếp cận phổ biến là npos * wpos = nneg * wneg. LIBSVM cho phép bạn thực hiện việc này bằng cách sử dụng các cờ -wX của nó.
  2. Ví dụ lớp vượt mức để nhận được số tiền tích cực và âm bản và tiến hành đào tạo theo cách truyền thống cho tập hợp cân bằng. Hãy lưu ý rằng về cơ bản bạn bỏ qua một đoạn lớn dữ liệu theo cách này, đó là trực giác một ý tưởng tồi.
+1

Tại sao không ** oversample ** một nhỏ hơn để thay thế? Điều này sẽ không bỏ qua bất kỳ thông tin nào – lejlot

+0

@lejlot Hầu hết các tình huống mà chiến lược sau được sử dụng là các vấn đề quy mô lớn (ví dụ: hàng triệu đến hàng tỷ trường hợp), trong đó bỏ qua một phần dữ liệu thực sự được sử dụng như một hack để giảm độ phức tạp. Oversampling tập nhỏ hơn về cơ bản là cách tiếp cận trước đây một cách không hiệu quả (oversampling là chính xác giống như reweighing). –

+0

Tôi hoàn toàn nhận thức được điều đó, chỉ cần tự hỏi tại sao bạn không bao gồm tùy chọn này. Ưu điểm chính của oversampling là nó là một cách tiếp cận chung, có thể được sử dụng ngay cả với các mô hình (và triển khai của chúng) mà không cho phép bạn trọng lượng mẫu (với chi phí hiệu quả). – lejlot

2

Tôi biết điều này đã được hỏi một thời gian trước, nhưng tôi muốn trả lời vì bạn có thể thấy câu trả lời của tôi hữu ích.

Như những người khác đã đề cập, bạn có thể cân nhắc sử dụng các trọng số khác nhau cho các lớp dân tộc thiểu số hoặc sử dụng các hình phạt phân loại sai khác nhau. Tuy nhiên, có một cách thông minh hơn để xử lý các tập dữ liệu không cân bằng.

Bạn có thể sử dụng đập (S ynthetic M inority O ver-lấy mẫu Te chnique) thuật toán để tạo ra dữ liệu tổng hợp cho lớp thiểu số. Nó là một thuật toán đơn giản có thể xử lý một số tập dữ liệu mất cân bằng khá tốt.

Trong mỗi lần lặp của thuật toán, SMOTE xem xét hai trường hợp ngẫu nhiên của lớp thiểu số và thêm một ví dụ nhân tạo của cùng một lớp ở đâu đó ở giữa. Thuật toán tiếp tục tiêm tập dữ liệu với các mẫu cho đến khi hai lớp trở nên cân bằng hoặc một số tiêu chí khác (ví dụ: thêm một số ví dụ nhất định). Dưới đây bạn có thể tìm thấy một hình ảnh mô tả những gì các thuật toán không cho một tập dữ liệu đơn giản trong không gian tính năng 2D.

Kết hợp trọng lượng với lớp dân tộc thiểu số là trường hợp đặc biệt của thuật toán này. Khi bạn kết hợp trọng số $ w_i $ với cá thể i, về cơ bản bạn đang thêm các trường hợp $ w_i - 1 $ vào đầu của cá thể i!

SMOTE

  • Những gì bạn cần làm là để tăng thêm số liệu ban đầu của bạn với các mẫu được tạo ra bởi thuật toán này, và huấn luyện SVM với tập dữ liệu mới này. Bạn cũng có thể tìm thấy nhiều triển khai trực tuyến bằng các ngôn ngữ khác nhau như Python và Matlab.

  • Đã có các phần mở rộng khác của thuật toán này, tôi có thể chỉ cho bạn nhiều tài liệu hơn nếu bạn muốn.

  • Để kiểm tra phân loại bạn cần để phân chia các tập dữ liệu vào thử nghiệm và đào tạo, thêm trường hợp tổng hợp để tập tàu (không thêm bất kỳ để kiểm tra SET), đào tạo các mô hình trên bộ tàu, và cuối cùng kiểm tra nó trên tập kiểm tra. Nếu bạn xem xét các trường hợp được tạo ra khi bạn đang thử nghiệm, bạn sẽ kết thúc với độ chính xác (và chính xác cao) thiên vị (và ridiculously) và nhớ lại.

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