线性回归
线性回归是一种统计学的方法,用于发现变量和变量之间的关系。在机器学习里,就是利用线性回归找到特征值(输入)和标签(输出)之间的关系。
假设我们想要研究汽车的重量来预测汽车每加仑汽油行驶里程
首先,我们就要去收集大量数据
| 以千计的英镑(功能) | 每加仑英里(标签) |
|---|---|
| 3.5 | 18 |
| 3.69 | 15 |
| 3.44 | 18 |
| 3.43 | 16 |
| 4.34 | 15 |
| 4.42 | 14 |
| 2.37 | 24 |
| 然后,我们通过收集的数据对其绘制图像 |
最后,就是根据绘制的图像,绘制一条最匹配的拟合线来创建模型
以上就是线性回归的基本流程,接下来我们继续深入学习。
线性回归方程
以数学的角度来说,线性回归就是一致直线 y=mx+b,其中在上面的例子中,各个参数意义如下:
- y 是每加仑行驶的英里数,即我们想要预测的结果
- m 是直线的斜率
- x 是英镑,我们输入的值
- b 是y轴截距 在机器学习中,我们可以线性回归模型的方程写成如此y=mx+b,只不过对应参数的含义会有些变化:
- y 是预测的标签,输出
- m 是特征值的权重,权重是模型的参数,在训练期间计算得出
- x 是特征值,输入
- b 是模型的偏差,也是模型的参数,同样是在训练期间计算得出
在训练过程中,模型会计算生成最佳模型的权重和偏差
我们实际情况下,有时候单个特征值的模型可能得不到很好的效果。所以,这就产生了具有多个特征值的模型,一个复杂的模型往往都是依赖于多个特征值,每个特征值都有一个单独的权重。我们的线性回归模型的方程也需要升级一下:
y=b+w1x1+w2x2+w3x3...
损失函数
损失是一个数值的指标,应用于描述模型的预测有多少的偏差。所以损失函数是用来描述模型预测与实际标签的垂直距离。为了让模型更加准确,我们最终的目标就是要把损失降低到最小。
损失类型
在线性回归中,主要有四种损失函数:
- L1损失: 预测值与实际之间差异的绝对值的总和
- 平均绝对误差:一组N个示例的L1损失的平均值
- L2损失:预测值与实际值之间的平分差的总和
- 均方误差:一组N个示例的L2损失的平均值
损失函数还是比较容易理解的,我们只需要抓住其中的概念,进行简单的计算即可。
梯度下降法
梯度下降法是一种寻找让损失达到最低的权重和偏差的数学方法。在寻找的过程中,我们很难一次性就找到让损失最低的权重和偏差,这需要我们不断迭代寻找。
模型开始训练时,权重和偏差为接近零的随机值,然后重复以下流程:
- 使用当前权重和偏差计算损失
- 确定用于减少损失的权重和偏差的移动方法
- 让权重和偏差值朝着损失减少的方向移动
- 返回步骤1重复上述流程,直到模型无法再往下降低损失为止
超参数
超参数是用来控制训练不同方面的变量,一共有三个非常常见的超参数,学习速率,批量大小,纪元。超参数和前面我们所讲的参数有着区别,超参数是我们人为可控的,而参数是模型本身在训练过程计算出来的,参数是模型本身的一部分。
学习速率
学习率是我们设置的一个浮点数,会影响模型收敛的速度。如果学习率过低,模型可能需要很长时间才能收敛。如果学习率过高,模型将永远不会收敛,而是在最小损失的权重和偏差中不断来回跳动。而,我们的目标就是选择一个合适的学习率,让模型快速收敛。
批次大小
批次大小是一个超参数,表示模型在更新权重和偏差之前的示例数量。这里有'之前'二字,可能会理解为应该先计算每个示例的损失,然后再更新权重和偏差。但是,在面对大量数据的时候,这种做法显然是不可取的。所以,我们可以利用随机梯度下降或小批量随机梯度下降技术在平均情况下获取正确的梯度,那么我们就不必更新权重和偏差前查看每个示例。
随机梯度下降法(SGD):每次迭代的过程中只使用一个随机选择示例,经历足够多次的迭代后,SGD就会起作用,但是还是会出现问题,训练期间的变化可能导致迭代过程中损失不减反增。
小批次随机梯度下降法(min-batch SGD):小批次随机梯度下降法是全批次梯度下降法和随机梯度下降法的一个中间方法。对于N个数据集,批次处理大小可以是任何1到N之间的数字。模型会随机选择每个批处理中包含的示例,对其梯度求平均值,然后每次迭代一次更新权重和偏差。
周期数
在训练期间,一个周期表示模型已训练集中的每个示例一次。训练通常需要进行多次迭代,要多次处理训练集中的每个示例。迭代次数需要我们在训练开始之前设置。一般来说,训练周期越多,模型表现会更好些,但是训练所花费的时间也会更长。