加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

打破机器学习中的小数据集诅咒

发布时间:2019-06-20 09:02:51 所属栏目:教程 来源:大数据文摘
导读:副标题#e# 大数据文摘出品 编译:栾红叶、stats熊、蒋宝尚 最近深度学习技术实现方面取得的突破表明,顶级算法和复杂的结构可以将类人的能力传授给执行特定任务的机器。但我们也会发现,大量的训练数据对深度学习模型的成功起着至关重要的作用。就拿Resnet

上述公式给出了斜率和截距的估测点,但这些估值总是存在一些不确定性,这些不确定性可由方差方程量化:

打破机器学习中的小数据集诅咒

打破机器学习中的小数据集诅咒

因此,随着数据数量的增加,分母会变大,就是我们估测点的方差变小。因此,我们的模型对潜在关系会更加自信,并能给出稳定的系数估计。通过以下代码,我们可以看到上述现象的实际作用:

打破机器学习中的小数据集诅咒

图6:在线性回归中增加数据量对估测点位置估测的提升

我们模拟了一个线性回归模型,其斜率(b)=5,截距(a)=10。从图6(a)(数据量小)到图6(b)(数据量大),我们建立了一个衰退模型,此时我们可以清楚地看到斜率和截距之间的区别。在图6(a)中,模型的斜率为4.65,截距为8.2,而图6(b)中模型的斜率为5.1,截距为10.2相比,可以明显看出,图6(b)更接近真实值。

k近邻(k-NN):k-NN是一种用于回归和分类里最简单但功能强大的算法。k-NN不需要任何特定的训练阶段,顾名思义,预测是基于k-最近邻到测试点。由于k-NN是非参数模型,模型性能取决于数据的分布。在下面的例子中,我们正在研究iris数据集,以了解数据点的数量如何影响k-NN表现。为了更好表现结果,我们只考虑了这组数据的四个特性中的两个:萼片长度和萼片宽度。

KNN中预测类随数据大小的变化

图7:KNN中预测类随数据大小的变化

后面的实验中我们随机从分类1中选取一个点作为试验数据(用红色星星表示),同时假设k=3并用多数投票方式来预测试验数据的分类。图7(a)是用了少量数据做的试验,我们发现这个模型把试验点错误分在分类2中。当数据点越来越多,模型会把数据点正确预测到分类1中。从上面图中我们可以知道,KNN与数据质量成正相关,数据越多可以让模型更一致、更精确。

决策树算法:与线性回归和KNN类似,也受数据数量的影响。

根据数据的大小形成不同的树状结构

图8:根据数据的大小形成不同的树状结构

决策树也是一种非参数模型,它试图最好地拟合数据的底层分布。拆分是对特性值执行的,目的是在子级创建不同的类。由于模型试图最好地拟合可用的训练数据,因此数据的数量直接决定了分割级别和最终类。从上面的图中我们可以清楚的看到,数据集的大小对分割点和最终的类预测有很大的影响。更多的数据有助于找到最佳分割点,避免过度拟合。

如何解决数据量少的问题?

打破机器学习中的小数据集诅咒

图9:数据量少的基本含义和解决它的可能方法和技术

上图试图捕捉处理小数据集时所面临的核心问题,以及解决这些问题的可能方法和技术。在本部分中,我们将只关注传统机器学习中使用的技术。

改变损失函数:对于分类问题,我们经常使用交叉熵损失,很少使用平均绝对误差或平均平方误差来训练和优化我们的模型。在数据不平衡的情况下,由于模型对最终损失值的影响较大,使得模型更加偏向于多数类,使得我们的模型变得不那么有用。

在这种情况下,我们可以对不同类对应的损失增加权重,以平衡这种数据偏差。例如,如果我们有两个按比例4:1计算数据的类,我们可以将比例1:4的权重应用到损失函数计算中,使数据平衡。这种技术可以帮助我们轻松地缓解不平衡数据的问题,并改进跨不同类的模型泛化。我们可以很容易地找到R和Python中的库,它们可以帮助在损失计算和优化过程中为类分配权重。Scikit-learn有一个方便的实用函数来计算基于类频率的权重:

我们可以用class_weight=‘balanced’来代替上面的计算量,并且与class_weights计算结果一样。我们同样可以依据我们的需求来定义分类权重。

异常/变更检测:在欺诈或机器故障等高度不平衡的数据集的情况下,是否可以将这些例子视为异常值得思考。如果给定的问题满足异常判据,我们可以使用OneClassSVM、聚类方法或高斯异常检测方法等模型。这些技术要求我们改变思维方式,将次要类视为异常类,这可能帮助我们找到分离和分类的新方法。变化检测类似于异常检测,只是我们寻找的是变化或差异,而不是异常。这些可能是根据使用模式或银行事务观察到的用户行为的变化。

打破机器学习中的小数据集诅咒

图10:过采和欠采样的情况

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读