Chuyển đến nội dung chính

Hồi quy Vectơ Hỗ trợ (SVR): Cách hoạt động và khi nào nên dùng

Hồi quy Vectơ Hỗ trợ là phương pháp hồi quy dựa trên biên, cố ý bỏ qua các lỗi nhỏ, xử lý quan hệ phi tuyến qua kernel và hoạt động tốt trên dữ liệu thực tế nhiễu nơi hồi quy tiêu chuẩn tỏ ra hạn chế.
Đã cập nhật 4 thg 6, 2026  · 11 phút đọc

Các phương pháp hồi quy tiêu chuẩn tối thiểu hóa tổng sai số trên mọi điểm dữ liệu. Điều đó có nghĩa là mọi phần dư, dù nhỏ đến đâu, cũng kéo mô hình theo một hướng nào đó. Kết quả là bạn có một mô hình nhạy với nhiễu và ngoại lệ.

Ngược lại, mô hình hồi quy vectơ hỗ trợ phù hợp một hàm trong phạm vi dung sai và bỏ qua các lỗi nằm bên trong phạm vi đó. Khoảng này thay đổi quan niệm về tối ưu hóa. Thay vì cố gắng tối ưu từng điểm dữ liệu, SVR tập trung vào cấu trúc tổng thể của dữ liệu, nhờ vậy, như tôi hy vọng sẽ cho bạn thấy, nó vững vàng trên dữ liệu thực tế.

Nếu bạn cần kiến thức nhập môn trước khi bắt đầu, hãy đọc bài Hồi quy tuyến tính trong Python của chúng tôi để có phần giới thiệu về mô hình dự đoán.

Hồi quy Vectơ Hỗ trợ là gì?

Hồi quy Vectơ Hỗ trợ là một phương pháp hồi quy xây dựng trên cùng nền tảng với Máy Vectơ Hỗ trợ (SVM), một họ mô hình ban đầu được thiết kế cho các tác vụ phân loại như phát hiện thư rác hoặc nhận dạng hình ảnh.

Ý tưởng then chốt rất dễ hiểu - thay vì cố gắng tối thiểu hóa mọi sai số dự đoán, SVR khớp một hàm đồng thời cho phép một biên dung sai xung quanh nó. Các lỗi nằm trong biên đó không được tính. Mô hình tập trung vào việc có độ khớp tổng thể đúng, không phải sửa mọi sai lệch nhỏ.

Đó là điểm khác biệt của SVR so với hầu hết các mô hình hồi quy khác.

Các phương pháp hồi quy tiêu chuẩn xem mọi phần dư là tín hiệu. SVR xem phần lớn chúng là nhiễu. Kết quả là bạn có một mô hình ít bận tâm đến việc chính xác tại từng điểm và quan tâm nhiều hơn đến việc nắm đúng cấu trúc nền tảng của dữ liệu.

Ý tưởng cốt lõi đằng sau SVR

Trung tâm của SVR là cái gọi là ống epsilon - một biên dung sai bao quanh hàm đã khớp ở cả hai phía.

Bất kỳ điểm dữ liệu nào nằm trong ống đều được xem là đủ gần. SVR bỏ qua các điểm này khi huấn luyện mô hình. Chỉ những điểm nằm ngoài ống mới quan trọng, vì chúng thực sự định hình biên quyết định.

Ví dụ về ống Epsilon

Ví dụ về ống Epsilon

Bạn có thể diễn giải như sau:

  • Các điểm trong ống đóng góp sai số bằng không, bất kể chúng cách xa hàm bao nhiêu
  • Các điểm ngoài ống đóng góp sai số tỷ lệ với mức độ vượt quá biên
  • Mô hình được xác định bởi các điểm ngoài đó, không phải bởi phần lớn dữ liệu

Đây là điều khiến SVR khác với hồi quy tiêu chuẩn. Ở hồi quy tuyến tính, mọi điểm dữ liệu đều kéo mô hình - kể cả những điểm nhiễu. Với SVR, hầu hết các điểm là không liên quan. Kết quả là một độ khớp được tạo bởi cấu trúc tổng thể tốt.

SVR được tối ưu như thế nào

SVR có hai mục tiêu cạnh tranh cần thỏa mãn đồng thời.

Thứ nhất là giữ cho mô hình càng phẳng càng tốt. Một hàm phẳng hơn thì đơn giản hơn, và các mô hình đơn giản có xu hướng khái quát hóa tốt hơn cho dữ liệu mới. Thứ hai là giảm thiểu lỗi trên các điểm ngoài ống epsilon - những điểm mà SVR không thể bỏ qua.

Hai mục tiêu này kéo theo hai hướng ngược nhau, và đó là lúc tham số điều chuẩn C phát huy tác dụng. Nó kiểm soát mức độ SVR coi trọng các lỗi ngoài ống so với độ đơn giản của mô hình:

  • Giá trị C cao yêu cầu mô hình coi trọng các lỗi ngoài ống, có thể tạo ra một hàm phức tạp hơn, khớp chặt hơn
  • Giá trị C thấp cho phép mô hình giữ đơn giản và chấp nhận nhiều vi phạm ngoài biên hơn

Bạn luôn đánh đổi giữa độ đơn giản của mô hình và khả năng chấp nhận sai số. Giá trị C phù hợp phụ thuộc vào dữ liệu và mức độ nhiễu bạn kỳ vọng. Chọn sai theo bất kỳ hướng nào sẽ làm giảm hiệu suất của mô hình trên dữ liệu mới.

Đây là một bài toán tối ưu có thể giải lặp, nên không có gì phải lo lắng.

Các vectơ hỗ trợ trong SVR

Với SVR, chỉ các điểm dữ liệu nằm ngoài ống epsilon mới thực sự quan trọng.

Đó là các vectơ hỗ trợ - các điểm dữ liệu vượt ngoài biên và định hình hàm đã khớp. Mọi thứ trong ống đều bị bỏ qua trong quá trình huấn luyện. Mô hình không bao giờ “nhìn thấy” các điểm đó theo cách có ý nghĩa.

Các vectơ hỗ trợ

Các vectơ hỗ trợ

Tác dụng phụ hữu ích của điều này là tính thưa. Trên thực tế, chỉ một tập con nhỏ dữ liệu huấn luyện của bạn trở thành vectơ hỗ trợ. Phần còn lại không đóng góp gì cho mô hình cuối cùng, giúp SVR tiết kiệm bộ nhớ và đánh giá nhanh sau khi huấn luyện, vì dự đoán chỉ phụ thuộc vào vài điểm có ảnh hưởng đó.

Xử lý dữ liệu phi tuyến với SVR

SVR không bị giới hạn ở việc khớp các đường thẳng. Nó có thể xử lý quan hệ phi tuyến thông qua kỹ thuật gọi là mẹo kernel.

Vì vậy, thay vì khớp một hàm trong không gian đầu vào gốc, SVR ánh xạ dữ liệu vào một không gian chiều cao hơn, nơi một độ khớp tuyến tính trở nên khả thi. Độ khớp tuyến tính trong không gian chiều cao hơn đó sẽ chuyển thành một đường cong phi tuyến trong dữ liệu gốc của bạn.

Hai kernel phổ biến nhất bạn sẽ dùng là:

  • RBF (Radial Basis Function): Lựa chọn mặc định cho hầu hết bài toán. Xử lý tốt các quan hệ trơn, cong và hoạt động hiệu quả trên nhiều loại tập dữ liệu
  • Đa thức (Polynomial): Hữu ích khi bạn có cơ sở tin rằng quan hệ tuân theo một mẫu đa thức với bậc cụ thể

Cách chọn kernel phụ thuộc vào dữ liệu của bạn. RBF là điểm khởi đầu tốt khi bạn chưa chắc chắn.

SVR so với Hồi quy tuyến tính

Khác biệt cốt lõi nằm ở mục tiêu mà mỗi mô hình theo đuổi.

Hồi quy tuyến tính tối thiểu hóa tổng sai số trên mọi điểm dữ liệu. Mọi phần dư đều được tính, dù nhỏ đến đâu. Nếu bạn kéo mô hình chệch hướng bởi một điểm nhiễu, toàn bộ độ khớp sẽ dịch chuyển để bù trừ.

SVR bỏ qua lỗi trong ống epsilon. Nó chỉ phản ứng với các điểm nằm ngoài biên - và ngay cả khi đó, C cũng kiểm soát mức độ phản ứng. Mô hình tối ưu cho cấu trúc, không phải cho độ chính xác tại từng điểm riêng lẻ.

Sự khác biệt đó khiến SVR bền vững hơn với ngoại lệ. Một điểm nhiễu đơn lẻ sẽ không làm hỏng độ khớp như trong hồi quy tuyến tính, vì SVR vốn dĩ không cố đuổi theo nó ngay từ đầu.

Dưới đây là tất cả khác biệt:

Hồi quy tuyến tính so với SVR

Hồi quy tuyến tính so với SVR

Các tham số chính trong SVR

SVR có ba tham số bạn cần hiểu trước khi bắt đầu tối ưu mô hình.

Epsilon (ε)

Epsilon xác định bề rộng của biên dung sai quanh hàm đã khớp. ε lớn hơn đồng nghĩa ống rộng hơn - nhiều điểm bị bỏ qua hơn và mô hình trở nên đơn giản hơn. ε nhỏ hơn sẽ siết chặt ống và buộc mô hình khớp sát dữ liệu hơn.

Epsilon nhỏ so với lớn

Epsilon nhỏ so với lớn

C (điều chuẩn)

C kiểm soát mức phạt SVR áp cho các lỗi tại các điểm ngoài ống. C cao nghĩa là mô hình coi trọng các lỗi đó và khớp chặt hơn. C thấp nghĩa là mô hình chấp nhận nhiều vi phạm hơn để đổi lấy một hàm đơn giản, phẳng hơn. Cε phối hợp với nhau, vì thay đổi một bên sẽ ảnh hưởng cách bên kia ứng xử trên thực tế.

C nhỏ so với lớn

C nhỏ so với lớn

Kernel

Kernel quyết định cách SVR xử lý các mẫu phi tuyến. RBF là lựa chọn phổ biến nhất và hoạt động tốt như mặc định. Kernel đa thức hữu ích cho các dạng đường cong cụ thể. Kernel tuyến tính biến SVR thành một hồi quy tuyến tính dựa trên biên, hữu ích khi dữ liệu của bạn vốn đã “ngoan”.

Hồi quy Vectơ Hỗ trợ trong thực tiễn

Khiến SVR hoạt động tốt là đi qua một vài bước và điều kiện tiên quyết. Để tôi chỉ cho bạn chúng là gì.

Quy trình điển hình như sau:

  1. Chuẩn hóa dữ liệu của bạn: SVR nhạy với thang đo đặc trưng. Nếu các đặc trưng có thang đo khác nhau, mô hình sẽ không hoạt động như mong đợi. Hãy dùng StandardScaler cho cả Xy trước khi khớp

  2. Chọn kernel: RBF là mặc định phù hợp cho hầu hết bài toán. Chuyển sang đa thức nếu bạn có lý do cụ thể tin rằng quan hệ tuân theo dạng đó

  3. Tinh chỉnh tham số: Thiết lập C, epsilongamma trước khi khớp. Grid search hoặc cross-validation là các cách tiếp cận tiêu chuẩn

  4. Huấn luyện mô hình: Gọi .fit() trên dữ liệu huấn luyện đã chuẩn hóa. Sau khi huấn luyện, đảo chuẩn hóa dự đoán về thang đo gốc

Dưới đây là ví dụ hoàn chỉnh dùng scikit-learn:

import numpy as np
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Generate sample data
np.random.seed(42)
X = np.sort(np.random.uniform(0, 10, 30))
y = 2.5 * np.sin(X * 0.8) + np.random.normal(0, 0.4, 30)

# Split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# Scale features and target
scaler_X = StandardScaler()
scaler_y = StandardScaler()

X_train_scaled = scaler_X.fit_transform(X_train.reshape(-1, 1))
X_test_scaled = scaler_X.transform(X_test.reshape(-1, 1))
y_train_scaled = scaler_y.fit_transform(y_train.reshape(-1, 1)).ravel()

# Fit SVR
svr = SVR(kernel="rbf", C=2.0, epsilon=0.5, gamma=0.3)
svr.fit(X_train_scaled, y_train_scaled)

# Predict and inverse-transform
y_pred_scaled = svr.predict(X_test_scaled)
y_pred = scaler_y.inverse_transform(y_pred_scaled.reshape(-1, 1)).ravel()

rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"Test RMSE: {rmse:.3f}")

RMSE trên tập kiểm tra

RMSE trên tập kiểm tra

Một vài điều đáng chú ý trong đoạn mã này. Thứ nhất, StandardScaler được áp dụng riêng cho cả Xy. Chỉ chuẩn hóa đặc trưng là lỗi thường gặp dẫn đến kết quả kém với SVR. Thứ hai, dự đoán được đảo chuẩn hóa ở cuối để đưa chúng về thang đo gốc trước khi đánh giá.

Hai biểu đồ dưới đây cho thấy mô hình đã khớp trông như thế nào. Biểu đồ đầu tiên hiển thị đường cong SVR với ống epsilon trên dữ liệu huấn luyện và kiểm tra:

Ống Epsilon trên dữ liệu huấn luyện và kiểm tra

Ống Epsilon trên dữ liệu huấn luyện và kiểm tra

Biểu đồ thứ hai so sánh giá trị dự đoán với giá trị thực trên tập kiểm tra:

Giá trị dự đoán so với thực tế

Giá trị dự đoán so với thực tế

Các điểm gần đường chéo nghĩa là mô hình dự đoán tốt.

Ưu điểm và hạn chế của SVR

SVR có một tập thế mạnh cụ thể khiến nó phù hợp trong đúng bối cảnh. Tương tự, nó có điểm yếu khiến nó không phù hợp trong những trường hợp khác.

Ưu điểm

  • Vững vàng trước nhiễu: Ống epsilon khiến các lỗi nhỏ không hề ảnh hưởng đến mô hình. Dữ liệu nhiễu có thể kéo trệch mô hình như hồi quy tuyến tính sẽ bị bỏ qua
  • Xử lý quan hệ phi tuyến: Với kernel phù hợp, SVR khớp được các đường cong mà hồi quy tiêu chuẩn không thể làm nếu không kỹ thuật đặc trưng thủ công
  • Linh hoạt: Bạn kiểm soát bề rộng biên, mức phạt cho lỗi và kernel, nghĩa là bạn có thể thích ứng mô hình với nhiều dạng dữ liệu và mức nhiễu

Hạn chế

  • Chậm trên tập dữ liệu lớn: SVR không mở rộng tốt. Thời gian huấn luyện tăng theo số lượng mẫu, khiến nó không thực tế với các tập dữ liệu hàng trăm nghìn dòng trở lên.
  • Nhạy với tinh chỉnh tham số: C, epsilon và gamma tương tác với nhau. Một tổ hợp tệ sẽ làm giảm hiệu suất, và tìm được tổ hợp tốt tốn thời gian và tính toán, đặc biệt khi SVR không mở rộng tốt
  • Ít dễ giải thích: Không có hệ số đơn giản để kiểm tra. Hiểu vì sao SVR đưa ra một dự đoán cụ thể là không dễ, nên nếu khả năng giải thích là bắt buộc trong lĩnh vực của bạn, đây không phải là mô hình phù hợp

Khi nào nên dùng SVR

SVR phát huy tốt nhất trong một tập điều kiện cụ thể. Bạn nên dùng SVR khi:

  • Tập dữ liệu có kích thước vừa phải - từ vài trăm đến vài nghìn mẫu là “điểm ngọt”
  • Quan hệ giữa đặc trưng và mục tiêu là phi tuyến và bạn không muốn tự kỹ thuật đặc trưng
  • Dữ liệu có nhiễu hoặc ngoại lệ và bạn cần một mô hình không bị chúng ảnh hưởng

Bạn nên tránh SVR khi:

  • Tập dữ liệu rất lớn - quá trình huấn luyện sẽ chậm và có thể không hoàn thành trong thời gian hợp lý
  • Tốc độ quan trọng - cả huấn luyện lẫn tìm siêu tham số đều tốn kém so với các lựa chọn như gradient boosting hoặc hồi quy tuyến tính

Nếu tập dữ liệu của bạn lớn và nhiễu, các phương pháp gradient boosting đáng để xem trước. SVR rất hữu ích khi bạn có dữ liệu sạch, kích thước vừa, với cấu trúc mà các mô hình đơn giản hơn không khớp tốt.

Các lỗi thường gặp với SVR

Hầu hết vấn đề với SVR đều quy về cùng một nhóm lỗi - hãy coi đây là bảng “đừng làm gì”.

  • Không chuẩn hóa đặc trưng. SVR là thuật toán dựa trên khoảng cách, nghĩa là các đặc trưng chưa chuẩn hóa sẽ lấn át mô hình. Luôn áp dụng StandardScaler cho cả Xy trước khi khớp.

  • Hiểu sai về epsilon. Epsilon là tham số quan trọng nhất. Quá lớn và mô hình underfit vì bỏ qua quá nhiều. Quá nhỏ và nó hành xử như hồi quy tiêu chuẩn, đuổi theo từng điểm dữ liệu. Luôn thực hiện grid search để xem giá trị nào hiệu quả nhất trên tập kiểm tra của bạn.

  • Bỏ qua tinh chỉnh tham số. Chạy SVR với tham số mặc định và kỳ vọng kết quả tốt hiếm khi hiệu quả - như đa số mô hình học máy khác. C, epsilon và gamma cần được tinh chỉnh cùng nhau. Hãy dùng grid search với cross-validation.

  • Dùng SVR trên tập dữ liệu rất lớn. Nếu bạn có hơn vài nghìn mẫu, SVR sẽ chậm. Nó đơn giản là không mở rộng như các thuật toán khác. Hãy chuyển sang mô hình phù hợp với tập dữ liệu lớn hơn, như gradient boosting hoặc mạng nơ-ron.

Cũng cần lưu ý rằng làm đúng bốn điều này không đảm bảo một mô hình tuyệt vời, nhưng làm sai bất kỳ điều nào gần như chắc chắn sẽ cho kết quả tệ.

Kết luận

Tóm lại, hãy nhớ rằng SVR giải quyết một bài toán khác so với hồi quy tiêu chuẩn. Thay vì tối thiểu hóa mọi sai số, nó khớp một hàm trong một biên và bỏ qua nhiễu nằm trong đó - chính điều này khiến nó hữu ích khi dữ liệu của bạn không sạch hoặc không hoàn toàn tuyến tính.

Nó không nổi tiếng về tốc độ hay sự đơn giản. Nhưng nó vững vàng. Nếu dữ liệu của bạn có quan hệ phi tuyến và ngoại lệ mà bạn không muốn mô hình hóa, SVR sẽ cho bạn cách tập trung vào cấu trúc thay vì đuổi theo từng điểm dữ liệu.

Chỉ cần nhớ chuẩn hóa đặc trưng, tinh chỉnh tham số, chọn đúng kernel và giữ quy mô dữ liệu ở mức vừa phải. Nếu làm đúng, SVR sẽ mang lại một mô hình vững vàng, ít có khả năng thất bại khi đưa vào sản xuất.

SVR chỉ là một trong những công cụ mà mọi nhà khoa học dữ liệu cần biết. Hãy ghi danh vào lộ trình Kỹ sư Máy học của chúng tôi để học các công cụ khác và sẵn sàng cho công việc vào năm 2026.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

Câu hỏi thường gặp về SVR

Hồi quy Vectơ Hỗ trợ là gì, và khác gì so với hồi quy tiêu chuẩn?

Hồi quy Vectơ Hỗ trợ là một phương pháp hồi quy khớp một hàm trong phạm vi dung sai gọi là ống epsilon và bỏ qua mọi lỗi nằm trong đó. Các phương pháp hồi quy tiêu chuẩn tối thiểu hóa tổng sai số trên mọi điểm dữ liệu, khiến chúng nhạy với nhiễu và ngoại lệ. SVR chỉ phản ứng với các điểm ngoài biên, nghĩa là mô hình tập trung vào cấu trúc tổng thể thay vì đuổi theo từng phần dư.

Khi nào tôi nên dùng SVR thay cho các phương pháp hồi quy khác?

SVR hoạt động tốt nhất khi tập dữ liệu có kích thước vừa phải, quan hệ giữa đặc trưng và mục tiêu là phi tuyến, và dữ liệu có nhiễu bạn không thể loại bỏ hoàn toàn. Nó không phù hợp với các tập rất lớn, nơi thời gian huấn luyện trở thành vấn đề, hoặc trong tình huống tốc độ và khả năng diễn giải quan trọng. Nếu có các ràng buộc đó, gradient boosting hoặc hồi quy tuyến tính là những lựa chọn nên cân nhắc trước.

Tôi có cần tinh chỉnh tham số SVR để đạt kết quả tốt không?

Có - SVR nhạy với lựa chọn tham số hơn hầu hết các phương pháp hồi quy. Ba tham số quan trọng nhất là C, điều khiển mức độ mô hình phạt lỗi ngoài ống; epsilon, đặt bề rộng biên; và kernel cùng các tham số liên quan như gamma. Chạy SVR với giá trị mặc định hiếm khi cho kết quả tốt nhất, vì vậy grid search với cross-validation là cách tiếp cận tiêu chuẩn.

Vì sao việc chuẩn hóa đặc trưng lại quan trọng với SVR?

SVR dựa vào khoảng cách giữa các điểm dữ liệu để khớp mô hình, nghĩa là các đặc trưng có thang đo lớn hơn sẽ chi phối kết quả. Nếu bạn bỏ qua chuẩn hóa, mô hình sẽ hành xử như thể một số đặc trưng quan trọng hơn các đặc trưng khác - chỉ vì đơn vị đo. Luôn áp dụng StandardScaler cho cả Xy trước khi khớp, và đảo chuẩn hóa dự đoán sau đó.

Epsilon kiểm soát gì trong SVR, và tôi chọn nó thế nào?

Epsilon xác định bề rộng của biên dung sai xung quanh hàm đã khớp - mọi sai số dự đoán nhỏ hơn epsilon được xem là bằng không. Epsilon lớn tạo ra mô hình đơn giản hơn, bỏ qua nhiều dữ liệu hơn, trong khi epsilon nhỏ buộc mô hình khớp sát hơn và tăng số lượng vectơ hỗ trợ. Không có giá trị “đúng” chung, vì vậy hãy coi epsilon là tham số cần tinh chỉnh và tìm kiếm cùng với C và gamma bằng cross-validation.

Chủ đề

Học cùng DataCamp

Tracks

Học máy có giám sát trong Python

25 giờ
Nắm vững các kỹ thuật học máy có giám sát phổ biến nhất để bắt đầu thực hiện dự đoán dựa trên dữ liệu có nhãn.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow