我可以访问一个非常大的数据集。数据来自听音乐摘录的人的MEG录音,来自四种流派之一。数据如下:
- 6 科目
- 3 实验重复(epochs)
- 每个时期 120 次试验
- 来自 275 个 MEG 通道的 500Hz(=4000 个样本)每次试验 8 秒的数据
所以这里的每个“示例”都是一个大小为 [4000x275] 的矩阵,并且有 2160 个这样的示例,这是在任何特征提取之前。目标是根据大脑信号(4 类分类)预测类型。
显然这里有一些具有挑战性的问题,即:
- 数据集不适合内存
- 数据中会有很强的时间相关性,而且主体间的差异会很大。因此,如何拆分数据并不明显
- 信噪比非常低
- 分类器的正确特征是什么并不明显
依次采取这些:
有各种各样的事情可以做。首先,我们可以安全地从 500Hz 下采样到 ~200Hz,因为即使考虑到奈奎斯特极限,大脑活动也不会真正发生在 100Hz 以上。我们也可以从一组通道(例如听觉区域的中心)中进行二次采样,但我们宁愿不先验地这样做,因为其他区域(额叶等)可能存在感兴趣的活动。我们可能还可以放弃一部分时间窗口。也许只有前 2 秒对任务很重要?这并不为人所知。当然大家都会喊“降维”!”,但这也不是微不足道的。首先,我们必须非常小心我们的训练/测试拆分(参见 2.),并且在特征生成之前或之后执行此操作也不明显。其次,除了昂贵交叉验证,或艰苦的目视检查,没有明显的方法来选择合适的方法或合适的维数。我们当然可以只使用例如 PCA、ICA 或随机投影,并希望最好....
这很棘手。如果我们在训练集中有连续的样本,我们可能会过度拟合训练集,而如果我们将连续的样本分成训练集和测试集,我们可能会欠拟合训练集,但仍然可能过拟合测试集。这里似乎有多种选择:
- 单学科分类。单独选取每个主题,并根据时代进行拆分。这应该是最简单的任务,因为我们不是试图跨大脑进行预测。在这个范围内,可以使用两个剩余的 epoch 进行交叉验证。为了完整起见,应该轮换所有组合。我们将简单地报告所有科目的平均准确度。当然,我们根本不期望这些模型能够很好地泛化。
- 内科分类。将所有主题放在一起,并根据时代进行拆分。这实际上可能是最简单的任务,因为我们将在培训中看到所有科目。然而,我们可能不会期望这些模型能够很好地推广到新主题。在这个范围内,可以使用两个剩余的 epoch 进行交叉验证。为了完整起见,应该轮换所有组合。
- 学科分类之间。也称为“留一法”,将单个受试者作为测试数据,其余用于训练。然后,我们将轮流浏览所有主题。然后将对受试者进行交叉验证。我们预计这将是一项更加困难的任务,因为我们每次都试图预测一个“新大脑”。在这里,我们希望模型能够很好地推广到更大的人群,尽管存在重测可靠性问题(即时间相关性导致了多少过度拟合)。
这是一个经典的“大海捞针”问题——与识别音乐流派或任何流派特定处理相关的实际信号与大脑中活动的“汤”相比可能微不足道。还有一些值得注意的人工制品只能部分移除(主要与运动有关)。我们从数据中获得的任何特征,以及处理数据的任何方式,都应该避免破坏感兴趣的信号的一部分。
在这里可以想象做各种各样的事情。第一种是简单地使用原始数据(连接成一个向量)作为特征向量。不过,我不确定这有多大的成果——我认为这些向量可能基本上是均匀随机的。这实际上是一个信号处理问题,但有一些可以遵循的一般准则。一种是在滑动窗口上进行标准傅立叶分析,从中可以将分量分成不同的频带(α/β/γ 等),并且这些(平均值、标准偏差)的统计信息可以用作特征。或者可以使用小波、希尔伯特变换,甚至尝试寻找混沌吸引子. 当然,我们可以选择核(线性、多项式、RBF 等)来增加排列的数量。也许这里最好的做法是生成尽可能多的不同特征集,然后使用MKL或 boosting 方法将它们组合在一起。
你将如何处理这种数据集(如果不是这个数据集)?一路上我有什么遗漏的吗?在不花费大量研究人员时间和计算资源的情况下,最有可能成功的策略是什么?