Phân loại với dữ liệu chất béo cao


15

Tôi cần đào tạo một trình phân loại tuyến tính trên máy tính xách tay của mình với hàng trăm nghìn điểm dữ liệu và khoảng mười nghìn tính năng. Những lựa chọn của tôi là gì? Tình trạng của nghệ thuật cho loại vấn đề này là gì?

Có vẻ như độ dốc dốc ngẫu nhiên là hướng đi đầy hứa hẹn và ý nghĩa của tôi là đây là trạng thái của nghệ thuật:

"Pegasos: Nhà sản xuất phụ GrAdient ước tính cho SVM" Shai Shalev-Shwartz, Yoram Singer, Nathan Srebro, Andrew Cotter.

Đây có phải là sự đồng thuận? Tôi có nên nhìn theo hướng khác?


1
Bạn đã cân nhắc sử dụng một số phương pháp giảm kích thước chưa? hàng ngàn tính năng kêu gọi giảm kích thước, xem: en.wikipedia.org/wiki/Dimension_redraction
Dov

Câu hỏi này có thể được cải thiện với nỗ lực nghiên cứu. Bạn có bất kỳ kỹ thuật trong tâm trí?
Tamzin Blake

@Thom Blake: Tôi đã chỉnh sửa câu hỏi một chút, với suy nghĩ của mình.
carlosdc

Nếu không biết thêm về dữ liệu, bất kỳ câu trả lời sẽ không được thông báo. Có thưa thớt không? tiếp diễn? rời rạc? tính năng / đối tượng dư thừa? có bao nhiêu lớp Ví dụ, PCA trên dữ liệu thưa thớt đôi khi có thể gây hại.
cyborg

2
cao = nhiều điểm? béo = nhiều tính năng? thuật ngữ std này ở bất cứ đâu, được sử dụng trong refs ở đâu đó?

Câu trả lời:


6

Tôi nghĩ bạn nên xem các phương pháp Học trực tuyến . Các perceptron và Perceptron hạt nhân là vô cùng dễ dàng để mã và làm việc rất tốt trong thực tế, và có một loạt toàn bộ các phương pháp trực tuyến khác. Lưu ý rằng bất kỳ phương pháp học trực tuyến nào cũng có thể được chuyển đổi thành một thuật toán học tập theo đợt, trong trường hợp đó chúng gần giống với các phương pháp giảm độ dốc ngẫu nhiên.

Nếu bạn đang sử dụng Matlab, có một hộp công cụ thực sự hay được gọi là DOGMA của Francesco Orabona, chứa một loạt các thuật toán học trực tuyến và bạn có thể đánh giá một vài phương pháp khác nhau bằng cách sử dụng. Tôi đã sử dụng điều này trong một số nghiên cứu của mình và thấy nó rất hữu ích (lưu ý rằng theo như tôi nhớ thì nó mong đợi dữ liệu là [tính năng x ví dụ] nên bạn có thể phải hoán đổi nó).

Như những người khác đã đề cập, bạn có thể muốn thử giảm kích thước. PCA có thể không phải là một lựa chọn tốt ở đây, vì bạn phải tính toán ma trận hiệp phương sai sẽ rất tốn kém. Bạn có thể thử nhìn vào Dự đoán ngẫu nhiên . Lý thuyết là khó khăn, nhưng nguyên tắc rất đơn giản. Nó dựa trên Bổ đề Johnson-Lindenstrauss Nếu bạn quan tâm, nhưng ý tưởng cơ bản là nếu bạn dự án một cách ngẫu nhiên đến một không gian chiều thấp hơn, sau đó khoảng cách giữa các điểm được bảo quản lên đến một số ε . Nếu bạn đang sử dụng một hạt nhân RBF, sau đó 2 quãng đường là tất cả các bạn đang quan tâm!2ε2


7

Đầu tiên, tôi muốn hỏi bạn làm thế nào để bạn biết phân loại tuyến tính là sự lựa chọn tốt nhất? Theo trực giác cho một không gian rộng lớn như vậy (R ^ 10000), có thể một số phân loại phi tuyến tính khác là một lựa chọn tốt hơn.

Tôi đề nghị bạn nên thử một vài phân loại khác nhau và quan sát các lỗi dự đoán (tôi sẽ thử một vài mô hình phân loại chính quy).

Nếu bạn hết bộ nhớ, hãy giảm kích thước bằng PCA


2
Cảm ơn. Tôi đã suy nghĩ nhiều hơn về cách xử lý quy mô của vấn đề. Tôi muốn bắt đầu bằng cách làm tuyến tính, bởi vì nó đơn giản hơn. Tôi nghĩ rằng bạn đề xuất một phương pháp dựa trên kernel. Hãy để tôi chỉ ra rằng nếu tôi có 750000 điểm dữ liệu, ma trận hạt nhân sẽ có kích thước 540 GB. Vì vậy, câu trả lời không thể là: cắm nó vào LIBSVM / SVMLight / etc để có C và gamma tốt và xem những gì bạn nhận được.
carlosdc

2
(-1) câu trả lời là a) một phần rất chung chung, nó có thể được áp dụng cho bất kỳ câu hỏi phân loại nào b) không giải thích được tại sao PCA được đề xuất (hơn bất kỳ kỹ thuật giảm kích thước nào khác).
steffen

3

Bạn cũng có thể sử dụng PCA để giảm kích thước mà không cần tính toán ma trận hiệp phương sai --- bằng cách sử dụng newtork tương đương với PCA.

Đây là một bài viết mô tả nó (nhưng tôi khuyên bạn nên thực hiện tìm kiếm của riêng bạn): http://users.ics.tkk.fi/oja/Oja1982.pdf và đây là một liên kết đến những điều có thể đang thực hiện matlab: http : //www.cs.purdue.edu/homes/dgleich/projects/pca_neural_nets_website/index.html .


1

Như jb đề xuất, tôi nghĩ tốt hơn là sử dụng phương pháp "Giảm kích thước". Phân tích thành phần nguyên tắc (PCA) là một lựa chọn phổ biến. Ngoài ra, bạn có thể thử các kỹ thuật học tập tính năng không giám sát là tốt. Để biết thêm thông tin về học tập tính năng không giám sát có thể được tìm thấy tại http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial


1
PCA không PAC;) ( 15 ký tự )
nơ ron
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.