一般咱們使用的最小二乘都須要預先設定一個模型,而後經過最小二乘方法解出模型的係數。html
而大多數狀況是咱們是不知道這個模型的,好比這篇博客中z=ax^2+by^2+cxy+dx+ey+f 這樣的模型。函數
局部加權線性最小二乘就不須要咱們預先知道待求解的模型,由於該方法是基於多個線性函數的疊加,最終只用到了線性模型。spa
計算線性模型時引入了一個加權函數:code
來給當前預測數據分配權重,分配機制是:給距離近的點更高的權重,給距離遠的點更低的權重。htm
公式中的k相似與高斯函數中的sigma。blog
當sigma變大時,函數變得矮胖,計算局部線性函數時更多的使用全局數據;get
當sigma變小時,函數變得瘦高,計算局部線性函數時更多的使用局部數據。博客
代碼以下:class
clear all; close all; clc; x=(1:0.1:10)'; y=x.^2+x+3 +rand(length(x),1)*6; plot(x,y,'.') sigma=0.1; %設置局部窗口,越大越使用全局數據,越小越使用局部數據 W=zeros(length(x)); C=[]; for i=1:length(x) for j=1:length(x) W(j,j)=exp(-((x(i)-x(j))^2)/(2*sigma^2)); %權重矩陣 end XX=[x ones(length(x),1)]; YY=y; C=[C inv(XX'*W*XX)*XX'*W*YY]; %加權最小二乘,計算求得局部線性函數的係數 end re=diag(XX*C); hold on; plot(x,re);
結果以下:方法
能夠看出,紅色的局部線性函數最終擬合出了全局的數據。
不過該方法既然不須要知道模型,那咱們如何預測將來的數據結果呢?