机器学习入门:偏差和方差

简介: 机器学习入门:偏差和方差

偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系。

方差(variance):方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)

我们这里以线性回归为例进行介绍

线性回归是一种机器学习算法,它主要用来预测定量目标。该算法根据线性方式建模的自变量来拟合包含预测数据点的直线或平面(或超平面)。首先,让我们把这看作是最佳拟合线(为了更好地理解)。通常情况下,训练集中的数据点并不是全部都在最佳拟合线上,这是非常有意义的,因为任何数据都不是完美的。这也就是为什么我们首先要做预测,而不是随便画一条线的原因。

640.png

理解偏差

640.png

利用线性回归算法得到的线不能为了包含所有的训练集数据点就过于弯曲,因此有时无法捕捉到准确的关系。这叫做偏差。在数学上,在线性回归方程中得到的截距是偏差。

我为什么这么说?

让我解释一下:这是一个随机线性回归方程:

y = Intercept + Slope1*x1 + Slope2*x2

目标(y)在数据集中会有一些值,利用上面的公式可以计算出目标(y)的预测值。如果“截距”本身非常高并且很接近预测的y值,那么这就意味着方程另外两部分——自变量(x1和x2)的变化导致y的变化会很小。这意味着x1和x2所产生的方差值会很小,最终这将会导致建立一个欠拟合模型。欠拟合模型具有较低的R-squared(由自变量引起的目标方差量)。

欠拟合也可以通过首先考虑如何捕捉最佳拟合线/平面来理解。最佳拟合直线/平面捕捉目标和自变量之间的关系。如果这种关系被捕捉到一个非常高的范围,它会导致低偏差,反之亦然。

既然我们了解了什么是偏差,以及高偏差是如何导致欠拟合模型的,那么对于一个健壮的模型,我们需要消除这种欠拟合。

在这样一个场景中,我们创建了一条通过所有数据点的曲线,并且可以显示自变量和因变量之间的现有关系,那么模型中就不会存在偏差。

理解方差

640.png

对训练数据过度拟合的模型将导致一种新的现象,称为“方差”。现在来考虑几个模型:

模型1:高偏差(无法正确捕捉关系)

模型2:低偏差(在很大程度上捕捉关系)

验证模型时的误差测量:

Error = Actual Values Predicted Values

在计算训练数据(图中还没有测试数据)的误差时,我们观察到:

模型1:在训练数据上对模型进行验证,结果表明误差较大

模型2:在训练数据上对模型进行验证,结果表明误差较小

现在,让我们引入训练数据,来理解方差。

如果模型在训练数据是过拟合的,那么该模型“理解”和“认识”训练数据的程度就会非常高,以至于它可能不利于对测试数据进行测试。因此当将测试数据用作该模型的输入时,它将无法捕捉到一种关系。从更广泛的角度来看,这意味着训练数据和测试数据之间的拟合有很大的差异(因为在训练数据上展示了完美的验证,而在测试数据却无法捕捉关系)。这种拟合差异被称为“方差”,这种现象产生的原因是模型只能理解训练数据,它对任何新的输入数据不能很好地进行预测。

在测试数据上验证上述模型时,我们注意到:

模型1:这里也没有正确地捕捉到关系,但是在训练数据和测试数据之间没有巨大的理解差距,所以方差很低

模型2:训练数据和试验数据之间存在巨大的理解差距,因此方差很大

偏差和方差之间的权衡

640.png

现在我们知道偏差和方差都会给我们的预测模型带来问题。那么我们该如何着手解决这个问题呢?

在我们继续之前,有几个术语需要理解:

过度拟合:低偏差和高可变性-模型非常适合训练数据,但是不适合测试数据,因为它只能很好地理解训练数据

欠拟合:高偏差和低可变性-模型在使用训练数据时无法捕捉关系,但由于它无论如何都没有捕捉到关系,因此训练数据和测试数据之间的理解差距不大,因此方差较小

回到解决方案,我们可以做以下工作,尝试在偏差和方差之间建立一种平衡:


1. 交叉验证

640.png

通常,一个模型是建立在训练数据上,并在相同的数据上进行测试。但还有一件事是人们更喜欢去做的,那就是在训练数据的一部分数据上测试模型,这部分数据称为验证数据。

那么,什么是交叉验证?

如前所述,模型验证是对部分训练数据进行的。因此,如果我们每次迭代都从训练数据中选择一组新的数据点来进行验证,并对从这些数据集获得的结果求平均值,那么我们就是在进行交叉验证。这是一种优化方法,主要用来了解模型在训练数据上的行为,同时它也是一种了解是否存在过拟合的方法。

交叉验证的类型:

K- fold CV:这里的K表示我们需要将我们的训练数据集分解成的集合的个数,然后用这K个集合进行模型验证,对这K个集合得到的结果取平均值,从而得到一个最终的结果,这可能会避免过拟合。

Leave-One-Out CV:Leave-One-Out CV的工作原理类似于K-Fold CV,但它将流程提升到了一个新的高度,因为它使用训练数据中的每一个数据点来计算交叉验证结果。这显然很耗时,但绝对有助于避免过度拟合。

前向链接:在处理时间序列数据时,K-Fold-CV和Leave-One-Out-CV会产生问题,因为某些年份的数据很可能会有其他年份没有的模式,因此使用随机数据集进行交叉验证是没有意义的。事实上,现有的趋势有可能被忽视,这并不是我们想要的。因此,在这种情况下,通常使用前向链接方法,其中我们形成的每个折叠(用于交叉验证)包含一个训练集组,通过将连续一年的数据与上一个训练集组相加并在测试集上进行验证(该测试集只包含训练组中使用的连续年份到最近一年的数据)。

2. 正则化

640.png

正则化是一种技术,它通过附加在模型自变量上的β惩罚系数来减少偏差和方差。

总结

没有完美的模型。必须用积极的方式利用模型不完美的地方,才能使它变得完美。一旦你能够识别出你的模型中存在的偏差或可变性,你就可以做很多事情来改变它。您也可以尝试特征选择和特征转换。您可以尝试删除一些过拟合变量。基于当时的可能性,可以做出决定,如果有可能的话,这个模型肯定会得到改进。

感谢您的阅读!学习快乐!

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
60 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
83 1
|
2天前
|
机器学习/深度学习 算法 图计算
图机器学习入门:基本概念介绍
图机器学习是机器学习的分支,专注于处理图形结构数据,其中节点代表实体,边表示实体间关系。本文介绍了图的基本概念,如无向图与有向图,以及图的性质,如节点度、邻接矩阵。此外,还讨论了加权图、自循环、多重图、双部图、异构图、平面图和循环图。图在描述数据关系和特征方面具有灵活性,为机器学习算法提供了丰富的结构信息。
6 0
|
2天前
|
机器学习/深度学习
机器学习基础入门(二)(线性回归与成本函数)
已知一系列房子的大小以及其对应的价格的数据,要求是已知房子大小预测其房子的价格
|
12天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
12天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】Python 机器学习入门:基础概念与流程
【4月更文挑战第30天】本文介绍了Python在机器学习中的重要性,机器学习的基础概念和分类,包括监督学习、非监督学习和强化学习。Python因其丰富的库(如Scikit-learn、TensorFlow、PyTorch)、简单易学的语法和跨平台性在机器学习领域广泛应用。文章还概述了机器学习的基本流程,包括数据收集、预处理、特征工程、模型训练与评估等,并列举了常用的Python机器学习算法,如线性回归、逻辑回归、决策树和支持向量机。最后,讨论了Python机器学习在金融、医疗、工业和商业等领域的应用,鼓励读者深入学习并实践这一技术。
|
24天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
24 1
|
28天前
|
机器学习/深度学习 传感器 算法
机器学习基础入门(一)(机器学习定义及分类)
机器学习基础入门(一)(机器学习定义及分类)
|
1月前
|
机器学习/深度学习 Serverless
机器学习入门案例-鸢尾花
机器学习入门案例-鸢尾花
24 0
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。

热门文章

最新文章