0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于线性回归实物相关介绍

lviY_AI_shequ 来源:未知 作者:工程师郭婷 2018-07-27 11:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 原理

1.1 引入

线性回归是最为常用的一种数据分析手段,通常我们拿到一组数据后,都会先看一看数据中各特征之间是否存在明显的线性关系。例如,现在我们拿到了一组学校中所有学生基本资料的数据,该数据以二维表格的形式呈现,如下表所示。

关于线性回归实物相关介绍

示例数据表

每行代表一个学生,每列代表该学生的一个属性(或称为特征),那么如果我们对特征进行仔细观察,不难发现身高和年龄总是呈现正相关关系,数学成绩与物理成绩也基本呈现正相关关系。那么我们是否可以给这样的两个特征之间拟合出一条近似的直线来表达他们之间的线性函数关系呢?这里我们的想法其实就是机器学习的世界观:数据驱动构建模型。

1.2 模型

只不过这里的模型非常简单,只是线性模型,也就是一条直线方程,通长我们可以表达成如下公式:

关于线性回归实物相关介绍

这里,数据中我们将某一特征列作为自变量 x (例如身高),因变量 y (如体重)也就是我们想要预测的值, x 和 y 都已知,现在的任务就是:加入新增了一个 x ,而其对应的 y 未知,那么我们该如何预测出一个 它?显然,我们需要构建 y 与 x 之间的函数关系:关于线性回归实物相关介绍对于身高体重这样的简单问题而言,就可以直接使用上述的线性方程作为我们想要拟合的模型。

接下来的问题就是,如何拟合这个模型,也就是说,如何求得线性模型中的两个参数 w 和 b?

1.3 损失函数

要求解最佳的参数,首先我们需要让计算机知道一个目标,毕竟解决任何问题都需要确立一个明确的目标才行,对于计算机这样的数字世界,我们就需要给它确定一个定量化的目标函数式,在优化问题中,我们通常称之为目标函数,或者损失函数(Loss function)。无论我们选择什么样的模型,最终都是可以得到一组预测值 ,对比已有的真实值 y ,数据行数为 n ,我们很自然地可以将损失函数定义如下:

关于线性回归实物相关介绍

即预测值与真实值之间的平均的平方距离,统计中我们一般称其为MAE(mean square error)均方误差。把之前我们确定的关于线性回归实物相关介绍 带入损失函数:

关于线性回归实物相关介绍

注意,对于损失函数 L 而言,其自变量不再是我们习惯中的 x(其实 x 和 y 都是在训练数据中的已知值),损失函数 L 的自变量应该是我们要求解的参数 w 和 b,因此我们可以把损失函数重新记为:

关于线性回归实物相关介绍

现在,我们的任务就是希望把这个损失函数交给计算机,然后跟计算机说,帮我把这个函数最小化,然后告诉我 L 最小时的一组 w 和 b 是多少就行了。但是显然计算机还没那么聪明,它并不知道怎么算,我们还是要靠自己解决。

核心的优化目标式:

关于线性回归实物相关介绍

这里有两种方式:

一种是“最小二乘法”(least square method),可直接求解;

另一种是梯度下降(gradient descent),有关梯度下降的方法原理可参考我之前这篇文章 -》 [link]。

1.4 最小二乘法

求解 和 是使损失函数最小化的过程,在统计中,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。我们可以将 L 分别对 w 和 b 求导,得到:

关于线性回归实物相关介绍

令上述两式为0,可得到 w 和 b 最优解的闭式(closed-form)解:

关于线性回归实物相关介绍

1.5 梯度下降法求解

关于线性回归实物相关介绍

2 代码实现 (使用梯度下降法)

首先建立 liner_regression.py 文件,用于实现线性回归的类文件,包含了线性回归内部的核心函数。

建立 train.py 文件,用于生成模拟数据,并调用 liner_regression.py 中的类,完成线性回归任务。

显示结果:

关于线性回归实物相关介绍

原始数据x, y和拟合的直线方程

关于线性回归实物相关介绍

利用梯度下降法优化过程中损失函数的下降情况

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 线性回归
    +关注

    关注

    0

    文章

    41

    浏览量

    4513

原文标题:线性回归(Liner Regression) —— 蕴含机器学习基本思想的入门级模型

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    matlab回归分析总结

    1、多元线性回归2、多项式回归3、非线性回归4、逐步回归[hide][/hide]
    发表于 03-20 10:26

    单变量线性回归算法的符号定义和代价函数

    吴恩达机器学习笔记(二)——单变量线性回归
    发表于 03-08 12:50

    线性回归的标准方程法使用

    线性回归-标准方程法示例(python原生实现)
    发表于 05-07 16:44

    线性回归定义

    线性回归与评价指标-2
    发表于 09-03 14:24

    生产应用中使用线性回归进行实际操练

    线性回归】生产应用中使用线性回归进行实际操练
    发表于 05-08 07:45

    Tensorflow的非线性回归

    Tensorflow 非线性回归
    发表于 05-12 10:19

    机器学习100天之多元线性回归

    机器学习100天-多元线性回归 [代码实现细节分析]
    发表于 05-12 15:06

    Multivariate Linear Regression多变量线性回归

    吴恩达机器学习-手写笔记三 - Multivariate Linear Regression 多变量线性回归
    发表于 06-11 17:02

    回归算法有哪些,常用回归算法(3种)详解

    线性回归(多个输入变量,多个输出变量)。更多线性回归相关内容,可参考https://en.wikipedia.org/wiki/Line
    发表于 07-28 14:36

    TensorFlow实现简单线性回归

    本小节直接从 TensorFlow contrib 数据集加载数据。使用随机梯度下降优化器优化单个训练样本的系数。实现简单线性回归的具体做法导入需要的所有软件包: 在神经网络中,所有的输入都线性增加
    发表于 08-11 19:34

    TensorFlow实现多元线性回归(超详细)

    在 TensorFlow 实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归。在多元线性
    发表于 08-11 19:35

    如何用C语言实现一个简单的一元线性回归算法

    今天我们用C语言实现一个简单的线性回归算法;在代码前面我们在回顾一下线性回归线性回归
    发表于 07-20 06:34

    使用PyMC3包实现贝叶斯线性回归

    1、如何使用PyMC3包实现贝叶斯线性回归  PyMC3(现在简称为PyMC)是一个贝叶斯建模包,它使数据科学家能够轻松地进行贝叶斯推断。  PyMC3采用马尔可夫链蒙特卡罗(MCMC)方法计算后验
    发表于 10-08 15:59

    PyTorch教程3.1之线性回归

    电子发烧友网站提供《PyTorch教程3.1之线性回归.pdf》资料免费下载
    发表于 06-05 11:30 0次下载
    PyTorch教程3.1之<b class='flag-5'>线性</b><b class='flag-5'>回归</b>

    多元线性回归的特点是什么

    何为多元线性回归?对比于前一天学习的线性回归,多元线性回归的特点是什么? 多元
    的头像 发表于 10-31 10:34 2273次阅读
    多元<b class='flag-5'>线性</b><b class='flag-5'>回归</b>的特点是什么