机器学习算法(3)——线性回归与逻辑回归

线性回归

线性回归的数学推导主要涉及到以下几个知识点。

1. 利用矩阵的知识对线性公式进行整合

2. 误差项的分析

3. 似然函数的理解

4. 矩阵求偏导

5. 线性回归的最终求解

例子

本故事纯属虚构如有雷同那肯定是巧合。

A去银行办信用卡,柜台的漂亮妹子询问:"请问您的年龄和月收入是多少?"A:"20岁,月收入2万元"。妹子:“您可办理的额度为1万元”。此时,B同样办信用卡,妹子同样询问:“请问您的年龄和月收入是多少?”B:“19岁,月收入1.9万元”。妹子:“您可办理的额度为1.1万元”。A此时就郁闷了,我月收入比他高,为什么额度比他低呢。别问为什么!机器算的!那么机器怎么算的呢?这个时候我们就可以拿出机器学习中最基本也是最重要的算法之一线性回归

  岁数 月收入/万元 信用卡额度/万元
A 20 2 1
B 19 1.9 1.1

                                          

      图中的横坐标X1 和 X2 分别代表着 两个特征(年龄、工资) 。纵坐标Y代表目标(信用卡额度)。其中红点代表的就是实际的目标值(每个人可使用的信用卡额度).而平面上和红点竖向相交的点代表着我们根据线性回归模型得到的点。也就是说实际得到的钱和预估的钱之间是有一定误差的,这个就是误差项。
      因为误差项是真实值和误差值之间的一个差距。那么肯定我们希望误差项越小越好。(见“第二节代价函数”) 

        这个图可以看出机器如何进行预测的,它会根据大量的之前办理信用卡的人的数据就是图中红色的点(年龄、工资、信用卡额度)找出来最好的拟合线(面)来进行预测,这样你的数据来了之后直接带入进去就可以得出来该给你多少额度。

ps:有同学可能说不是线性模型么,咋图是个面呢?

线性不等于直线,特征是一维的,线性模型在二维空间构成一条直线;特征是二维的,线性模型在三维空间中构成一个平面;若特征是三维的,则最终模型在四维空间中构成一个体;以此类推……好呗,后面的需要大家自己想象啦。

1、模型

假设是年龄,则是年龄的参数;是工资,则是工资的参数。则,拟合的平面为:(其中b是偏移量)

当然实际情况中,银行的漂亮妹妹会让你填大量的信息,也就是模型不止两个特征和参数,可以把模型改写为通用矩阵形式:

                                                        

其中,                                             

至此我们得到线性回归的模型。

2、代价函数

1.误差项分析:

      真实值和预测值之间肯定是存在差异的(用ε来表示误差)也就是说A去银行办信用卡,本应该给1万元,但实际可能给9千或者1万,这样就不可避免的产生误差。对于每个样本:

                                              

既然说到误差了,咱们就来好好唠一下,首先银行的目标得让误差越小越好,这样才能够使得我们的结果是越准确的。那么这个误差有什么规律可循吗?

误差 是独立并且具有相同的分布,并且服从均值为0方差为ε的高斯分布。

独立:A和B的信用卡额度不会相互影响,不会因为给A额度高了,就给B低。

同分布:都是一家银行,一家预测系统

高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况,所以我们认为该误差是可以服从高斯分布的。

误差项ε是独立且具有相同的分布,服从均值为0方差为的高斯分布

下面是高斯分布的图,忘记的同学们可以回忆下。

2.推导

(1)预测值和误差:

(2)由于误差服从高斯分布:

(3)将(1)带入(2):

     上式的意思就是我去办信用卡,得到的额度恰好是等于真实情况下就该给我这么多的概率。(预测值和真实值对应的可能性大小)那么银行当然希望这个概率越大越好呀,越大代表越准确呀。

    误差项肯定是越小越好了,那么接下来要讨论的就是什么样的参数和特征的组合能够让误差项最小呢? 这里就引入了似然函数的作用。似然函数的作用就是要根据样本来求什么样的参数和特征的组成能够最接近真实值。越接近真实值则误差越小。

 

(4)又因为设定样本是独立同分布的,对其求似然函数:

似然函数最大化是为了逼近我们的数据。

(5)上式,是一个累乘,我们可以转换成加法,于是引入对数,即对数似然函数:

                                      

(6)上式展开后得到:

                                    

                                    

因为      为常数,所以只需要求    ,要让最大,即让减号后面部分最小。

(7)所以,我们定义代价函数:

                               

         其中 保留是为了后续求导系数约分。

总结:到这里我们终于推导出来了,银行只需要做一件事就可以了,那就是最小化这个函数,其实说白了就是要让我们的预测值和真实值之间的差异越小越好,这就是最小二乘法!

        通过上面一系列推导,就把式子转化为最小二乘法的相关知识了。这就是在线性回归中使用似然函数的相关知识。

3、优化算法

对损失函数进行优化也就是求出参数w,b,使的损失函数最小化。有两种求解方法:

(1)求导法

对各参数求偏导,并使其偏导为0,进而求出最优的参数。但此方法不适用于不可导函数,且计算量过大。

矩阵求导运算常用公式(有么有很贴心,如果大家记不得可以参考):

首先我们把展开方便求导:

                                                  

求上面式子的最小值该怎么办呢?求导啊,另导数等于0

                                                    

    以上就是按矩阵方法优化损失函数,但上面方法有一定的局限性,就是要可逆;下面我们来说一说另外一个优化方法梯度下降法。

(2)梯度下降法

梯度下降法基于的思想为:要找到某函数的极小值,则沿着该函数的梯度方向寻找。若函数为凸函数且约束为凸集,则找到的极小值点则为最小值点。 梯度下降基本算法为: 首先用随机值填充(这被称为随机初始化),然后逐渐改进,每次步进一步(步长α),每一步都试图降低代价函数,直到算法收敛到最小。

这两种方法的优缺点对比:

梯度下降 方程求解
需要选择学习率,可能由于学习率选择的不合适,导致模型效果差 不需要
需要多次迭代 一次运算得出
特征维数较大时,同样适用 因为矩阵求逆计算度比较复杂,一般N<10000时可以采用。
适用于各种模型 有局限性,比较逻辑回归就不适用

已知:

                                

                从而在梯度下降中每一步向量W的迭代公式如下:

                                   W=W-\alpha (X^{T}XW-X^{T}y)

其中,α为梯度下降法的步长。

    实践中,我们一般不用操心优化方法,大部分机器学习库都内置了各种逻辑回归的优化方法,不过了解至少一种优化方法还是有必要的。

from:http://blog.51cto.com/12133258/2051527

from:https://mp.weixin.qq.com/s/VgZK16ZMND3aMyiC0xkOMQ

逻辑回归

      逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原理里面却残留着回归模型的影子,本文对逻辑回归原理做一个总结。

     逻辑回归的定位

首先,逻辑回归是一种分类(Classification)算法。比如说:

  • 给定一封邮件,判断是不是垃圾邮件
  • 给出一个交易明细数据,判断这个交易是否是欺诈交易
  • 给出一个肿瘤检查的结果数据,判断这个肿瘤是否为恶性肿瘤

      逻辑回归是互联网上最流行也是最有影响力的分类算法,也是深度学习(Deep Learning)的基本组成单元。

 从线性回归到逻辑回归

 我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θ(即W),满足Y=Xθ。此时我们的Y是连续的,所以是回归模型。如果我们想要Y是离散的话,怎么办呢?一个可以想到的办法是,我们对于这个Y再做一次函数转换,变为g(Y)。如果我们令g(Y)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。下面我们开始引入二元逻辑回归。

一个逻辑回归的例子

比如有下面一组数据:一门考试之前学生的复习时间与这个学生最后是否Pass这门考试的数据

通过这些数据,利用逻辑回归算法进行模型训练,可以得到最终的模型结果是这个样子:

这样,给出任何复习时间,就可以预测出是否通过的概率

3 逻辑回归拟合函数:Sigmod函数(逻辑函数)

        可以看到,逻辑回归最后的分类结果是0/1,因此,我们选择Sigmod函数(貌似是一个专业术语)来拟合训练数据。Sigmod函数的形式如下,它的x可以无限取值,但是y就在(0,1)之间

对于最简单的,只有一个自变量(x)的二元分类(y=0/1)逻辑回归中,构造出来的拟合函数为

所以,要得到最终的模型,就是根据样本点,计算a和b的值.

在上一节的复习时间和考试的例子中,最终计算出参数a=1.5046,b=-4.0777,因此可以得到下面的拟合函数的图像:

     上一节我们提到对线性回归的结果做一个在函数g上的转换,可以变化为逻辑回归。这个函数g在逻辑回归中我们一般取为sigmoid函数,形式如下:

  

二元逻辑回归的损失函数

       回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数。我们知道,按照二元逻辑回归的定义,假设我们的样本输出是0或者1两类。那么我们有:

 

二元逻辑回归的损失函数的优化方法

     对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,等牛顿法等。这里推导出梯度下降法中θ每次迭代的公式。由于代数法推导比较的繁琐,我习惯于用矩阵法来做损失函数的优化过程,这里给出矩阵法推导二元逻辑回归梯度的过程。

 

from:https://www.cnblogs.com/pinard/p/6029432.html

from:https://www.cnblogs.com/hezhiyao/p/7577960.html

猜你喜欢

转载自blog.csdn.net/qq_30815237/article/details/86549010