机器学习--线性回归

机器学习–线性回归

写在前面

Hello, world!
这是我的第一篇技术博客。在接触机器学习的过程中,从来都是百度google很多大神的分享,没有想过会写属于自己的技术博客。如今接触机器学习、深度学习、自然语言处理已经将近两年了, 多多少少有了点自己的想法,所以在这里将自己学习的一点点知识分享出来,希望有路过的同道批评指正,如果能帮助到刚入门的同学,那将是我最大的快乐。
当然,这仅仅是技术博客,我只能写下我认为关键的点,系统性的学习还得考专业的教材。

谈谈机器学习

其实我更愿意称之为模式识别,最不愿意称之为人工智能。我们离强人工智能还很远,自然语言处理我认为是目前最接近弱人工智能的。

下面是正文

我们来看看线性回归(Linear Regression)。线性回归模型比较简单,但是麻雀虽小,五脏俱全。这里用到的思想和方法可以说在往后的机器学习算法里是通用的,千万不能因为其简单而轻视它,实际上,它在实际应用中是大有用的。我认为它和下一篇要提到的逻辑回归(Logistic Regression)是好兄弟。
如果想对这方面内容的来龙去脉有详细的了解,建议仔细读读统计学习方法和MLAPP这两本书。

模型

线性回归的模型可以如下表示:

y(x)=WTx+ϵ(1) (1) y ( x ) = W T x + ϵ

其中 WTx W T x 代表输入向量 x x 和模型参数向量W的内积, ϵ ϵ 代表了线性模型的预测(predictions)和真实值(true response)的残差(residual error)。
可以这样理解我们线性回归模型:我们假设输出值和输入向量之间满足线性关系,但是同时在这样的假设下,就算我们真的“完全”知道了模型参数 W W ,我们也会发现模型的预测值和真实值有差别,这种差别我们可以这样来理解:真实环境下,结果受多种因素的影响,自动化的都知道,系统也会存在噪声。比如说很有名的预测房价的例子,我们的特征是地段、楼层高度、卧室大小、卧室数目等等等,但是总有我们没有考虑到的因素,甚至买卖双方的心情都会影响成交的价格,而这类因素很难把它表示出来并量化,所以我们可以统一的以ϵ来概括它们。

下面我们就要来学习到模型参数 W W .

策略

那么怎么学习到参数呢?很多同学肯定都想到了这样的损失函数:

(2)l(W)=12i=1n(yiyi¯)2

yi¯¯¯¯ y i ¯ 即我们模型的预测值,我们找到 W W ∗ 使损失函数达到最小,那么 W W ∗ 就是我们要找的模型参数。
这当然是没问题的,但是我们可以继续向深一点思考,为什么要这么做呢?为什么是此损失函数而不是彼损失函数呢?比如说为什么是差平方,而不是 |yiyi¯¯¯¯| | y i − y i ¯ |
下面谈谈这样做的概率解释。
现在,假设我们根本不知道什么损失函数,那怎么办呢?请诸君慢慢往下看。
我们通常都会假设 ϵ ϵ 服从标准高斯分布,这个似乎有点约定俗成,书里也不会多说为什么是这样的假设。我的理解是:
首先,高斯分布容易计算。
其次,根据中心极限定理,很多很多独立同分布并且具有有限的数学期望和方差的随机变量叠加时,其分布近似服从标注正太分布,正如我上面说的, ϵ ϵ 的对未知因素的拟合,那么假设其服从标准正太分布是合理的,这个理解仅仅是我的胡说,我不负责的,哈哈。

好,总之,我们假设 ϵN(0,σ2) ϵ ∼ N ( 0 , σ 2 ) , 那么参考上面的模型公式,我们可以进一步得到 yN(WTx,σ2) y ∼ N ( W T x , σ 2 ) , 这样模型可以重写成:

P(y|x,W)=N(y|WTx,σ2)(3) (3) P ( y | x , W ) = N ( y | W T x , σ 2 )

同样的,我们要找到参数 W W ∗ 使得 W=argmaxwP(D|W) W ∗ = a r g max w P ( D | W ) D D 就是我们现有的样本,通俗地说,就是要找到一组参数,使得现有样本出现的概率最大。这就成了统计学中的参数估计问题,极大似然估计了解一下,哈哈。
极大似然估计由极大似然原理而来,极大似然原理:一个随机试验如有若干个可能的结果A,B,C,… ,若在一次试验中,结果A出现了,那么可以认为实验条件对A的出现有利,也即出现的概率P(A)较大(百度百科)。
也就是说,我们把样本的产生看做是一个随机过程实验,那为什么会出现这些样本而不是别的样本?肯定是真实模型的真实参数有利于产生这些样本。
好,现在我们用极大似然来估计我们的参数,这在统计学中是一个比较简单的问题。
首先我们假设(这些假设在学习过程中极易被忽略,但是它们又是那么重要,可以说,模型效果好正是样本满足了模型的假设,反之)样本独立同分布(iid),则负对数似然函数为:
(4)l(W)=i=1mlogP(yi|xi,W)=i=1mlog[(1zπσ2)exp(12σ2(yiwTxi)2)]

上面的式子演算下来,最后一步是:
=12σ2i=1m(yiwTxi)2+m2log(2πσ2)(5) (5) = 1 2 σ 2 ∑ i = 1 m ( y i − w T x i ) 2 + m 2 log ⁡ ( 2 π σ 2 )

看到这里有没有一种恍然大悟的感觉?此式的后半部分没有意义,前半部分就是上面我们说的损失函数的由来! 是由极大似然估计推导出了最小二乘法。理解了这一部分,我们就会明白,目前的机器学习为什么叫做统计学习了。
好,我们现在的策略就是要着手找到使负对数自然函数取得最小值的参数,也等价于找到使均方误差取得最小值的参数。那么,怎么找呢?

方法

正如上面所提到的,现在我们面临求最小值问题。这个高中毕业的都知道, 求导使导函数为零嘛。线性回归这里比较特殊,可以直接得到闭式解,这里就不展开。我们学习一个更通用的方法,梯度下降法。这个时候其实我们又到了最优化理论的范畴内(装个高端。。。)。
梯度下降法的思路是我们不直接求得闭式解,或者说情况不允许我们直接求得闭式解,我们只好一步一步的“逼近”最优解。
梯度下降的方式有三种, 我们来看一种随机梯度下降的东西,先对随机函数求进行求偏导,注意此时只有一个样本:

L(W)Wi=(yiWixi)xi(6) (6) ∂ L ( W ) ∂ W i = ( y i − W i x i ) x i

这就是损失函数对模型参数W的梯度 W ▽ W ,梯度是什么?梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。(百度百科),那换言之,往梯度相反的方向走就会取得最小值也最快,那么我们就按梯度反方向更新参数:
Wnew=WoldηkW W n e w = W o l d − η k ▽ W

ηk η k 是学习率,也叫做步长。
批量梯度下降,微批量梯度下降自行了解一下。
好,就这样一种更新到算法收敛,就是我们要求的模型参数。但是,线性回归却没有到此结束。
下一篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值