美文网首页
Google机器学习速成课-03

Google机器学习速成课-03

作者: 一杯玄米茶 | 来源:发表于2019-03-05 08:09 被阅读0次

    九、逻辑回归

    许多问题需要将概率估算值作为输出。然后通过下两种方式之一使用返回的概率:

    (1)按原样使用概率

    假设我们创建一个逻辑回归模型来预测狗在半夜发出叫声的概率,即输出为概率p(bark | night)。

    若模型预测 p(bark | night) 的值为 0.05,那么一年内,狗的主人应该被惊醒约 18 次。

    (2)转换成二元类别

    将逻辑回归输出映射到二元分类问题的解决方案,二元分类问题的目标是正确预测两个可能的标签(例如,“垃圾邮件”或“非垃圾邮件”)中的一个。

    计算概率

    逻辑回归模型如何确保输出值始终落在 0 和 1 之间?

    巧合的是,S 型函数生成的输出值正好具有这些特性,其定义为:y=\frac{1}{1+e^{-z }}

    图9.1 S型函数曲线

    如果 图中z 表示使用逻辑回归训练的模型的线性层的输出,则该S型函数会生成一个介于 0 和 1 之间的y值(概率)。

    根据该S型函数的反函数:z=\log(\frac{y}{1-y} )

    z 可定义为标签“1”(例如“狗叫”)的概率除以标签“0”(例如“狗不叫”)的概率得出的值的对数,因此z 也称为对数几率。

    逻辑回归的损失函数

    逻辑回归的损失函数是对数损失函数,定义为

    -y是有标签样本中的标签。由于这是逻辑回归,因此y的每个值必须是 0 或 1。

    -y'是对于特征集x的预测值(介于 0 和 1 之间)。

    实际上,最大限度地降低损失函数的值会生成最大的似然估计值。

    逻辑回归中的正则化

    如果没有正则化,逻辑回归的渐近性会不断促使损失在高维度空间内达到 0。大多数逻辑回归模型会使用以下两个策略之一来降低模型复杂性:

    -L2正则化。

    -早停法,即限制训练步数或学习速率。

    十、分类

    (1)指定阈值

    逻辑回归返回的是概率。可以“原样”使用返回的概率(例如,用户点击此广告的概率为 0.00023),也可以将返回的概率转换成二元值(例如,这封电子邮件是垃圾邮件)。

    为了将逻辑回归值映射到二元类别,您必须指定分类阈值(也称为判定阈值)。如果值高于该阈值,则表示“垃圾邮件”;如果值低于该阈值,则表示“非垃圾邮件”。人们往往会认为分类阈值应始终为 0.5,但阈值取决于具体问题,因此您必须对其进行调整。

    注意:“调整”逻辑回归的阈值不同于调整学习速率等超参数。在选择阈值时,需要评估您将因犯错而承担多大的后果。例如,将非垃圾邮件误标记为垃圾邮件会非常糟糕。不过,虽然将垃圾邮件误标记为非垃圾邮件会令人不快,但应该不会让您丢掉工作。

    (2)准确率

    准确率是指我们的模型预测正确的结果所占的比例。

    对于二元分类,可以根据正类别和负类别按如下方式计算准确率:Accuracy=\frac{TP+TN}{TP+TN+FP+FN}

    其中,TP = 真正例,TN = 真负例,FP = 假正例,FN = 假负例。(T:判断正确,P:判断为正例)

    但是,当使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。

    (3)精确率和召回率

    精确率定义如下:\frac{TP}{TP+FP} ,即在被识别为正类别的样本中,确实为正类别的比例是多少?

    如果模型的预测结果中没有假正例,则模型的精确率为 1.0。

    召回率定义如下:\frac{TP}{TP+FN} ,即在所有正类别样本中,被正确识别为正类别的比例是多少?

    如果模型的预测结果中没有假负例,则模型的召回率为 1.0。

    精确率和召回率往往是此消彼长的情况。也就是说,提高精确率通常会降低召回率值,反之亦然。

    (4)ROC 曲线

    ROC 曲线接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。该曲线绘制了以下两个参数:真正例率、假正例率。

    真正例率 TPR=\frac{TP}{TP+FN}

    假正例率FPR=\frac{FP}{FP+TN}

    ROC 曲线用于绘制采用不同分类阈值时的 TPR 与 FPR。降低分类阈值会导致将更多样本归为正类别,从而增加假正例和真正例的个数。

    为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积。

    曲线下面积AUC表示“ROC 曲线下面积”。

    根据每个测试样本属于正样本的概率值从小到大排序,依次将样本的概率值作为阈值。每次选取一个不同的阈值,就可以得到一组FPR和TPR,即ROC曲线上的一点。

    曲线下面积因以下两个原因而比较实用:

    -曲线下面积的尺度不变。它测量预测的排名情况,而不是测量其绝对值。

    -曲线下面积的分类阈值不变。它测量模型预测的质量,而不考虑所选的分类阈值。

    不过,这两个原因都有各自的局限性,这可能会导致曲线下面积在某些用例中不太实用:

    -并非总是希望尺度不变。例如,有时我们非常需要被良好校准的概率输出,而曲线下面积无法告诉我们这一结果。

    -并非总是希望分类阈值不变。在假负例与假正例的代价存在较大差异的情况下,尽量减少一种类型的分类错误可能至关重要。例如,在进行垃圾邮件检测时,您可能希望优先考虑尽量减少假正例(即使这会导致假负例大幅增加)。对于此类优化,曲线下面积并非一个实用的指标。

    (5)预测偏差

    逻辑回归预测应当无偏差。即“预测平均值”应当约等于“观察平均值”。

    预测偏差指的是这两个平均值之间的差值。

    如果出现非常高的非零预测偏差,则说明模型某处存在错误,因为这表明模型对正类别标签的出现频率预测有误。

    造成预测偏差的可能原因包括:

    -特征集不完整

    -数据集混乱

    -模型实现流水线中有错误

    -训练样本有偏差

    -正则化过强

    通过对学习模型进行后期处理来纠正预测偏差,即通过添加校准层来调整模型的输出,从而减小预测偏差。但是,添加校准层并非良策。

    分桶偏差和预测偏差

    在检查预测偏差时,无法仅根据一个样本准确地确定预测偏差;必须在“一大桶”样本中检查预测偏差。也就是说,只有将足够的样本组合在一起以便能够比较预测值(例如 0.392)与观察值(例如 0.394),逻辑回归的预测偏差才有意义。

    可以通过以下方式构建桶:以线性方式分解目标预测、构建分位数。

    下图表示某个特定模型的校准曲线。每个点表示包含 1000 个值的分桶。

    图10.1 校准散点图

    x 轴表示模型针对该桶预测的平均值。

    y 轴表示该桶的数据集中的实际平均值。

    两个轴均采用对数尺度。

    为什么只有模型的某些部分所做的预测如此糟糕?以下是几种可能性:

    -训练集不能充分表示数据空间的某些子集。

    -数据集的某些子集比其他子集更混乱。

    -该模型过于正则化。(不妨减小lamda的值。)

    十一、稀疏性正则化

    稀疏矢量通常包含许多维度。创建特征组合会导致包含更多维度。由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM。

    在高维度稀疏矢量中,最好尽可能使权重正好降至 0。正好为 0 的权重基本上会使相应特征从模型中移除。将特征设为 0 可节省 RAM 空间,且可以减少模型中的噪点。

    以一个涵盖全球地区(不仅仅只是涵盖加利福尼亚州)的住房数据集为例。如果按分(每度为 60 分)对全球纬度进行分桶,则在一次稀疏编码过程中会产生大约 1 万个维度;如果按分对全球经度进行分桶,则在一次稀疏编码过程中会产生大约 2 万个维度。这两种特征的特征组合会产生大约 2 亿个维度。这 2 亿个维度中的很多维度代表非常有限的居住区域(例如海洋里),很难使用这些数据进行有效泛化。

    若为这些不需要的维度支付 RAM 存储费用就太不明智了。

    因此,最好是使无意义维度的权重正好降至 0,这样我们就可以避免在推理时支付这些模型系数的存储费用。

    L2 正则化可以使权重变小,但是并不能使它们正好为 0.0。

    L0正则化可以减少模型中的非零系数值的计数。只有在模型能够与数据拟合时增加此计数才有意义。但它会将我们的凸优化问题变为非凸优化问题,即 NP困难。

    L1 正则化这种正则化项的作用类似 L0,但它具有凸优化的优势,可有效进行计算。因此,可以使用 L1 正则化使模型中很多信息缺乏的系数正好为 0,从而在推理时节省 RAM。

    L1和 L2正则化

    L2和 L1采用不同的方式降低权重:

    -L2会降低”权重的平方“。

    -L1会降低 “权重的绝对值”。

    因此,L2和 L1具有不同的导数:

    L2的导数为 “2 * 权重”。

    L1的导数为“ k”(一个常数,其值与权重无关)。

    图11.1 L1和L2正则化对权重网络的影响

    从 L2正则化转换到 L1正则化之后,测试损失与训练损失之间的差值明显减少。

    从 L2正则化转换到 L1正则化之后,所有已知权重都有所减少。

    增加 L1正则化率一般会减小已知权重;不过,如果正则化率过高,该模型便不能收敛,损失也会很高。

    注意,L1 正则化可能会使以下类型的特征的权重正好为 0:

    -信息缺乏的特征。

    -不同程度的信息丰富的特征。

    -与其他类似的信息丰富特征密切相关的信息丰富特征。

    相关文章

      网友评论

          本文标题:Google机器学习速成课-03

          本文链接:https://www.haomeiwen.com/subject/gmxiuqtx.html