Linear Regression线性回归

目录

前言

Housing Price Prediction

Linear Regression

Loss/Cost Function

Learning Rate

作业


前言

在本专栏中,我们将学习机器学习的知识。


Housing Price Prediction

在开始线性回归的研究之前,我们先来考虑一个实际的问题:房屋价格的预测。

在买房子的时候,我们会比较一个房子很多维度的信息,例如:面积,地段,楼层,隔音,向阳等等,往往这些信息都能影响一个房子的价格。

初步学习的前提下,我们简化问题,只考虑面积这一个维度。

一般情况下,房屋的价格与它的面积成正比,我们收集一些这样的数据:

在坐标图中绘制这些数据:

可以看出房屋的面积与价格是有一定关系的,如果现在有一个150m^{2}的房子,如何根据已有的数据集预测它的价格呢?

依托上面的坐标图,假设我们能够得到一条解析线,它能够尽可能多的包含已有的数据,那么我们就可以由该解析式,预测其他未知量的函数值。

最简单的解析线为直线,因此我们可以按照直线的公式来进行拟合。现在我们的任务就是:如何根据已知的数据集得到一条直线的解析式,这样的问题就是线性回归。


Linear Regression

直线的解析式可以这样定义:

\hat{y}=f(x)=\sum_{i=1}^{D}w_{i}x_{i}+b=w^{T}x+b

其中\hat{y}是预测房屋价格的值,w为权重(weights),b为偏移量(bias)。

中间的i是数据x的特征维度,也就是房子的面积,地段等等信息,由于我们简化了问题,只考虑面积的影响,所以这里的i=1.

这样我们就定义了一个模型(model),接下来的任务就是让计算机去学习获得参数w和b,从而让模型尽可能拟合数据集:


Loss/Cost Function

什么是学习呢?如果我们能够清楚的描述这个概念,那么就有可能让计算机来模仿学习的过程。现在让我们做一个思维实验:有一个同学小A,他想要提升自己的成绩,一种行之有效的方法是先设立一个目标,例如数学要考100分,然后计算他每次考试结果与100分的差距,接着不断缩小这个差距,这样他的成绩就会逐渐向目标靠拢,从而实现提升成绩的愿望。

基于以上描述,我们进行机器学习的时候,也可以设立一个这样的目标,然后计算当前预测结果与目标的差距(损失函数/代价函数),然后使用一些优化算法来减少这个差距,这样我们就可以实现机器的学习。

损失函数与代价函数有什么区别呢?因为数据集一般都有很多样本,我们将单个样本的差距称为损失函数,所有样本的差距总和称为代价函数。

在房屋预测的示例中,怎么定义损失函数呢?

假设某次机器学习到的参数坐标图是这样的:

预测模型为直线,实际的数据为蓝色的叉叉。我们可以计算预测直线的价格值与实际数据价格值的距离损失。

\iota (w,b)=\frac{1}{2}(\hat{y}-y)^{2}=\frac{1}{2}(w^{T}x+b-y)^{2}

这里有几个问题,为什么求距离最后不开根号,并且*\frac{1}{2}有什么意义吗?

首先平方的问题,因为平方后并不影响每个样本距离的相对损失,举例来说,A点距离最大为2,B点距离第二大为1,那么A和B平方后,还是A最大,这不影响A和B的地位。而且开根号还要考虑正负的问题,之后的优化也比较麻烦,因此求距离的平方是一种高效的方法。

我们观察求距离的式子,它是一个二次曲线,在对称轴处能够取得最小值,该点也是求导后为0的点,所以我们优化的策略就是梯度降低,即计算损失函数求导后为0的w值。而二次曲线求导会乘2,我们为了消掉系数,所以在最开始*\frac{1}{2}

这样设置损失函数都是为了方便之后的梯度降低。

因为x,y作为数据集中的样本点,本身已经确定了,损失函数中未知的就是w和b,因此我们分别对这两个参数求导,然后按照一定的学习率向目标靠近:


Learning Rate

学习率是一个超参数,需要自己定义,有四种情况:

如果学习率太小,那么学习的速度会很慢,往往在迭代之后还没有找到最合适的参数值

如果学习率比较大,那么可能会跳过最合适的参数值,从而反复横跳,就相当于我们从数轴的0开始出发,终点是1,但是我们每次移动的步伐是2,开始从0走到2,然后虽然我们知道终点的方向,但是步伐太大了,又会走到0,下面就是不断的0,2重复。

如果学习率过大,那么可能直接就出了参数值的合适范围,从而造成越学习成绩越差的结果,即南辕北辙。

只有选取合适的学习率,才能在有限的迭代次数中找到合适的参数值,完成一次完美的学习。

所以在很多时候人工智能工程师都在寻找合适的学习率,这与经验有关,对于我们来说也是一种学习,学习如何找到合适的学习率。

下面就是梯度降低的求解过程:

用通俗的语言来说就是求导。


作业

我们来看一个作业。

数据集包含50个样本,每个样本有两个数据分别代表横纵坐标。

文件分享

然后在下面的python文件中补充损失函数和梯度优化函数的内容,然后自己选择学习率和迭代次数

文件分享

解决办法如下:

这里有一点需要说明,为了方便,参数W的形状为(2,1),直接包含了w和b,按照矩阵的乘法就可以实现直线的解析式,这也算是一个小技巧了。

最后的结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/766615.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

茗鹤APS高级计划排程系统,在集团多工厂协同生产下的应用

随着业务规模的扩大和市场的全球化,越来越多的企业选择“总部多工厂基地”的模式,此种模式大幅提升企业的产能与产量,有效分散风险。然后,与之而来的是对企业的管理提出更高的管理要求。多个生产基地不仅面临集团下发的周期性计划…

electron教程(一)创建项目

一、方式① 根据官网描述将electron/electron-quick-start项目克隆下来并启动 electron/electron-quick-start地址: GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…

回溯 | Java | LeetCode 39, 40, 131 做题总结

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

JavaSE简易版扫雷小游戏

描述:用户输入二维雷区的高和宽,输入确定地雷数,随机在地雷区生成地雷。用户输入横竖坐标进行挖雷,挖到地雷游戏以失败结束,并让用户选择是否再次游戏;没挖到雷,显示该区域8个方向地雷数。如果8…

去中心化社会的崛起:探索区块链对社会结构的影响

随着区块链技术的发展和应用,我们正逐步迈向一个去中心化的社会结构。本文将深入探讨区块链技术如何影响社会结构,从经济、政治到文化等多个方面进行探索和分析,揭示其可能带来的革命性变革。 1. 区块链技术的基本原理回顾 1.1 分布式账本与…

放大器的输入电容Cin对放大电路的影响

1、OPA859构成的放大电路的设计 图中OPA859的增益G设定为1.16 ,OPA859的增益带宽积GBP 900M , 放大器的带宽BW GBP / Acl 900 / 1.16 775.86M。 图:OPA859放大电路 由于需要在放大电路上加带宽的限制,所以在OPA859放大电路上有个低通限…

Elasticsearch基础(二):阿里云Elasticsearch快速入门

文章目录 阿里云Elasticsearch快速入门 一、资源领取 二、访问实例 三、创建索引 四、插入数据 五、搜索数据 1、全文搜索 2、按查询条件搜索 六、删除数据 阿里云Elasticsearch快速入门 一、资源领取 这里资源领取只针对新用户,如果是老用户按需购买&am…

vue3.0(十六)axios详解以及完整封装方法

文章目录 axios简介1. promise2. axios特性3. 安装4. 请求方法5. 请求方法别名6. 浏览器支持情况7. 并发请求 Axios的config的配置信息1.浏览器控制台相关的请求信息:2.配置方法3.默认配置4.配置的优先级5.axios请求响应结果 Axios的拦截器1.请求拦截2.响应拦截3.移…

太阳辐射系统日光全光谱模拟太阳光模拟器

太阳光模拟器是一种用于评估太阳能电池性能的重要设备。它能够模拟太阳光的特性,通过测试电池的短路电流、开路电压、填充因子和光电转化效率等关键指标,来评估电池的性能优劣。 设备型号:KYF-GC004品牌制造商:科迎法电气太阳光模…

bigNumber的部分使用方法与属性

场景:最近做IoT项目的时候碰到一个问题,涉及到双精度浮点型的数据范围的校验问题。业务上其实有三种类型:int、float和double类型三种。他们的范围分别是: //int int: [-2147483648, 2147483647],//float float: [-3402823466385…

idea xml ctrl+/ 注释格式不对齐

处理前 处理后 解决办法 取消这两个勾选

【C++题解】1456. 淘淘捡西瓜

问题:1456. 淘淘捡西瓜 类型:贪心 题目描述: 地上有一排西瓜,每个西瓜都有自己的重量。淘淘有一个包,包的容量是固定的,淘淘希望尽可能在包里装更多的西瓜(当然要装整个的,不能切开…

Go语言--运算符

算术运算符 关系运算符 不能写0<a<10&#xff0c;要判断必须0<a&&a<10。因为int和bool不兼容 逻辑运算符 位运算符 赋值运算符 其他 运算符的优先级

数字化精益生产系统--RD研发管理系统

R&D研发管理系统是一种用于管理和监督科学研究和技术开发的软件系统&#xff0c;其设计和应用旨在提高企业研发活动的效率、质量和速度。以下是对R&D研发管理系统的功能设计&#xff1a;

Promethuse-监控 Etcd

一、思路 Prometheus监控Etcd集群&#xff0c;是没有对应的exporter&#xff0c;而 由CoreOS公司开发的Operator&#xff0c;用来扩展 Kubernetes API&#xff0c;特定的应用程序控制器&#xff0c;它用来创建、配置和管理复杂的有状态应用&#xff0c;如数据库、缓存和监控系…

PCL 点云最小图割(前景、背景点云提取)

点云最小图割 一、概述1.1 概念1.2 算法原理二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 概念 最小图割算法(pcl::MinCutSegmentation):是一种基于图论的对象分割方法,主要用于点云数据的处理和分析。该算法将点云数据表示为一个图结构,其中点云中的点作为图的节…

每日一题——Python实现PAT乙级1100 校庆(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码结构和逻辑 时间复杂度分析 空间复杂度分析 总结 我要更强 方法一…

中控室监控台在水处理行业的作用

随着工业化和城市化的快速推进&#xff0c;水处理行业的重要性日益凸显。作为确保水质安全、提高水资源利用效率的关键环节&#xff0c;水处理厂需要高效、稳定地运行。在这个过程中&#xff0c;中控室监控台发挥着不可或缺的作用。本文将从以下几个方面&#xff0c;详细阐述中…

Docker精华篇 - 常用命令大全,入门到精通!

大家好,我是CodeQi! 我们都知道 Docker 的重要性,以及 Docker 如何在软件开发生命周期中发挥重要作用 。 说实话,学习 Docker 很有趣,至少在我看来是这样。 一旦掌握了基础知识,这并不难。 困难的是记住所有这些命令。 因此,在这篇文章中,我收集了所有命令,或者更…

UG NX二次开发(C#)-根据草图创建拉伸特征(UFun+NXOpen)

文章目录 1、前言2、在UG NX中创建草图,然后创建拉伸特征3、基于UFun函数的实现4、基于NXOpen的实现代码1、前言 UG NX是基于特征的三维建模软件,其中拉伸特征是一个很重要的特征,有读者问如何根据草图创建拉伸特征,我在这篇博客中讲述一下草图创建拉伸特征的UG NX二次开发…