Trong bài đăng này, bạn sẽ tìm hiểu về siêu tham số hạt nhân SVM RBF [Radial Basis Function] với ví dụ mã python
Ajitesh Kumar
CỐT LÕI ·Tháng 7. 28, 20 · Hướng dẫnThích [2]
Bình luận
Tiết kiệm
tiếng riu ríu
15. 26K Lượt xem
Tham gia cộng đồng DZone và có được trải nghiệm thành viên đầy đủ
Tham gia miễn phíTrong bài đăng này, bạn sẽ tìm hiểu về siêu tham số nhân SVM RBF [Radial Basis Function] với ví dụ về mã python. Sau đây là hai siêu tham số mà bạn cần biết khi đào tạo mô hình học máy với nhân SVM và RBF
- Gamma
- C [còn gọi là tham số chuẩn hóa]
Biết các khái niệm về tham số SVM như Gamma và C được sử dụng với hạt nhân RBF sẽ cho phép bạn chọn các giá trị Gamma và C phù hợp và đào tạo mô hình tối ưu nhất bằng thuật toán SVM. Hãy hiểu tại sao chúng ta nên sử dụng các chức năng kernel như RBF
Tại sao nên sử dụng hạt nhân RBF?
Khi tập dữ liệu không thể tách rời theo tuyến tính hay nói cách khác, tập dữ liệu là phi tuyến tính, bạn nên sử dụng các hàm nhân như RBF. Đối với tập dữ liệu có thể phân tách tuyến tính [tập dữ liệu tuyến tính], người ta có thể sử dụng hàm kernel tuyến tính [kernel="linear"]. Hiểu rõ về thời điểm sử dụng các hàm kernel sẽ giúp đào tạo mô hình tối ưu nhất bằng thuật toán SVM. Chúng tôi sẽ sử dụng bộ dữ liệu Ung thư vú Sklearn để hiểu các khái niệm nhân SVM RBF trong bài đăng này. Biểu đồ phân tán được đưa ra dưới đây thể hiện thực tế là tập dữ liệu không thể tách rời tuyến tính và có thể nên áp dụng phương pháp kernel để huấn luyện mô hình
Biểu đồ trên được tạo bằng cách sử dụng hai thuộc tính đầu tiên của bộ dữ liệu ung thư vú sklearn như được hiển thị trong mẫu mã bên dưới
Java
x
20
1
import pandas as pd
2
import matplotlib.pyplot as plt
3
from sklearn import datasets
4
5
# Load the breast cancer dataset
6
#
7
bc = datasets.load_breast_cancer[]
8
df = pd.DataFrame[data=bc.data]
9
df["label"] = bc.target
10
11
________số 812
#
13
import matplotlib.pyplot as plt
014
import matplotlib.pyplot as plt
115
import matplotlib.pyplot as plt
216
import matplotlib.pyplot as plt
317
import matplotlib.pyplot as plt
418
import matplotlib.pyplot as plt
519
import matplotlib.pyplot as plt
620
import matplotlib.pyplot as plt
7Cho rằng tập dữ liệu là phi tuyến tính, nên sử dụng phương thức nhân và do đó hàm nhân như RBF
Chức năng và tham số hạt nhân SVM RBF
Khi sử dụng nhân SVM RBF để huấn luyện mô hình, người ta có thể sử dụng các tham số sau
Tham số hạt nhân - Giá trị Gamma
Tham số gamma xác định mức độ ảnh hưởng của một ví dụ đào tạo đơn lẻ, với giá trị thấp nghĩa là "xa" và giá trị cao nghĩa là "gần". Các giá trị gamma thấp hơn dẫn đến các mô hình có độ chính xác thấp hơn và giống như các giá trị gamma cao hơn. Chính các giá trị trung gian của gamma mang lại một mô hình có ranh giới quyết định tốt. Điều tương tự cũng được thể hiện trong các ô được đưa ra trong hình 2
Các ô bên dưới biểu thị ranh giới quyết định cho các giá trị gamma khác nhau với giá trị C được đặt là 0. 1 cho mục đích minh họa. Lưu ý rằng khi giá trị Gamma tăng lên, các ranh giới quyết định sẽ phân loại các điểm một cách chính xác. Tuy nhiên, sau một thời điểm nhất định [Gamma = 1. 0 trở đi trong sơ đồ bên dưới], độ chính xác của mô hình sẽ giảm. Như vậy có thể hiểu rằng việc lựa chọn các giá trị Gamma phù hợp là rất quan trọng. Đây là mã được sử dụng
Java
import matplotlib.pyplot as plt
81
1
import matplotlib.pyplot as plt
92
from sklearn import datasets
0Lưu ý một số điều sau trong các ô trên
- Khi gamma rất nhỏ [0. 008 hoặc 0. 01], mô hình quá hạn chế và không thể nắm bắt được độ phức tạp hoặc "hình dạng" của dữ liệu. Vùng ảnh hưởng của bất kỳ vectơ hỗ trợ nào được chọn sẽ bao gồm toàn bộ tập huấn luyện. Mô hình kết quả sẽ hoạt động tương tự như một mô hình tuyến tính với một tập hợp các siêu phẳng phân tách các tâm có mật độ cao của bất kỳ cặp hai lớp nào. So sánh với sơ đồ trong phần tiếp theo, nơi các ranh giới quyết định cho một mô hình được đào tạo với nhân tuyến tính được hiển thị
- Đối với các giá trị trung gian của gamma [0. 05, 0. 1, 0. 5], có thể thấy trên đồ thị thứ hai có thể tìm thấy các mô hình tốt
- Đối với các giá trị gamma lớn hơn [3. 0, 7. 0, 11. 0] trong biểu đồ trên, bán kính của vùng ảnh hưởng của vectơ hỗ trợ chỉ bao gồm chính vectơ hỗ trợ và không có lượng chính quy nào với C sẽ có thể ngăn chặn quá mức
Tham số hạt nhân - Giá trị C
Nói một cách đơn giản, tham số C là tham số chuẩn hóa được dùng để đặt dung sai của mô hình nhằm cho phép phân loại sai các điểm dữ liệu nhằm đạt được sai số tổng quát hóa thấp hơn. Giá trị của C càng cao, dung sai càng nhỏ và thứ được đào tạo là một bộ phân loại có biên độ tối đa. Giá trị của C càng nhỏ thì khả năng phân loại sai càng lớn và thứ được đào tạo là bộ phân loại có biên độ mềm khái quát hóa tốt hơn trình phân loại có biên độ tối đa. Giá trị C kiểm soát hình phạt phân loại sai. Giá trị C lớn sẽ dẫn đến hình phạt phân loại sai cao hơn và giá trị C nhỏ hơn sẽ dẫn đến hình phạt phân loại sai nhỏ hơn. Với giá trị C lớn hơn, biên độ nhỏ hơn sẽ được chấp nhận nếu hàm quyết định tốt hơn trong việc phân loại chính xác tất cả các điểm đào tạo. Mô hình có thể overfit với tập dữ liệu huấn luyện. C thấp hơn sẽ khuyến khích biên độ lớn hơn, do đó chức năng quyết định đơn giản hơn, với chi phí đào tạo chính xác.
Sơ đồ bên dưới biểu thị ranh giới quyết định với các giá trị C khác nhau đối với một mô hình được đào tạo với hạt nhân tuyến tính và bộ dữ liệu Sklearn Vú Cancer. Lưu ý ranh giới quyết định cho các giá trị khác nhau của C. Lưu ý rằng khi giá trị của C tăng, độ chính xác của mô hình tăng. Điều này phù hợp với những gì chúng ta đã biết trước đó rằng giá trị nhỏ hơn của C cho phép phân loại sai nhiều hơn và do đó độ chính xác của mô hình sẽ thấp hơn. Tuy nhiên, sau một thời điểm nhất định [C=1. 0], độ chính xác ngừng tăng
Chúng ta hãy xem xét các giá trị khác nhau của C và các ranh giới quyết định liên quan khi mô hình SVM được đào tạo bằng hạt nhân RBF [kernel = "rbf"]. Sơ đồ bên dưới thể hiện mô hình được đào tạo với mã sau đây cho các giá trị khác nhau của C. Lưu ý giá trị của gamma được đặt thành 0. 1 và hạt nhân = 'rbf'