最小二乘法学习一

本文主要讲解基本最小二乘法和带有约束条件的最小二乘法。

一  基本最小二乘法

最小二乘法是回归中最为基础的算法。它是对模型的输出和训练样本输出的平方误差(这里还乘以了1/2只是为了求导简化)为最小时的参数 进行学习。

特别地,对于线性模型有:

求导可得:

其中设计矩阵:

%基本最小二乘法
clear all;
close all;

n = 50;
N = 1000;
x = linspace(-3,3,n)';
X = linspace(-3,3,N)';

y =  x.^2 + 2*x + 3 + 0.05*randn(n,1);
%设计矩阵
p(:,1) = ones(n,1);
p(:,2) = x ;
p(:,3) = x.^2;

P(:,1) = ones(N,1);
P(:,2) = X ;
P(:,3) = X.^2;

t = p\y
F = P*t;

figure(1);
clf;
hold on;
axis([-3 3 0 10]);
plot(X,F,'g-');
plot(x,y,'bo');

最后得到 y = 2.9896*x^2 +1.9999*x + 0.9997

设计矩阵的维数是n*b,当训练样本很大时,大规模的求偏导开销很大,容易计算内存不足,这时采用随机梯度算法往往会效果很好。

随机梯度算法是指沿着训练平方误差 J 的梯度下降,对目标参数θ 进行学习的算法。下面是使用随机梯度算法对线性模型进行最小二乘法的算法步骤:

step 1 :指定θ初值

step 2:随机选择一个训练样本 如(xi,yi)

step 3: 对于选定训练样本,采用梯度下降的方式,对参数θ进行更新。

step 4 重复步骤2,3直到θ达到收敛精度

二 带有约束条件的最小二乘法

基本的最小二乘法对于包含噪声的学习过程常常有过拟合的弱点,主要是因为学习模型对于训练样本而言过度复杂,为了控制模型复杂程度,下面简述带约束条件额最小二乘法。

2.1部分空间约束的最小二乘法

基本最小二乘法中,所求参数θ 是在全体参数空间求取,而部分空间约束的最小二乘法,则是通过把参数空间约束在一定范围内,来防止过拟合现象。

其中矩阵P是正交投影矩阵,一般通过主成分分析法手动设置,将设计矩阵变为=设计矩阵右乘P求得。

下面是对以三角多项式作为基函数的线性模型进行部分空间约束的最小二乘法学习的例子。其中绿色曲线是基本最小二乘拟合曲线结果,可以看到,为了尽量达到最小平方误差,学习模型对于训练样本而言过于复杂,出现过拟合现象,而红色曲线是带空间约束后的结果,可见红色曲线的效果明显比绿色曲线好。

%基本最小二乘法与加入部分空间约束的最小二乘学习法
clear all;
close all;

n = 50;
N = 1000;
x = linspace(-3,3,n)';
X = linspace(-3,3,N)';
pix = pi*x;
y = sin(pix)./(pix)  + 0.1*x + 0.2*randn(n,1);

p(:,1) = ones(n,1);
P(:,1) = ones(N,1);
for j = 1:15
    p(:,2*j) = sin(j/2*x); p(:,2*j+1) = cos(j/2*x);
    P(:,2*j) = sin(j/2*X); P(:,2*j+1) = cos(j/2*X);
end
t = p\y;
%基本最小二乘
F = P*t;
%部分空间约束最小二乘,设计矩阵 = 设计矩阵*正交投影矩阵P
t2 = (p*diag([ones(1,11) zeros(1,20)]))\y;
F2 = P*t2;

figure(1);
clf;
hold on;
axis([-3 3 -1 2]);
plot(X,F,'g-');
plot(x,y,'bo');
plot(X,F2,'r-');

事实上,可以看到,部分空间约束的最小二乘法,只使用了参数空间的一部分,P矩阵的设置难度很大,后面介绍相对容易使用的l2约束的最小二乘法。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 05:02:20

最小二乘法学习一的相关文章

最小二乘法学习二

继上一篇基本最小二乘法和带部分空间约束的最小二乘法,它们要么易过拟合,要么不易求解,下面介绍 l2约束的最小二乘法,又叫正则化最小二乘法,岭回归. 一个模型的复杂程度与系数有关,最简单的模型是直接给所有系数赋值为0,则该模型总会预测出0值,模型虽然足够简单,但是没有意义,因为它不能有效预测. 定义模型的复杂度为: 由于我们的目的是使模型不要过于复杂,所以让上述值小是有意义的,因此新的目标函数为: 即 前一项为数据拟合程度的惩罚项,数据拟合的越好,该项值越小,但是也有可能过于拟合样本数据导致模型过

最小二乘法学习(分享自其他博主)

二. 最小二乘法 我们以最简单的一元线性模型来解释最小二乘法.什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机 等),如果预测的变量是连续的,我们称其为回归.回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一 元线性回归分析.如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析.对于二维空间线性是一条直线:对 于三维空间线性是一个平面,对于多维空间线性是一个

SGD实现逻辑回归

逻辑回归常用于分类问题,最简单诸如二分类问题:是否是垃圾邮件?比赛是赢是输? 对于线性回归问题, z = w0*x0+w1*x1+w2*x2+... 一般的通过最小二乘法学习参数w来预测 给定一个x值时z的大小,其值域在(-∞,+∞),而对于分类问题,显然预测值是离散的,通过引入S函数先将值域y缩小到(0,1),这样子, 当y>=0.5, 可分为正例 当y<0.5,可分为负例.这样预测问题就转化为分类问题了. 那么预测函数就写成 其中Z=ω.T x , ω是参数列向量,x是样本向量 那么样本x

线性回归,逻辑回归的学习(包含最小二乘法及极大似然函数等)

博文参考了以下两位博主的文章:http://blog.csdn.net/lu597203933/article/details/45032607,http://blog.csdn.net/viewcode/article/details/8794401 回归问题的前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数.然后利用这个模型去预测/分类新的数据. 1. 线性回归 假设 特征 和 结果 都满足线性.即不大于一次方.这个是针对 收集的数据

算法学习#03--详解最小二乘法原理和代码

最小二乘法原理 最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性.线性最小二乘的解是closed-form(如下文),而非线性最小二乘没有closed-form,通常用迭代法求解(如高斯牛顿迭代法,本文不作介绍). [首先得到线性方程组] 1.概念 最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配. 利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小. 最小二乘法还可用于曲线拟合. 2.原理 函

学习大数据第五天:最小二乘法的Python实现(二)

1.numpy.random.normal numpy.random.normal numpy.random.normal(loc=0.0, scale=1.0, size=None) Draw random samples from a normal (Gaussian) distribution. The probability density function of the normal distribution, first derived by De Moivre and 200 ye

数模学习——最小二乘法

最小二乘法 一.什么是最小二乘法 最小二乘法作为一种数学优化技术,通过最小化误差的平方和寻找数据的最佳函数匹配.(重点:寻找匹配函数) 以身高体重为例,我们有这样的生活常识,在无系统误差的情况下,身高与体重近似的是一个线性关系,即y=θ1·x+θ0.其中y是体重,x是身高.此时,我们就可以用最小二乘法求出θ1和θ0 二.代价函数Cost function 根据最小二乘法的定义我们可以看出,所求的最佳函数应该满足误差的平方和最小化,因此不难得出Cost functiond的数学描述为: 其中θ1·

[数学学习与代码]最小二乘法--多元线性方程求解

最近看了一本线性代数,如下图这个样的...比较讨厌的是这本书的排版贼难受,定义和定理加粗基本和没加一样,排版也过于紧密,看起来一度想弃书. 重点不在这里,哈哈哈哈. 这几天看完线代后,有一个粗略的理解后,菜虽然菜,但我还是想要倒腾倒腾.想起之前学过的最小二乘法,不过是一个二阶的最小二乘法,也撸了代码.但是学过线代后总是抑制不住体内的洪荒...(上个厕所去) N阶线性方程如下: 然后根据线性方程的最小二乘法来进行计算,首先写出损失函数,设有一个样本容量为k的样本,使用n阶函数(共有n+1个系数)去

用scikit-learn和pandas学习线性回归

对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了. 1. 获取数据,定义问题 没有数据,当然没法研究机器学习啦.:) 这里我们用UCI大学公开的机器学习数据来跑线性回归. 数据的介绍在这: http://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant 数据的下载地址在这: http://archive.ics.uci.edu/ml/ma