点一下关注吧!!!非常感谢!!持续更新!!!
Java篇开始了!
- MyBatis 更新完毕
- 目前开始更新 Spring,一起深入浅出!
目前已经更新到了:
- Hadoop(已更完)
- HDFS(已更完)
- MapReduce(已更完)
- Hive(已更完)
- Flume(已更完)
- Sqoop(已更完)
- Zookeeper(已更完)
- HBase(已更完)
- Redis (已更完)
- Kafka(已更完)
- Spark(已更完)
- Flink(已更完)
- ClickHouse(已更完)
- Kudu(已更完)
- Druid(已更完)
- Kylin(已更完)
- Elasticsearch(已更完)
- DataX(已更完)
- Tez(已更完)
- 数据挖掘(已更完)
- Prometheus(已更完)
- Grafana(已更完)
- 离线数仓(已更完)
- 实时数仓(正在更新…)
- Spark MLib (正在更新…)
线性回归场景
● 房价预测
● 销售额度预测
● 贷款额度预测
以华氏度与摄氏度之间的转换为例进行描述
线性回归定义
定义与公式
线性回归(Linear Regression)是利用回归方程(函数)对一个或多个自变量和因变量之间关系进行建模的一种分析方式
特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归
如下图的例子:
上面两个例子,我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。
线性回归特征与目标关系分析
线性回归当中主要两个模型,一种是线性关系,另一种是非线性关系。在这里我们只能画一个平面去理解,所以都用单个特征或者两个特征举例子。
线性关系的单变量线性关系
线性关系的多变量线性关系
非线性关系
线性回归的损失和优化
假设学习成绩例子,真是的数据之间存在这样的关系:
真实关系:最终成绩 = 0.5x平时成绩 + 0.3x期末成绩
那么现在呢,猜测一个关系:
猜测关系:预测最终成绩 = 0.45x平时成绩 + 0.2x期末成绩
可以想到,真实结果与我们的预测的结果之间存在一定的误差。
既然存在这个误差,如何衡量误差呢?
损失函数
总损失函数为:
● yi 为第i个训练样本的真实值
● h(xi)为第i个训练样本特征值组合预测函数
● 又称最小二乘法
优化算法
如何去模型当中的W,使得损失最小(目的是找到最小损失对应的W值)
线性回归经常使用的两种优化算法:解析解方式(正规方程)+ 梯度下降法
解析解方式
理解:X为特征值矩阵,Y为目标值矩阵,直接求到最好的结果。
缺点:当特征过多复杂时,求解速度太慢并且得不到结果。
梯度下降(Gradient Descent)
梯度下降法的基本思想可以类比为一个下山的过程,一个人被困在山上,需要从山上下来(比如,找到山的最底点,也就是山谷),但此时山上的浓雾很大,导致可视度很低。因此,下山的路径无法确定,它必须利用自己周围的信息去找到下山的路径,这个时候,他就可以利用梯度下降算法来帮助自己下山。
具体来说,以它当前所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走。同理,如果我们的目标是上山,也就是爬山山顶,那么此时应该是朝着最陡峭的方向往上走,然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。
梯度下降的基本过程就和下山的场景很类似。梯度是微积分中的一个很重要的概念:
● 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个定点的切线的斜率
● 再多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指定了函数在给定点的上升最快的方向
● 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。
α 的含义:α在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过α来控制每一步走的距离,以保证不要步长跨的太大扯着蛋。其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以α的选择在梯度下降中往往是很重要的!α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点。
为什么梯度要乘以一个负号
梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文中提过,梯度的方向实际就是函数在此点上升最快的方向,自然就是负的梯度的方向,所以此处需要加上负号。
我们通过两个图更好理解梯度下降的过程。
优化动态图演示
单变量函数的梯度下降:
- 我们假设有一个单变量的函数 J(θ) = θ2
- 初始化,起点为 θ0 = 1
- 学习率 α = 0.4
我们开始进行梯度下降的迭代计算过程:
如果,经过四次的运算,也就是走了四步,基本就抵达了函数的最低点,也就是山底。
多变量函数的梯度下降
我们假设有一个目标函数:J(θ) = θ12 + θ22
- 现在要通过梯度下降法计算这个函数的最小值,我们通过观察就能发现最小值其实就是(0,0)点。但是接下来,我们会从梯度下降算法开始一步步计算到这个最小值!我们假设初始的起点为:θ0 = (1, 3)。
- 初始的学习率为 α = 0.1
- 函数的梯度为:J(θ) =< 2θ1 ,2θ2>
进行多次迭代:
我们发现,已经基本靠近函数的最小值点:
梯度下降和正规方程的对比