(吴恩达笔记 1-1)——线性回归原理

来源:互联网 发布:阿里云ecs ftp 编辑:程序博客网 时间:2024/06/03 15:45

0、前言


这是第一篇关于机器学习的笔记,后面会陆续把这段时间积累的笔记全部上传至个人博客欢迎提出意见进行修正


1、机器学习

首先明白机器学习需要解决的问题,机器学习并没有传说中的那么神秘,其实就和我们在中学学的利用一些点求过这些点的直线方程,只不过以前中学学的都是,所有的点都在一条直线上,而现实中不可能存在这么完美的情况,当很多点,分布在一条直线附近,你如何去求解这条直线,然后根据这条直线去求解已知某个x,求得y的过程。

这其实就机器学习在干的事情。

上面说的其实就是机器学习里面的线性回归在做的事情,那么线性回归到底是什么,以下从一些数学的角度来说明。

以下从数学角度说明的知识来源于:
机器学习—–线性回归浅谈(Linear Regression)
【说明】以下仅供本人学习参考,原文请见机器学习—–线性回归浅谈(Linear Regression)


2、线性回归

在现实生活中普遍存在着变量之间的关系,有确定的和非确定的。确定关系指的是变量之间可以使用函数关系式表示,还有一种是属于非确定的(相关),比如人的身高和体重,一样的身高体重是不一样的。

所以我们先明确一下目标:线性回归到底在干什么?

因为我们对于一个数据集,不明确其之间的关系,所以需要构造一个函数,进行拟合数据,拟合后便可以实现取任意点进行值的预测。所以这里我们采用线性的函数进行拟合,和求解这个线性函数的参数的过程,以及将参数最优化就是线性回归算法在干的事情。


1: 函数模型(Model)

这里写图片描述

假设有训练数据

这里写图片描述

那么为了方便我们写成矩阵的形式

这里写图片描述

2: 损失函数(cost)

损失函数说白了,就是求每个点到我们求解的这条直线的距离差的总和。

因为不是所有点都在直线上,所有你要衡量这条直线是不是最好的拟合函数,你需要对每个点,求到这条直线的距离,然后将所有的距离相加,得到的距离总和,使得总和最小的直线就是最好的拟合直线。

而我们损失函数所用的是平方差误差求和。
现在我们需要根据给定的X求解W的值,这里采用最小二乘法。

 a.最小二乘法  何为最小二乘法,其实很简单。我们有很多的给定点,这时候我们需要找出一条线去拟合它,那么我先假设这个线的方程,然后把数据点代入假设的方程得到观测值,求使得实际值与观测值相减的平方和最小的参数。对变量求偏导联立便可求。

因此损失代价函数为:
这里写图片描述

这里用向量表示更好。一个一维数的平方,可以写成其转置矩阵*自身。

3: 算法(algorithm)

现在我们的目的就是求解出一个使得代价函数最小的W:
a.矩阵满秩可求解时(求导等于0):

这里写图片描述

b.矩阵不满秩时(梯度下降):

梯度下降算法是一种求局部最优解的方法,对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向,具体参考wikipedia。
原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;
注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。
这里的θ就是我们之前线性函数里面的各个项的(系数)参数。

1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J:

这里写图片描述
下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。
这里写图片描述
}

假设有数据集D时:
这里写图片描述

对损失函数求偏导如下:
这里写图片描述

也就是对每个系数求收敛的最优值,求得从1到j,构成一个系数矩阵。

使用矩阵表示(方便计算)
这里写图片描述

以上便是求解整个线性方程系数的过程,求解出线性方程的系数,也就是求解出了整个方程,这个过程就是线性回归。



3、总结

所以对于一个算法,不管其有多么深奥,首先要知道其目的是实现是什么,在知道目的后,去看算法会比较简单易懂一点。



相关内容参考:


http://www.cnblogs.com/GuoJiaSheng/p/3928160.html