机器学习---线性回归、多元线性回归、代价函数

news2024/10/5 22:23:56

1. 线性回归

回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后

将该数学模型用于预测或者分类。该方法处理的数据可以是多维的。

回归是由达尔文的表兄弟Francis Galton发明的。Galton于1877年完成了第一次回归预测,目的是

根据上一代豌豆的种子(双亲)的尺寸来预测下一代豌豆种子(孩子)的尺寸(身高)。Galton在

大量对象上应用了回归分析,甚至包括人的身高。他得到的结论是:如果双亲的高度比平均高度

高,他们的子女也倾向于平均身高但尚不及双亲,这里就可以表述为:孩子的身高向着平均身高回

归。Galton在多项研究上都注意到了这一点,并将此研究方法称为回归。

比如:有一个房屋销售的数据如下

如果来了一个新的面积,假设在销售价钱的记录中没有的,怎么处理?

解决方法:用一条曲线去尽量准的拟合这些数据,然后如果有新的输入过来,我们可以在将曲线上

这个点对应的值返回。如果用一条直线去拟合,可能是下面的样子:

常用概念和符号:

房屋销售记录表:训练集(training set)或者训练数据(training data),是我们流程中的输入数

据,一般称为x;

房屋销售价钱:输出数据,一般称为y;

拟合的函数(或者称为假设或者模型):一般写做y=h(x)

训练数据的条目数(#training set):一条训练数据是由一对输入数据和输出数据组成的输入数据

的维度n(特征的个数,#features);

这个例子的特征是两维的,结果是一维的。然而回归方法能够解决特征多维,结果是一维多离散值

或一维连续值的问题识别结果。

注意:

(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数

(2)因为是单变量,因此只有一个x;

单变量线性回归模型:

正向线性关系:

负向线性关系:

 无关系:

y^=b0+b1x

这个方程叫做估计线性方程(estimated regression line)。

其中,b0是估计线性方程的纵截距,b1是估计线性方程的斜率,y^是在自变量x等于一个给定值

的时候,y的估计值。

线性回归例子:

汽车卖家做电视广告数量与卖出的汽车的数量:

 

假设有一周广告数量为6,则预估卖出的汽车数量为5*6+10=40。 

代数推导:

矩阵推导:

 

2. 多元线性回归

简单线性回归与多元线性回归的区别:

1.与简单线性回归区别(simple linear regression):多个自变量x

2.多元回归模型

y=β0+β1x1+β2x2+…+βpxp+e

其中:β1, β2 … βp是参数值,e是误差值

3.多元回归方程

E(y)=β0+β1x1+β2x2+…+βpxp

4.估计多元回归方程

y_hat=b0+b1x1+b2x2+…+bpxp

一个样本用来计算β0,β1,β2.....βp的点估计b0,b1,b2.....bp

比如:一家快递公司送货

x1:运输里程   x2:运输次数    y:总运输时间

3. 代价函数

代价函数(有的地方也叫损失函数,Loss Function)在机器学习中的每一种算法中都很重要,因为

训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中提到的梯

度,防止过拟合时添加的正则化项也是加在代价函数后面的。一个好的代价函数需要满足两个最基

本的要求:能够评价模型的准确性,对参数可微。

在线性回归中,最常用的代价函数是均方误差(mean squared error),具体形式为:

求参数的方法:

最小二乘法:是一个直接的数学求解公式,但是他要求X是满秩的。

梯度下降法(gradient  descent):

梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,

能够下降的最快;

方法:

(1)先确定向下一步的步伐大小,我们称为Learning rate;

(2)任意给定一个初始值;

(3)确定一个向下的方向,并向下走预先规定的步伐,并更新初始值;

(4)当下降的高度小于某个定义的值,则停止下降;

梯度下降法的特点:

(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值

(2)越接近最小值时,下降速度越慢;

如果参数初始值就在local minimuml的位置,所以derivative肯定是0,因此参数值不会变化;

如果取到一个正确的α值,则cost function应该越来越小;

随时观察Q值,如果cost function变小了,则ok,反之,则再取一个更小的值。

从上图可以看出,初始值不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值。

下降的步伐大小非常重要,如果过小,就会找到函数最小值的速度非常的慢,如果太大,则可能出

现over shoot the minium 的现象。

 如果learning rate取值之后发现,cost function 增长了,则需要降低learning rate。

def gradientDescent(x,y,theta,alpha,m,numIterations):
    xTrans =x.transpose()
    for i in range(0,numIterations):
        hypothesis=np.dot(x,theta)
        loss=hypothesis-y
        #cost np.sum(loss *2)/(2 m)
        #print("Iteration %d Cost:%f"%(i,cost))
        gradient=np.dot(xTrans,loss)/m
        theta=theta-alpha*gradient
    return theta

 

 

 

 

 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析基础-Excel图表的美化操作(按照教程一步步操作)

一、原始数据 包含月份和对应的销量和产量。 时间销量产量1月60722月38673月28344月58685月67596月72357月61428月24319月556710月243511月122112月2645 二、原始的图表设计-采用Excel自带模板 三、优化思路 1、删除多余元素 2、弱化次要元素 对于可以弱化的元素&#xff0c…

NASM汇编

1. 前置知识 1. 汇编语言两种风格 intel:我们学的NASM就属于Intel风格AT&T:GCC后端工具默认使用这种风格,当然我们也可以加选项改成intel风格 2. 代码 1. 段分布 .text: 存放的是二进制机器码,只读.data: 存放有初始化的…

弯道超车必做好题锦集一(C语言选择题)

前言: 编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,每篇大约10题左右。此为第一篇选择题篇,该系列会不定期更新,后续还会…

《EalsticSearch从入门到实战》-CRUD+JAVA常用操作

目录 《EalsticSearch从入门到实战》 windows环境安装elasticsearchkibana并完成JAVA客户端查询《EalsticSearch从入门到实战》-CRUDJAVA常用操作 前言 上一篇《windows环境安装elasticsearchkibana并完成JAVA客户端查询》中我们已经完成了EalsticSearchKibana环境的安装&a…

页面生成图片或PDF node-egg

没有特别的幸运,那么就特别的努力!!! 中间件:页面生成图片 node-egg 涉及到技术node egg Puppeteer 解决文书智能生成多样化先看效果环境准备初始化项目 目录结构核心代码 完整代码https://gitee.com/hammer1010_ad…

web自动化测试,定位不到元素的原因及解决方案

1.动态id定位不到元素 分析原因:每次打开页面,ID都会变化。用ID去找元素,每次刷新页面ID都会发生变化。 解决方案:推荐使用xpath的相对路径方法或者cssSelector查找到该元素。        2.iframe原因定位不到元素 分析原因…

SQL注入之布尔盲注

SQL注入之布尔盲注 一、布尔盲注介绍二、布尔盲注的特性三、布尔盲注流程3.1、确定注入点3.2、判断数据库的版本3.3、判断数据库的长度3.4、猜解当前数据库名称(本步骤需要重复)3.5、猜解数据表的数量3.6、猜解第一个数据表名称的长度3.7、猜解第一个数据…

【React】关于组件之间的通讯

🌟组件化:把一个项目拆成一个一个的组件,为了便与开发与维护 组件之间互相独立且封闭,一般而言,每个组件只能使用自己的数据(组件状态私有)。 如果组件之间相互传参怎么办? 那么就要…

Python 算法交易实验65 算法交易二三事

说明 对算法交易的一些内容做一些回顾和反思吧。 老规矩,先chat一下 道理说的都对,如果要补充就推荐再看一本书量化交易:如何建立自己的算法交易事业,我觉得这样就比较完整了。 简单来说,把量化当成事业,而不是一种投机&#…

一起学算法(计算排序篇)

概念: 计数排序(Counting sort)是一个非基于比较稳定的线性时间的排序算法 非基于比较:之前学的排序都是通过比较数据的大小来实现有序的,比如希尔排序等,而计数排序不需要比较数据的大小而进行排序&…

数据结构:谈快速排序的多种优化和非递归展开,以及排序思想归纳

文章目录 写在前面快速排序的基本体系快速排序的优化快速排序的非递归实现排序分类总结插入排序选择排序交换排序归并排序 写在前面 快速排序作为效率相当高的排序算法,除了对于特殊数据有其一定的局限性,在大多数应用场景中都有它特有的优势和应用&…

PHP8的数据类型转换-PHP8知识详解

什么是数据类型转换? 答:数据从一个类型转换成另外一个类型,就是数据类型转换。 在PHP8中,变量的类型就是由赋值决定的,也就是说,如果 string 赋值给 $var,然后 $var 的类型就是 string。之后…

Python:给MySQL创建1000张表和创建1张有50个字段的表

1、创建1000张表 import pymysqldbhost "10.1.1.143" dbuser "root" dbpassword "123456" dbname "demo_cg1000" dbport 3306 dbconn pymysql.connect(hostdbhost, userdbuser, passworddbpassword, dbdbname, portdbport)mycu…

前端学习--vue2--2--vue指令基础

写在前面: 前置内容 - vue配置 文章目录 插值表达式v-html条件渲染v-show和v-ifv-ifv-if的扩展标签复用组件 v-show v-on /事件v-bind /:属性v-modelv-for 循环元素v-slotv-prev-cloak vue指令只的是带有v-前缀的特殊标签属性 插值表达式 插值表达式{…

【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比

【MATLAB第62期】基于MATLAB的PSO-NN、BBO-NN、前馈神经网络NN回归预测对比 一、数据设置 1、7输入1输出 2、103行样本 3、80个训练样本,23个测试样本 二、效果展示 NN训练集数据的R2为:0.73013 NN测试集数据的R2为:0.23848 NN训练集数据的…

【机器学习】Feature Engineering and Polynomial Regression

Feature Engineering and Polynomial Regression 1. 多项式特征2. 选择特征3. 缩放特征4. 复杂函数附录 首先,导入所需的库: import numpy as np import matplotlib.pyplot as plt from lab_utils_multi import zscore_normalize_features, run_gradien…

qt添加图标

1.添加资源 选择QtWidgetsApp.qrc文件打开 添加图标文件路径 添加图标文件 2.按钮添加图标 图标路径为:/res/res/swicth.jpg (1)代码设置图标 ui.pushButton_OPen->setIcon(QIcon(":/res/res/swicth.jpg")); (2)属…

设计模式:生成器模式

这个模式书上讲的比较简单,但是感觉精华应该是讲到了。 引用下其它博客的总结:生成器模式的核心在于分离构建算法和具体的构造实现,从而使得构建算法可以重用。 【设计模式】建造者模式_鼠晓的博客-CSDN博客

27 用linprog、fmincon求 解线性规划问题(matlab程序)

1.简述 ① linprog函数: 求解线性规划问题,求目标函数的最小值, [x,y] linprog(c,A,b,Aeq,beq,lb,ub) 求最大值时,c加上负号:-c ② intlinprog函数: 求解混合整数线性规划问题, [x,y] intl…

AI+低代码:开启普惠人工智能时代的新篇章

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…