百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

机器学习第2天什么是线性回归为什么是距离的平方不是绝对值

toyiye 2024-04-27 03:47 42 浏览 0 评论

01 引言

人工智能和机器学习已经是时下火热的技术。各行各业的人都想着如何利用人工智能和机器学习使他们的工作变的更加简单高效。

机器学习

机器学习知识需要由浅入深,一步一步的学习。

这篇文章,我们一起学习一下线性回归吧!

02 线性回归是什么?

函数的定义讲究的是 独立参数 x 非独立参数 y之间的对应关系。

y = f(x)

学好了函数,也就无意中为我们奠定了学习 回归(Regression)的基础。

怎么理解线性回归?

线性回归 = 线性 + 回归

第一:先理解什么是回归?

机器学习的目的主要是找到目标值 T 和 一堆数据之间的关系,而确定机器学习中的关系的方法有:分类和回归

怎么去区分分类和回归呢?

看目标值 T 是定性的值还是定理的值:

定量输出称为回归;

定性输出称为分类;

比方说:

  • A: 预测明天是多少度?数据有今天的度数x,天气情况y(晴天,雨天,阴天);
  • B: 预测明天是什么天气?数据有今天的度数x,天气情况y(晴天,雨天,阴天);

一起来看看A和B两个例子;今天的度数x是一个连续的值;而天气情况确实一个类别,三种情况选其一;

也就是说A和B的输入数据类型是一样的!

A中预测明天有多少度?A会给出一个具体的值,且这个值是在一个连续的范围内。我们管这种叫做回归。也就是定量输出称为回归;

B中预测明天是什么天气?B给出的结果是一个定性的结果,这种叫分类。定性输出称为分类;

雷区1: 很多人会通过输入数据的类型来判断分类还是回归,其实这和输入数据真没啥关系!

第二:再理解什么是线性?

函数中,目标值T 和参数x,y,z之间的关系有很多种。比方说,

y = x,这就是线性关系;x和y的关系可以由一条直线表示;

体重和糖摄入量的关系

y = x^2,这可不是线性关系了;因为x和y的关系是抛物线了;

一步一步学 线性回归

StatQuest上已经很好的介绍了线性回归的方法,我就借用一下啦!(因为感觉说的不会比他的好!)。

图片来源:StatQuest

在StatQuest例子中,需要找到老鼠体重和老鼠尺寸大小之间的关系,数据点如上图。看着线性关系挺明显的。

第一步:假设关系

老鼠大小 = a * 老鼠体重 + b

怎么确定a和b的值就是线性回归的目标。

顺便提一下,这个就是假设函数 h(x),h代表的是假设英文的头字母(Hypothesis);

图片来源:StatQuest

第二步:确定一个标准

图片来源:StatQuest

图片来源:StatQuest

如上图,根据数据,我们可以画出无数条线来表示这个线性关系。到底怎么去选择最优的呢?

不管画的线如何变,数学表达式不会变。

老鼠大小 = a * 老鼠体重 + b

那么,通过这个式子,输出任意一个老鼠体重,就会给出一个老鼠大小值。我们定义为 预测值_i;

在已知的数据中,老鼠体重是对应的一个实际值的,定义为 实际值_i

| 预测值_i - 实际值_i | 不就是预测误差嘛!

这样,科学家们又造出了一个 损失函数(Cost Function),也就是说所决定的关系要使得 损失函数最小。

线性回归的损失函数如下:所有误差平方的平均值

J = sum((预测值_i - 实际值_i)^2) / n

n是数据点的个数;sum是求和的意思。

图片来源:StatQuest

图片来源:StatQuest

我们有了这个目标,就旋转直线(改变斜率a)和上下移动改变截距(改变b)。上图是只改变斜率a的图,最后在一个角度的时候,我们使得 损失函数 J最小了。而这个过程,可以通过梯度下降来求得,具体的以后的文章会重点解释。

对了,线性回归的损失函数 J还有一个名字,叫做Mean Squared Error(MSE)。

03 稍微提一下Gradient Descent(梯度下降)

我希望我的朋友们,都是看过我之前文章的。因为讲这个需要点微积分,具体是偏微分的知识。

讨厌的公式来了。还是这张图。

图片来源:StatQuest

我们知道,损失函数 J = sum((预测值_i - 实际值_i)^2) / n。上图就是一个 J - a(斜率)的关系图。

知道微积分的朋友应该知道怎么去找最小值,不就是找到 极小值的方法吗?导数为0,切线水平。

公式

具体过程是假定一个a或者b,算出偏微分,然后对a或者b进行调整。具体调整的方法这里不展开讨论了。

同时考虑a和b的话,其实是找三维图像的最低点,如下图:

三维图像

04 勤学要好问:为什么损失函数里要用距离的平方而不是距离的绝对值?

大家有想过这个问题吗?误差是| 预测值_i - 实际值_i | ,那我取误差绝对值的和的最小值不也可以称为一个损失函数嘛。

千万不要以为这个平方是随随便便来的。背后的道理真的我不愿意讲,因为公式太多。

误差 = 预测值_i - 实际值_i

这个误差是符合一定概率分布的。看过我之前的文章介绍海量数据的中心极限定理的朋友,应该知道这个误差 可以被假定为:

平均值 u = 0,方差为σ 的正态分布。

正态分布

那么在已知正太分布的情况下,每一个数据点都会对应一个误差,而误差出现的概率,准确的说是Likelihood是可以通过 正态分布的函数求得的。

likelihood(概率)

所有数据点 误差概率相加

当我们对上述函数取对数可得:

取对数

最大似然分析,不懂得看我之前的文章。我们要保证 L 最大,只要保证上式 右边值最大。

式子右边 第一项和第二项是定值,只要保证第三项最小就可以使 L最大。

由于 u = 0,只要 sum((误差值_i)^2) 最小就可以啦!

这就是为什么 损失函数 J要采用平方的数学解释啦!

05 Python实现线性回归

Python真的是搭上了 人工智能和机器学习的大船,发展是真的好。

Python中的 sklearn 包是可以用来解决 线性回归的问题的。

  • from sklearn.linear_model import LinearRegression

首先我们要从sklearn.linear_model中引入 LinearRegression 这个函数;

  • 逃学博士 = LinearRegression(normalize=True)

LinearRegression 赋给变量名 逃学博士;

  • 逃学博士.fit(x, y)

这样就可以做出线性回归啦!

简单吧!

06 总结

对了,千万不要认为线性回归简单、好用,就可以乱用。

随意使用会出笑话的。

比方说:中国人口肥胖比例 = 10% * 十年的次数

希望大家喜欢我的文章。

“逃学博士”:理工科直男一枚,在冰天雪地的加拿大攻读工程博士。闲暇之余分享点科学知识和学习干货。

相关推荐

Python 可视化工具包(python常见的可视化工具)

喜欢用Python做项目的小伙伴不免会遇到这种情况:做图表时,用哪种好看又实用的可视化工具包呢?本文将介绍一些常用的Python可视化包,包括这些包的优缺点以及分别适用于什么样的场景。这篇文章...

Python的GPU编程实例——近邻表计算

目录技术背景...

python算法体验-3.python实现欧式距离的三种方式

欧式距离也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。欧式距离源自N维欧氏空间中两点...

python实现Lasso回归分析(特征筛选、建模预测)

实现功能:...

python语言检测模块langid、langdetect使用

本文首发地址:https://blog.csdn.net/Together_CZ/article/details/86678423欢迎关注我的博客【Together_CZ】,我是沂水寒城!之前使用数据...

7天学会Python最佳可视化工具Seaborn(一):可视化变量间的关系

众所周知,Seaborn“可能”是Python下最友好、易用的可视化工具了,可视化效果也非常好。但是截止目前,并没有一份中文教程供广大国内Python使用者查阅学习。怎么能因为语言的问题,让大家错过这...

在Python中使用K-Means聚类和PCA主成分分析进行图像压缩

各位读者好,在这篇文章中我们尝试使用sklearn库比较k-means聚类算法和主成分分析(PCA)在图像压缩上的实现和结果。压缩图像的效果通过占用的减少比例以及和原始图像的差异大小来评估。图像压...

OpenCV-Python 相机校准 | 四十九

目标在本节中,我们将学习由相机引起的失真类型,如何找到相机的固有和非固有特性如何根据这些特性使图像不失真基础一些针孔相机会给图像带来明显的失真。两种主要的变形是径向变形和切向变形。径向变形会导致直线出...

python数据预处理技术(python 数据预处理)

在真实世界中,经常需要处理大量的原始数据,这些原始数据是机器学习算法无法理解的。为了让机器学习算法理解原始数据,需要对数据进行预处理。我们运行anaconda集成环境下的“jupyternotebo...

【Python可视化系列】一文教你绘制不同类型散点图(理论+源码)

这是...

OpenCV-Python 特征匹配 | 四十四

目标在本章中,我们将看到如何将一个图像中的特征与其他图像进行匹配。我们将在OpenCV中使用Brute-Force匹配器和FLANN匹配器Brute-Force匹配器的基础蛮力匹配器很简单。它使用第一...

实战python中Random模块使用(python中的random模块)

一、random模块简介Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。要在Python中使用random模块,只需要...

Python随机模块22个函数详解(python随机函数的应用)

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平时数据分析各种分布的数据构造也会用到。random模块,用于生成伪随机数,之所以称之为伪随机数,是...

说冲A就冲A,这个宝藏男孩冯俊杰我pick了

爱奇艺新上架了一部网剧叫《最后一个女神》。有个惊人的发现,剧里男三居然是《青春有你》的训练生冯俊杰。剧组穷,戏服没几件,冯俊杰几乎靠一件背背佳撑起了整部剧。冯俊杰快速了解一下。四川人,来自觉醒东方,人...

唐山打人嫌犯陈继志去医院就医的背后,隐藏着三个精心设计的步骤

种种迹象表明,陈继志这帮人对处理打人之后的善后工作是轻车驾熟的,他们想实施的计划应该是这样的:首先第一步与伤者进同一家医院做伤情鉴定,鉴定级别最好要比对方严重,于是两位女伤者被鉴定为轻伤,他们就要求医...

取消回复欢迎 发表评论:

请填写验证码