通俗得说线性回归算法(一)线性回归初步介绍

一.从线性回归的故事说起

相信大家都听过著名的博物学家,达尔文的大名,而今天这个故事的主人公就是他的表弟高尔顿。

高尔顿是一名生理学家,在1995年的时候,他研究了1078堆父子的身高,发现他们大致满足一条公式,那就是

Y=0.8567+0.516*x

这条式子中的x指的是父亲的身高,Y指的是儿子的身高。可以明显看出,这就是我们中学时代学的二元一次方程,反应在平面上就是一条直线

通过这条公式,我们或许会直观得以为高个的父亲总会有高个的儿子,矮个的父亲会有矮个的儿子。但高尔顿进一步观察后发现,并非所有的情况都是这样的。特别高的父亲的儿子会比他父亲矮一些,特别矮的父亲的儿子会比他父亲高一些,父子不会说一直不断得更高或更矮下去。这个现象,其实就是回归。趋势不会一直持续下去,而是会回到某个中心。

通过这个故事,相信你已经明白了什么是线性回归,那么接下来我们就来说说更加详细的内容。

二.理解线性回归

平面坐标点

抛出问题:假设有这样的一些点,这些都是现有的数据,我们要找到拟合这些点的线,然后预测接下来的点。那我们要怎么找出这条线呢?

h(x)=a0 + a1 * x(a1是斜率,a0是截距)

或者说换个问法,我们要怎么求出a_1和a_0呢?

Cost Function(代价函数)

第一次接触线性回归的同学可能不知道什么叫cost function,其实当碰到不知道的概念的时候,只要想清楚两件事,这个概念是什么,有什么用。想清楚这两点,起码就不会犯迷糊了。

代价函数是什么?

我们先随便画两条线来拟合那些点,如图所示,可以看到,明显图二更加拟合,也就是说图二的线更接近我们理想中的线。


代价函数介绍

OK,再仔细观察,图二的线和图一的线有什么不同呢?最明显的,就是图一中,各个点沿y轴到那条直线的距离更远,而图二中各个点到线的距离更近。


各点到西线的距离

这所有点沿y轴到直线的误差,也就是各个点的误差,的平均值。就是代价函数。公式如下:

代价函数公式

pred(i) 就是第i个点上,直线的y值,y(i)就是第i个点,这个点的y值,加上平方主要是避免了负数的情况。这就是代价函数。

代价函数有什么用?

代价函数有助于我们找出a0和a1的最佳可能值。前面说到,代价函数就是每个点在y轴到直线的距离的平均值。我们的目标就是最小化这个值,在普遍情况下,代价函数是凸函数,如下图所示,

image

看到这个函数是不是比较熟悉?在学习导数的时候不就经常看到这样的图嘛,这种图通常也是通过求导来解的。

最小化过程

从y=a0+a1*x,这条直线开始。到写出代价函数,我们的目标一直没变,就是要找出a0和a1,让这条直线更贴紧那些点(就是让代价函数最小)。当然,我们还没说到如何让代价函数最小化,下面我们就接着说说如何让代价函数最小化吧。

Gradient Descent(梯度下降)

梯度下降是什么?

梯度下降是一种不断迭代更新a0和a1以降低代价函数的方法。 我们可以通过对代价函数求导的方式,看出应该让a0或a1加还是减。

梯度下降公式

上面部分其实就是对代价函数的求导,通过对其求导,我们能够知道a0和a1应该是增大还是减少。

求解系数公式

这条公式其实就是(a0-代价函数的偏导数)。当然,其中还有一个控制速率的α(Alpha),对代价函数的求导能知道是对a0和a1增大还是减少,那么α就是应该增大多少,减少多少。

举个例子,假设你现在在半山坡,你要做的是下山,代价函数的偏导数,就是告诉你应该向下还是向上。而速率α就是来控制步子要迈多大。

步子小(α小)意味着小步快跑下山,缺点是跑比较久。大步向前(α大)意味着比较快,但可能一下子迈太大,跑到对面半山腰去了。

速率α的作用

梯度下降有什么用?

通过梯度下降,能够让我们找到一个局部最优解的a0和a1,为什么是局部最优解呢?因为现实中的问题可能没一开始的例子那么清晰,很多时候你发现可能这条线也可以,这条线也不错,那条好像也可以。计算机也会这样,它可能也会觉得某条线就已经够好了。就不去找其他的线了。

反应到我们求的问题里面,可以说因为是最小化问题(最小化代价函数),但可能像右图一样,它已经在一个局部里面是最小的了,向左向右都是升高,既然如此那就安心当咸鱼喽。这种现象和初始的随机选择有关,也和训练的速率有关。

局部最优和全局最优

当选择了一个合适的α值,当更新迭代足够多次之后。理论上就会到达某个底部,这时候也就意味着代价函数是某个范围内最小的。这个时候的a0喝a1就被我们求出来了,我们就能够得到一条拟合空间中点的直线了。

最后再说一下,刚刚介绍的都只是在二维空间中的计算,也就是只有一个特征。而现实中往往不止会有一个特征,而是多个特征,如下面的形式:

h(x)=a0 + a1 * x1 + a2 * x2 + a3 * x3 ...

不过计算方式和计算的方法都是类似的。只是数据量会变多,计算会更加复杂些。

OK,今天先从一个例子开始介绍线性回归。然后阐述了代价函数,以及求解代价函数最小化的一个方法,梯度下降。后面会介绍用sklearn来做线性回归,以及其他多种回归分析方法的初步介绍。

以上~


推荐阅读:
Windows上IDEA搭建最新Spark2.4.3源码阅读及调试的开发环境
Scala 函数式编程指南(一) 函数式思想介绍
通俗地说决策树算法(二)实例解析
大数据存储的进化史 --从 RAID 到 Hadoop Hdfs
C,java,Python,这些名字背后的江湖!

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

推荐阅读更多精彩内容