2013-08-10 32 views
9

tôi đã viết đoạn mã sau và thử nghiệm nó trên dữ liệu nhỏ:Mất bao nhiêu thời gian để phân loại SVM tàu hỏa?

classif = OneVsRestClassifier(svm.SVC(kernel='rbf')) 
classif.fit(X, y) 

đâu X, y là mảng NumPy. Trên thuật toán dữ liệu nhỏ hoạt động tốt và cho tôi câu trả lời đúng. Nhưng tôi chạy chương trình của tôi khoảng 10 giờ trước ... Và nó vẫn đang trong quá trình. Chính xác trong đoạn mã này. X là ma trận 30000x784, y 30000x1. Tôi muốn biết nó sẽ mất bao lâu hoặc bị kẹt theo một cách nào đó? Máy tính xách tay của tôi có bộ nhớ 4 GB, Core i5-480m.

+0

Vì vậy, ... 30000 kích thước và 30000 X 784 điểm .... Tôi chưa thực sự làm việc quá lâu với máy học nhưng điều đó là một vector tính năng khá lớn và chiều cao ... tôi không nghĩ rằng nó quá ngạc nhiên khi dùng nó lâu ... bạn có thể thử giảm kích thước để tăng tốc độ ... – Roy

+1

@Roy Giảm số lượng các trường hợp đào tạo sẽ là * nhiều * hiệu quả hơn so với giảm kích thước cho các phương pháp hạt nhân. –

+0

@MarcClaesen Sẽ phải nhận lời của bạn trên đó, tôi không nhiều hơn một người mới bản thân mình. – Roy

Trả lời

21

đào tạo SVM có thể tùy ý dài, điều này phụ thuộc vào hàng chục thông số:

  • C tham số - lớn hơn hình phạt missclassification, quá trình chậm hơn các
  • kernel - phức tạp hơn hạt nhân, chậm quá trình (RBF là phức tạp nhất từ ​​những người được xác định trước)
  • kích thước dữ liệu/chiều - một lần nữa, cùng cai trị

nói chung, cơ bản SMO thuật toán là O(n^3), vì vậy trong trường hợp của 30 000 datapoints nó phải chạy số hoạt động tỷ lệ thuận với số 2 700 000 000 000 đó là số thực sự rất lớn. Lựa chọn của bạn là gì?

  • thay đổi một hạt nhân cho một tuyến tính, 784 tính năng được khá nhiều, RBF có thể dư thừa
  • giảm chiều tính năng (PCA?)
  • càng thấp C tham số
  • mô hình đào tạo trên tập hợp con dữ liệu của bạn để tìm các thông số tốt và sau đó đào tạo toàn bộ thông số trên một số cụm/siêu máy tính
+3

Thời gian tính toán hạt nhân thường không phải là vấn đề khi các vấn đề thực sự lớn đang được xem xét. Sự khác biệt giữa RBF và, nói, đa thức là không liên quan. Khía cạnh duy nhất của phức tạp hạt nhân là tuyến tính so với các khía cạnh khác. Ngoài ra, độ phức tạp của việc đào tạo dao động từ 'O (n^2)' (smalll 'C') tới' O (n^3) '(lớn' C'). Thứ ba, kích thước đầu vào không quan trọng nhiều trong độ phức tạp tổng thể (mà là trong chức năng của số lượng các trường hợp đào tạo, không phải chiều kích). –

+0

Cảm ơn bạn. Đó là tham số C làm cho thuật toán làm việc chậm hơn tôi đã không suy nghĩ về. Và didn 'biết rằng rbf là hạt nhân phức tạp nhất - nhưng nó là sự thật, khi tôi thay đổi hạt nhân trên' poly 'nó đã cho kết quả trong 2 giờ. –

+0

@Marc - Cảm ơn các ý kiến. Có một sự khác biệt rất lớn giữa RBF và đa thức - không phải vì bản thân hàm hạt nhân phức tạp, mà là RHKS gây ra là, và đây là nơi tối ưu hóa diễn ra. Thứ hai, O (n^3) là giới hạn trên, rõ ràng cho C nhỏ nó nhanh hơn. Thứ ba - kích thước quan trọng vì nó nằm bên trong một chi phí của mỗi tính toán hạt nhân (ít quan trọng hơn) và khi nó tham gia vào sự phức tạp của sự phức tạp của RHKS gây ra (quan trọng hơn) – lejlot

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