机器学习算法--线性回归

#前言

  从本文开始小林会相继给大家介绍一些有关机器学习的算法,由于本人也是一个新手小白,所以这些内容大家仅作为参考就好。这些基础算法也都是小林从b站上寻找的资源进行自学的,所以大家如果看完本篇及接下来的博客有任何不明白的地方,可以移步b站大学跟着大佬再进行深入的学习。本文仅作为学习笔记,方便自己日后查看,同时也将学习成果分享给大家。

#回归问题概述

  首先我们来看一个这样的问题:银行贷款问题

  这里我想提出一个问题:决定银行最终是否贷款以及贷款数额的因素是什么?毫无疑问,是贷款人的工资和年龄。这里需要引入几个有关机器学习的概念:标签(特征)和目标。正如上图所示,工资和年龄就是两个数据标签,我们将其定义为x1和x2,而贷款额度是不是就是我们预期希望银行所发放的金额,这里我们将其定义为目标。有了上述的两个概念之后呢,我们可以初步建立起一个公式:y = x1 +x2.但是这个公式所表现出来的不符合上图的实际,应为年龄和工资对于额度目标的影响是不同的,所以我们对公式进行进一步的变化:y = \theta 1x1+\theta 2x2。此时当我们拥有了这个公式之后,我们可以将上述的变量用一副图表示出来:

  但是不知道大家发没发现一个问题,那就是我们的公式是线性的,正如上图的那个平面,无法做到对于所有的点进行拟合,所以我们只能寻求最符合所有点的平面,那么如何实现?

  我们将公式进行一个小小的变形:

  公式中\theta 1\theta 2我们一般称之为权重项,而\theta 0是我们为了去得到一个更优的平面而引入的偏置项。但是我们都知道引入一个\theta 0,我们的数据就不符合矩阵的形式,运算起来比较麻烦,怎么办?我们在刚刚的贷款图中在引入一个特征\theta 0,并且所有样本的值都为1,这是我们为了方便计算而对数据进行的预处理。所以最终我们的公式长这样:

#误差项定义

  根据我们最终的得到的公式,我们将x1和x2代入,是不是会得到平面上的一个预测值,但是由于平面无法完全拟合目标,预测值与目标值之间是存在误差的。我们要做的,也正是机器学习所需要学习的,就是通过不断缩小这个误差值(一般我们也叫做损失函数),来使得这个预测值不断逼近目标值。

#误差的独立同分布的意义

  这里我们对于误差项的定义如下:误差是独立并且具有相同的分布,并且服从均值为0方差为\theta ^{^{2}}的高斯分布。我们需要对以上这个定义作出一定的解释。

  独立:各个误差之间相互是独立的,不会受到其他误差的影响。比如张三和李四是好朋友,他们一起去银行贷款,银行不会因为张三的一句话而给李四多贷一点,还是得取决于李四自己的经济实力。

  同分布:还是贷款的例子,张三去了建设银行,李四去了工商银行,那我们的研究究竟是针对哪个银行的呢?所以说误差也是一样的,必须属于同一个问题。

  均值为0的高斯分布:这两个名词我决定一起来解释比较合适。银行是不是会根据贷款人的情况给有些人多贷一点,而给有些人少贷一点,但是绝对不会给所有人多贷或者给所有人都少贷,这些多贷或者少贷的额度和必须是0,才能保证银行的正常运行。恰好这符合高斯分布曲线,越靠近均值,数据所占的比例越大,比如银行给你多贷100万或者少贷100万的事情几乎不会发生。

#似然函数的引入

  我们上面已经说过了误差符合独立同分布的高斯分布,那么我们现在就可以列出高斯分布的公式:

  这里面由于我已经有了y(目标值)和\varepsilon(误差值)以及x(特征数据),现在就是需要求出一个合适的\theta,那我们就可以利用上面的公式,将\varepsilon用y,x和\theta替换掉,就可以得出如下公式:

  我们之前说过机器学习的目标是不是找到一个合适的\theta使得误差值越小越好,那么我们如何求出这个\theta呢?这里我们需要用到似然函数。

  正是由于误差值的独立同分布,才可以使用累乘,但是这个公式的运算量也太大了吧。我们随意给m赋一个1000,就得进行1000次乘法计算,那么怎么办?这里我们巧妙的将似然函数给取对数,这样就可以把乘法转换为加法。

  但是有人会提出疑问,那么得出的值不就发生改变了?这里我们需要搞清楚,我们要求解的对象是谁?是极大值还是极大值点?很显然是极大值点。虽然取对的操作改变了极大值,但是不会改变极大值点。

#参数求解 

  我们将上述的公式转变为累加的形式,如下图所示:

  这时候需要我们运用一点对数的运算法则,将相乘的形式转变为相加的形式,处理后是这样的:

  在上述的公式中,我们将一些常量(针对具体某个问题,m是固定的,那么对于m的累加也就是定值常数)提到整体参数的前面 (例如m以及1/\sigma ^2)。这时候我们需要再回头思考一下,现在我们要求解的是上述这个整体式子的最大值,也就是让我们的计算结果y越接近目标值,而式子的前半部分是定值,后半部分的恒正,要想求解y的最大值,是不是就需要求解后面部分的最小值。我们将这一部分单独提取出来,作为我们待求解的目标函数,也叫做loss(损失函数)

  接下来就是一系列的数学处理过程,我就不多赘述。

 

  但是到这里,我们发现机器学习的过程如何体现?上述的求解思路仅仅是给定数据求参数,并没有体现出机器学习的过程 。

#梯度下降

  机器学习的过程就体现在对于\theta不断优化的过程。前面我们说过现在要求解 \theta的最小值,这个最小值的求解如何让计算机实现?

  假如现在我想要快速下山(用来类比求解\theta最小值的过程),那我会选择哪条路?毫无疑问是第三条,因为它最快,而第三条路本质上就是人所处位置的切线斜率。 那么这里涉及到一个问题,人的步长多少合适,如果我一次跨一大步,那么直接摔下山是毫无疑问的,所以步长的选择通常较小(0.01或者0.001)。每走一次都需要重新计算所处位置的新切线斜率,而我们需要下山,所以上述过程我们通常叫做沿着梯度下降。

  通常对于某一个具体的问题,我们需要求解的\theta并不止一个,而根据独立分布的原则,我们需要对每一个\theta都进行梯度下降的处理:

#参数优化

  对于梯度下降我们有如下几种方式:

 

  批量梯度下降:其优势在于算出的\theta十分精确,每修改一次都需要遍历所有参数,这也就带来计算十分缓慢的结果。

  随机梯度下降:与批量梯度相对,计算每一个数据都会改变一次参量,速度极快,但是同时也带来参数值很不准确的问题。

  我们将上述两种方法的优点进行结合,提出了小批量梯度下降,这样既可以保证求解参数的准确性,也可以保证速度。在实际应用中通常选取的批量大小为64,128,256等

  以上就是有关线性回归的相关理论知识,希望对大家有一定的帮助!

 

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值