线性回归——机器学习的第一个算法

2018-09-29  本文已影响0人  笑给我看



介绍

定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。

(小萌A:)什么意思?

简单来说,我们把每个数据样本比作一个点,对于这堆点,我们试着用一条直线去拟合它们,尽可能的使得这些点均匀的分布在直线的两边,像这样:

x轴表示数据样本,y轴表示通过数据样本得到的结果

我们拟合出一条最优的直线后,当有新的数据出现时,我们可以通过这条直线来预测对应的y值,就是这个意思。

(小萌B:)怎么拟合呢?

首先,我们有一个函数模型:

X为我们的数据样本,W就是我们需要设法找到的系数

对于我们的训练数据:

Y为X对应的结果

便于计算机的计算,我们将我们的样本写成举证的形式:

上标为样本索引,下标为属性所对应的值

——————————————

(小萌B突然发问:)为什么每行都会多出来一个1?

请看到我们的上上上一张图,W0 就是我们的函数模型的截距,它的系数始终为1。

——————————————

然后我们通过已知的Y值和X值来找到这个神秘的W值,我们的函数模型每次都完美的拟合所有的数据是不可能的,这时候我们引入损失函数cost(拿最小二乘法来说):

y表示真值,h表示预测值,为了防止样本数量给cost函数带来影响并方便对其求导,我们对它取平均,cost函数表示预测值与真实值之间的差异,最后平方取得正值

(小萌D:)然后呢?

当我们的矩阵满秩时求解,直接对其求导:

当矩阵不满秩时,采用梯度下降法:   

梯度下降法

梯度下降

原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

1、首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。

2、改变θ的值,使得J(θ)按梯度下降的方向进行减少。

假设我们得到X,Y,然后初始化一个W

对损失函数求导可以得到:

这个步骤

不断的迭代“这个步骤”,最后当我们导数几乎为零是,我们就求得了这个W值。

但是我们需要知道的是,梯度下降算法是一种求局部最优解的方法


Tips:

1)为了更好更迅速的进行梯度下降,我们需要对数据进行归一化或者标准化,使得数据分布在某一个范围内(比如将值从1-100000的数据归一化到0-1的范围内)

2)对于线性回归模型而言,符合高斯分布的数据可以获得更好的准确率,所以适当的时候我们需要对数据进行数据处理,让其尽可能的满足高斯分布

这些会在后续的章节里面逐一介绍


文章内容若有不足,欢迎批评指正

上一篇 下一篇

猜你喜欢

热点阅读