机器学习--线性回归 最小二乘法

机器学习第1天

欢迎转载,请标明出处(http://blog.csdn.net/tonyshengtan),尊重劳动,尊重知识,欢迎讨论。

开篇废话

话说在高中数学统计的部分就有学过最小二乘法,现在想想,当时没有严格的推倒和实用背景,单纯的给了公式然后做应用题,不过也印证了乔布斯的一句话,不管你现在在做什么,你都无法预料到这对你以后是否有影响,你只能看到过去,无法看到未来。

最小二乘法(Least squares)

为什么叫最小二乘法,首先最小明确的告诉你,俺们求出来的是全局的最值,不是极值,就是最小的一个位置,二乘(square)是平方的意思,Ok,也就是说最小二乘法的理论是找到最小的平方值,什么的最小平方值?慢慢看下面。

参考书《机器学习基础教程》中的例子,以历届奥运会男子100米的夺冠时间为数据:

No. Year time
1 1896 12.0
2 1900 11.0
3 1904 11.0
4 1908 10.8
5 1912 10.8
6 1920 10.8
7 1924 10.6
8 1928 10.8
9 1932 10.3
10 1936 10.3
11 1948 10.3
12 1952 10.4
13 1956 10.5
14 1960 10.2
15 1964 10.0
16 1968 9.95
17 1972 10.14
18 1976 10.06
19 1980 10.25
20 1984 9.99
21 1988 9.92
22 1992 9.96
23 1996 9.84
24 2000 9.87
25 2004 9.85
26 2008 9.69
27 2012 9.63

注释:中间有三年数据缺失,原因是第一和第二次世界大战(闲的没事回家搞科研造福人类多好,打毛的仗)。

使用matlab显示下数据:

生成上图代码:

data=[1896  12.0;1900   11.0;1904   11.0;1908   10.8;1912   10.8;1920   10.8;1924   10.6;1928   10.8;1932   10.3;1936   10.3;1948   10.3;1952   10.4;1956   10.5;1960   10.2;1964   10.0;1968   9.95;1972   10.14;1976  10.06;1980  10.25;1984  9.99;1988   9.92;1992   9.96;1996   9.84;2000   9.87;2004   9.85;2008   9.69;2012   9.63];
x=data(:,1);
t=data(:,2);
scatter(x,t,‘k‘);

其中第三个参数可以由下表中查出:

很明显的下降趋势,不太明显的线性关系,不过我们还是用线性来拟合这组数据,看看会有什么效果。

设直线为:

t=w1x+w0

来解释下这个模型,我们的目的是让整条直线尽可能的和途中点数据相接近,而并不是要让一条直线穿过尽可能多的点,换句话说我们要追求一个全局的最优。

如何来衡量这个直线和各点之间的接近程度呢?这里给出一个平方损失函数,请注意,这并不是唯一的办法,不过是一种简单的方法,比如绝对值也能完成此类任务,但绝对值计算过于复杂,四次六次八次函数也能完成,很明显计算量也过大,所以我们的损失函数定义为:

?n=(tn?f(xn;w0,w1))2

其中:

f(xn;w0,w1)=w0+w1x

这样就给出了“二乘的部分”,求最小二乘的目的是得出全局最优解参数w1,w0

?=1N∑Nn=1(tn?f(xn;w0,w1))2=1N∑Nn=1(tn?w0?w1x)2=1N∑Nn=1(w21x2n+2w1xn(w0?tn)+w20?2w0tn+t2n)

求最小值,一般的方法是求一阶导数,对于上式,我们认为自变量是w1,w0,xn,tn是参数(已知常数),所以一阶导数要使用偏导数。

这样,求导前简化掉没用项:

当对w1求导数时:

1N∑Nn=1(w21x2n+2w1xnw0?2w1xntn)

整理求导后得到:

???w1=2w11N(∑Nn=1x2n)+2N(∑Nn=1xn(w0?tn))

同理对w0求偏导:

???w0=2w0+2w11N(∑Nn=1xn)?2N(∑Nn=1tn)

根据一阶导数为0时有可能为最值点(有可能是极值或者驻点,进一步判断需要求二阶偏导数得出,但对于平方形函数,一阶导数为零可以确定为最值)

这样就能求出:

w0^=tˉ?w1xˉ

w1^=xtˉ?xˉtˉx2ˉ?(xˉ2)

用一下代码对最上面图进行最小二乘拟合得到:

Matlab Code:

data=[1896  12.0;1900   11.0;1904   11.0;1908   10.8;1912   10.8;1920   10.8;1924   10.6;1928   10.8;1932   10.3;1936   10.3;1948   10.3;1952   10.4;1956   10.5;1960   10.2;1964   10.0;1968   9.95;1972   10.14;1976  10.06;1980  10.25;1984  9.99;1988   9.92;1992   9.96;1996   9.84;2000   9.87;2004   9.85;2008   9.69;2012   9.63];

[m,n]=size(data);%m行,n列
x=data(:,1);
t=data(:,2);
scatter(x,t,‘k‘);
xt=0;
x_=mean(x);
t_=mean(t);
x_2=0;
for i=1:m
    xt=xt+x(i)*t(i);
    x_2=x_2+x(i)^2;
end
xt_mean=xt/m;
x_2_mean=x_2/m;
w1=(xt_mean-x_*t_)/((x_2_mean)-x_^2);
w0=t_-w1*x_;

x=data(:,1);
t=data(:,2);
scatter(x,t,‘k‘);
[m,n]=size(data);%m行,n列
xt=0;
x_=mean(x);
t_=mean(t);
x_2=0;
for i=1:m
    xt=xt+x(i)*t(i);
    x_2=x_2+x(i)^2;
end
xt_mean=xt/m;
x_2_mean=x_2/m;
w1=(xt_mean-x_*t_)/((x_2_mean)-x_^2);
w0=t_-w1*x_;
%%使用矩阵解决
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:m
    X(i,1)=1;
    X(i,2)=x(i);
end

w=(X‘*X)^(-1)*X‘*t;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
refline(w1,w0);%w1斜率,w0截距
refline(w1,w0);%w1斜率,w0截距

以上针对二维数据,对于超过二维的数据的线性回归我们使用矩阵来做等效处理。

对于超过二维的数据,损失函数定义如下:

?=1N(t? ?Xw? )T(t? ?Xw? )

此处推导过程,与上二维数据推导过程类似,但使用矩阵为工具,故省略:

w? ^=(XTX)?1XTt?

总结

至此,最小二乘法的基本过程已经介绍完了,基础算法可能数学推导过多,但对后面的高级算法理解还是很有用的。

待续。。。。

时间: 2024-07-29 02:54:18

机器学习--线性回归 最小二乘法的相关文章

机器学习-线性回归

Linear Regreesion         线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可.     Cost Function的用途:对假设的函数进行评价,cost function越小的函数,说明拟合训练数据拟合的越好:     1.最小二乘法:      何为最小二乘法,其实很简单.我们有很多的给定点,这时

机器学习之最小二乘法

1.背景: 1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星.经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置.随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果.时年24岁的高斯也计算了谷神星的轨道.奥地利天文学家海因里希·奥伯斯根据高斯计算出来的轨道重新发现了谷神星. 高斯使用的最小二乘法的方法发表于1809年他的著作<天体运动论>中,而法国科学家勒让德于1806年独立发现“最小二乘法”,但因

机器学习--线性回归 综述

机器学习第0天 欢迎转载,请标明出处(http://blog.csdn.net/tonyshengtan),尊重劳动,尊重知识,欢迎讨论. 开篇废话 又回来写博客了,虽然一直知道学习没有尽头,但还是会怀疑,学到什么程度才能找一份这样的工作(吐槽:尼玛现在的工作太恶心了,每天的任务是歌功颂德,粉饰太平,推卸责任,喜欢做技术的同学千万别来那些所谓待遇好,稳定的天朝所有企业,毁一辈子). 废话不多说,自己选的,就要做下去. 线性回归(Linear Regression) 首先说下什么是回归,回归又叫回

机器学习---线性回归(Machine Learning Linear Regression)

线性回归是机器学习中最基础的模型,掌握了线性回归模型,有利于以后更容易地理解其它复杂的模型. 线性回归看似简单,但是其中包含了线性代数,微积分,概率等诸多方面的知识.让我们先从最简单的形式开始. 一元线性回归(Simple Linear Regression): 假设只有一个自变量x(independent variable,也可称为输入input, 特征feature),其与因变量y(dependent variable,也可称为响应response, 目标target)之间呈线性关系,当然x

机器学习--线性回归算法的原理及优缺点

一.线性回归算法的原理 回归是基于已有数据对新的数据进行预测,比如预测股票走势.这里我们主要讲简单线性回归.基于标准的线性回归,可以扩展出更多的线性回归算法. 假设我们找到了最佳拟合的直线方程 : , 则对每一个样本点    ,根据我们的直线方程,预测值为:,其对应的真值为   . 我们希望    和   的差距尽量小,这里我们用   表达   和  的距离, 考虑所有样本则为: 我们的目标是使   尽可能小,而    ,所以我们要找到  a .b  ,使得  尽可能小. 被称为损失函数或效用函

线性回归——最小二乘法(二)

上篇文章中介绍了单变量线性回归,为什么说时单变量呢,因为它只有单个特征,其实在很多场景中只有单各特征时远远不够的,当存在多个特征时,我们再使用之前的方法来求特征系数时是非常麻烦的,需要一个特征系数一个偏导式,而却最要命的时特性的增长时及其迅猛的,几十.几百.几千-- 单变量线性回归:多变量线性回归: 所以从这里我们开始将介绍线性回归的另一种更方便求解多变量线性回归的方式:最小二乘法矩阵形式: 模型变换 线性回归的标量形式: 这里把上诉式子中的系数m与误差c转换为向量(为了统一从下面开始使用表示c

线性回归——最小二乘法(一)

相信学过数理统计的都学过线性回归(linear regression),本篇文章详细将讲解单变量线性回归并写出使用最小二乘法(least squares method)来求线性回归损失函数最优解的完整过程,首先推导出最小二乘法,后用最小二乘法对一个简单数据集进行线性回归拟合: 线性回归 线性回归假设数据集中特征与结果存在着线性关系: 等式:y = mx + c y为结果,x为特征,m为系数,c为误差 在数学中m为梯度c为截距 这个等式为我们假设的,我们需要找到m.c使得mx+c得到的结果与真实的

机器学习--线性回归与梯度算法

线性回归(Linear Regression),亦称为直线回归,即用直线表示的回归,与曲线回归相对.若因变量Y对自变量X1.X2-.Xm的回归方程是线性方程,即μy=β0 +β1X1 +β2X2 +-βmXm,其中β0是常数项,βi是自变量Xi的回归系数,M为任何自然数.这时就称Y对X1.X2.-.Xm的回归为线性回归. 简单回归: 只有一个自变量的线性回归称为简单回归,如下面示例: X表示某商品的数量,Y表示这些不同数量商品的总价格 x=[0, 1, 2, 3, 4, 5] y=[0, 17,

机器学习--线性回归模型原理

线性回归, 是回归分析中的一种, 其表示自变量与因变量之间存在线性关系. 回归分析是从数据出发, 考察变量之间的数量关系, 并通过一定的数学关系式将这种关系描述出来, 再通过关系式来估计某个变量的取值, 同时给出该估计的可靠程度. 下面我们从一元线性回归开始说起. 1. 一元线性回归 在回归分析中如果只涉及一个自变量(用来预测的变量)和一个因变量(要预测的变量), 这时就称为一元回归, 如果自变量与因变量之间存在线性关系, 那么此时的回归就称为一元线性回归. 1.1 模型 假设自变量x和因变量y