老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人生感悟
    • 信息技术
    • 往事随风
    • 情感随笔
    • 文学创作
    • 生活记录
    • 评论杂谈
    • 人工智能
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 人工智能
  3. 正文

线性回归

2020年10月11日 2632点热度 1人点赞 2条评论

基本概念

线性回归,其实说白了,就是期待用线性函数,来描述输入变量和输出之间的关系。输入变量,是可以通过采集、搜集得到的数据,而输出的变量,则是将要预测或者得出结论的那个参数。

问题描述

比如说,一个单变量的线性回归问题:预测房价与房间大小的关系。现在我们遇到的问题是:我们想知道,当给我们一套房子时,我们能否较为准确的预测出它的价格。

在实际生活中,我们知道,房价并不单纯与房间大小呈线性关系,可是,如果我们不知道其他的参数(这些参数,在人工智能中有一个更准确的概念,叫做特征),这些参数或者无法搜集,或者搜集的不准确,我们只能拿到房间大小这一个数据作为输入,那么如果我们用线性回归,来分析房价与房间大小之间的关系,那么我们就默认为一个前提:房价和房间大小呈线性关系。

如果房价和房间大小确实呈完美的线性关系,那么我们无需使用人工智能来进行房价预测,因为我们可以很容易得出房价与房间大小之间的关系,p=s*10000(1万元一平方米),当新的房间参数到来时,只需要将新的房间大小s代入这个公式,就可以了。

解决方法

然而实际上我们也知道,这几乎时不可能的,因为影响房间的因素太多了,我们无法将所有影响房价的因素都找出来,比如所处的地段、学区房、户型等。所以我们用到的一定时一个简化的模型,就是我们认为房间一定主要由几个参数来确定。假如我们现在认为房价只和房间大小有关,那么因为它和现实相违背,它一定不是完美的线性关系,基本上来说,会是这样的。

因为只有一个参数,所以,我们用线性函数

p=as+b

​

来表示房价p和房间大小s之间的关系,那么我们的目标,变成了,通过上述数据,来确定a和b。这样我们就能够得到一个完整的公式。但是,实际上,因为房价和房子大小之间不是完美的线性关系,我们肯定无法用一个线性函数来完美描述他们之间的关系,不同的a和b确定的直线,在图上是这样的。

也就是说,我们可以有无数个a和b的取值,每个取值,都代表了一个直线,那么到底哪个直线更能够代表房价和房间大小之间的关系呢?此处,我们需要引入另外一个概念:损失函数。损失函数,描述的就是用直线模拟出来的结果,和真实的结果之间的误差。那么很明显,它是衡量哪条直线更能符合真实关系的一个重要指标:损失函数越小,应该说明这条直线越能够描述输入与输出之间的关系。

于是我们的问题就变成了:如何找到一组参数a和b,让损失函数最小。如何解决这个问题呢?人工智能采取的基本上都是最笨的方法:挨个试。就是a和b随便取。

但是也不能太随便,否则岂不是像没头苍蝇一样到处乱撞?肯定有方法,有规律的去挨个试。

一个很重要的方法,叫做梯度下降。

梯度下降,说白了,其实就是按照一定的步长来减少或者增加参数a和b的值,以期望得到最小的损失函数。例如,初始值,设定a和b都是1,代入公式中,然后把所有的数据都代入公式,用真实的值减去公式算出的值,将他们的绝对值相加,就是损失函数。然后,根据梯度下降的步长,假如设定为0.1,那么下一组参数就是0.9和0.9,继续代入,算出损失函数,看是否能够得到更小的损失。以此不停的计算,直到两个条件:要么得到了认可(可被接受的)的最小损失函数,此时的a和b的参数,就是我们要的参数,问题解决;要么,算的次数(迭代次数)已经超过了我们的接受范围(比如,就算100次),还没有得到可以接受的损失(损失函数仍然很大),但是你不能永远算下去,时间都浪费了,这种情况就是不收敛,也就是在规定的步数内,没有找到可被接受的最小的损失函数。不收敛的处理方法,要么重新调整参数,重新计算,要么就从这些不收敛的数据中,找到损失函数最小的参数,先用着。所以,在求取最小损失的过程中,步长(每次的变化量)和迭代次数,是很重要的参数。

多变量的线性回归

多变量的线性回归,和单变量类似。单变量的线性回归,是用一个参数来模拟输入与输出之间的关系,多变量,就是用多个参数。那么也就不是用直线来模拟,而是用曲线。表达式的一般规律是:

y=a_0+a_1x_1+a_2x_2+……a_nx_n

其中x_n就是n个参数(特征),a_0-a_n是我们需要通过已有的数据,通过计算最小损失函数来确定的参数。

这些数据,被称为训练数据,通过这些训练数据,确定的a_0-a_n的参数,被称为一个模型。

我们常说的,训练一个模型,其实就是要通过大量的数据学习,得到一个最能够准确描述这些数据的公式的所有参数,这些参数,就可以被认为是一个机器学习模型。而准确与否,则是用损失函数来进行衡量。

数据规范化

事实上,数据规范化问题,是一个共性问题。指的是将不同特征的数据,尽可能规范化到一个统一的度量里面。比如说,房子的价格,除了和房间的大小有关系,还和房子里面的房间个数有关系,比如说同样的80平米的房子,有5个房间的,要比只有4个房间的贵,那么这个模型里面,就有两个特征(变量),这两个特征,数据的维度差了一个数量级,房间的大小都是70、80这样的量级,可是房间的个数,基本都是5、6这样的。这种量级差别的特征数据给模型的训练带来了问题,所以,最好的方法是将他们的量级统一起来。

其中一种常见的规范化方法是:

  1. 求每个特征量X的平均值mean
  2. 求每个特征量X的标准差sigma
  3. 规范化:X = (X-mean) / sigma

将所有的特征都按照这样的方法处理一遍,那么大家的量级就拉平了,这样便于模型的训练,同时也能够提升机器学习和预测的准确性。

标签: 回归 机器学习 模型
最后更新:2023年02月17日

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞
订阅评论
提醒
guest

guest

2 评论
内联反馈
查看所有评论
xqiushi
xqiushi
游客
2020年10月26日 上午11:02

有点像我听说过的线性代数。

0
回复
老杨
老杨
作者
回复给  xqiushi
2020年10月26日 下午2:39

@xqiushi 还不太一样。

0
回复

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
最新 热点 随机
中国是不是体育强国? 成功的必备因素 关于华为 别再侮辱我的智商 春秋航空让人长见识 第二青春计划失败 第二青春计划 模型训练错误RuntimeError: expected scalar type Half but found Float 加载onnx模型进行推理 PyTorch模型转onnx格式
晴迷星途40失控 笑着哭 流氓来袭 相声专场晚会 联盟垄断 拿到驾照,贴博庆祝 Gitlab配置SMTP邮件发送 我冤枉百度了 这些天发生的这些事儿 自卑的爱国
最新评论
  • 关于华为上的老杨确实,苹果手机系统还是有优势的。
  • 关于华为上的乱云AKAY自从换了苹果手机后,对手机再没以前那样热爱研究了,主要是系统省心。
  • 第二青春计划失败上的老杨第二都失败了,第三就算了吧。
  • 春秋航空让人长见识上的老杨应该提供一点水,至少给不想买水的人一个选择的空间。
  • 别再侮辱我的智商上的老杨那个很好,很值得。
  • 关于华为上的老杨Next系统基本没广告。大部分广告都可以关掉吧,我记得我写过一个文章,…
  • 第二青春计划失败上的xqiushi开始第三青春计划吧。
  • 春秋航空让人长见识上的xqiushi那个桌板能放下小米多看电子书,还是不错的。 这个矿泉水市面上没有,特供…
  • 别再侮辱我的智商上的xqiushi只投了那100亿的项目。
  • 关于华为上的xqiushi今年我爸的手机也换成华为,家庭里手机基本都是华为。最不满意的一点就是广…

Google java jsp linux QQ wordpress 中国 习惯 人生 公司 决定 博士 博客 同学 国家 大学 学习 实验室 家 小说 工作 开始 思考 情感 手机 技术 推荐 插件 数据库 文件 晴迷星途 朋友 生活 电影 相声 程序 笔记 网站 网络 置顶 美国 评论 软件 音乐 项目

关注公众号

COPYRIGHT © 2020 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号