线性回归算法梳理

1. 机器学习的一些概念

  • 有监督学习
    有监督学习的任务是学习一个模型,使模型能够对任意的输入,对其相应的输出做出一个好的预测。
  • 无监督学习
    输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。通俗点将就是实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。
  • 泛化能力
    学习方法的泛化能力是指由该方法学到的对模型对未知数据的预测能力,是学习方法本质上重要的性质。
    首先给出泛化误差的定义。如果学到的模型是 f ˆ \text{\^{f}} fˆ,那么用这个模型对未知数据预测的误差即为泛化误差(generalization error)
    R e x p ( f ˆ ) = E p [ L ( Y , f ˆ ( X ) ) ] = ∫ x × y L ( y , f ˆ ( x ) ) P ( x , y ) d x d y R_{exp}(\text{\^{f}})=E_p[L(Y,\text{\^{f}}(X))]=\textstyle\int_{x\times{y}}L(y,\text{\^{f}}(x))P(x,y)dxdy Rexp(fˆ)=Ep[L(Y,fˆ(X))]=x×yL(y,fˆ(x))P(x,y)dxdy
    泛化误差反映了学习方法的泛化能力,如果一种方法学习的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就更有效。事实上,泛化误差就是所学到的模型的期望风险。
  • 过拟合
    过拟合会造成模型变得复杂,并尽可能拟合训练集,造成在训练集上的准确率特别高,这里就会有一个问题就是:训练集是不靠谱的,其中有容错的数据。直接点,训练集中特别是十几万的数据,会有脏数据,这些脏数据也成为负样本,会造成模型训练有误差,模型在训练的时候并不清楚那些是脏数据,它只会不停的去拟合这些数据,所以过拟合的模型在训练集上准确率特别高,但训练集其实只是整个数据集中的一部分,其包含两部分特征,一部分是整个数据集共有的特征,一部分是训练集自身共有的特征,当过拟合时,模型学到的是这两部分的特征,此时拿模型去在测试集上测试时,因为测试集不包含训练集自身共有的特征,所以测试集在模型上就不会取得很好的效果。因此需要防止过拟合。
  • 欠拟合
    首先欠拟合就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
    在这里插入图片描述
  • 交叉验证
    如果给定的样本数据充足,进行模型选择的一个简单的方法是随机将数据集切分成三部分,分别为训练集,验证集和测试集。训练集用来训练模型,验证集用于模型的选择,而测试集用于最终对学习方法评估。

2. 线性回归的原理

根据线性代数,我们可以定义线性方程组 X w Xw Xw=y,在线性回归问题中, X X X是我们的样本数据矩阵, y y y是我们的期望值向量,也就是说,对于线性回归问题,我们的 X X X y y y是已知的,我们要解决的问题是,求取最合适的一个向量 w w w,使得线性方程组能够尽可能的满足样本点的线性分布。之后我们就可以利用求得的 w w w,对新的数据点进行预测。
这里我们使用平方误差来评估实际 y y y值和预测值之间的误差:
∑ i m ( y i − x i T w ) 2 \displaystyle\sum_{i}^{m}(y_i-x_i^Tw)^2 im(yixiTw)2

修改为矩阵形式:
( y − X w ) T ( y − X w ) (y-Xw)^T(y-Xw) (yXw)T(yXw)
我们要使平方误差为最小,根据微积分的内容,我们可以对上面的式子相对w求导:
X T ( y − X w ) X^T(y-Xw) XT(yXw)
令上式等于0,然后求得:
w ˆ = ( X T X ) − 1 X T y \text{\^{w}}=(X^TX)^{-1}X^Ty wˆ=(XTX)1XTy

3. 线性回归损失函数、代价函数、目标函数

  • 损失函数
    我们要做的是依据我们的训练集,选取最优的θ,在我们的训练集中让h(x)尽可能接近真实的值。h(x)和真实的值之间的差距,我们定义了一个函数来描述这个差距,这个函数称为损失函数,表达式如下:
    J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)={1 \over 2}\displaystyle\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=21i=1m(hθ(x(i))y(i))2
    这里的这个损失函数就是著名的最小二乘损失函数。
  • 代价函数
    代价函数是用于评价线性回归,其公式为:
    J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta_0,\theta_1)={1 \over 2m}\displaystyle\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))2
    计算方式是计算每一个点在当前假设函数情况下,偏差的平方和,再取平均数。m即表示一共取了几个点进行判断。因此可知,假设函数预计的越准确的,其代价函数的结果越接近于0。
  • 目标函数
    优化的目标,可以是“损失函数”或者“损失函数+正则项”,分为经验风险最小化,结构风险最小化。

4. 优化方法

  • 梯度下降法
    我们使用梯度下降法是为了求目标函数最小值 f ( x ) f(x) f(x)对应的 X X X,那么我们怎么求最小值点 x x x呢?注意我们的X不一定是一维的,可以是多维的,是一个向量。我们先把 f ( x ) f(x) f(x)进行泰勒展开:
    f ( X + a d ) = f ( X ) + α g T d + o ( α ) f(X+ad)=f(X)+\alpha g^Td+o(\alpha) f(X+ad)=f(X)+αgTd+o(α)
    这里的α是学习速率,是个标量,代表 X X X变化的幅度; d d d表示的是单位步长,是一个矢量,有方向,单位长度为1,代表X变化的方向。什么意思呢?就是说我们这里求最值,不是一下子就找到最小值对应的 X X X,而是一点点的迭代,逼近最小值对应的 X X X,每一次迭代新的X即 X ′ X' X就是 X + α d X+αd X+αd(下图蓝色点都可以是 X ′ X' X),(注意这里的 α d αd αd是矢量,这里是矢量相加,有方向的问题。)
  • 牛顿法
    牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数 f ( x ) f(x) f(x)的泰勒级数的前面几项来寻找方程 f ( x ) = 0 f(x)=0 f(x)=0的根。牛顿法最大的特点就在于它的收敛速度很快。
    具体步骤:
    首先,选择一个接近函数 f ( x ) f(x) f(x)零点的 x 0 x_0 x0,计算相应的 f ( x 0 ) f(x_0) f(x0) 和切线斜率 f ′ ( x 0 ) f'(x_0) f(x0)(这里 f ′ f' f表示函数 f f f的导数)。然后我们计算穿过点 ( x 0 , f ( x 0 ) ) (x_0,f (x_0)) (x0,f(x0))并且斜率为 f ′ ( x 0 ) f'(x_0) f(x0)的直线和 x x x轴的交点的x坐标,也就是求如下方程的解:
    x ⋅ f ′ ( x 0 ) + f ( x 0 ) − x 0 ⋅ f ′ ( x 0 ) = 0 x\cdot f'(x_0)+f(x_0)-x_0\cdot f'(x_0)=0 xf(x0)+f(x0)x0f(x0)=0
    我们将新求得的点的 x x x坐标命名为 x 1 x_1 x1,通常 x 1 x_1 x1会比 x 0 x_0 x0更接近方程 f ( x ) = 0 f(x)=0 f(x)=0的解。因此我们现在可以利用 x 1 x_1 x1开始下一轮迭代。迭代公式可化简为如下所示:
    x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-{f(x_n) \over f'(x_n)} xn+1=xnf(xn)f(xn)
    已经证明,如果 f ′ f' f 是连续的,并且待求的零点 x x x是孤立的,那么在零点 x x x周围存在一个区域,只要初始值 x 0 x_0 x0位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果 f ′ ( x ) f'(x) f(x)不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。
  • 拟牛顿法
    拟牛顿法是求解非线性优化问题最有效的方法之一,于20世纪50年代由美国Argonne国家实验室的物理学家W.C.Davidon所提出来。Davidon设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一。不久R. Fletcher和M. J. D. Powell证实了这种新的算法远比其他方法快速和可靠,使得非线性优化这门学科在一夜之间突飞猛进。
    拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。
    具体步骤:
    拟牛顿法的基本思想如下。首先构造目标函数在当前迭代xk的二次模型:
    m k ( p ) = f ( x k ) + ∇ f ( x k ) T p + p T B k p 2 m_k(p)=f(x_k)+\nabla f(x_k)^Tp+{p^TB_kp \over 2} mk(p)=f(xk)+f(xk)Tp+2pTBkp
    p k = − B k − 1 ∇ f ( x k ) p_k=-B_k^{-1}\nabla f(x_k) pk=Bk1f(xk)
    这里Bk是一个对称正定矩阵,于是我们取这个二次模型的最优解作为搜索方向,并且得到新的迭代点:
    x k + 1 = x k + a k p k x_{k+1}=x_k+a_kp_k xk+1=xk+akpk
    其中我们要求步长ak 满足Wolfe条件。这样的迭代与牛顿法类似,区别就在于用近似的Hesse矩阵Bk 代替真实的Hesse矩阵。所以拟牛顿法最关键的地方就是每一步迭代中矩阵Bk的更新。现在假设得到一个新的迭代xk+1,并得到一个新的二次模型:
    m k + 1 ( p ) = f ( x k + 1 ) + ∇ f ( x k + 1 ) T p + p T B k + 1 p 2 m_{k+1}(p)=f(x_{k+1})+\nabla f(x_{k+1})^Tp+{p^TB_{k+1}p \over 2} mk+1(p)=f(xk+1)+f(xk+1)Tp+2pTBk+1p
    我们尽可能地利用上一步的信息来选取 B k B_k Bk。具体地,我们要求
    ∇ f ( x k + 1 ) − ∇ f ( x k ) = a k B k + 1 p k \nabla f(x_{k+1})- \nabla f(x_k)=a_kB_{k+1}p_k f(xk+1)f(xk)=akBk+1pk
    从而得到
    B k + 1 ( x k + 1 − x k ) = ∇ f ( x k + 1 ) − ∇ f ( x k ) B_{k+1}(x_{k+1}-x_k)=\nabla f(x_{k+1})-\nabla f(x_k) Bk+1(xk+1xk)=f(xk+1)f(xk)
    这个公式被称为割线方程。常用的拟牛顿法有DFP算法和BFGS算法。

5. 线性回归的评估指标

1、残差估计
总体思想是计算实际值与预测值间的差值简称残差。从而实现对回归模型的评估,一般可以画出残差图,进行分析评估、估计模型的异常值、同时还可以检查模型是否是线性的、以及误差是否随机分布。
2、均方误差(Mean Squared Error, MSE)
均方误差是线性模型拟合过程中,最小化误差平方和(SSE)代价函数的平均值。MSE可以用于不同模型的比较,或是通过网格搜索进行参数调优,以及交叉验证等。
3、决定系数
可以看做是MSE的标准化版本,用于更好地解释模型的性能。换句话说,决定系数是模型捕获相应反差的分数。

6. sklearn参数详解

在这里插入图片描述参考博客:http://www.cnblogs.com/lianyingteng/p/7811126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性回归算法的发展历程可以追溯到19世纪末。以下是线性回归算法的发展历程: 1. 19世纪末,高尔顿和他的学生K·Pearson观察了1078对夫妇,以每对夫妇的平均身高作为自变量,取他们的一个成年儿子的身高作为因变量。他们发现父母身高和子代身高之间存在近乎一条直线的关系,即回归直线方程为:y^=33.73+0.516x。这是线性回归算法的最早应用之一。 2. 在20世纪初,统计学家卡尔·皮尔逊进一步发展了线性回归算法。他提出了最小二乘法,用于拟合回归直线并估计回归系数。最小二乘法通过最小化残差平方和来确定最佳拟合直线,使得预测值与实际观测值之间的差异最小化。 3. 在20世纪中叶,计算机的发展使得线性回归算法得以广泛应用。计算机的出现使得回归分析的计算更加高效和准确。此时,线性回归算法开始在各个领域得到广泛应用,包括经济学、社会科学、医学等。 4. 随着时间的推移,线性回归算法不断发展和改进。研究人员提出了各种改进的线性回归模型,如多元线性回归、岭回归、lasso回归等。这些改进的模型考虑了更多的因素和变量,提高了模型的预测能力和解释能力。 5. 近年来,随着机器学习和深度学习的兴起,线性回归算法也得到了进一步的发展。线性回归算法被用作其他更复杂模型的基础,如神经网络中的线性层。 总结起来,线性回归算法的发展历程可以追溯到19世纪末,经过了统计学家的研究和改进,以及计算机的发展,逐渐成为一种广泛应用的预测和分析工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值