Ứng dụng RBF trong Phân loại và Dự đoán: Hướng dẫn thực hành bằng MATLAB

RBF (Radial Basis Function) là một mô hình phi tuyến tính mạnh mẽ, dựa trên phương pháp kernel, có khả năng xử lý dữ liệu phi tuyến tính rất tốt. Bằng cách ánh xạ dữ liệu vào không gian đặc trưng cao chiều và sử dụng các hàm cơ sở radial để phù hợp với dữ liệu, RBF có thể nắm bắt được mối quan hệ phức tạp giữa các điểm dữ liệu. Mô hình này cũng có tính chất cục bộ và toàn cục, giúp nó hoạt động hiệu quả ngay cả với tập dữ liệu nhỏ.

Phân loại dữ liệu phi tuyến tính

Giả sử chúng ta có một tập dữ liệu phân bố theo dạng vòng tròn đồng tâm mà các thuật toán phân loại tuyến tính thông thường không thể giải quyết được. Hãy thử dùng RBF:


theta = linspace(0, 2*pi, 200);
r1 = 1 + 0.1*randn(1,100);
r2 = 2 + 0.1*randn(1,100);
data = [r1.*cos(theta(1:100))', r1.*sin(theta(1:100))';
        r2.*cos(theta(101:200))', r2.*sin(theta(101:200))'];
labels = [ones(100,1); -ones(100,1)];

centers = data(randperm(200,20),:);
phi = exp(-pdist2(data, centers).^2/(2*0.5^2));
w = phi \ labels;

[X,Y] = meshgrid(-3:0.1:3,-3:0.1:3);
grid_phi = exp(-pdist2([X(:),Y(:)], centers).^2/(2*0.5^2));
Z = reshape(grid_phi*w, size(X));
contour(X,Y,Z,[0 0],'LineWidth',2);

Mã trên minh họa cách tạo ra một biên phân loại phi tuyến tính cho dữ liệu dạng vòng tròn. Hàm pdist2 đo khoảng cách từ mỗi điểm đến tất cả các tâm, trong khi tham số 0.5 điều chỉnh phạm vi ảnh hưởng của từng tâm.

Dự đoán hồi quy phi tuyến tính

Với dữ liệu biến đổi phi tuyến như đường cong giá cổ phiếu hoặc nhiệt độ, hãy xem cách RBF xử lý:


x = linspace(0,10,100)';
y = sin(x).*exp(-x/5) + 0.2*randn(size(x));

[~, centers] = kmeans(x,15);
sigma = median(pdist(centers))/sqrt(2*log(2));

phi = exp(-(x - centers').^2/(2*sigma^2));
w = phi \ y;

x_test = linspace(0,10,200)';
phi_test = exp(-(x_test - centers').^2/(2*sigma^2));
y_pred = phi_test * w;

Sử dụng k-means để chọn tâm tự động và tự động tính toán tham số sigma giúp tránh phải tinh chỉnh thủ công.

Dự đoán chuỗi thời gian

Trong bài toán dự đoán chuỗi thời gian như dự báo giá cổ phiếu, RBF cũng tỏ ra hữu ích:


t = 0:0.1:20;
ts = sin(t) + 0.5*cos(2*t) + 0.2*randn(size(t));

lookback = 5;
X = []; Y = [];
for i = 1:length(ts)-lookback
    X = [X; ts(i:i+lookback-1)];
    Y = [Y; ts(i+lookback)];
end

centers = X(1:3:end,:);
phi = exp(-pdist2(X, centers).^2/(2*0.3^2));
w = phi \ Y;

future = 50;
preds = zeros(future,1);
current = X(end,:);
for i = 1:future
    phi_current = exp(-pdist2(current, centers).^2/(2*0.3^2));
    pred = phi_current * w;
    preds(i) = pred;
    current = [current(2:end), pred];
end

Cơ chế cập nhật cửa sổ thời gian liên tục cho phép dự đoán liên tiếp và chính xác trong nhiều bước.

Kinh nghiệm tinh chỉnh tham số

Tinh chỉnh tham số RBF đòi hỏi sự linh hoạt. Các tham số quan trọng bao gồm:

  • Số lượng tâm: Thường lấy từ 5%-20% số dữ liệu.
  • Tham số sigma: Tự động ước lượng bằng median(pdist(centers)).
  • Chính quy hóa: Thêm thành phần (phi'*phi + lambda*eye(size(phi,2)))\ (phi'*y) để tránh ma trận suy biến.

RBF với tính chất cục bộ và toàn cục, vừa nhạy cảm với chi tiết vừa giữ vững xu hướng tổng thể, là một lựa chọn đáng cân nhắc trước khi áp dụng các mô hình học sâu phức tạp.

Thẻ: RBF MATLAB phân loại hồi quy dự đoán chuỗi thời gian

Đăng vào ngày 12 tháng 6 lúc 20:02