Trăn phân số lớp

Sử dụng một tập hợp con các điểm đào tạo trong chức năng quyết định [được gọi là vectơ hỗ trợ], do đó, nó cũng hiệu quả về bộ nhớ

  • Đa năng. các chức năng hạt nhân khác nhau có thể được chỉ định cho chức năng quyết định. Các hạt nhân thông thường được cung cấp, nhưng cũng có thể chỉ định các hạt nhân tùy chỉnh.

  • Nhược điểm của máy vectơ hỗ trợ bao gồm

    • Nếu số lượng tính năng lớn hơn nhiều so với số lượng mẫu, hãy tránh quá khớp khi chọn Hàm hạt nhân và thuật ngữ chính quy hóa là rất quan trọng.

    • SVM không trực tiếp cung cấp ước tính xác suất, những ước tính này được tính toán bằng cách sử dụng xác thực chéo năm lần tốn kém [xem Điểm số và xác suất , bên dưới .

    Các máy vectơ hỗ trợ trong scikit-learning hỗ trợ cả vectơ mẫu dày đặc [

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    0 và có thể chuyển đổi thành vectơ đó bởi
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    1] và vectơ mẫu thưa thớt [bất kỳ
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    2] nào làm đầu vào. Tuy nhiên, để sử dụng SVM để đưa ra dự đoán cho dữ liệu thưa thớt, nó phải phù hợp với dữ liệu đó. Để có hiệu suất tối ưu, hãy sử dụng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    0 [dày đặc] hoặc
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    4 [thưa thớt] theo thứ tự C với
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    5

    1. 4. 1. Phân loại¶

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 là các lớp có khả năng thực hiện phân loại nhị phân và đa lớp trên tập dữ liệu

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7 là các phương pháp tương tự, nhưng chấp nhận các bộ tham số hơi khác nhau và có các công thức toán học khác nhau [xem phần Công thức toán học ]. Mặt khác,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 là một triển khai khác [nhanh hơn] của Phân loại vectơ hỗ trợ cho trường hợp hạt nhân tuyến tính. Lưu ý rằng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 không chấp nhận tham số
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    33, vì tham số này được coi là tuyến tính. Nó cũng thiếu một số thuộc tính của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7, như
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    36.

    Như các bộ phân loại khác,

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 lấy hai mảng đầu vào. một mảng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    00 có hình dạng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    01 chứa các mẫu đào tạo và một mảng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    02 nhãn lớp [chuỗi hoặc số nguyên], có hình dạng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    03

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    4

    Sau khi được trang bị, mô hình sau đó có thể được sử dụng để dự đoán các giá trị mới

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    

    Hàm quyết định của SVM [chi tiết trong Công thức toán học ] phụ thuộc vào một số tập hợp con của dữ liệu huấn luyện, được gọi là vectơ hỗ trợ. Một số thuộc tính của các vectơ hỗ trợ này có thể được tìm thấy trong các thuộc tính

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    04,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    36 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    06.

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    3

    ví dụ

    • SVM. Siêu phẳng phân cách lề tối đa ,

    • SVM phi tuyến tính

    • SVM-Anova. SVM với lựa chọn tính năng đơn biến ,

    1. 4. 1. 1. Phân loại nhiều lớp¶

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7 triển khai cách tiếp cận “một đối một” để phân loại nhiều lớp. Tổng cộng,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    09 bộ phân loại được xây dựng và mỗi bộ huấn luyện dữ liệu từ hai lớp. Để cung cấp giao diện nhất quán với các bộ phân loại khác, tùy chọn
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    30 cho phép chuyển đổi đơn điệu các kết quả của bộ phân loại “một đối một” thành chức năng quyết định “một chọi một” có hình dạng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    31

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    0

    Mặt khác,

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 thực hiện chiến lược đa lớp “một đấu với phần còn lại”, do đó đào tạo các mô hình
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    33

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    3

    Xem Công thức toán học để biết mô tả đầy đủ về hàm quyết định.

    Lưu ý rằng

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 cũng triển khai một chiến lược đa lớp thay thế, cái gọi là SVM đa lớp do Crammer và Singer xây dựng [ . Trong thực tế, phân loại một so với phần còn lại thường được ưu tiên hơn, vì kết quả hầu như tương tự nhau, nhưng thời gian chạy ít hơn đáng kể. ], by using the option
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    35. In practice, one-vs-rest classification is usually preferred, since the results are mostly similar, but the runtime is significantly less.

    Đối với “một chọi một”

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8, các thuộc tính
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    37 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    38 có hình dạng tương ứng là
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    39 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    50. Mỗi hàng của các hệ số tương ứng với một trong các bộ phân loại “một so với phần còn lại” của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    33 và tương tự đối với các phần chặn, theo thứ tự của lớp “một”

    Trong trường hợp “một đối một”

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7, bố cục của các thuộc tính có liên quan nhiều hơn một chút. Trong trường hợp nhân tuyến tính, các thuộc tính
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    37 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    38 có hình dạng tương ứng là
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    56 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    57. Điều này tương tự như cách bố trí cho
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 được mô tả ở trên, với mỗi hàng hiện tương ứng với một bộ phân loại nhị phân. Thứ tự các lớp từ 0 đến n là “0 vs 1”, “0 vs 2”, … “0 vs n”, “1 vs 2”, “1 vs 3”, “1 vs n”, “1 vs 2”, “1 vs 3”, “1 vs n”,. . . “n-1 so với n”

    Hình dáng của

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    59 là của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    50 với bố cục hơi khó nắm bắt. Các cột tương ứng với các vectơ hỗ trợ liên quan đến bất kỳ bộ phân loại “một đối một” nào của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    09. Mỗi vectơ hỗ trợ
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    52 có một hệ số kép trong mỗi bộ phân loại
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    53 so sánh lớp của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    52 với lớp khác. Lưu ý rằng một số, nhưng không phải tất cả, các hệ số kép này, có thể bằng không. Các mục nhập
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    53 trong mỗi cột là các hệ số kép này, được sắp xếp theo lớp đối lập

    Điều này có thể rõ ràng hơn với một ví dụ. xem xét bài toán ba lớp với lớp 0 có ba vectơ hỗ trợ \[v^{0}_0, v^{1}_0, v^{2}_0\] and class 1 and 2 having two support vectors \[v^{0}_1, v^{1}_1\] and \[v^{0}_2, v^{1}_2\] respectively. For each support vector \[v^{j}_i\] , có hai hệ số kép. Hãy gọi hệ số của vectơ hỗ trợ \[v^{j}_i\] trong bộ phân loại giữa các lớp \ . Sau đó,

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    59 trông như thế này. and \[k\] \[\alpha^{j}_{i,k}\]. Then
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    59 looks like this:

    \[\alpha^{0}_{0,1}\]

    \[\alpha^{1}_{0,1}\]

    \[\alpha^{2}_{0,1}\]

    \[\alpha^{0}_{1,0}\]

    \[\alpha^{1}_{1,0}\]

    \[\alpha^{0}_{2,0}\]

    \[\alpha^{1}_{2,0}\]

    \[\alpha^{0}_{0,2}\]

    \[\alpha^{1}_{0,2}\]

    \[\alpha^{2}_{0,2}\]

    \[\alpha^{0}_{1,2}\]

    \[\alpha^{1}_{1,2}\]

    \[\alpha^{0}_{2,1}\]

    \[\alpha^{1}_{2,1}\]

    Hệ số cho SV lớp 0

    Hệ số đối với SV lớp 1

    Hệ số đối với SV loại 2

    ví dụ

    • Viết các bộ phân loại SVM khác nhau trong tập dữ liệu mống mắt ,

    1. 4. 1. 2. Điểm số và xác suất¶

    Phương pháp

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    57 của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7 cho điểm mỗi lớp cho mỗi mẫu [hoặc một điểm cho mỗi mẫu trong trường hợp nhị phân]. Khi tùy chọn hàm tạo
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    50 được đặt thành
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    51, các ước tính xác suất thành viên của lớp [từ các phương thức
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    52 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    53] được bật. Trong trường hợp nhị phân, xác suất được hiệu chỉnh bằng cách sử dụng thang đo Platt [ 9 ]: logistic regression on the SVM’s scores, fit by an additional cross-validation on the training data. In the multiclass case, this is extended as per [ 10 ] .

    Ghi chú

    Quy trình hiệu chỉnh xác suất giống nhau có sẵn cho tất cả các công cụ ước tính thông qua

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    54 [xem Hiệu chỉnh xác suất ]. Trong trường hợp của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7, quy trình này được tích hợp sẵn trong libsvm, được sử dụng ngầm, do đó, nó không phụ thuộc vào scikit-learn's
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    54.

    Xác thực chéo liên quan đến mở rộng quy mô Platt là một hoạt động tốn kém cho các bộ dữ liệu lớn. Ngoài ra, các ước tính xác suất có thể không phù hợp với điểm số

    • "argmax" của điểm số có thể không phải là argmax của xác suất

    • trong phân loại nhị phân, một mẫu có thể được

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58 dán nhãn là thuộc loại tích cực ngay cả khi đầu ra của
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      52 nhỏ hơn 0. 5; . 5

    Phương pháp của Platt cũng được biết là có vấn đề về lý thuyết. Nếu điểm tin cậy là bắt buộc, nhưng những điểm này không nhất thiết phải là xác suất, thì nên đặt

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    61 và sử dụng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    57 thay vì
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    52

    Xin lưu ý rằng khi

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    64 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    65, không giống như
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    57, phương pháp
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 không cố gắng ngắt kết nối theo mặc định. Bạn có thể đặt
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    68 để đầu ra của
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 giống với
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    50, nếu không, lớp đầu tiên trong số các lớp bị ràng buộc sẽ luôn được trả về; . Xem Ví dụ bẻ dây SVM để biết ví dụ về cách bẻ dây.

    1. 4. 1. 3. Vấn đề mất cân bằng¶

    Trong các bài toán muốn tăng tầm quan trọng của các lớp nhất định hoặc các mẫu riêng lẻ nhất định, có thể sử dụng các tham số

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    51 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    52

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 [nhưng không phải
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7] triển khai tham số
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    51 trong phương thức
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    56. Đó là một từ điển có dạng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    57, trong đó giá trị là số dấu phẩy động > 0 đặt tham số
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 của lớp
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    59 thành
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    00. Hình dưới đây minh họa ranh giới quyết định của một vấn đề không cân bằng, có và không có hiệu chỉnh trọng số

    Dụng cụ

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    7,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    03,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    04,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    06 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    07 cho các mẫu riêng lẻ trong phương pháp
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    56 thông qua tham số
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    52. Tương tự như
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    51, điều này đặt tham số
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 cho ví dụ thứ i thành
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    12, điều này sẽ khuyến khích bộ phân loại lấy đúng các mẫu này. Hình bên dưới minh họa ảnh hưởng của trọng số mẫu đối với ranh giới quyết định. Kích thước của các vòng tròn tỷ lệ thuận với trọng lượng mẫu

    ví dụ

    • SVM. Tách siêu phẳng cho các lớp không cân bằng

    • SVM. Mẫu có trọng số ,

    1. 4. 2. Hồi quy¶

    Phương pháp Phân loại vectơ hỗ trợ có thể được mở rộng để giải các bài toán hồi quy. Phương pháp này được gọi là hồi quy véc tơ hỗ trợ

    Mô hình được tạo bởi phân loại vectơ hỗ trợ [như mô tả ở trên] chỉ phụ thuộc vào một tập hợp con của dữ liệu đào tạo, bởi vì hàm chi phí để xây dựng mô hình không quan tâm đến các điểm đào tạo nằm ngoài lề. Tương tự, mô hình được tạo bởi Hồi quy vectơ hỗ trợ chỉ phụ thuộc vào một tập hợp con của dữ liệu đào tạo, bởi vì hàm chi phí bỏ qua các mẫu có dự đoán gần với mục tiêu của chúng

    Có ba cách triển khai Hồi quy vectơ hỗ trợ khác nhau.

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    03,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    04 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    06.
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    06 cung cấp triển khai nhanh hơn
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    03 nhưng chỉ xem xét nhân tuyến tính, trong khi
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    04 triển khai công thức hơi khác so với
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    03 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    06. Xem Chi tiết triển khai để biết thêm chi tiết.

    Như với các lớp phân loại, phương thức fit sẽ nhận các vectơ đối số X, y, chỉ có điều trong trường hợp này, y dự kiến ​​sẽ có các giá trị dấu phẩy động thay vì các giá trị số nguyên

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    5

    ví dụ

    • Hỗ trợ hồi quy véc tơ [SVR] sử dụng nhân tuyến tính và phi tuyến tính

    1. 4. 3. Ước lượng mật độ, phát hiện tính mới¶

    Lớp

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    07 triển khai SVM một lớp được sử dụng để phát hiện ngoại lệ

    Xem Phát hiện tính mới và ngoại lệ để biết mô tả và cách sử dụng OneClassSVM.

    1. 4. 4. Độ phức tạp¶

    Máy vectơ hỗ trợ là công cụ mạnh mẽ, nhưng yêu cầu tính toán và lưu trữ của chúng tăng nhanh cùng với số lượng vectơ đào tạo. Cốt lõi của SVM là một bài toán lập trình bậc hai [QP], tách các vectơ hỗ trợ khỏi phần còn lại của dữ liệu huấn luyện. Bộ giải QP được sử dụng bởi quy mô triển khai dựa trên libsvm giữa \[O[n_{features} \times n_{samples}^2]\] và . Nếu dữ liệu quá thưa thớt \[O[n_{features} \times n_{samples}^3]\] depending on how efficiently the libsvm cache is used in practice [dataset dependent]. If the data is very sparse \[n_{features}\] nên được thay thế bằng số trung bình của các đối tượng khác 0 trong một vectơ mẫu.

    Đối với trường hợp tuyến tính, thuật toán được sử dụng trong

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 bởi triển khai liblinear hiệu quả hơn nhiều so với đối tác
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6 dựa trên libsvm của nó và có thể mở rộng gần như tuyến tính thành hàng triệu mẫu và/hoặc tính năng

    1. 4. 5. Mẹo sử dụng thực tế¶

    • Tránh sao chép dữ liệu. Đối với

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      6,
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      03,
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      7 và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      04, nếu dữ liệu được truyền cho một số phương thức nhất định không phải là độ chính xác kép và liền kề theo thứ tự C, dữ liệu sẽ được sao chép trước khi gọi triển khai C cơ bản. Bạn có thể kiểm tra xem một mảng numpy đã cho có liền kề với C hay không bằng cách kiểm tra thuộc tính
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      28 của nó

      Đối với

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      8 [và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      30], bất kỳ đầu vào nào được truyền dưới dạng một mảng có nhiều mảng sẽ được sao chép và chuyển đổi thành biểu diễn dữ liệu thưa thớt bên trong liblinear [dấu phẩy động có độ chính xác kép và chỉ số int32 của các thành phần khác 0]. Nếu bạn muốn điều chỉnh một trình phân loại tuyến tính quy mô lớn mà không sao chép một mảng chính xác kép liền kề C dày đặc làm đầu vào, chúng tôi khuyên bạn nên sử dụng lớp
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      31 thay thế. Hàm mục tiêu có thể được cấu hình gần giống như mô hình
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      8

    • Kích thước bộ đệm hạt nhân. Đối với

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      6,
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      03,
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      7 và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      04, kích thước của bộ đệm nhân có tác động mạnh đến thời gian chạy đối với các sự cố lớn hơn. Nếu bạn có đủ RAM, bạn nên đặt
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      37 thành giá trị cao hơn giá trị mặc định là 200[MB], chẳng hạn như 500[MB] hoặc 1000[MB]

    • Cài đặt C.

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58 là
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      39 theo mặc định và đó là một lựa chọn mặc định hợp lý. Nếu bạn có nhiều quan sát ồn ào, bạn nên giảm nó. giảm C tương ứng với chính quy hơn

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      8 và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      06 ít nhạy cảm hơn với
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58 khi nó trở nên lớn và kết quả dự đoán ngừng cải thiện sau một ngưỡng nhất định. Trong khi đó, các giá trị
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58 lớn hơn sẽ mất nhiều thời gian hơn để đào tạo, đôi khi lâu hơn tới 10 lần, như được hiển thị trong [ 11 ].

    • Thuật toán Support Vector Machine không phải là bất biến theo tỷ lệ, do đó, bạn nên điều chỉnh tỷ lệ dữ liệu của mình. Ví dụ: chia tỷ lệ từng thuộc tính trên vectơ đầu vào X thành [0,1] hoặc [-1,+1] hoặc chuẩn hóa nó để có giá trị trung bình 0 và phương sai 1. Lưu ý rằng phải áp dụng tỷ lệ tương tự cho vectơ thử nghiệm để thu được kết quả có ý nghĩa. Điều này có thể được thực hiện dễ dàng bằng cách sử dụng một

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      44

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      5

      Xem phần Dữ liệu tiền xử lý để biết thêm chi tiết về quy mô và chuẩn hóa.

    • Về tham số

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      45, trích dẫn [ 12 ] . Ta nhận thấy nếu số lần lặp lớn thì việc thu nhỏ lại có thể rút ngắn thời gian huấn luyện. Tuy nhiên, nếu chúng ta giải bài toán tối ưu một cách lỏng lẻo [e. g. , bằng cách sử dụng dung sai dừng lớn], mã mà không sử dụng thu nhỏ có thể nhanh hơn nhiều

    • Tham số

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      46 trong
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      7/
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      07/
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      04 xấp xỉ tỷ lệ lỗi đào tạo và vectơ hỗ trợ

    • Trong

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      6, nếu dữ liệu không cân bằng [e. g. nhiều tích cực và ít tiêu cực], đặt
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      51 và/hoặc thử các thông số phạt khác nhau
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58

    • Tính ngẫu nhiên của các triển khai cơ bản. Việc triển khai cơ bản của

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      6 và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      7 chỉ sử dụng trình tạo số ngẫu nhiên để xáo trộn dữ liệu để ước tính xác suất [khi
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      50 được đặt thành
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      51]. Tính ngẫu nhiên này có thể được kiểm soát bằng tham số
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      57. Nếu
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      50 được đặt thành
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      59 thì các công cụ ước tính này không phải là ngẫu nhiên và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      57 không ảnh hưởng đến kết quả. Việc triển khai cơ bản của
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      07 tương tự như của
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      6 và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      7. Vì không có ước tính xác suất nào được cung cấp cho
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      07, nó không phải là ngẫu nhiên

      Việc triển khai

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      8 cơ bản sử dụng trình tạo số ngẫu nhiên để chọn các tính năng khi khớp mô hình với hệ tọa độ kép gốc [i. e khi
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      66 được đặt thành
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      51]. Do đó, không có gì lạ khi có các kết quả hơi khác nhau cho cùng một dữ liệu đầu vào. Nếu điều đó xảy ra, hãy thử với tham số
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      68 nhỏ hơn. Tính ngẫu nhiên này cũng có thể được kiểm soát bằng tham số
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      57. Khi
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      66 được đặt thành
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      59, việc triển khai cơ bản của
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      8 không phải là ngẫu nhiên và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      57 không ảnh hưởng đến kết quả

    • Sử dụng hình phạt L1 như được cung cấp bởi

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      74 mang lại một giải pháp thưa thớt, tôi. e. chỉ một tập hợp con của trọng số tính năng khác 0 và đóng góp vào chức năng quyết định. Tăng
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58 mang lại một mô hình phức tạp hơn [nhiều tính năng hơn được chọn]. Giá trị
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      58 tạo ra mô hình “null” [tất cả các trọng số bằng 0] có thể được tính bằng cách sử dụng
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      77

    1. 4. 6. Các hàm hạt nhân¶

    Chức năng kernel có thể là bất kỳ chức năng nào sau đây

    • tuyến tính. \[\langle x, x'\rangle\] .

    • đa thức. \[[\gamma \langle x, x'\rangle + r]^d\] , trong đó \ . is specified by parameter

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      78, \[r\] by
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      79.

    • rbf. \[\exp[-\gamma \. x-x'\. ^2]\] , trong đó \[\gamma\] được chỉ định bởi tham số

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      80, phải lớn hơn .

    • sigmoid \[\tanh[\gamma \langle x,x'\rangle + r]\] , trong đó \[r\] is specified by

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      79.

    Các kernel khác nhau được chỉ định bởi tham số

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    33

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    5

    Xem thêm Xấp xỉ hạt nhân để biết giải pháp sử dụng hạt nhân RBF nhanh hơn và có khả năng mở rộng hơn.

    1. 4. 6. 1. Thông số của hạt nhân RBF¶

    Khi đào tạo một SVM với hạt nhân Radial Basis Function [RBF], hai tham số phải được xem xét.

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    80. Tham số
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58, chung cho tất cả các hạt nhân SVM, đánh đổi việc phân loại sai các ví dụ huấn luyện để lấy sự đơn giản của bề mặt quyết định.
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 thấp làm cho bề mặt quyết định trở nên trơn tru, trong khi
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 cao nhằm mục đích phân loại chính xác tất cả các ví dụ đào tạo.
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    80 xác định mức độ ảnh hưởng của một ví dụ đào tạo.
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    80 càng lớn thì các ví dụ khác càng phải bị ảnh hưởng

    Lựa chọn đúng đắn của

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    80 là rất quan trọng đối với hiệu suất của SVM. Người ta khuyên nên sử dụng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    92 với
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    80 cách xa nhau theo cấp số nhân để chọn các giá trị tốt

    ví dụ

    • Thông số RBF SVM

    • SVM phi tuyến tính

    1. 4. 6. 2. Hạt nhân tùy chỉnh¶

    Bạn có thể xác định hạt nhân của riêng mình bằng cách cung cấp hạt nhân dưới dạng hàm python hoặc bằng cách tính toán trước ma trận Gram

    Bộ phân loại có nhân tùy chỉnh hoạt động giống như bất kỳ bộ phân loại nào khác, ngoại trừ điều đó

    • Trường

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      04 hiện đang trống, chỉ các chỉ số của vectơ hỗ trợ được lưu trữ trong
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      36

    • Một tham chiếu [chứ không phải bản sao] của đối số đầu tiên trong phương thức

      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      97 được lưu trữ để tham khảo trong tương lai. Nếu mảng đó thay đổi giữa việc sử dụng
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      97 và
      >>> clf.predict[[[2., 2.]]]
      array[[1]]
      
      99, bạn sẽ có kết quả không mong muốn

    1. 4. 6. 2. 1. Sử dụng các hàm Python làm hạt nhân¶

    Bạn có thể sử dụng các hạt nhân được xác định của riêng mình bằng cách chuyển một hàm tới tham số

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    33

    Hạt nhân của bạn phải lấy hai ma trận hình dạng

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    301,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    302 làm đối số và trả về một ma trận hạt nhân có hình dạng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    303

    Đoạn mã sau định nghĩa một nhân tuyến tính và tạo một cá thể phân loại sẽ sử dụng nhân đó

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    6

    ví dụ

    • SVM với nhân tùy chỉnh .

    1. 4. 6. 2. 2. Sử dụng ma trận Gram¶

    Bạn có thể chuyển các hạt nhân được tính toán trước bằng cách sử dụng tùy chọn

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    304. Sau đó, bạn nên chuyển ma trận Gram thay vì X cho các phương thức
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    56 và
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58. Các giá trị hạt nhân giữa tất cả các vectơ đào tạo và vectơ kiểm tra phải được cung cấp

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    5

    1. 4. 7. Công thức toán học¶

    Máy vectơ hỗ trợ xây dựng một siêu phẳng hoặc tập hợp các siêu phẳng trong không gian chiều cao hoặc vô hạn, có thể được sử dụng để phân loại, hồi quy hoặc các tác vụ khác. Theo trực giác, một siêu phẳng đạt được sự phân tách tốt có khoảng cách lớn nhất đến các điểm dữ liệu huấn luyện gần nhất của bất kỳ lớp nào [cái gọi là biên chức năng], vì nói chung, biên càng lớn thì lỗi tổng quát hóa của bộ phân loại càng thấp. Hình dưới đây cho thấy hàm quyết định đối với một vấn đề có thể phân tách tuyến tính, với ba mẫu trên các ranh giới biên, được gọi là "vectơ hỗ trợ"

    Nói chung, khi vấn đề không thể phân tách tuyến tính, các vectơ hỗ trợ là các mẫu trong ranh giới lề

    Chúng tôi khuyên bạn nên [ 13 ][14] as good references for the theory and practicalities of SVMs.

    1. 4. 7. 1. SVC¶

    Cho trước các vectơ huấn luyện \[x_i \in \mathbb{R}^p\] , i=1,…, n, in . \[y \in \{1, -1\}^n\], our goal is to find \[w \in \mathbb{R}^p\] and \[b \in \mathbb{R}\] such that the prediction given by \[\text{sign} [w^T\phi[x] + b]\] is correct for most samples.

    SVC giải bài toán cơ bản sau

    \[ \begin{align}\begin{aligned}\min_ {w, b, \zeta} \frac{1}{2} w^T w + C \sum_{i=1}^{n} \zeta_i\ . , n\end{split}\end{aligned}\end{align} \]

    Theo trực giác, chúng tôi đang cố gắng tối đa hóa lợi nhuận [bằng cách giảm thiểu \[. w. ^2 = w^Tw\] ], đồng thời bị phạt khi mẫu bị phân loại sai hoặc nằm trong ranh giới biên. Lý tưởng nhất là giá trị \[y_i [w^T \phi [x_i] + b]\] sẽ là . Nhưng các vấn đề thường không phải lúc nào cũng có thể tách biệt hoàn toàn bằng siêu phẳng, vì vậy chúng tôi cho phép một số mẫu ở khoảng cách for all samples, which indicates a perfect prediction. But problems are usually not always perfectly separable with a hyperplane, so we allow some samples to be at a distance \[\zeta_i\] so với lề chính xác của chúng . Thuật ngữ phạt

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 kiểm soát cường độ của hình phạt này và do đó, hoạt động như một tham số chuẩn hóa nghịch đảo [xem ghi chú bên dưới].

    Vấn đề kép đối với nguyên thủy là

    \[ \begin{align}\begin{aligned}\min_{\alpha} \frac{1}{2} \alpha^T Q \alpha - e^T \alpha\\\begin{split} \textrm {tùy thuộc vào . , n\end{split}\end{aligned}\end{align} \]

    trong đó \[e\] là vectơ của tất cả các đơn vị và \[Q\ . Các số hạng is an \[n\] by \[n\] positive semidefinite matrix, \[Q_{ij} \equiv y_i y_j K[x_i, x_j]\], where \[K[x_i, x_j] = \phi [x_i]^T \phi [x_j]\] is the kernel. The terms \[\alpha_i\] được gọi là các hệ số đối ngẫu và chúng có giới hạn trên bởi \[ . Biểu diễn kép này làm nổi bật thực tế là các vectơ đào tạo được ánh xạ hoàn toàn vào một không gian chiều cao hơn [có thể là vô hạn] bởi hàm . This dual representation highlights the fact that training vectors are implicitly mapped into a higher [maybe infinite] dimensional space by the function \[\phi\] . xem thủ thuật hạt nhân.

    Sau khi vấn đề tối ưu hóa được giải quyết, đầu ra của hàm quyết định cho một mẫu nhất định \[x . becomes:

    \[\sum_{i\in SV} y_i \alpha_i K[x_i, x] + b,\]

    và lớp dự đoán tương ứng với dấu hiệu của nó. Chúng ta chỉ cần tính tổng các vectơ hỗ trợ [i. e. các mẫu nằm trong lề] vì hệ số kép \[\alpha_i\] bằng 0 đối với các mẫu khác.

    Bạn có thể truy cập các tham số này thông qua các thuộc tính

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    59 chứa sản phẩm \[y_i \alpha_i\] ,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    04 chứa các vectơ hỗ trợ \[b\]

    Ghi chú

    Mặc dù các mô hình SVM có nguồn gốc từ libsvm và liblinear sử dụng

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    58 làm tham số chuẩn hóa, hầu hết các công cụ ước tính khác sử dụng
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    312. Sự tương đương chính xác giữa lượng chính quy hóa của hai mô hình phụ thuộc vào hàm mục tiêu chính xác được tối ưu hóa bởi mô hình. Ví dụ: khi công cụ ước tính được sử dụng là hồi quy
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    313, mối quan hệ giữa chúng được đưa ra dưới dạng \[C = \frac{1}{alpha}\] .

    1. 4. 7. 2. LinearSVC¶

    Vấn đề nguyên thủy có thể được xây dựng tương đương như

    \[\min_ {w, b} \frac{1}{2} w^T w + C \sum_{i=1}^{n}\max[0, 1 - y_i [w^T \phi[x_i

    nơi chúng tôi sử dụng mất bản lề. Đây là dạng được tối ưu hóa trực tiếp bởi

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8, nhưng không giống như dạng kép, dạng này không liên quan đến sản phẩm bên trong giữa các mẫu, vì vậy không thể áp dụng thủ thuật nhân nổi tiếng. Đây là lý do tại sao chỉ có hạt nhân tuyến tính được hỗ trợ bởi
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    8 [ \[\phi\] là hàm nhận dạng].

    1. 4. 7. 3. NuSVC¶

    Công thức \[\nu\] -SVC [15] is a reparameterization of the \[C\]-SVC and therefore mathematically equivalent.

    Chúng tôi giới thiệu một tham số mới \[\nu\] [thay vì \[C\ . ] which controls the number of support vectors and margin errors: \[\nu \in [0, 1]\] là giới hạn trên của tỷ lệ lỗi lề và giới hạn dưới của tỷ lệ hỗ trợ . Lỗi lề tương ứng với một mẫu nằm ở phía sai của ranh giới lề của nó. nó bị phân loại sai hoặc được phân loại chính xác nhưng không nằm ngoài lề.

    1. 4. 7. 4. SVR¶

    Cho trước các vectơ huấn luyện \[x_i \in \mathbb{R}^p\] , i=1,…, n và . \[y \in \mathbb{R}^n\] \[\varepsilon\]-SVR solves the following primal problem:

    \[ \begin{align}\begin{aligned}\min_ {w, b, \zeta, \zeta^*} \frac{1}{2} w^T w + C \sum_{i=1}^{ . , n\end{split}\end{aligned}\end{align} \]

    Ở đây, chúng tôi đang xử phạt các mẫu có dự đoán cách ít nhất \[\varepsilon\] so với mục tiêu thực sự của chúng. Những mẫu này xử phạt mục tiêu bằng cách \[\zeta_i\] hoặc \[\zeta_i^*\], depending on whether their predictions lie above or below the \[\varepsilon\] tube.

    Vấn đề kép là

    \[ \begin{align}\begin{aligned}\min_{\alpha, \alpha^*} \frac{1}{2} [\alpha - \alpha^*]^T Q [\alpha - \alpha^* . , n\end{split}\end{aligned}\end{align} \]

    trong đó \[e\] là vectơ của tất cả các đơn vị, \[Q\] . Ở đây, các vectơ huấn luyện được ánh xạ hoàn toàn vào một không gian chiều cao hơn [có thể là vô hạn] bởi hàm is an \[n\] by \[n\] positive semidefinite matrix, \[Q_{ij} \equiv K[x_i, x_j] = \phi [x_i]^T \phi [x_j]\] is the kernel. Here training vectors are implicitly mapped into a higher [maybe infinite] dimensional space by the function \[\phi\] .

    Dự đoán là

    \[\sum_{i \in SV}[\alpha_i - \alpha_i^*] K[x_i, x] + b\]

    Các tham số này có thể được truy cập thông qua các thuộc tính

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    59 chứa sự khác biệt \[\alpha_i - \alpha_i^*\] ,
    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    04 mà \[b\]

    1. 4. 7. 5. SVR tuyến tính¶

    Vấn đề nguyên thủy có thể được xây dựng tương đương như

    \[\min_ {w, b} \frac{1}{2} w^T w + C \sum_{i=1}^{n}\max[0,. y_i - [w^T \phi[x_i] + b]. - \varepsilon],\]

    nơi chúng tôi tận dụng sự mất mát không nhạy cảm epsilon, tôi. e. lỗi nhỏ hơn \[\varepsilon\] được bỏ qua. Đây là hình thức được tối ưu hóa trực tiếp bởi

    >>> clf.predict[[[2., 2.]]]
    array[[1]]
    
    06.

    1. 4. 8. Chi tiết triển khai¶

    Trong nội bộ, chúng tôi sử dụng libsvm [ 12 ] và . Các thư viện này được bao bọc bằng C và Cython. Để biết mô tả về việc triển khai và chi tiết về các thuật toán được sử dụng, vui lòng tham khảo các bài báo tương ứng của họ. [11] to handle all computations. These libraries are wrapped using C and Cython. For a description of the implementation and details of the algorithms used, please refer to their respective papers.

    Người giới thiệu

    [ 9 ]

    Platt “Đầu ra xác suất cho SVM và so sánh với các phương pháp xác suất chính quy”

    [ 10 ]

    Wu, Lin và Weng, “Ước tính xác suất cho phân loại nhiều lớp bằng cách ghép đôi”, JMLR 5. 975-1005, 2004

    [ 11 ] [1,2]

    Fan, Rong-En, và cộng sự. , “LIBLINEAR. Một thư viện để phân loại tuyến tính lớn. ”, Tạp chí nghiên cứu máy học 9. Tháng 8 [2008]. 1871-1874

    [ 12 ] [1,2]

    Chang và Lin, LIBSVM. Thư viện cho các máy vectơ hỗ trợ

    [ 13 ]

    Bishop, Nhận dạng mẫu và học máy, chương 7 Máy hạt nhân thưa thớt

    [ 14 ]

    “Hướng dẫn hồi quy vectơ hỗ trợ” Alex J. Smola, Bernhard Schölkopf - Lưu trữ thống kê và máy tính Tập 14 Số 3, tháng 8 năm 2004, p. 199-222

    [ 15 ]

    Schölkopf et. al Thuật toán vectơ hỗ trợ mới

    [ 16 ]

    Crammer và Singer về việc triển khai thuật toán của các máy vectơ dựa trên hạt nhân đa lớp, JMLR 2001

    Chủ Đề