线性模型之一:线性回归的原理

1. 基本形式

  • 线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数。

  • w和b学得之后,模型就得以确定。w直观表达了各属性在预测中的重要性。

2. 线性回归

  • 提出假设:给定数据集

    

  ,其中,

  “线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记。

  • 线性回归可以被看做是样本点的最佳拟合直线。

 

 

  • 这条最佳拟合线也被称为回归线(regression line),回归线与样本点之间的垂直连线即所谓的偏移(offset)或残差(residual)——预测的误差。
  • 在只有一个解释变量的特殊情况下,线性回归也称为简单线性回归(simple linear regression)
  • 当然,我们可以将线性回归模型扩展为多个解释变量。此时,即为所谓的多元线性回归(multiple linear regression)。如下图所示即为二元线性回归,一个回归平面来拟合样本点。

  • 基于最小二乘法构建线性回归模型
  • 设计代价函数:通过最小二乘法,基于均方误差最小化来求解回归曲线的参数,使得回归曲线到样本点垂直距离(残差或误差)的平方和最小。
  • 代价函数为:

  • 代价函数最小化求解:需要求解代价函数最小时的w和b的值。

  • 通过梯度下降法来计算回归参数。如下图所示,将梯度下降的原理形象地描述为下山,直到获得一个局部或者全局最小值。在每次迭代中,根据给定的学习速率和梯度的斜率,能够确定每次移动的步幅,按照步幅沿着梯度方向前进一步。

  • 梯度的推导过程如下图:

则使用梯度下降法求解模型的算法伪码:

1  初始化模型参数:(学习速率),w(权重)

2  判断循环条件是否达到(达到固定循环次数或者误差减小到某个门限)

3       对每一组训练数据

4    输入数据,并计算训练误差

5    计算代价函数的梯度

6    计算权重增量:

7      

8    更新每一个权重

9      

源代码如下:

linear_regression_gds.py      线性回归类模块

import numpy as np

class LinearRegressionGDS:    
    def __init__(self, eta=0.001, num_cycles=50):
        self.learning_rate = eta   #学习速率
        self.cycles = num_cycles    #循环次数

    # 计算线性回归的输出
    def lr_input(self, X):
        return np.dot(X, self.w[1:]) + self.w[0]

    # 训练模型 
    def fit(self, X, y):
        self.total_cost = []    #存储每一次迭代的的代价值
        self.w = np.zeros(np.shape(X)[1] + 1)    #初始化权值w
        self.delt_w = np.zeros(np.shape(X)[1] + 1)    #初始化权值增量
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值