Tin tức và phân tích của tất cả các thiết bị di động

Hỗ trợ máy vectơ (SVM) cho học máy

Support Vector Machine là một trong những thuật toán học máy phổ biến nhất. Nó hiệu quả và có thể đào tạo trên các tập dữ liệu hạn chế. Nhưng nó là gì?

Máy vectơ hỗ trợ (SVM) là gì?

Máy vectơ hỗ trợ là một thuật toán học máy sử dụng phương pháp học có giám sát để tạo ra mô hình phân loại nhị phân. Đây là một miếng bánh. Bài viết này sẽ giải thích SVM và mối quan hệ của nó với xử lý ngôn ngữ tự nhiên. Nhưng trước tiên, hãy phân tích cách hoạt động của máy vectơ hỗ trợ.

SVM hoạt động như thế nào?

Hãy xem xét một vấn đề phân loại đơn giản trong đó chúng ta có dữ liệu có hai đặc điểm x và y và một đầu ra là phân loại có màu đỏ hoặc xanh lam. Chúng ta có thể vẽ một tập dữ liệu tưởng tượng trông như thế này:

Với dữ liệu như vậy, nhiệm vụ sẽ là tạo ra ranh giới quyết định. Ranh giới quyết định là đường phân cách hai lớp điểm dữ liệu của chúng tôi. Đây là cùng một tập dữ liệu nhưng có ranh giới quyết định:

Với ranh giới quyết định này, sau đó chúng ta có thể dự đoán điểm dữ liệu thuộc về lớp nào cho trước, nơi nó nằm so với ranh giới quyết định. Thuật toán máy vectơ hỗ trợ tạo ra ranh giới quyết định tốt nhất sẽ được sử dụng để phân loại các điểm.

Nhưng chúng ta có ý gì khi nói đến giới hạn của quyết định tốt nhất?

Có thể lập luận rằng ranh giới quyết định tốt nhất là ranh giới tối đa hóa khoảng cách của nó với một trong các vectơ hỗ trợ. Các vectơ hỗ trợ là các điểm dữ liệu của một lớp gần nhất với lớp đối diện. Những điểm dữ liệu này có nguy cơ phân loại sai lớn nhất do chúng nằm gần một lớp khác.

Do đó, việc huấn luyện máy vectơ hỗ trợ là nỗ lực tìm kiếm một đường tối đa hóa khoảng cách giữa các vectơ hỗ trợ.

Cũng cần lưu ý rằng vì ranh giới quyết định có liên quan đến các vectơ hỗ trợ nên chúng là yếu tố quyết định duy nhất về vị trí của ranh giới quyết định. Do đó, các điểm dữ liệu khác là dư thừa. Vì vậy việc huấn luyện chỉ yêu cầu các vectơ hỗ trợ.

Trong ví dụ này, ranh giới quyết định được tạo là một đường thẳng. Điều này chỉ là do tập dữ liệu chỉ có hai tính năng. Khi tập dữ liệu có ba đặc điểm, ranh giới quyết định được tạo là một mặt phẳng chứ không phải một đường thẳng. Và khi nó có bốn đặc điểm trở lên, ranh giới quyết định được gọi là siêu phẳng.

Dữ liệu không thể tách tuyến tính

Trong ví dụ trên, dữ liệu rất đơn giản được bao gồm, khi được vẽ đồ thị, có thể được phân tách bằng ranh giới quyết định tuyến tính. Hãy xem xét một trường hợp khác trong đó dữ liệu được vẽ như sau:

Trong trường hợp này, không thể phân tách dữ liệu bằng các dòng. Nhưng chúng ta có thể tạo ra một đặc điểm khác, z. Và đặc điểm này có thể được mô tả bằng phương trình: z = x^2 + y^2. Chúng ta có thể thêm z làm trục thứ ba vào mặt phẳng để làm cho nó có ba chiều.

Khi chúng ta xem biểu đồ 3D có trục x nằm ngang và trục z dọc, chúng ta sẽ có một chế độ xem trông giống như thế này:

Giá trị z xác định khoảng cách từ điểm gốc so với các điểm khác trong mặt phẳng XY cũ. Kết quả là các điểm màu xanh gần gốc tọa độ có giá trị z thấp.

Mặc dù các điểm màu đỏ ở xa điểm gốc có giá trị z cao hơn, nhưng việc vẽ đồ thị theo giá trị z của chúng cho chúng ta một phân loại rõ ràng có thể được rút ra bởi ranh giới quyết định tuyến tính như trong hình.

Đây là một ý tưởng mạnh mẽ được sử dụng trong các máy vectơ hỗ trợ. Tổng quát hơn, đó là việc ánh xạ các kích thước tới nhiều kích thước hơn để các điểm dữ liệu có thể được phân tách bằng một ranh giới tuyến tính. Các hàm chịu trách nhiệm cho việc này là các hàm kernel. Có nhiều hàm kernel như sigmoidal, tuyến tính, phi tuyến tính và RBF.

Để làm cho việc ánh xạ các hàm này hiệu quả hơn, SVM sử dụng thủ thuật kernel.

SVM trong học máy

Máy Vector hỗ trợ là một trong nhiều thuật toán được sử dụng trong học máy cùng với các thuật toán phổ biến như cây quyết định và mạng lưới thần kinh. Nó được ưa thích vì nó hoạt động tốt với ít dữ liệu hơn các thuật toán khác. Nó thường được sử dụng để làm những việc sau:

  • Phân loại văn bản: Phân loại dữ liệu văn bản như nhận xét và đánh giá thành một hoặc nhiều danh mục
  • Nhận diện khuôn mặt: Phân tích hình ảnh để phát hiện khuôn mặt nhằm thêm bộ lọc vào thực tế tăng cường chẳng hạn
  • Phân loại ảnh: Máy vectơ hỗ trợ có thể phân loại ảnh hiệu quả hơn so với các phương pháp khác.

Vấn đề phân loại văn bản

Internet chứa đầy hàng tấn dữ liệu văn bản. Tuy nhiên, phần lớn dữ liệu này không có cấu trúc và không được gắn nhãn. Để sử dụng tốt hơn dữ liệu văn bản này và hiểu rõ hơn về nó, cần phải phân loại. Ví dụ về các tình huống trong đó văn bản được phân loại bao gồm:

  • Khi các tweet được chia thành các chủ đề để mọi người có thể theo dõi các chủ đề mà họ quan tâm
  • Khi một email được phân loại là Cộng đồng, Ưu đãi hoặc Thư rác
  • Khi bình luận bị phân loại là mang tính chất hận thù hoặc tục tĩu trên các diễn đàn công khai

Cách SVM hoạt động với phân loại ngôn ngữ tự nhiên

Máy vectơ hỗ trợ dùng để phân loại văn bản thành văn bản thuộc một chủ đề nhất định và văn bản không thuộc chủ đề đó. Điều này đạt được trước tiên bằng cách chuyển đổi và biểu diễn dữ liệu văn bản thành tập dữ liệu có một số tính năng.

Một cách để làm điều này là tạo một hàm cho mỗi từ trong tập dữ liệu. Sau đó, đối với mỗi điểm dữ liệu văn bản, bạn ghi lại số lần xuất hiện của mỗi từ. Vì vậy, giả sử có những từ duy nhất trong tập dữ liệu; bạn sẽ có các tính năng trong tập dữ liệu của mình.

Ngoài ra, bạn sẽ cung cấp phân loại cho các điểm dữ liệu này. Mặc dù các phân loại này được gắn nhãn bằng văn bản nhưng hầu hết việc triển khai SVM đều yêu cầu nhãn số.

Vì vậy, bạn sẽ cần chuyển đổi các nhãn này thành số trước khi huấn luyện. Sau khi chuẩn bị tập dữ liệu bằng cách sử dụng các hàm này làm tọa độ, bạn có thể sử dụng SVM để phân loại văn bản.

Tạo SVM bằng Python

Để tạo máy vectơ hỗ trợ (SVM) trong Python, bạn có thể sử dụng lớp SVC từ thư viện sklearn.svm. Dưới đây là ví dụ về cách sử dụng lớp SVC để xây dựng mô hình SVM trong Python:

from sklearn.svm import SVC 

# Load the dataset 
X = ... y = ... 

# Split the data into training and test sets 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=19) 

# Create an SVM model 
model = SVC(kernel="linear") 

# Train the model on the training data 
model.fit(X_train, y_train) 

# Evaluate the model on the test data 
accuracy = model.score(X_test, y_test) 

print("Accuracy: ", accuracy) 

Trong ví dụ này, trước tiên chúng tôi nhập lớp SVC từ thư viện sklearn.svm. Sau đó, chúng tôi tải tập dữ liệu và chia nó thành tập huấn luyện và tập kiểm tra.

Sau đó, chúng tôi tạo SVM bằng cách khởi tạo đối tượng SVC và chỉ định tham số kernel là “tuyến tính”. Sau đó, chúng tôi huấn luyện mô hình trên dữ liệu huấn luyện bằng phương pháp khớp và đánh giá mô hình trên dữ liệu thử nghiệm bằng phương pháp đánh giá. Phương thức tính điểm trả về độ chính xác của mô hình mà chúng ta in ra bảng điều khiển.

Bạn cũng có thể chỉ định các tham số khác của đối tượng SVC, chẳng hạn như tham số C, kiểm soát cường độ chính quy hóa và tham số gamma, kiểm soát hệ số nhân cho một số hạt nhân nhất định.

Lợi ích của SVM

Dưới đây là danh sách một số lợi ích của việc sử dụng máy vectơ hỗ trợ (SVM):

  • Hiệu quả: SVM thường có hiệu quả trong việc huấn luyện, đặc biệt khi số lượng mẫu lớn.
  • Chống ồn: SVM tương đối miễn nhiễm với nhiễu trong dữ liệu huấn luyện vì chúng cố gắng tìm một bộ phân loại có lề tối đa ít nhạy cảm với nhiễu hơn các bộ phân loại khác.
  • Bộ nhớ hiệu quả: SVM chỉ yêu cầu một tập hợp con dữ liệu huấn luyện nằm trong bộ nhớ tại bất kỳ thời điểm nào, giúp chúng có hiệu suất bộ nhớ cao hơn các thuật toán khác.
  • Hiệu quả trong không gian đa chiều: SVM vẫn có thể hoạt động tốt ngay cả khi số lượng hàm vượt quá số lượng mẫu.
  • Tính linh hoạt: SVM có thể được sử dụng cho các nhiệm vụ phân loại và hồi quy, đồng thời có thể xử lý nhiều loại dữ liệu khác nhau, bao gồm cả dữ liệu tuyến tính và phi tuyến tính.

Bây giờ chúng ta hãy xem một số tài nguyên tốt nhất để học Máy vectơ hỗ trợ (SVM).

Phương pháp giáo dục

Giới thiệu máy vectơ hỗ trợ

Cuốn sách Giới thiệu về Máy vectơ hỗ trợ này giới thiệu một cách toàn diện và dần dần cho bạn các phương pháp học tập dựa trên kernel.

Cung cấp nền tảng vững chắc về lý thuyết máy vectơ hỗ trợ.

Hỗ trợ ứng dụng máy Vector

Trong khi cuốn sách đầu tiên tập trung vào lý thuyết về máy vectơ hỗ trợ, cuốn sách này về các ứng dụng của máy vectơ hỗ trợ lại tập trung vào các ứng dụng thực tế của chúng.

Nó xem xét cách SVM được sử dụng trong xử lý hình ảnh, phát hiện mẫu và thị giác máy tính.

Máy Vector Hỗ trợ (Khoa học Máy tính và Thống kê)

Mục đích của cuốn sách này về Máy vectơ hỗ trợ (Khoa học máy tính và Thống kê) là cung cấp cái nhìn tổng quan về các nguyên tắc cơ bản về tính hiệu quả của Máy vectơ hỗ trợ (SVM) trong nhiều ứng dụng.

Các tác giả nhấn mạnh một số yếu tố góp phần vào sự thành công của SVM, bao gồm khả năng hoạt động tốt với một số tham số có thể điều chỉnh hạn chế, khả năng chống lại các loại lỗi và dị thường khác nhau cũng như hiệu suất tính toán hiệu quả của chúng so với các phương pháp khác.

Khoa học với tinh hoàn

“Học với hạt nhân” là cuốn sách giới thiệu với độc giả về Máy Vector (SVM) và các kỹ thuật hạt nhân liên quan.

Nó được thiết kế để cung cấp cho người đọc sự hiểu biết cơ bản về toán học và kiến ​​thức họ cần để bắt đầu sử dụng các thuật toán hạt nhân trong học máy. Cuốn sách nhằm mục đích cung cấp phần giới thiệu kỹ lưỡng nhưng dễ tiếp cận về SVM và các phương thức kernel.

Hỗ trợ máy vectơ với Sci-kit Learn

Khóa học Trực tuyến Máy Vector Hỗ trợ với Sci-kit Learn từ mạng dự án Coursera sẽ hướng dẫn bạn cách triển khai mô hình SVM bằng thư viện máy học phổ biến, Sci-Kit Learn.

Ngoài ra, bạn sẽ tìm hiểu lý thuyết đằng sau SVM và xác định điểm mạnh cũng như hạn chế của chúng. Khóa học ở cấp độ mới bắt đầu và kéo dài khoảng 2,5 giờ.

Hỗ trợ Máy Vector bằng Python: khái niệm và mã

Khóa học trực tuyến trả phí này về Máy vectơ hỗ trợ Python của Udemy bao gồm tối đa 6 giờ hướng dẫn bằng video và đi kèm với chứng chỉ.

Nó bao gồm các SVM và cách chúng có thể được triển khai một cách mạnh mẽ trong Python. Ngoài ra, nó còn bao gồm các ứng dụng kinh doanh của máy vectơ hỗ trợ.

Học máy và AI: hỗ trợ cho máy vectơ trong Python

Trong khóa học máy học và AI này, bạn sẽ học cách sử dụng máy vectơ hỗ trợ (SVM) cho nhiều ứng dụng thực tế, bao gồm nhận dạng hình ảnh, phát hiện thư rác, chẩn đoán y tế và phân tích hồi quy.

Bạn sẽ sử dụng ngôn ngữ lập trình Python để triển khai các mô hình ML cho các ứng dụng này.

những từ cuối

Trong bài viết này, chúng ta đã tìm hiểu ngắn gọn về lý thuyết đằng sau máy vectơ hỗ trợ. Chúng tôi đã tìm hiểu về cách sử dụng chúng trong học máy và xử lý ngôn ngữ tự nhiên.

Chúng tôi cũng đã thấy cách triển khai nó trông như thế nào khi sử dụng scikit-learn. Ngoài ra, chúng ta còn nói về những ứng dụng thực tế và ưu điểm của máy vectơ hỗ trợ.

Mặc dù bài viết này chỉ là phần giới thiệu nhưng các tài nguyên bổ sung đề xuất giải thích chi tiết hơn, giải thích thêm về máy vectơ hỗ trợ. Với tính linh hoạt và hiệu suất của chúng, SVM rất đáng để hiểu để phát triển với tư cách là nhà khoa học dữ liệu và kỹ sư ML.

Sau đó, bạn có thể kiểm tra các mô hình học máy tốt nhất.

Mục lục