线性回归 最小二乘法

原文在此

线性回归是最基础和常见的算法,属于监督学习的一种,是讲述算法开始的地方。我们在中学、大学学过很多次,虽然我已完全不记得。线性回归作为基础,虽然simple但不意味着easy,对其掌握很重要的。

虽然看上去平平无奇,不过其内涵之丰富让人惊叹,很多复杂的算法中都能看到线性回归的影子,可以自然的过渡到逻辑回归、多层感知机、再到深度学习等复杂的方法。

image

本篇主要结构如下:

  • 快照snapshot:sklearn实例

  • 最小二乘法

快照snapshot

首先看看我们要解决的问题。来自kaggle的house price数据集,有1460个样本的训练集,我们节选两列作为例子。

image

给定n个实例,每个实例含有m个特征和1个目标变量。目标变量为连续值时,意味着采用回归的方法;目标变量为离散值时,则采用分类的方法。这里的例子中,GrLivArea和LotArea两列是已知的特征,SalePrice列则是目标变量。目标变量与两个特征的关系如下图,可见特征与目标间基本符合“线性”的假设。

image

线性回归假设每个特征和目标变量的关系为线性关系,目标可用各个特征的加权求和求得。用如下公式表达:

其中,x是一个实例,含有m个特征故形状为(1,m);y是因变量;w是每个特征对应的权重,形状为(m,1);b是偏差,形状为1。

我们可以把n个实例的公式,写成矩阵形式:

其中,X变为n个实例的集合,是一个(n,m)形状的矩阵。Y为n个实例的目标,是形状为(n,1)的矩阵。

线性回归的求解过程是,已知X和Y,设置一个目标,求解最优目标时的对应的w和b。这里的目标既是:损失函数取最小值。这样问题转化为一个数学优化问题来求解,主要求解方法有基于误差的最小二乘法,和基于频率派观点的最大似然法,基于贝叶斯派观点的最大后验法。

为了了解基本过程,我们先在sklearn里实现一下。

# load the data

我们得到了两个特征对应的权重是4.89e-04和2.83-06,对应的截距b是11.25。这意味着

SalePrice=4.89e-4* GrLivArea + 2.83e-6* LotArea + 11.25

image

这样,我们就实现了一个线性回归的过程,知道了它大概的含义。当然,就算在excel里,也很容易的做出拟合来。

最小二乘法

最小二乘法,看着也是平平无奇,但他的发明者却是真大佬:高斯和勒让德。勒让德在1805年的著作《计算慧星轨道的新方法》中首先发表最小二乘法。高斯在4年后也发表了最小二乘法,并宣称已用了很多年了,而且还用它精确预测了谷神星的位置。如果是别人这么说,可能是沽名钓誉,但如果是高斯这么说,我是相信的。看来,最小二乘法也是响当当的高端知识。

最小二乘法的理念是承认观测误差的存在,认为误差是围绕真值上下波动的,当平方误差最小时即为真值。具体应用时,算法的关键是要学习到线性方程中中的未知权重w和b,当经验风险最小化时的权重认为是最优的。为了简化,我们经常在推导中忽略b,因为b可以认为存在一个常数列x=1对应的权重w的一个分量,不必单独另求。

<embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo99NricmEpNhl4NbkKAnOvibPBs7FEpQaufs8T9Wh8dOuWLR9XtYbibS7ydNlS5EpRTicU/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -2.488ex; width: 24.528ex; height: auto;">

m个实例的经验数据,其经验损失函数为:

<embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo93dia1N4lhLfUYvVH3rCbC18ibUZ2HKxXCTibz0ia4VibykmqmSWDsNsZJvlo6ZGgpLAmB/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -2.819ex; width: 26.007ex; height: auto;"><embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo9JduR0yZnjWz4VWrCsv1Rq1zA25TmOBFNVjAdkoNOLyXRyicfviaGuwCEe9soNjz7wC/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -1.577ex; width: 34.579ex; height: auto;"><embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo9nRUwraXB4jGAiaqMibaScGPZSbEGm5S3iajsoFhOO5A75foebtpXCcuHSy35sql4Mkb/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -1.577ex; width: 50.489ex; height: auto;">

虽然预测的时候我们是带入x,求解y,是关于特征x的函数。但训练的时候,我们把损失函数Loss看成是关于w的函数,把问题转化为求关于w的最优化问题。即Loss取最小值时,认为w和b是最佳值。最小值问题当然可以用微积分,导数为0时取得的值为极值,如果是凸函数,此时的极值为最小值。L对w的导数为:

<embed src="https://mmbiz.qlogo.cn/mmbiz_svg/O1dAhMERUwV9wQrMHTmps5RiajptXABo9IMUnlg89xb9rWCFcNIQibtZBmliasCgGTQ1pLfgbTlZvFtt3gWZdzLyX5qI2TYZuCm/0?wx_fmt=svg" data-type="svg+xml" style="margin: 0px; padding: 0px; max-width: 300%; box-sizing: border-box !important; overflow-wrap: break-word !important; vertical-align: -1.602ex; width: 26.595ex; height: auto;">

其中,矩阵求导过程中用到的几个规律:

可求得w的解析解为:

这里需要存在逆矩阵的情况下才存在解析解,即需要其是一个满秩矩阵。如果是奇异矩阵,如特征的个数超过样本的个数或一些特征本身是线性相关的,则无法得到其解析解。

# 解析

梯度下降

矩阵求逆的运算量较大,且数据量较大甚至无法放进内存时,我们就需要一种高效数值解法:连深度学习都说好的梯度下降法。数值解法通过不断的迭代,以时间换空间,逐步求的最优解。

直观理解就是,在曲面上的一点,其变化最大的方向、最陡的方向是沿着梯度的方向。我们把loss看作一个w的函数,为了让loss不断减小,移动w的方向就是沿着其梯度的方向。

这里的 就是调参中最重要参数了学习率。每一步都沿着梯度负方向前进一点。梯度下降可以求得全局最优解的条件是凸优化。

image

批量梯度下降

批量梯度下降则是为了应对更大量数据的,总共有n个样本。可以一次进去一小批,更新一下参数,再进去更新一小批,更新一下参数。这里n个样本循环轮数称为epochs,每次进去的一下批的个数为batch_size,所以权重w一共更新的次数为 n/batch_size*epochs,称为总的步数steps。

如果每次只进去一个样本进行更新权重,则称为随机梯度下降,此时batch_size大小为1。

这些参数即使到了深度学习也是需要了解的基本概念,因此这里介绍了一下。而从梯度下降对调参的重要启示是:初始化很重要,学习率很重要,梯度下降决定了各个特征需要norm标准化。

通过最小二乘法,我们看到求解一个算法的基本步骤。那就是定义一个损失函数/目标函数,一般的目标函数都是为了让模型的预测尽量贴近数据中已有的标签。然后采用优化方法,不断调整模型重的参数,使目标函数取得最小值,此时的模型参数即为我们找到的模型。这个过程,就可以称之为“学习”。

我是YueTan,欢迎关注。

下篇预告: 机器学习- 线性回归II从零开始实现

参考资料:

  • 机器学习

  • PRML

  • ESL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351