Làm thế nào để biết liệu dữ liệu có thể phân tách tuyến tính?


21

Dữ liệu có nhiều tính năng (ví dụ 100) và số lượng phiên bản là 100.000. Dữ liệu còn thưa thớt. Tôi muốn phù hợp với dữ liệu bằng cách sử dụng hồi quy logistic hoặc svm. Làm cách nào để biết liệu các tính năng là tuyến tính hay phi tuyến tính để tôi có thể sử dụng thủ thuật kernel nếu phi tuyến tính?

Câu trả lời:


22

Có một số phương pháp để tìm xem liệu dữ liệu có thể phân tách tuyến tính hay không, một số trong số chúng được tô sáng trong bài viết này (1). Với giả định hai lớp trong tập dữ liệu, sau đây là một vài phương pháp để tìm xem chúng có thể phân tách tuyến tính hay không:

  1. Lập trình tuyến tính: Xác định hàm mục tiêu chịu các ràng buộc thỏa mãn tính phân tách tuyến tính. Bạn có thể tìm thấy chi tiết về việc thực hiện ở đây .
  2. Phương pháp perceptron : Một perceptron được đảm bảo hội tụ nếu dữ liệu có thể phân tách tuyến tính.
  3. Lập trình bậc hai: Hàm mục tiêu tối ưu hóa lập trình bậc hai có thể được định nghĩa với các ràng buộc như trong SVM.
  4. Hình học tính toán: Nếu người ta có thể tìm thấy hai vỏ lồi rời nhau thì dữ liệu có thể phân tách tuyến tính
  5. Phương pháp phân cụm: Nếu người ta có thể tìm thấy hai cụm có độ tinh khiết của cụm là 100% bằng cách sử dụng một số phương pháp phân cụm như phương tiện k, thì dữ liệu có thể phân tách tuyến tính.

    (1): Hà Lan, D. 2005.860871


1
Vui lòng cung cấp một tài liệu tham khảo (liên kết có thể bị thối) & ít nhất là một lời giải thích nhỏ về những phương pháp được đề cập.
Scortchi - Phục hồi Monica

2
Cảm ơn. Câu trả lời hay (+1). Gói R safeBinaryRegressioncũng thực hiện phương pháp lập trình tuyến tính.
Scortchi - Phục hồi Monica

Mà (cách tiếp cận LP) dễ dàng được giải thích về mặt hình học, tính toán hiệu quả và thường có sẵn (như các thói quen LP).
dùng603

3

Tôi giả sử bạn nói về một vấn đề phân loại 2 lớp. Trong trường hợp này, có một dòng phân tách hai lớp của bạn và bất kỳ thuật toán cổ điển nào cũng có thể tìm thấy nó khi nó hội tụ.

Trong thực tế, bạn phải đào tạo và kiểm tra trên cùng một dữ liệu. Nếu có một dòng như vậy thì bạn sẽ có được độ chính xác 100% hoặc AUC 100%. Nếu không có một dòng như vậy thì đào tạo và thử nghiệm trên cùng một dữ liệu sẽ dẫn đến ít nhất một số lỗi. Dựa trên khối lượng lỗi, nó có thể hoặc không đáng để thử một bộ phân loại phi tuyến tính.


1

Công thức SVM lề cứng là s . t i , ( w x i + b ) y i1

minw,b ||w||2
s.t i,(wxi+b)yi1

Nếu dữ liệu của chúng tôi được phân tách tuyến tính, tất cả các ràng buộc bất bình đẳng sẽ được bão hòa. Thông thường, trong khi giải các chương trình bậc hai, các phương pháp điểm bên trong (bắt đầu khả thi, đường dẫn trung tâm theo thuật toán) chỉ tiến hành giải quyết cho w sau khi tìm thấy giá trị khả thi của w mà nó có thể khởi tạo vấn đề. Vì vậy, LP sau đây có thể được giải quyết để kiểm tra tính khả thi. s . t i , ( w x i + b ) y i1 - s s 0

mins,b s
S.t tôi,(w'xtôi+b)ytôi1-S
S0

Nếu tối ưu cho vấn đề này bằng không, chúng tôi biết rằng các ràng buộc bất bình đẳng ban đầu có thể được thỏa mãn. Điều này có nghĩa là dữ liệu của chúng tôi được phân tách tuyến tính trong không gian ban đầu. Sử dụng riêng cho mỗi ví dụ đào tạo có thể cho chúng ta biết điểm dữ liệu nào gây ra sự phân tách tuyến tính.s iSStôi


+1 đây là trực giác hình học đằng sau phương thức được triển khai trong gói RsafeBinaryRegression
user603

-2

Bạn thử hồi quy logistic và xem nó hoạt động như thế nào. Nếu nó không hoạt động, có vô số hạt nhân bạn có thể thử, và nó vẫn có thể không hoạt động.

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.