解决机器学习模型中的偏差和其他问题/解决方案

机器学习中的预测分析模型严重依赖回归、分类和聚类方法。在分析预测模型的有效性时,预测越接近实际数据越好。本条款希望成为主要问题和最流行/有效的解决方案的一种参考,而不需深入细节。

解决机器学习模型中的偏差和其他问题/解决方案

线性回归图

解决机器学习模型中的偏差和其他问题/解决方案

聚类算法图

首先,数据选择和修剪是在数据准备阶段发生的,你要先处理掉错误的数据。还存在与数据相关的问题(它们与在训练期间的机器学习(ML)模型的目标相关),还有使用算法上的问题,以及在整个过程中出现的数据中的错误。实际上,模型被测试了偏差、方差、自相关,以及在最终确定模型时可能发生的许多此类错误。在最终确定模型之前,对数据执行一些已定义的测试——这些测试算法可以检测此类错误。

在运行这些测试之后,您将返回到模型并进行那些更正,并将确定哪些机器学习模型是拟合的。业界最优秀的人已经找到了在进一步迭代中避免此类错误的方法。尽管可能会出现很多错误,但是让我们通过定义良好且最有效的测试和解决方案来探索其中的一些错误:

过度拟合和欠拟合

Bias-Variance权衡属性可以解释过度拟合和欠拟合问题:

当数据中存在偏差和方差中的任何一个时,就会出现偏差-方差权衡。

偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。数据可能会有这些偏差,但是应该尽量减少这些偏差,以便从这些数据中获得公平的推论。

方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。

解决机器学习模型中的偏差和其他问题/解决方案

低方差和低偏差是精确模型的最佳组合。

因此,偏差和方差是机器学习预测分析模型中两种最常见现象的因素。

偏差和方差如何导致过度拟合和欠拟合?

为了确定模型的完美拟合,我们分析下测试样本/数据点是如何进行模型分析的。在解析数百万行实例时,您可能会尝试包含所有数据点,无论是否相关,或者在前面的阈值中超过阈值。这里的关键不在于每个数据点都是完美的,也不要在尝试拟合曲线时忽略数据点。

解决机器学习模型中的偏差和其他问题/解决方案

高偏差和高差异是最差的组合,创造出离现实更远的结果。当您尝试单独减少偏差时,方差仍然存在,从而产生过度拟合现象。仅仅考虑高方差,并且仍存在高偏差,这将导致欠拟合。这就是“权衡”一词出现的原因,因为减少偏差,不会改善机器学习模型,反之亦然。“最佳点”是将数据点降落在存在低偏差和低差异的地方。基本上,要找到一种模式,不要采取任何极端情况,以免影响准确性。大多数时候,这些点的规划和选择是数据科学家和分析师面临的最大挑战。

然而,也有一些方法可以测试模型的适用性。解决这些问题的方法有:

对Bias-Variance权衡问题的回答:

  • 构建更复杂的机器学习模型

解决不拟合问题的第一个也是最简单的方法是训练一个更复杂的模型来解决这个问题。对于过度拟合模型,获取更多数据和正则化。

  • 交叉验证

在交叉验证中,所有可用或选择的数据都不会用于模型的培训。通常有三种方法可以帮助执行交叉验证方法——培训数据、测试数据和验证数据集。你可以单独使用训练和测试数据,或者使用全部的三种数据。

[训练数据=模型训练

测试数据=用于模型超参数调整

验证数据=用于模型验证和准确度估算]

有许多方法可以使用,通常训练数据占总数据集的60%,测试数据集占20%,验证数据集占剩余20%。

首先利用训练数据对模型进行训练,然后将该模型与经过测试数据训练的模型进行比较。通过这种方式,我们可以确定哪些数据点可以带来更好的预测。交叉验证有很多变体:

hold out:数据分为测试数据和训练数据,然后进行比较。在Hold-Out方法中,我们只使用一组保持不变的训练数据。

如有100个样本,其中60个训练,20个测试,以及20个验证数据集。在训练期间,您可以计算模型的准确性。测试是在训练模型后测试准确性。

K-fold交叉验证:此处数据分为k-sets。然后第一个fold是验证数据集,并且从folds总数中移除第一个fold(其中,假设k = 10)。对于每次迭代,我们采用一个fold进行验证(第9次,在第一次迭代(k-1)之后),然后从现在剩余的总folds(现在k = 9)中减去它。该方法有效但需要巨大的计算能力。如下图:

解决机器学习模型中的偏差和其他问题/解决方案

具有10-folds的k-fold交叉验证的实例

Leave-One-Out:这种方法更加费力,因为每次测试n个数据点时都会消除一个数据。

  • Dropout:

在深度学习中使用神经网络时,会使用Dropout方法。Dropout是一种古老的技术,经证明可以帮助提高机器学习模型的准确性。这使得层中的某些激活失效(等于0)。我们可以从数据集中选择任意数量的数据来创建Dropout层。通常,这在20%或30%的范围内。假设,如果我们使用30%的Dropout,那么该特定层中随机30%神经元的激活将被停用。停用的神经元将不会传播到网络的下一层。我们这样做是为了避免过度拟合,因为更多噪声会使模型更加稳健。

解决机器学习模型中的偏差和其他问题/解决方案

Dropout方法:这里,一些神经元已被停用(红色,右)。假设激活是x,那么在dropout中它等于零

直观地说,这迫使网络即使在缺少某些信息的情况下也必须是准确的。

  • 梯度噪音:

该方法涉及在训练期间添加梯度噪声,该方法被证明提高了模型的准确性。

添加从高斯分布中采样的噪声:

解决机器学习模型中的偏差和其他问题/解决方案

  • 正则化:

正则化是另一种减少过度拟合现象的流行方法。用于解决高方差的问题,该技术涉及惩罚系数和权重,以获得训练数据和测试数据的更高准确度。

解决机器学习模型中的偏差和其他问题/解决方案

这里,w是权重值,红色框表示正则化项,而lambda是正则化参数,它在训练期间得到优化。剩余部分是计算最小平方值的损失函数。

梯度消失和梯度爆炸问题

当使用反向传播训练深度神经网络时,需要向网络中添加新的隐藏层。这最终会构建一个高度复杂的模型,但会影响到训练的速度。在这里,当使用sigmoid激活函数或tanh激活函数时,梯度消失的问题就出现了,这两个函数用于激活神经网络的神经元,它们决定了梯度在通过这些层时的行为。

当权重矩阵的梯度被计算出来,然后从相同的矩阵中减去时,就会发生这种情况。如果模型有很多层,最终一些梯度等于零,因此使它的权重值不变,他们停止学习。这造成了一个问题,因为模型没有从这些消失的梯度中学到什么。通常,梯度值递减的效果会随着层的反向传播而增加,从而使那些较早的层停止学习。

解决机器学习模型中的偏差和其他问题/解决方案

梯度下降和消失/爆炸梯度

在使用反向传播时,如果使用的是在0和1之间取值的sigmoid激活函数。因此,如果生成一个高值(>1),激活函数将激活该值为1,在反向传播过程中,导数变为0,从而完全丢失高值,反之亦然(低值[>0],在0处保持不变)。为了避免这种消失梯度,使用了ReLU、PReLU、SeLu、ELU等其他激活函数。

解决机器学习模型中的偏差和其他问题/解决方案

Tanh函数

解决机器学习模型中的偏差和其他问题/解决方案

sigmoid函数

激活函数 - ReLU,PReLU,RReLU,ELU

ReLU :为了使大于零的值不会无效,ReLU将其标记为无穷大,从而生成一个线性函数。但是,ReLu将小于0的值标记为0,这在某些情况下不是很好,因为它完全忽略了这些值,但是提高了速度。当数值saturation低于0时,ReLU实际上会阻止任何训练。

解决机器学习模型中的偏差和其他问题/解决方案

PReLU:优于ReLU,PReLU通过不停用低于零的值,但提高速度有效。它通过用参数'α'代替0.01来减轻saturation。

解决机器学习模型中的偏差和其他问题/解决方案

解决机器学习模型中的偏差和其他问题/解决方案

RReLU:据说RReLU击败了上述每一个激活函数。RReLU将随机值分配给负斜率,从而不会影响速度或准确度。

解决机器学习模型中的偏差和其他问题/解决方案

ELU:ELU通过使值等于1来避免0以上值的saturation。ELU主要用于提高分类准确度,加快了训练速度。

解决机器学习模型中的偏差和其他问题/解决方案

解决机器学习模型中的偏差和其他问题/解决方案

归一化:

归一化解决了过度拟合,欠拟合和消失梯度问题的问题。

批归一化:批归一化技术用于改善反向传播的性能。它涉及重新调整输入值以防止它们变得太大或太小。

解决机器学习模型中的偏差和其他问题/解决方案

实例归一化:实例归一化是只使用一个样本,而不是一批样本的归一化,就像批处理归一化一样。

多重共线性

当模型预测中的预测变量之间存在多个相关性时,会发生多重共线性。这种现象是大多数人熟悉的并且在回归模型中非常常见。多重共线性问题只有在您需要知道某些预测发生的原因时才会发生,即需要预测的原因。这可以为模型的任何预测带来解释。有时,一个高度相关的列似乎是某些结果的因果关系,而实际上它们只是相关的。

在数据集中发现多重共线性,可以防止对某些结果得出严重错误的结论,比如在患有哮喘的肺炎患者中,他们被认为对哮喘有更好的抵抗力,因为他们得到的治疗更早。然而,事实是哮喘患者在同时感染肺炎时得到了及时的护理,因为如果不立即治疗,他们更容易出现致命的后果。

解决机器学习模型中的偏差和其他问题/解决方案

回答多重共线性

自相关和部分自相关测试:这些测试可以检测模型中的相关现象。它们通常在时间序列分析和预测期间使用。通过这些测试,您可以检测出现相关性的位置,并删除高度相关的列。

自相关:它主要在时间序列分析和预测中检测数据中的相关性或重复信号的出现。它可能发生在两个因变量x1和x2之间。

主成分分析(PCA):

主成分分析用于纠正相关误差。它只保留一组新的预测变量,这些变量是高度相关的变量行为的组合。因此,这些新变量不会丢弃那些在模型中有自己角色的相关变量,而是保留那些其他循环和相关变量的行为。它通过特征提取工作。

解决机器学习模型中的偏差和其他问题/解决方案

通过特征提取分析数据集主成分的绘图

线性判别分析(LDA)

LDA用于预测分析问题。

解决机器学习模型中的偏差和其他问题/解决方案

它假定一组新的输入将属于到目前为止收集的数据集中的类。在使用logistic回归时,会出现模型不稳定等局限性。相反,我们可以将LDA用于线性回归。该算法还利用著名的贝叶斯定理来计算输入输出的概率。

P(Y = x | X = x)=(PIk * fk(x))/ sum(PIl * fl(x))

Pearson相关系数:

Pearson系数用于找到两个变量X和Y之间的相关性。它给出介于-1和1之间的值,描述负相关或正相关,如果该值为零,则不存在相关性。

自相关和部分自相关测试:

自相关测试结果与变量的(关系)相关程度。自相关函数(ACF)用于计算时间序列中的相关性。时间序列预测的观测值与已收集的时间序列观测值相关。因此,名称自相关。ACF的目的是使用这些值绘制所有相关的图表以及滞后。这里的滞后是通过从先前时间序列观察中出现的项中取得使系列静止所需的值来计算的项。

相关推荐