线性回归算法

什么是线性回归?

线性回归(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.hqwc.cn/news/20704.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​ 基于单片机智能温室大棚控制系统

功能介绍 以51单片机作为主控系统; DS18B20温度采集模块检测温度; 光敏电阻和ADC0832组成的光照检测模块; 土壤湿度检测模块检测土壤湿度; CO2检测模块检测CO2浓度; LCD1602显示模块显示测量值、 若温度小于温度最…

Spark(21):SparkStreaming之DStream入门

目录 0. 相关文章链接 1. WordCount 案例实操 1.1. 需求 1.2. 添加依赖 1.3. 编写代码 1.4. 启动程序并通过netcat发送数据 2. WordCount 解析 0. 相关文章链接 Spark文章汇总 1. WordCount 案例实操 1.1. 需求 使用 netcat 工具向 9999 端口不断的发送数据&#xf…

当我掉入计算机的大坑中时,遇到简单的题也很吃力,这可如何是好呢?

一支笔,一双手,一道力扣(Leetcode)做一宿!!! 一、分享自己相关的经历 我们可能经常听到这句话,人永远赚不到认知以外的钱,如果把它放到程序员行业来说,同样适…

2.8 Bootstrap 图片

文章目录 Bootstrap 图片\<img> 类响应式图片 Bootstrap 图片 在本章中&#xff0c;我们将学习 Bootstrap 对图片的支持。Bootstrap 提供了三个可对图片应用简单样式的 class&#xff1a; .img-rounded&#xff1a;添加 border-radius:6px 来获得图片圆角。.img-circle&…

[工业互联-16]:工业Windows操作系统与实时性方案

目录 第1章 Windows操作系统 1.1 简介 1.2 Windows架构 第2章 工业Windows操作系统 2.1 简介 2.2 常见的工业Windows操作系统版本 2.3 定制化工业Windows 第3章 EtherCAT实时Windows方案 3.1 实时Windows的缘由 3.2 总体框架 3.3 ROS2方案 3.4 方案1&#xff1a;使…

设计模式之状态模式

目录 使用场景参与者协作效果实现相关模式实际应用和思考 状态(State)&#xff08;对象行为模式&#xff09;允许一个对象在内部状态改变时改变他的行为。对象看起来似乎修改了他的类 使用场景 一个对象的行为取决于它的状态&#xff0c;并且它必须在运行时刻根据状态改变它的…

Linux计划任务crontab

顺序是可以任意的, 任意指的是,选项可以都放前面 变量放后面 或者一个选项 一个选项对应的命令 df 查看文件占有情况 d1 只显示1级深度 -h格式好看点 显示所有用户进程和内存进程. uid是所属用户 PPID是父进程 kill终止进程 杀死进程&#xff0c;是正常退出。 如果普通杀不…

spring boot启动原理分析

springboot启动类中有两个关键的地方 1.SpringBootApplication注解 2.SpringApplication.run方法 SpringBootApplication注解分析 SpringBootApplication注解由三大注解构成&#xff0c; SpringBootConfiguration、EnableAutoConfiguration、ComponentScan。 SpringBootCon…

EIK+Filebeat+Kafka

目录 Kafka 概述 为什么需要消息队列&#xff08;MQ&#xff09; 使用消息队列的好处 消息队列的两种模式 Kafka 定义 Kafka 简介 Kafka 的特性 Kafka 系统架构 Partation 数据路由规则&#xff1a; 分区的原因 部署 kafka 集群 1.下载安装包 2.安装 Kafka 修改配…

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060

STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 Proteus仿真小实验&#xff1a; STM32 Proteus仿真双机串口通讯同步电子时钟系统数码管显示 -0060 功能&#xff1a; 硬件组成&#xff1a;本系统由2个设备组成 设备1&#xff1a;STM32F103R6单片机 8位数…

Jmeter场景设置与启动方式

目录 线程组设置 name和comments Action to be taken after a sampler error Thread Properties 线程属性设置 场景运行 远程运行配置 命令行 性能测试场景是用来模拟模拟真实用户操作的工作单元&#xff0c;所以场景设计一定要切合用户的操作逻辑&#xff0c;jmeter主要…

Python示例解释观察者模式

观察者模式是一种常用的设计模式&#xff0c;用于在对象之间建立一种一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。下面通过一个简单的例子来解释观察者模式的概念。 假设我们有一个名为"主题"&a…