介绍了这么长时间的优化,今天我们换换口味,介绍一下机器学习算法中最基础的最小二乘回归。
最小二乘回归(英文名:Ordinary Least Squares Regression [OLS], 又叫Generalized Least Squares [GLS])是常见的线性回归方法。最小二乘法的基本原则是:最优拟合直线应该使各点到直线的距离的和最小,也可表述为距离的平方和最小。
经典线性回归模型的基本假设:
(1)残差具有零均值;
(2)var
(3)残差项之间在统计意义上是相互独立的;
(4)残差项与变量x无关;
(5)残差项服从正态分布;
如果满足假设(1)-(4),由最小二乘法得到的估计量具有一些特性,它们是最优线性无偏估计量(Best Linear Unbiased Estimators,简记BLUE)。
1)线性(linear):意味着x与随机变量y之间是线性函数关系;
2)无偏(unbiased):意味着平均而言,实际由样本数据得到的x的参数值与其总体数据中的真实值是一致的;
3)最优(best):意味着在所有线性无偏估计量里,OLS估计量具有最小方差。
回归常见的3个必须要解决的问题在于:
1)Heterroskedasticity异方差性: 残差的方差不为常数, 残差与x相关(eg,x变大,残差变大), 违反了假设2和4
2)Autocorrelation自相关性:残差项之间自相关,违反了假设3
3)Multicollinearity多重共线性:多个x之间不独立,即xi与xj之间存在相关性。
说了这么多拗口的理论,举个实际例子就清楚了,如下式,我们要使用样本X的输入的某些变换(经过基函数的作用)的线性组合 H 来拟合样本的输出y(即,y = Hx,这里x是一个向量,表示H各列的一个线性组合,H = (H1,H2,...,HL),Hi = fi(X)),我们有如下的推导过程:
为了拟合的精确,我们定义了误差函数J(x):
J展开后如下:
J关于x求偏导数得:
令偏导为0得极小值:
所以我们就得到了x的解为:
来看一个实际例子,我们取一些三角函数,作为H矩阵的基函数作用于样本输入X,代码如下:
clear; closeall; clc;
n = 50;% 训练样本个数
N = 1000;% 测试样本个数
x = linspace(-3,3,n)';% n个样本服从-3到3的均匀分布
X = linspace(-3,3,N)';
pix = pi*x;
y = sin(pix)./pix + 0.1*x + 0.05*randn(n,1);% 拟合的函数
H(:,1) = ones(n,1);
P(:,1) = ones(N,1);
L = 15;% H矩阵的列数,即基函数的个数的一半,因为sin和cos各一半
fori= 1:L
H(:,2*i) = sin(i/2*x);
H(:,2*i+1) = cos(i/2*x);
P(:,2*i) = sin(i/2*X);
P(:,2*i+1) = cos(i/2*X);
end
t = H\y;% 这里的t就是文中的x,H\y = inv(H'*H)*H'*y
F = P*t;
plot(X,F,'g-','linewidth',2);
hold on
plot(x,y,'bo','linewidth',2);
axis([-2.8,2.8,-0.5,1.2]);
legend('测试样本','训练样本');
结果如下:
以上就是今天推送的内容,欢迎讨论。
领取专属 10元无门槛券
私享最新 技术干货