什么是小型数据集建模的好技术?

机器算法验证 物流 神经网络 小样本
2022-04-08 06:33:51

我正在研究分类问题。但是,我的训练数据集非常小(训练数据集中只有 800 个项目),每个数据项包含少量特征(只有 5 个特征)。首先,我使用逻辑回归为这个数据集创建了一个模型。不幸的是,我的模型的预测准确性非常差。接下来,我使用了神经网络模型,但看不到任何进展。

我怀疑,训练数据项的数量和每个项目中的特征数量不足以训练逻辑回归和神经网络。

所以我的问题是对小型数据集进行建模的好技术是什么?

3个回答

众所周知,神经网络很难使用(太多潜在的困难,例如局部最小值、过度拟合等)。使用径向基函数核/协方差函数的核方法可能更易于使用,例如核岭回归、支持向量机、核逻辑回归或高斯过程分类器。只要使用合理的程序(例如交叉验证)调整超参数,它们就可能以比神经网络更少的努力/风险提供良好的结果。

这可能是数据问题而不是分类器问题(神经网络、逻辑回归等)问题,因为当数据具有形状时(比如可以分为两类),800 点作为训练集应该没问题。

可能是决策边界是一个有趣的边界(例如非线性),您是否尝试过使用神经网络分类器参数,例如隐藏层的数量..等?

神经网络的问题在于目标函数并不总是一个凸函数,这会转化为分类问题的不良参数化。您是否尝试过内核方法(这应该对您的数据进行转换,在某些情况下,如果您使用合适的内核,这可以让您拥有无限数量的功能),例如,您可以使用 SVM,这就是它的工作原理:

######################################
#  svm
######################################                           
Svm = svm(Species ~ ., data = train,type = "C-classification",kernel = "polynomial",degree = 1, gamma = 2, cost = 0.5, coef0 = 2)
SvmPr = predict(Svm,test)
table(as.vector(SvmPr),iris[-tr,5])

而且,再一次,您应该知道分类器参数的用途并尝试使用它们。

高温高压

D

鉴于数据集有多小,您是否尝试过使用任何非参数方法对其进行调查?例如,我敢打赌,您可以在 800 个样本训练集上使用最近邻分类器轻松进行完整的留一法交叉验证测试,然后查看估计的分类错误率是多少。如果它很低,那么几乎可以肯定有一些方法可以进一步提高性能。如果它很高,那么事情看起来不太好......