机器学习(2)——线性回归

本文主要介绍了机器学习中的线性回归函数、代价函数和极大似然估计。线性回归函数用直线拟合数据,可写成矩阵形式;代价函数用于衡量预测与真实数据误差,最终采用均方误差函数;极大似然估计基于数据独立同分布条件,通过求似然函数最大值得到,还提到对数函数的缺点及熵的概念。

函数模型

  线性回归函数想必大家在高中的学习中就已经学习过了,这一篇文章中我们并不会很详细的介绍。首先,如同下面这张散点图:

  我们会怎么去用函数拟合?

  我们一眼就会发现,用一条直线穿过数据会很好的拟合这些数据,这些数据很均匀的分布在直线的两侧。看到这里我们就可以直接写出我们线性函数的表达式了:

f(x,\omega)=\sum_{i=0}^{m}\omega_ix_i

  不过通常我们认为x_0=1,所以这个式子展开之后就是:

f(x,\omega)=\omega_0+\omega_1x_1+...+\omega_ix_i

  在机器学习中,我们常常使用线性代数去描绘数据,因此我们写成下面这种形式

\omega=\begin{bmatrix}\omega_0\\\omega_1\\\vdots\\\omega_n \end{bmatrix}  \qquad x= \begin{bmatrix}x_0\\x_1\\\vdots\\x_n \end{bmatrix} \qquad b= \begin{bmatrix}b_0\\b_1\\\vdots\\b_n \end{bmatrix}

  也就是说,将表达式写成矩阵的形式,就成了:

f(x,\omega)=wx^T+b

  这只是最简单的一种线性函数,还有一些广泛应用于神经网络的线性函数是一层一层的嵌套函数,例如:

f_1(x,\omega)=\alpha f(w_if(wx))+...

  目前我们并不去讨论非线性的函数模型,对于非线性的函数模型,我们往往需要进行正则化进行调整,这里我会在后面进行详细的介绍。

代价函数

  代价函数又称为损失函数,在这里我们可以试着来推导一下。我们的代价函数主要就是用于衡量预测数据和真实数据之间的误差。很容易的我们会想到直接用他们之间的差值作为衡量。

J(\omega)=\sum_{i=0}^{m}(y-f(x_i))

  不过这个函数存在一个问题,就是y-f(x_i)的符号是不确定的,因此即使误差很大,J(\omega)甚至可以为0,因此我们需要改进这个函数。

  那么,加一个绝对值怎么样呢?

J(\omega)=\sum_{i=0}^{m}\left|y-f(x_i)\right |

  这样显然我们的代价函数有了更好的性能,不过还是存在一些问题,就是绝对值是无法求导的。那么我们会想,有什么方法既可以不影响函数的代数性质又不会造成误差的失误呢?很明显,二次函数是一个不错的想法。

J(\omega)=\sum_{i=0}^{m}(y-f(x_i))^2

  这个时候我们已经完成了我们的函数设计,不过还有一点点小问题,就是j(\omega)有可能出现过大的情况,我们需要对它进行求平均值,同时,为了方便我们后续的求导计算,我们通常还会乘以一个参数\frac{1}{2},当然你不做处理也不会有问题。最终的函数解析式就成了:

J(\omega)=\frac{1}{2m}\sum_{i=0}^{m}(y-f(x_i))^2

  相信很多数学底子好一些的朋友,肯定发现了一件事,这不就是我们常常使用的方差的变形吗?是的,这个函数我们称为均方误差函数,你可以理解为广义上的方差,我们记得方差是减去数据的平均值,这里也是类似的,因为我们所用的拟合函数就已经充当了平均值的作用。

极大似然估计

  这个玩意名字取得总是让人觉得怪怪的,一眼看不出这是干嘛的。极大似然估计有点类似文言文的一种说法,似然,也就是可能性的意思。极大似然估计也就是最大可能性的估计。

  构造极大似然估计的条件很容易,也就是i.i.d条件,数据独立同分布条件。我们给出一个概率函数P(y|x,\omega)。如何评判函数的好坏呢?我们知道,对于给定的数据,概率达到最大值就是最好的,那么针对整个数据集来说,我们应当对概率函数进行求积:

L(\omega)=\prod_{i=1}^{m}P(y|x,\omega)

  L(\omega)就是我们的似然函数了,而求出函数最大值所对应的\omega也就是我们所讨论的极大似然估计了。

  大部分情况下,我们不喜欢求连积,我们要想办法将L(\omega)变成一个求和的函数,这样我们的计算会方便许多。很容易想到对数的性质。我们对L(\omega)进行求对数,得到:

lnL(\omega)=\sum_{i=1}^mlnP(y|x,\omega)

  同样的我们防止数据过大,对它求一个平均值,不过这里的平均值应该是负平均值比较好,为什么?看一看对数函数的图像,概率是衡在[0,1]之间,对应的对数始终为负值,所以我们应该用负数好。

lnL(\omega)=\frac{-1}{m}\sum_{i=1}^mlnP(y|x,\omega)

  对数函数也有缺点,就是遇上0的时候,对数函数就显得无能为力了,在一些分类问题中,假设真实标记是0,那么极大似然估计出的概率函数也应该是0,或者是接近0,这样就会导致对它求对数的时候数值会变得巨大。这里我们引入一个概念——。我们将在下一节信息论中进行详细的介绍。

我的掘金:WarrenRyan

我的简书:WarrenRyan

欢迎关注我的博客获得第一时间更新 blog.tity.online

我的Github:StevenEco

转载于:https://juejin.im/post/5b835f286fb9a019cd4e5fa5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值