首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

回归算法之线性回归(一)

本篇大纲:

1、推导出线性回归的损失函数loss

2、推导出线性回归中Theta的求解公式

3、代码试验公式的准确性

开篇预警:

本篇内容主要目的是为了知其然更知其所以然,故而会从源头开始推导到最终的Theta取值。

需要涉及到一些基本数学知识,比如中心极限定理,极大似然估计,矩阵求导,矢量运算,凸函数性质等。

整体推导可能会略显枯燥,可以选择跟着思路走一遍,也可直接查看结果,但若自己跟着从头推下来,相信会和楼主一样,会有一种很舒服的感觉,也能略微体会到一点那“数学之美”。

正题:

首先,我们需要了解线性回归的背景:

1、它是有监督的。

2、它是对于连续性数值的预测。(比如房价预测,比如本月家庭用电数量预测,其预测对应的值域都是连续性的)

3、它和自变量之间存在着某种线性关系。(高次函数通过变量替换依然能看成是线性的)

其次,以房价作为引入示例

我们知道这样的背景:

房屋的价格会受着房屋面积,房间数量,房屋楼层,地理位置,房屋装修配置等等的影响。

这里,

我们将要预测的目标:房屋的价格作为因变量,记为

我们将所有可能影响的因素,比如后面列举的房屋面积,房间数量,房屋楼层,地理位置,房屋装修配置等,作为自变量(也叫特征变量),记为

由于我们认为每一个变量和因变量之间应该存在着某种关系,故而,我们记为

有了房价和各个特征变量的关系式,那么下一步就是要计算出每一个特征变量x对应的系数theta的值。

为了区分是自己预测的y还是真实的y,我们如下标记我们自己预测的y

那么,对于真实的y值,由于每一个预测和真实值之间都会存在其误差项,故而,我们可以获得真实值y的表达式:

这里的epsilon即为误差项。

由中心极限定理我们可以认为,误差项epsilon是独立同分布,并且符合均值为0,方差为某定值的高斯分布。

当然,误差一般会分为模型误差和随机误差,我们需要尽可能降低的是模型误差,由于随机误差主要是来源于数据取样过程中一些不可控因素,也难以避免,故而不是我们讨论的范畴。

那么接下来就让我们来逐步剖析一番(由于用编辑器输入数学符号一来比较慢,二来写起来实在没有那种推导的感觉,故而接下来楼主会选择使用手写推导来完成这个过程)

此时,我们也就得到了每一组样本下对应取到真实值y的概率。

对于极大似然估计一点没印象的小伙伴,可以需要稍微谷哥度娘一下求解过程。

到这里,我们知道,

要想“给定theta,在已知x的前提下,获取y值”的概率越大,即P值想越大,则L(theta)也越大

要想L越大,则ln(L)也越大

这里对于每个场景下的样本值,其均值和标准差我们并没有办法去控制,如前面所说,我们能调整的,是模型误差。

故而要想ln(L)越大,则被减项

越小

而由于对样本方差的不可控性

所以,我们实际上是需要

越小越好

故而我们定义这里的损失函数为

到这里为止,是不是还算很简单,已经到达了第一个小山坡了,我们再确定一下我们的历程以及最根本的目标。

我们希望能求出一组theta,使得在给定x以后能最大概率得获得y的真实值。

而要想求出这组theta,则需要L(theta)最大

L(theta)最大,则需要ln(L)最大

Ln(L)最大,则需要loss函数最小

换而言之,我们的目标是为了获取loss最小时的那组theta值。

那么接下来我们要做的,就是求解loss函数取到最小时theta的取值。

前方略带高能!!!

前方略带高能!!!

前方略带高能!!!

为了进一步能让人理解每一步的推导过程,我们先给出一些预备点预热,然后再进行推导。

最后,在开始正式求解loss前,我们理一理求解的思路:

对于二元函数 y=f(x)=x^2 求最值来说,我们直观的做法是

1、求导

2、求极值点

3、获取极值

4、若是闭区间,则和边界点做比较

5、若是无穷区间,则以极值点来做为最值点(由凸函数的性质决定)

而对于具有多维theta的loss函数而言,其实过程也是如此:

计算量是不是还是很少的,推下来是不是对数学感受到了一点亲切。

由于损失函数是二阶凸函数,故而当取得极小值theta值时即为当前的最小值。

换一句话说,也就是此时的theta则是我们所需要求解的theta。

最后我们来简单实践检验一下这个公式的可靠性。

即验证

直接上源码:

看,我们构造了一个 y1 = x1 + 2*x2 + 3*x3 ,用公式计算出来的参数值也和我们预计的一模一样。

看来在小量数据的时候,用直接公式法还是很靠谱的。实际上,sklearn里面的线性回归算法用的也是直接求解法来获取结果。

那么到这里,求知欲旺盛的小伙伴可能会提问:

如果x.T点积x不可逆怎么办

线性拟合达不到拟合效果怎么办

拟合效果是不是越高就一定越好

现实中能解决什么问题了

实际开发的例子有木有。

请看下回分解。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180511G0T3PN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券