您当前的位置: 首页 >  回归

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

线性回归

宝哥大数据 发布时间:2018-11-20 11:03:05 ,浏览量:0

线性回归 历史背景

   英国人类学家F.Galton首次在《自然遗传》一书中,提出并阐明了“相关”和“相关系数”两个概念,为相关论奠定了基础。其后,他和英国统计学家Karl Pearson对上千个家庭的身高、臂长、拃长(伸开大拇指与中指两端的最大长度)做了测量,发现:儿子身高(Y,英寸)与父亲身高(X,英寸)存在线性关系:    高个子父代的子代在成年之后的身高平均来说不是更高,而是稍矮于其父代水平,而矮个子父代的子代的平均身高不是更矮,而是稍高于其父代水平。Galton将这种趋向于种族稳定的现象称之“回归”。 目前,“回归”已成为表示变量之间某种数量依存关系的统计学术语,并且衍生出“回归方程”“回归系数”等统计学概念。如研究糖尿病人血糖与其胰岛素水平的关系,研究儿童年龄与体重的关系等。

一、一元线性回归

  一元线性回归是研究一个自变量与一个因变量的统计关系。如人均收入X与人均食品消费支出Y,假设X与Y的关系为Y=aX+b。   线性回归的任务:用恰当的方法,估计出参数a,b。并且使估计出来的参数具有良好的统计特征。回归问题从某种视角看,视同参数估计问题。

1.1、房屋销售

假设有一个房屋销售的数据如下: 在这里插入图片描述 我们可以画一个图,x轴是房屋的面积。y轴是房屋的售价: 在这里插入图片描述

我们可以用一条曲线去尽量准的拟合这些数据。画出的图形如下图所示。 在这里插入图片描述

回归定义:给定一个点集D,用函数去拟合这个点集,并且使得点集与拟合函数间的误差最小。如果这个函数曲线是一条直线,那就被称为线性回归。

如果有一个新的面积,假设在销售价钱的记录中没有的,而我们又想知道房屋的售卖价格,我们怎么办呢?图中绿色的点就是我们想要预测的点。

假设我们知道了红色的这条直线,那么给出房屋的面积,马上就可以给出房屋的售价。因此,我们需要找到这样的一条红色直线。 在这里插入图片描述

二、模型建立

刚才我们认为房屋的售价只与面积相关。实际生活中,影响房价的因素非常多,如房屋的面积、朝向、所在小区、房间的个数等。考虑更多的情况,我们用x1,x2…xn 去描述这些影响房屋售价的因素,这些影响因素在机器学习中称为特征。如x1=房间的面积,x2=房间的朝向等等。注意: 我们暂时考虑两个变量,我们可以做出一个估计函数,后面的推导都是根据这两个变量的估计函数进行的:     在这里插入图片描述 θ在这里称为参数,θ作用可以调整房屋售价的各种因素的作用大小。换句话说影响房屋售价的因素是房屋的面积更重要还是房间朝向更重要。

我们令 x0 = 1,就可以用向量的方式来表示了

    在这里插入图片描述 在上式中,一旦θ确定,那么我们的直线也就确定了,我们就能够对房价进行预测了。因此我们要做的工作是确定θ。

θ的值可以有无数个,我们应该如何选取θ呢? 2.1、最小二乘法

  我们的模型估计值hθ(x)与真实值y总是存在误差的。为了模型的准确性,自然需要两者间的误差尽可能小, 那么模型就越准确。由于存在多个点, 通常情况下, 我们采用误差平方和的方式, 求取误差平方和最小:     在这里插入图片描述   一般Jθ函数称为损失函数(loss function), 上述问题就转化为求Jθ的最小问题

2.2、如何求解Jθ的最小值? 2.2.1、最小二乘法的思路: 求偏导,取极值。

  上式中只有θ是未知数,回顾高数中内容,如何求解函数的最小值。通常做法,对目标函数求导,令导数为0,求得的点,即为极值点,如果函数在定义域内是凸函数,那么极值点就是最值点。

θ是未知数, 分别对θ1、θ2、θ3求偏导。x, y为样本。

在这里插入图片描述

如何通过上面公式获取到下面的结果: θ=(XTX)-1XTY:

参考: 机器学习-线性回归1(最小二乘法及其几何意义) 在这里插入图片描述

2.2.2、迭代法:

x=? , 使得函数f(x)取得极值, x无显示解, 如何求取f(x)的极值? 在这里插入图片描述

梯度下降法是一种迭代法,先给定一个初始位置,然后向下降最快的方向调整 ,在若干次迭代之后找到局部最小。

    在这里插入图片描述

使用代码实现上面的公式
#coding:utf-8
xOld = 0  #给定初值,xOld记录上一步的x值,xNew下一步迭代的x值
xNew = 6
#步长 
eps = 0.01
#可接受误差
precision = 0.00001

#定义原函数
def f(x):
    return x**4 - 3 * x**3 + 2

#定义导函数	
def f_prime(x):
    return 4 * x**3 - 9 * x**2

#主函数	
if __name__ == '__main__':
    #循环直到函数值之差满足最小误差
    while abs(f(xNew) -f(xOld)) > precision:
        xOld = xNew
        xNew = xOld - eps * f_prime(xNew)
    #输出极小值点的横纵坐标
    print(xNew,f(xNew))
三、 最小二乘法与梯度下降法

最小二乘法跟梯度下降法都是通过求导来求损失函数的最小值,那它们有什么区别呢。

相同:
  • 1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
  • 2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为: 误差准测函数J(θ)

     在这里插入图片描述

其中x(i)为第i组数据的independent variable,y(i) 为第i组数据的dependent variable, θ为系数向量。

不同   1.实现方法和结果不同:最小二乘法是直接对J(θ)求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个初始位置,然后向下降最快的方向调整 ,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。

四、梯度下降法实现 4.1、问题一般化在这里插入图片描述 4.2、步骤

在这里插入图片描述

4.3、梯度方向

在这里插入图片描述

五、梯度下降法 5.1、批处理梯度下降法

在这里插入图片描述

5.2、随机梯度下降法(Stochastic Gradient Descent SGD)

在这里插入图片描述

5.3、梯度下降法主要考虑两个方面问题:一是方向,二是步长。

方向决定是否走在最优化的道路上,而步长决定了要多久才能到达最优的地方。

对于第一方面,就是求梯度,多元函数求相应变量的偏导数;对于第二方面,如果步子太少,则需要很长的时间才能达到目的地,如果步子过大,可能导致在目的地周围来回震荡,所以步长选择比较关键。 在这里插入图片描述

5.4、求最优解

求最优解方法: 1、如果优化函数存在解析解。例如我们求最值一般是对优化函数求导,找到导数为0的点。如果代价函数能简单求导,并且求导后为0的式子存在解析解,那么我们就可以直接得到最优的参数。 2、如果式子很难求导,例如函数里面存在隐含的变量或者变量相互间存在耦合,互相依赖的情况。或者求导后式子得不到解析解,或者未知参数的个数大于方程组的个数等。这时候使用迭代算法来一步一步找到最优解。

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0606s