2012-04-24 29 views
6

Tôi cần đào tạo một mô hình hồi quy trên một tập hợp lớn các ví dụ đào tạo , với khả năng kết hợp các tính năng tùy ý. Tôi cần xem xét và giải thích lý do gì về các thuật toán học tập ?Tôi nên xem xét thuật toán học nào để huấn luyện mô hình hồi quy tuyến tính?

Một bản tóm tắt nhanh chóng của các vấn đề:

  • Khoảng 5 triệu ví dụ huấn luyện
  • Thêm ví dụ huấn luyện với tốc độ 2-4 triệu mỗi năm
  • ví dụ đào tạo hiện có 10 đặc điểm của từng
  • Tính năng dân số 400.000 A (trong tổng số không gian có tổng diện tích lớn hơn nhiều)
  • Các tính năng bổ sung được thêm theo thời gian
  • Đào tạo hoặc thích nghi với mô hình (ít nhất) hàng ngày để kết hợp ví dụ mới
  • tiêu chí tối ưu hóa: tối thiểu bình phương lỗi tỷ lệ
  • Output: a đơn giá trị thực số

Tôi có một số kinh nghiệm đào tạo log- mô hình tuyến tính về các vấn đề phân loại có kích thước tương tự (sử dụng SVM, Perverrons trung bình và bình chọn, vv) Khả năng thêm các tính năng tùy ý là quan trọng, nhưng trong trường hợp này, thời gian đào tạo cũng có giá trị.

Ví dụ: một thử nghiệm của tôi cho đến nay với SVMLight mất vài tuần để hội tụ trên một tập con của dữ liệu này. Chúng ta có thể song song trên một máy đa lõi hoặc (có thể) một cụm, nhưng chúng ta cần đào tạo các mô hình trong vài phút. Đào tạo trực tuyến sẽ còn tốt hơn nữa.

Tôi đã đào tạo thành công mô hình Perceptron trung bình thành công (và nhanh chóng). Tuy nhiên, với kiến ​​thức của tôi, AP thường không được áp dụng cho hồi quy. AP có cung cấp bất kỳ sự đảm bảo hội tụ nào cho mô hình hồi quy không? Có lý do chính thức nào khác không nên áp dụng không? Hay đó là một sự phù hợp hợp lý cho các yêu cầu của tôi?

Tôi nên nghiên cứu các tùy chọn nào khác? SVM có thể cung cấp độ chính xác cao, nhưng thời gian đào tạo bậc hai không được chấp nhận. Nếu các thuật toán SVM tuyến tính có thể truy cập được, điều đó có thể hoạt động tốt.

ưu điểm tiềm năng:

  • trực tuyến đào tạo
  • thực hiện Mã nguồn mở có sẵn (lý tưởng trong Java). Chúng tôi có thể triển khai thực hiện của riêng mình nếu cần, nhưng tôi sẽ tránh điều đó nếu có thể.

Cảm ơn bạn đã nhập.

+0

Để phân loại, tôi đã có nhiều thành công với SVMs stochastic gốc dốc (http://leon.bottou.org/projects/sgd#) - bạn có thể muốn xem xét điều chỉnh nó để hồi quy. – etarion

Trả lời

7

Đây là vấn đề kinh điển với SVM quy mô lớn. Một mô hình SVM sẽ cần phải được đào tạo lại nếu các tính năng mới được thêm vào, và nếu dữ liệu mới được thêm vào nếu bạn không sử dụng một svm trực tuyến. Một số tùy chọn:

thực tế Options (khỏi kệ):

LIBLINEAR - Nếu bạn có thể làm tuyến tính SVM có một số thuật toán mà tận dụng lợi thế của kernel tuyến tính để cung cấp tốt hơn so với thời gian đào tạo bậc hai.Kiểm tra LIBLINEAR là từ cùng một nhóm nghiên cứu như libsvm. Họ chỉ thêm hồi quy trong phiên bản 1.91 phát hành ngày hôm qua. http://www.csie.ntu.edu.tw/~cjlin/liblinear/

Oracle ODM - Oracle có SVM trong gói ODM của họ. Họ thực hiện một cách tiếp cận thực tế về cơ bản cung cấp SVM 'đủ tốt' mà không phải trả chi phí tính toán của việc tìm kiếm một giải pháp thực sự tối ưu. Họ sử dụng một số kỹ thuật lấy mẫu và lựa chọn mô hình - bạn có thể tìm thấy thông tin về điều đó ở đây: http://www.oracle.com/technetwork/database/options/advanced-analytics/odm/overview/support-vector-machines-paper-1205-129825.pdf

SHOGUN - Các SHOGUN Machine Learning Toolbox được thiết kế cho việc học tập quy mô lớn, họ giao tiếp với một số triển khai SVM cũng như Các phương pháp khác. Tôi chưa bao giờ sử dụng nó, nhưng nó có thể là giá trị một cái nhìn: http://www.shogun-toolbox.org

Kernel-machines.org có một danh sách các gói phần mềm: nghiên cứu http://www.kernel-machines.org/software

khác SVM

Nếu bạn là tìm cách cuộn của riêng bạn, có một số kỹ thuật để cố gắng mở rộng SVM lên các tập dữ liệu lớn đã được xuất bản trong các tài liệu nghiên cứu, nhưng mã không nhất thiết phải có sẵn, có thể sử dụng hoặc được duy trì như các ví dụ trên. Họ tuyên bố kết quả tốt, nhưng mỗi người đều có những hạn chế riêng. Nhiều người liên quan đến việc thực hiện một số mức độ lựa chọn dữ liệu. Ví dụ, một số tài liệu nghiên cứu sử dụng thuật toán phân cụm thời gian tuyến tính để nhóm dữ liệu và đào tạo các mô hình SVM liên tiếp dựa trên các cụm, để xây dựng mô hình mà không cần sử dụng tất cả dữ liệu. Core Vector Machines yêu cầu một thời gian đào tạo tuyến tính, nhưng có một số lời chỉ trích về việc liệu độ chính xác của họ có cao như họ yêu cầu hay không. Nhiều giấy tờ sử dụng các thuật toán heuristic khác nhau để cố gắng chọn các ứng cử viên vector hỗ trợ có khả năng nhất. Nhiều người trong số này là để phân loại, nhưng có lẽ có thể thích nghi với hồi quy. Nếu bạn muốn biết thêm thông tin về một số nghiên cứu này tôi có thể thêm một số tài liệu tham khảo.

cụ cho các thuật toán khai thác

Bạn có lẽ đã quen thuộc với những, nhưng tôi figured tôi muốn vứt nó ở đây chỉ trong trường hợp:

Có những thuật toán khác có tốt chạy trên các tập dữ liệu lớn, nhưng liệu chúng có hoạt động tốt hay không khó nói, nó phụ thuộc vào việc trang điểm dữ liệu của bạn. Vì thời gian chạy là quan trọng, tôi sẽ bắt đầu với các mô hình đơn giản hơn và làm việc phức tạp hơn. ANN, hồi quy cây quyết định, phương pháp Bayesian, hồi quy tuyến tính trọng số cục bộ, hoặc phương pháp lai như cây mô hình, là cây quyết định có nút lá là mô hình tuyến tính, tất cả có thể được thực hiện nhanh hơn SVM trên tập dữ liệu lớn và có thể sản xuất kết quả tốt.

WEKA - Weka là một công cụ tốt để khám phá các tùy chọn của bạn. Tôi sẽ sử dụng WEKA để thử các tập con dữ liệu của bạn trong các thuật toán khác nhau. Mã nguồn được mở và trong java nếu bạn chọn một cái gì đó bạn có thể thích nghi nó với nhu cầu của bạn. http://www.cs.waikato.ac.nz/ml/weka/

R - Ngôn ngữ lập trình R cũng triển khai nhiều thuật toán và tương tự như lập trình trong Matlab. http://www.r-project.org/

Tôi sẽ không khuyên bạn sử dụng WEKA hoặc R không phải là tập dữ liệu quy mô lớn, nhưng chúng là công cụ hữu ích để thu hẹp thuật toán nào có thể hoạt động tốt cho bạn.

+0

Cảm ơn bạn đã chỉnh sửa vitalik :) – karenu

+0

Cảm ơn câu trả lời chi tiết. Tôi sẽ bỏ phiếu nhiều lần nếu tôi có thể. ;-) Tôi nghĩ rằng tôi đã xem LibLinear một số thời gian trước đây khi làm việc trên một vấn đề liên quan, nhưng thông qua nó vì thời gian đào tạo. Tôi đã không nhận ra nó hỗ trợ đào tạo thời gian tuyến tính bây giờ. Nghe có vẻ như đó có thể là một lựa chọn rất tốt. – AaronD

+0

Xin lỗi tôi đã không nói đó là thời gian tuyến tính, tốt hơn là bậc hai. Nó sử dụng hạt nhân tuyến tính. Nó cung cấp một giải pháp chính xác eps trong các phép lặp O (log (1/eps)) với chi phí của các lần lặp O (ln) trong đó l là số điểm đào tạo và n là số trung bình của các phần tử khác 0. Vì vậy, dữ liệu của bạn càng thưa thớt, bạn càng tiến gần đến thời gian tuyến tính. – karenu

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