1.参考:https://developers.google.cn/machine-learning/crash-course/reducing-loss/gradient-descent
损失
损失是对糟糕预测的惩罚。也就是说,损失是一个数值,表示对于单个样本而言模型预测的准确程度。如果模型的预测完全准确,则损失为零,否则损失会较大。训练模型的目标是从所有样本中找到一组平均损失“较小”的权重和偏差。
(1)平方损失:L2
(observation - prediction(x))2= (y - y')2
(2)均方误差MSE
求出各个样本的所有平方损失之和,然后除以样本数量
2.降低损失
(1)迭代试错:
模型进行预测,然后计算损失,再更新模型参数,反复此过程。
(2)下降梯度:
损失与权重的关系为凸型。
梯度始终指向损失函数中增长最为迅猛的方向。梯度下降法算法会沿着负梯度的方向走一步,以便尽快降低损失。
为了确定损失函数曲线上的下一个点,梯度下降法算法会将梯度大小的一部分与起点相加,一个梯度步长将我们移动到损失曲线上的下一个点。
(3)学习速率
梯度下降法算法用梯度乘以一个称为学习速率(有时也称为步长)的标量,以确定下一个点的位置。例如,如果梯度大小为 2.5,学习速率为 0.01,则梯度下降法算法会选择距离前一个点 0.025 的位置作为下一个点。
每个回归问题都存在一个金发姑娘学习速率。“金发姑娘”值与损失函数的平坦程度相关。如果您知道损失函数的梯度较小,则可以放心地试着采用更大的学习速率,以补偿较小的梯度并获得更大的步长。
(4)随机梯度下降SGD:
3.泛化
三项基本假设阐明了泛化:
- 我们从分布中随机抽取独立同分布 (i.i.d) 的样本。换言之,样本之间不会互相影响。(另一种解释:i.i.d. 是表示变量随机性的一种方式)。
- 分布是平稳的;即分布在数据集内不会发生变化。
- 我们从同一分布的数据划分中抽取样本
4.验证
将数据集法分为三个子集,分别是训练集,验证集和测试集。
首先使用训练集训练模型,再使用验证集评估模型,根据评估效果调整模型参数,选择在验证集上效果最好的模型,在测试集上确认模型效果。
5.特征工程
(1) 特征工程指的是将原始数据转换为特征矢量。
(2)映射数值:机器学习模型根据浮点值进行训练,因此整数和浮点原始数据不需要特殊编码。
(3)映射字符串:
首先,为您要表示的所有特征的字符串值定义一个词汇表。
然后,使用该词汇表创建一个独热编码,用于将指定字符串值表示为二元矢量。在该矢量(与指定的字符串值对应)中:
- 只有一个元素设为
1
。 - 其他所有元素均设为
0
。
该矢量的长度等于词汇表中的元素数
(4)映射分类(枚举)值
分类特征具有一组离散的可能值。
可以将分类特征(如 Lowland Countries
)编码为枚举类型或表示不同值的整数离散集。(Y1:1,Y2:2,Y3:3...),其中Yi=i表示一个特征矢量
也可以在机器学习模型中将每个分类特征表示为单独的布尔值。表示一个特征矢量(Is Y1:1,Is Y2:0,Is Y3:0...)
6.良好特征
(1)避免很少使用的离散特征值
良好的特征值应该在数据集中出现大约 5 次以上。这样一来,模型就可以学习该特征值与标签是如何关联的。也就是说,大量离散值相同的样本可让模型有机会了解不同设置中的特征,从而判断何时可以对标签很好地做出预测
(2)相反,如果某个特征的值仅出现一次或者很少出现,则模型就无法根据该特征进行预测。
(3)良好的浮点特征不包含超出范围的异常断点或“神奇”的值。
7.数据清洗
(1)缩放特征值
(2)分箱
将浮点值特征分箱变为布尔值特征矢量(Is Y1:1,Is Y2:0,Is Y3:0...)
(3)清查
8.正则化:简单性L2
通过降低复杂模型的复杂度来防止过拟合,这种原则称为正则化。
训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另一个是正则化项,用于衡量模型复杂度。
(1)衡量模型复杂度
如果模型复杂度是权重的函数,则特征权重的绝对值越高,对模型复杂度的贡献就越大。
L2 正则化公式来量化复杂度,该公式将正则化项定义为所有特征权重的平方和:
L2 regularization term=||w||22=w12+w22+...+wn2
在这个公式中,接近于 0 的权重对模型复杂度几乎没有影响,而离群值权重则可能会产生巨大的影响。
(2)lambda:
调整正则化项的整体影响:用正则化项的值乘以名为 lambda(又称为正则化率)的标量。
模型开发者会执行以下运算:
minimize(Loss(Data|Model)+λ complexity(Model))
执行 L2 正则化对模型具有以下影响
- 使权重值接近于 0(但并非正好为 0)
- 使权重的平均值接近于 0,且呈正态(钟形曲线或高斯曲线)分布。
增加 lambda 值将增强正则化效果。
-
如果您的 lambda 值过高,则模型会非常简单,但是您将面临数据欠拟合的风险。您的模型将无法从训练数据中获得足够的信息来做出有用的预测。
-
如果您的 lambda 值过低,则模型会比较复杂,并且您将面临数据过拟合的风险。您的模型将因获得过多训练数据特点方面的信息而无法泛化到新数据。
注意:将 lambda 设为 0 可彻底取消正则化。 在这种情况下,训练的唯一目的将是最小化损失,而这样做会使过拟合的风险达到最高。
9.正则化:稀疏性L1
在高维度稀疏矢量中,最好尽可能使权重正好降至 0
。正好为 0 的权重基本上会使相应特征从模型中移除。
L1 正则化 - 减少所有权重的绝对值 - 证明对宽度模型非常有效。
L2 和 L1 采用不同的方式降低权重:
- L2 会降低权重2。
- L1 会降低 |权重|。
因此,L2 和 L1 具有不同的导数:
- L2 的导数为 2 * 权重。
- L1 的导数为 k(一个常数,其值与权重无关)。
10.逻辑回归
(1)损失:
线性回归的损失函数是平方损失。逻辑回归的损失函数是对数损失函数,定义如下:
LogLoss=∑(x,y)∈D−ylog(y′)−(1−y)log(1−y′)
(2)正则化
大多数逻辑回归模型会使用以下两个策略之一来降低模型复杂性:
- L2/L1 正则化。
- 早停法,即,限制训练步数或学习速率。