线性回归算法

news2024/11/15 14:03:00

什么是线性回归?

线性回归(Linear regression)是一种利用线性函数对自变量(特征)和因变量之间的关系进行建模的方法。线性回归是机器学习中一种广泛使用的基本回归算法。含有有多个特征的线性回归称为多元线性回归。

   假设有 nn 个特征(自变量)x1x1,x2x2,...,xnxn,一个输出变量 yy,线性回归的一般形式表示如下:

y=f(x)=w1x1+w2x2+...+wnxn+b .(1)(1)y=f(x)=w1x1+w2x2+...+wnxn+b .

其中,系数 w1w1,w2w2,...,wnwn 为特征的权重,bb 为偏置。

上式也可以写成向量的形式:y=f(x)=wTx+b .(2)(2)y=f(x)=wTx+b .

其中,x=[x1,x2,...,xn]x=[x1,x2,...,xn],w=[w1,w2,...,wn]w=[w1,w2,...,wn].

看不懂吧,我也看不懂,直接上图,有图有真相。

蓝色表示数据点,红色直线表示最终求得的线性回归结果。 

几种线性回归算法:

最小二乘法:

它通过 最小化误差的平方和 ,寻找数据的最佳函数匹配。
利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间 误差的平方 为最小。
假设我们现在有一系列的数据点(xi,yi) (i=1,…,m),那么由我们给出的拟合函数h(x)得到的估计量就是h(xi)
残差:ri = h(xi) – yi
三种范数:
1. ∞-范数:残差绝对值的最大值,即所有数据点中残差距离的最大值:

2. 1-范数:绝对残差和,即所有数据点残差距离之和:

 
3. 2-范数:残差平方和:

拟合程度,用通俗的话来讲,就是我们的拟合函数h(x)与待求解的函数y之间的相似性。那么
2-范数越小,自然相似性就比较高了。
所以式子就可以写为:

分别对k和b求偏导,然后令偏导数为0,即可获得极值点。 

RANSAC:

随机采样一致性(random sample consensus)。
RANSAC是一种思想 ,一个求解已知模型的参数的框架。 它不限定某一特定的问题,可以是计 算机视觉的问题,同样也可以是统计数学,甚至可以是经济学领域的模型参数估计问题。
它是一种迭代的方法,用来在一组包含离群的被观测数据中估算出数学模型的参数。 RANSAC是一个非确定性算法,在某种意义上说,它会产生一个在一定概率下合理的结果,其允许使用更多次的迭代来使其概率增加。
RANSAC的基本假设是 “内群”数据可以通过几组模型参数来叙述其数据分布,而“离群”数据则是不适合模型化的数据。 数据会受噪声影响,噪声指的是离群,例如从极端的噪声或错误解释有关数据的测量或不正确的假设。 RANSAC假定,给定一组(通常很小的)内群,存在一个 程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数。

RANSAC算法的输入:
1. 一组观测数据(往往含有较大的噪声或无效点),
2. 一个用于解释观测数据的参数化模型, 比如 y=ax+b
3. 一些可信的参数。
RANSAC 的步骤:
1. 在数据中随机选择几个点设定为内群
2. 计算适合内群的模型 e.g. y=ax+b ->y=2x+3 y=4x+5
3. 把其它刚才没选到的点带入刚才建立的模型中,计算是否为内群 e.g. hi=2xi+3->ri
4. 记下内群数量
5. 重复以上步骤
6. 比较哪次计算中内群数量最多,内群最多的那次所建的模型就是我们所要求的解
注意 不同问题对应的数学模型不同,因此在计算模型参数时方法必定不同,RANSAC的作用不在于
计算模型参数。(这导致ransac的缺点在于要求数学模型已知)
这里有几个问题:
1. 一开始的时候我们要随机选择多少点(n)
2. 以及要重复做多少次(k)
假设每个点是真正内群的概率为 w:
w = 内群的数目/(内群数目+外群数目)
通常我们不知道 w 是多少, w^n是所选择的n个点都是内群的机率, 1-w^n 是所选择的n个点至少有一个不是内群的机率, (1 − w^n)^k 是表示重复 k 次都没有全部的n个点都是内群的机率, 假设算法跑 k 次以后成功的机率是p,那么,
1 p = (1 w^n)^k
p = 1 (1 w^n)^k
我们可以通过P反算得到抽取次数K,K=log(1-P)/log(1-w^n)。
所以如果希望成功机率高:
当n不变时,k越大,则p越大; 当w不变时,n越大,所需的k就越大。
通常w未知,所以n 选小一点比较好。
RANSAC 的优缺点:
优点:
1. 它能鲁棒的估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。
缺点:
1. 它计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。
2. RANSAC只有一定的概率得到可信的模型,概率与迭代次数成正比。
3. 它要求设置跟问题相关的阀值。
4. RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型。
5. 要求数学模型已知
RANSAC 与最小二乘法
生产实践中的数据往往会有一定的偏差。
例如我们知道两个变量X与Y之间呈线性关系,Y=aX+b,我们想确定参数a与b的具体值。通过实验,可以得到一组X与Y的测试值。虽然理论上两个未知数的方程只需要两组值即可确认,但由于系统误差的原因,任意取两点算出的a与b的值都不尽相同。我们希望的是,最后计算得出的理论模型与测试值的误差最小。
最小二乘法:通过计算最小均方差关于参数a、b的偏导数为零时的值。事实上,很多情况下,最小二乘法都是线性回归的代名词。
遗憾的是,最小二乘法只适合于误差较小的情况。
在模型确定以及最大迭代次数允许的情况下,RANSAC总是能找到最优解。(对于包含80%误差的数据集,RANSAC的效果远优于直接的最小二乘法。)
由于一张图片中像素点数量大,采用最小二乘法运算量大,计算速度慢。

 

哈希算法:

1. 均值哈希算法aHash

步骤
1. 缩放:图片缩放为8*8,保留结构,除去细节。
2. 灰度化:转换为灰度图。
3. 求平均值:计算灰度图所有像素的平均值。
4. 比较:像素值大于平均值记作1,相反记作0,总共64位。
5. 生成hash:将上述步骤生成的1和0按顺序组合起来既是图片的指纹(hash)。
6. 对比指纹:将两幅图的指纹对比,计算汉明距离,即两个64位的hash值有多少位是不一样的,不相同位数越少,图片越相似。
汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

2. 差值哈希算法dHash

差值哈希算法相较于均值哈希算法,前期和后期基本相同,只有中间比较hash有变化。
步骤
1. 缩放:图片缩放为 8*9 ,保留结构,除去细节。
2. 灰度化:转换为灰度图。
3. 求平均值:计算灰度图所有像素的平均值。 ---这步没有,只是为了与均值哈希做对比
4. 比较:像素值大于后一个像素值记作1,相反记作0。本行不与下一行对比,每行9个像素,
八个差值,有8行,总共64位
5. 生成hash:将上述步骤生成的1和0按顺序组合起来既是图片的指纹(hash)。
6. 对比指纹:将两幅图的指纹对比,计算汉明距离,即两个64位的hash值有多少位是不一样的,不相同位数越少,图片越相似。

3. 感知哈希算法pHash

均值哈希算法过于严格,不够精确,更适合搜索缩略图,为了获得更精确的结果可以选择感知哈希
算法,它采用的是DCT(离散余弦变换)来降低频率的方法。
步骤:
1. 缩小图片:32 * 32是一个较好的大小,这样方便DCT计算
2. 转化为灰度图:把缩放后的图片转化为灰度图。
3. 计算DCT:DCT把图片分离成分率的集合
4. 缩小DCT:DCT计算后的矩阵是32 * 32,保留左上角的8 * 8,这些代表图片的最低频率。
5. 计算平均值:计算缩小DCT后的所有像素点的平均值。
6. 进一步减小DCT:大于平均值记录为1,反之记录为0.
7. 得到信息指纹:组合64个信息位,顺序随意保持一致性。
8. 最后比对两张图片的指纹,获得汉明距离即可。
离散余弦变换 DCT

 

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

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

相关文章

雅思词汇怎样在短期内进行突破?

雅思的考试对词汇量的要求是比较高的,那么该怎样才能高效的积累呢?和小编一起来看看雅思词汇怎样在短期内进行突破? 词汇突破 1)制定合理的计划,反复循环 背单词是一个非常繁重的任务,它需要大量的精力。…

【记录】gnuplot|gnuplot怎么把多个图画成一个?

版本:gnuplot 5.2 patchlevel 2 解决了无数次了还是反复忘,气,遂记。 下列程序的功能: 读取文件夹下的所有dat文件,并把所有dat的结果画在一张图里并标好图例: set term png set output "output.png…

ElasticSearch 总结

ElasticSearch 1. 什么是RestFul REST : 表现层状态转化(Representational State Transfer),如果一个架构符合REST原则,就称它为 RESTful 架构风格。 资源: 所谓"资源",就是网络上的一个实体,或者说是网络上的一个具…

【简单认识Haproxy搭建Web群集】

文章目录 Haproxy概念1、简介2、HAProxy的主要特性3、HAProxy常见负载均衡策略4、LVS、Nginx、HAproxy的区别: 部署实例1.节点服务器部署2.部署Haproxy服务器3、日志定义 Haproxy概念 1、简介 HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&…

mmlab框架的train.txt/val.txt等制作

文件组织形式: 代码和数据集位于同一级目录 以下需要修改的地方已经标注: import os import random #------------基本参数(修改下面4个)----------------# trainval_percent 0.8#用于训练&评估的比例 train_percent 0.7…

SpringBoot 如何使用 MockMvc 进行 Web 集成测试

SpringBoot 如何使用 MockMvc 进行 Web 集成测试 介绍 SpringBoot 是一个流行的 Java Web 开发框架,它提供了一些强大的工具和库,使得开发 Web 应用程序变得更加容易。其中之一是 MockMvc,它提供了一种测试 SpringBoot Web 应用程序的方式&…

实测:python字典迭代比列表迭代快

具体原因可以参考:Python中字典比列表快的原因是什么 - 风纳云 (fengnayun.com) 再补充一点,字典的键可以直接迭代,但是value不行。 此时红色框部分似乎dict,速度很快; 但是当换成列表的时候 : 有一点外…

线性表的链式表示和实现

链式表示中各节点由两个域组成: 数据域:存储元素值数据 指针域:存储直接后继节点的存储位置 头指针、头节点、首元节点:示意图 头指针:是指向链表中第一个节点的指针 首元节点:是链表中存储第一个数据元素…

【Unity3D】动态路径特效

1 前言 本文通过导航系统(NavMeshAgent)和线段渲染器(LineRenderer)实现了角色走迷宫和绘制路径功能,同时实现动态路径特效。 导航系统的介绍详见博客:导航系统、分离路面导航、动态路障导航。线段渲染器的…

RV1126笔记三十七:PaddleOCR检测模型训练

若该文为原创文章,转载请注明原文出处。 PaddleOCR检测模型训练及验证测试 1、准备数据集 在PaddleOCR目录下新建文件夹:train_data, 这个文件夹用于存放数据集的。 使用的是网上大佬提供的车牌识别数据集,下载后,解压到train…

《机器学习公式推导与代码实现》chapter21-贝叶斯概率模型

《机器学习公式推导与代码实现》学习笔记,记录一下自己的学习过程,详细的内容请大家购买作者的书籍查阅。 贝叶斯概率模型 1 贝叶斯定理简介 贝叶斯定理认为任意未知量 θ \theta θ都可以看做一个随机变量,对该未知量的描述可以用一个概率…

如何编写联邦学习训练框架——Pytorch实现

联邦学习框架实现 联邦学习训练过程由服务器和客户端两部分组成。 客户端将本地数据训练得到的模型上传服务器,服务器通过聚合客户端上传的服务器再次下发新一轮的模型,原理很简单,那么我们开始动手写代码。 1. 客户端部分: 客…

LVS - DR群集

文章目录 一、DR模式 LVS负载均衡群集1.数据包流向分析 二、LVS-DR模式的特点三、LVS-DR中的ARP问题四、DR模式 LVS负载均衡群集部署1.环境准备2.配置负载调度器(192.168.40.104)2.1.配置虚拟 IP 地址(VIP:192.168.40.180&#xf…

RabbitMQ在SpringBoot中的高级应用(1)

启动RabbitMQ 1. 在虚拟机中启动RabbitMQ,要先切换到root用户下: su root 2.关闭防火墙: systemctl stop firewalld 3.rabbitmq-server start # 启用服务 4.rabbitmq-server -detached # 后台启动 1.消息确认机制 有两种确认的方式: 自动ACK:RabbitMQ将消息发送给…

一些有意思的耗尽型MOS恒流源阻抗对比

貌似没有什么管子能超过DN2540,测试的环境差别不大,LD1014D因为本身耐压太低(25V),而且达不到1mA这个值,因此,测试的时候相应降低了电压,选择了2mA的电流,并将负载电阻减…

Pytorch-ResNet50-MINIST Classify 网络实现流程

分两个文件讲解:1、train.py训练文件 2、test.py测试文件. 1、train.py训练文件 1)从主函数入口开始,设置相关参数 # 主函数入口 if __name__ __main__:# ----------------------------## 是否使用Cuda# 没有GPU可以设置成Fasle# -…

IDEA+SpringBoot+mybatis+bootstrap+jquery+Mysql车险理赔管理系统

IDEASpringBootmybatisbootstrapjqueryMysql车险理赔管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.编辑个人信息3.用户管理4.添加用户5.申请理赔管理6.赔偿金发放管理7.待调查事故保单8.已调查记录9.现场勘察管理10.勘察记录11.我的保险管理12.我的理赔管理 三…

Atcoder Beginner Contest 309——D-F讲解

前言 由于最近期末考试,所以之前几场都没打,给大家带了不便,非常抱歉。 这个暑假,我将会持续更新,并给大家带了更好理解的题解!希望大家多多支持。 由于, A ∼ C A\sim C A∼C 题比较简单&am…

现代C++新特性 扩展的聚合类型(C++17 C++20)(PC浏览效果更佳)

文字版PDF文档链接:现代C新特性(文字版)-C文档类资源-CSDN下载 1.聚合类型的新定义 C17标准对聚合类型的定义做出了大幅修改,即从基类公开且非虚继承的类也可能是一个聚合。同时聚合类型还需要满足常规条件。 1.没有用户提供的构造函数。…

用C语言写一个压缩文件的程序

本篇目录 数据在计算机中的表现形式huffman 编码将文件的二进制每4位划分,统计其值在文件中出现的次数构建二叉树搜索二叉树的叶子节点运行并输出新的编码文件写入部分写入文件首部写入数据部分压缩运行调试解压缩部分解压缩测试为可执行文件配置环境变量总结完整代…