为什么机器学习中常常假设数据是独立同分布的?

本文探讨了独立同分布(i.i.d.)的概念及其在机器学习领域的重要性,解释了为何需要此假设来确保训练数据的总体代表性,从而提高模型对未来数据预测的准确性。同时,讨论了在某些情况下,机器学习不再严格依赖于i.i.d.假设。

1、基本概念

(1)独立:每次抽样之间没有关系,不会相互影响

举例:给一个骰子,每次抛骰子抛到几就是几,这是独立;如果我要抛骰子两次之和大于8,那么第一次和第二次抛就不独立,因为第二次抛的结果和第一次相关。

(2)同分布:每次抽样,样本服从同一个分布

意味着X1和X2具有相同的分布形状和相同的分布参数,对离散随机变量具有相同的分布律,对连续随机变量具有相同的概率密度函数,有着相同的分布函数,相同的期望、方差

举例:给一个骰子,每次抛骰子得到任意点数的概率都是六分之一,这个就是同分布

(3)独立同分布:i,i,d,每次抽样之间独立而且同分布
 

  在概率统计理论中,如果变量序列或者其他随机变量有相同的概率分布,并且互相独立,那么这些随机变量是独立同分布。

   在西瓜书中解释是:输入空间640?wx_fmt=other中的所有样本服从一个隐含未知的分布,训练数据所有样本都是独立地从这个分布上采样而得。

2、机器学习领域的重要假设

好了,那为啥非要有这个假设呢?

我们知道,机器学习就是利用当前获取到的信息(或数据)进行训练学习,用以对未来的数据进行预测、模拟。所以都是建立在历史数据之上,采用模型去拟合未来的数据。因此需要我们使用的历史数据具有总体的代表性。

为什么要有总体代表性?我们要从已有的数据(经验) 中总结出规律来对未知数据做决策,如果获取训练数据是不具有总体代表性的,就是特例的情况,那规律就会总结得不好或是错误,因为这些规律是由个例推算的,不具有推广的效果。

通过独立同分布的假设,就可以大大减小训练样本中个例的情形。

3.目前

机器学习并不总要求独立同分布,在不少问题中要求样本数据采样自同一个分布是因为希望用训练数据集得到的模型可以合理的用于测试数据集,使用独立同分布假设能够解释得通。

目前一些机器学习内容已经不再囿于独立同分布假设下,一些问题会假设样本没有同分布。
 

4、问题

数据集如何确保开发集和测试集的数据分布一致。比如:某个数据集有A、B、C......F6个特征。要确保数据分布一致,怎么做?

参考 http://www.sohu.com/a/257808498_717210

https://www.cnblogs.com/cloud-ken/p/778861ml  机器学习策略-不匹配的训练和开发/测试数据

在深度学习中,数据集满足独立同分布(IID)特性具有多方面重要原因: ### 模型训练的一致性和稳定性 独立同分布假设保证了数据集中每个样本之间是相互独立的,且来自相同的概率分布。这使得模型在训练过程中能够从数据中学习到稳定且通用的模式,避免了因数据间的相关性或分布差异而导致的模型不稳定。例如,若数据不满足独立同分布,模型可能会过度拟合于数据中的特定模式,从而在面对新的数据时表现不佳。 ### 泛化能力保障 深度学习的目标是让模型能够对未知数据进行准确预测,即具有良好的泛化能力。当数据集满足独立同分布时,模型从训练集学到的特征和规律可以更好地推广到测试集和实际应用场景中。因为训练集和测试集本质上都来自同一个分布,模型在训练集上的性能可以在一定程度上反映其在测试集上的表现。 ### 理论基础支持 许多机器学习和深度学习的理论推导和算法设计都是基于独立同分布假设的。例如中心极限定理,它解释了多个独立随机变量的和近似服从正态分布,这在许多统计分析和模型评估中具有重要作用。在深度学习中,独立同分布假设使得我们可以利用这些理论来分析模型的性能、进行模型评估和优化等工作。 ### 算法有效性 很多深度学习算法的设计和优化过程依赖于独立同分布假设。例如,随机梯度下降(SGD)及其变种算法在更新模型参数时,假设每个样本都是独立地对损失函数产生贡献,这样可以通过随机采样的方式高效地更新模型。如果数据不满足独立同分布,这些算法的收敛性和有效性可能会受到影响。 ### 模型评估可靠性 在评估深度学习模型时,通常会将数据集划分为训练集、验证集和测试集。独立同分布假设确保了这些子集的分布一致性,使得模型在验证集和测试集上的评估结果能够真实反映其在实际应用中的性能。如果数据分布不一致,评估结果可能会产生偏差,无法准确衡量模型的真实能力。 ### 示例代码 以下是一个简单的Python代码示例,展示了如何使用`numpy`生成独立同分布数据集: ```python import numpy as np # 生成1000个服从正态分布的独立同分布样本 data = np.random.normal(loc=0, scale=1, size=1000) # 打印前10个样本 print(data[:10]) ``` 在这个示例中,`np.random.normal`函数用于生成服从正态分布的独立同分布样本,`loc`参数表示均值,`scale`参数表示标准差,`size`参数表示样本数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值