4. CHB-MIT数据集深度解析

各位同学,今天我们来啃一块硬骨头——CHB-MIT数据集。这个数据集在癫痫检测领域,可以说是绕不开的标杆。我当年刚入行时,第一个接触的公开数据集就是它。说实话,第一次打开EDF文件时,我整个人是懵的。但啃下来之后,后面的路就好走多了。

4.1 数据集来源与伦理声明

CHB-MIT数据集,全称是Children's Hospital Boston-MIT EEG Database。它由波士顿儿童医院和MIT联合发布。说白了,就是医院提供数据,MIT负责整理和标注。

这个数据集收录了23位癫痫患者的EEG记录。嗯,这里要注意,是23位患者,不是22位也不是24位。我见过不少论文写错了这个数字,大家写文章时一定要核实。

伦理声明方面,数据集遵循了严格的医疗数据使用规范。所有患者信息都做了去标识化处理。你拿到的只有编号,比如chb01、chb02这样。患者姓名、具体病历等敏感信息,全部被移除了。

重要提示:使用该数据集发表论文时,必须在致谢或数据声明部分注明数据集来源。这是学术规范,也是尊重数据提供方的劳动成果。

4.2 受试者信息与发作类型标注

我们来看看这23位患者的基本情况。我整理了一个表格,方便大家查阅。

患者编号 性别 年龄 发作类型 记录时长(小时)
chb01 11 局灶性发作 40.5
chb02 11 局灶性发作 35.2
chb03 14 全面性发作 38.0
... ... ... ... ...

年龄分布上,从1.5岁到22岁都有。大部分是儿童和青少年。发作类型主要分为两类:局灶性发作全面性发作。标注文件里会明确给出每次发作的起止时间,精确到秒。

我个人习惯,拿到数据后第一件事就是看标注文件。你想想看,如果标注本身有问题,后面模型训练得再好也是白搭。我曾经在一个项目里,花了三天时间调模型,结果发现是标注文件里有一个时间戳写错了。从那以后,我每次都会先手动验证几个标注点。

4.3 EDF文件格式解析

EDF,全称European Data Format。这是欧洲标准化的生物信号存储格式。说白了,就是一种专门存生理信号的二进制文件格式。

EDF文件的结构分为两部分:

  • 文件头:包含元数据信息,比如患者ID、记录日期、导联数量、采样率等
  • 数据记录:实际的EEG信号数据,按时间顺序存储

文件头是固定长度的,通常是256字节。里面包含了8字节的版本号、80字节的患者信息、80字节的记录信息等。我刚开始解析时,被这些字节偏移量搞得头大。后来发现直接用MNE库就好了,没必要自己手写解析器。

小技巧:EDF文件支持不同导联使用不同的采样率。但CHB-MIT数据集统一使用了256Hz的采样率。这意味着每个通道每秒采集256个数据点。

4.4 使用MNE库读取与可视化EEG信号

MNE是Python生态里处理EEG数据的王牌库。我建议所有做脑电信号处理的同学,都把它装好。

读取EDF文件,只需要一行代码:

import mne

# 读取EDF文件
raw = mne.io.read_raw_edf('chb01_01.edf', preload=True)

# 查看基本信息
print(raw.info)

# 查看通道名称
print(raw.ch_names)

# 获取数据
data, times = raw[:, :]

可视化也很简单:

# 绘制原始信号
raw.plot(n_channels=10, duration=10, scalings='auto')

# 绘制功率谱密度
raw.plot_psd(fmin=0.5, fmax=50)

嗯,这里要注意。MNE默认会加载所有通道。但CHB-MIT数据集中,有些记录包含了非EEG通道,比如ECG、EOG等。我建议你只保留EEG通道,避免引入不必要的噪声。

避坑指南:我曾经在预处理时忘了去除ECG通道,结果模型把心跳信号当成了癫痫发作的前兆。这个错误让我浪费了整整一周。所以,一定要先检查通道列表,只保留你需要的。

4.5 数据集的划分策略

数据划分是模型评估的关键。在癫痫预测任务中,主要有两种划分策略。

患者内划分

简单说,就是同一个患者的数据,一部分用来训练,一部分用来测试。比如,把chb01的前70%记录作为训练集,后30%作为测试集。

这种策略的好处是,模型可以学习到该患者特有的脑电模式。缺点也很明显——换一个患者,模型可能就失效了。

患者间划分

这种策略更严格。用一部分患者的数据训练,用另一部分患者的数据测试。比如,用chb01到chb15的数据训练,用chb16到chb23的数据测试。

我个人更推荐患者间划分。为什么呢?因为这才是真正的泛化能力测试。你想想看,如果模型只能识别见过的人,那在实际临床中有什么用?

但患者间划分也有坑。不同患者的发作频率差异很大。有的患者一天发作好几次,有的患者一周才发作一次。如果不做平衡处理,模型可能会偏向于学习高频发作患者的特征。

我的建议:在实际项目中,两种策略都要做。先用患者内划分调参,再用患者间划分评估泛化能力。这样既能快速迭代,又能保证最终模型的可靠性。

最后,给大家画一张图,总结一下本章的核心知识体系。

CHB-MIT数据集知识体系 CHB-MIT数据集 数据来源与伦理 受试者与标注 EDF文件格式 MNE读取可视化 数据划分策略 波士顿儿童医院 MIT联合发布 23位患者 发作类型标注 文件头+数据 256Hz采样率 读取EDF文件 可视化信号 患者内划分 患者间划分 五个核心模块,层层递进,构建完整的CHB-MIT数据集认知体系

好了,这一章的内容就到这里。记住,数据是深度学习的基础。把数据集吃透了,后面的模型构建才能事半功倍。

专注资料整理