机器学习:线性回归简单有效,但是千万不要踩到雷区!
https://www.toutiao.com/a6673670287524889091/
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% * 十年的次数
机器学习:线性回归简单有效,但是千万不要踩到雷区!相关推荐
- 机器学习 线性回归算法_探索机器学习算法简单线性回归
机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...
- 机器学习线性回归算法实验报告_机器学习之简单线性回归
为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习.本文主要目录如下: 一.机器学习的概念 二.线性回归的概念 三.机器学习线性回归模型 (一)导入数据集 ( ...
- opencv机器学习线性回归_机器学习入门1---简单线性回归
归纳整理昨日学习的知识点,学会记录是个好习惯. 什么是机器学习? 简单来说,就是使用机器学习算法来建立模型,输入新的数据通过模型进行评估预测. 机器学习步骤 提出问题→理解数据→清洗数据→构建模型→评 ...
- python培训班 北京-北京python培训机构那个好?这几个坑千万别踩
现在大大小小的python培训机构实在是太多了,很多想学习python的人面对这些培训机构不知道选哪家比较好. 作为美国主流大学最受欢迎的入门编程语言Python,诞生至今已经过了25个年头.相对于其 ...
- 机器学习线性回归学习心得_机器学习中的线性回归
机器学习线性回归学习心得 机器学习中的线性回归 (Linear Regression in Machine Learning) There are two types of supervised ma ...
- 草根创业,这三大坑千万别踩
创业一词,都快被大家说烂了,听的人也就差耳朵没起茧了.连个宝妈在朋友圈卖个三无产品都自称自己是在创业.交了点费用去到一个群里帮别人刷了几个单,也可以理直气壮的跟别人说自己在创业.还不忘群发消息跟亲朋好 ...
- 机器学习--线性回归(LinearRegression)
机器学习–线性回归 基本概念 LinearRegression 拟合一个带有系数 w=(w1,...,wp)w = (w_1, ..., w_p)w=(w1,...,wp) 的线性模型,使得数据集 ...
- 删库跑路、“投毒”、改协议,开源有哪几大红线千万不能踩?
作者 | 彭慧中 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 开源协议是开源世界里的根基.根据CSDN<2021-2022 中国开发者调查报告>数据显示,尽管目前已有94 ...
- Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...
最新文章
- 中国文学发展史思维导图
- 小鹏汽车招股书,满是智能技术自研的标签
- wince国际化语言支持
- Elasticsearch forceMerge操作
- matlab swt函数,matlab swt 函数出错
- o_rdonly_O_RDWR, O_CREAT等open函数标志位在哪里定义? | 学步园
- Android 自动检测更新,自动下载apk更新版本
- SRAM和SDRAM的区别
- 《动手学深度学习 PyTorch版》学习笔记(一):数据操作
- shell中的括号(小括号,中括号,大括号/花括号)
- 基于JAVA+SpringMVC+Mybatis+MYSQL的论坛管理系统
- E. 2-3-4 Tree
- 大型企业用什么orm_企业信息化系统建设的方案有什么用?
- php完美导出word,php导出生成word的方法
- vue怎样获取子组件的值
- 递归函数--猴子摘桃问题的解题思路
- SEO优化:6个方法提升网站排名
- 鸿蒙内测公测时间,华为鸿蒙内测公测升级申请方法
- 20幅程序员才能看懂的趣图,看到第三个我就忍不住哈哈哈哈哈!
- 软考的高级职称系统架构设计师值得花时间投入吗?
热门文章
- jxl解析excel
- 《预训练周刊》第35期:零样本规划器的语言模型:为智能体提取可操作的知识、LaMDA:对话应用的语言模型...
- 观点速递:大模型落地产业,存在什么问题?
- 语音中的 Transformer一文打尽!
- MILA研究院唐建:基于图神经网络的关系推理(附视频)
- 入门深度学习的必备数学知识
- JSON 之父新作,JavaScript “葵花宝典”参悟 JS 之道
- 第一次全面揭示世界软件巨人微软致胜的技术奥秘
- 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...
- 独家 | 如何让情绪智力驱动创新?