这篇论文发自 2018 年,出自洛杉矶大学的一个团队,主要对 5 种不同心率进行预测分类及预测 MI(心肌梗死)。论文地址:https://arxiv.org/pdf/1805.00794.pdf 。最近正好在学习 ECG 方面的知识,在 kaggle 找数据集的时候,正好看到有人用了这篇论文的结构,复现了论文的第一个实验。所以,就阅读下论文,并看看实现的结果。
实验的数据集
- MIT-BIH 心律失常数据集:
- 47 个不同对象
- 采样频率:360 Hz
- 由 2 个心脏病专家标记
论文中将专家的标记按照 AAMI 的标准分成下面 5 中不同的类别:
- PTB 诊断心电图数据库:
- 290 个不同的对象:
- 148 个被诊断为 MI
- 52 个健康
- 其余被诊断为 7 种不同的疾病
- 采用 12 导联
- 采样频率:1000 Hz
- 290 个不同的对象:
在实验中,只使用 ECG 导联 II,MI 及健康的样本。且在实验中,重新的采样频率为 125 Hz。
kaggle 上的 数据集 已经把上面两个数据集合在一起了,后面复现就是使用这个数据集。
实验方法
- 预处理
值得一提的是,论文中建议的节拍数据提取方法,可以简单有效地从具有不同形态的信号中提取 R-R 间隔。例如,没有使用任何形式的滤波,或任何对信号形态或频谱做出任何假设的处理。另外,所有提取的节拍数据具有相同的长度,这对于用作后续处理的输入是必不可少的。
kaggle 上的数据集是处理过后的。
- 训练心律跳动分类器 在 MIT-BIH 的数据集上,采用卷积神经网络,来训练一个分类器。经过训练的网络不仅可以用于心脏跳动分类,而且在下一节的实验中,还可以看到它可以用作心跳的信息表示。模型的结构如下所示:
Here, all convolution layers are applying 1-D convolution through time and each have 32 kernels of size 5. We also use max pooling of size 5 and stride 2 in all pooling layers. The predictor network consists of five residual blocks followed by two fully-connected layers with 32 neurons each and a softmax layer to predict output class probabilities. Each residual block contains two convolutional layers, two ReLU nonlinearities [19], a residual skip connection [20], and a pooling layer. In total, the resulting network is a deep network consisting of 13 weight layers.
- 训练 MI 预测器
训练完心脏跳动分类器后,使用最后一个卷积层的输出激活作为输入表示。。然后,将其输入有个两层的全连接层,每一层包含 32 个神经元。在训练过程中,只训练最后这两层的参数,其余层的参数都冻结。这里就是一个二分类的问题。
- 参数细节
Cross entropy loss on the softmax outputs is used as the loss function. For training the networks, we used Adam optimization method [22] with the learning rate, beta-1, and beta-2 of 0.001, 0.9, and 0.999, respectively. Learning rate is decayed exponentially with the decay factor of 0.75 every 10000 iterations. Training all the networks took less than two hours on a GeForce GTX 1080Ti processor.
实验结果
- 心律跳动分类器的结果:
表 II 列出了所提方法的平均准确度,并将其与文献中的其他相关方法进行了比较。该论文建议 MIT-BIH 的预测器并不是研究的唯一目的,但根据结果,该论文所取得的准确性与最先进的方法相比具有竞争力。这背后的主要原因可能是在网络架构中使用了 残差连接 这一事实,与使用传统的卷积架构相比,可以训练更深的网络。
- MI 预测器的结果
表 III 给出了所提出的 MI 分类方法和文献中其他工作的平均准确度,精确度和召回率之间的比较。除 Sharma 等人提出的方法外,该论文所提方法的性能优于其他所有工作。 实验结果显示了更高的准确度和精确度值。但是, Sharma 等人,使用 12 导联心电图而不是只使用导联 II。
复现代码地址
- 下面的链接只复现了论文中的第一个实验:
- 参考的 Kaggle Kernels 原地址:点击
- 根据 Kaggle Kernels 完成的 Jupyter Notebook:点击
- 两个实验都复现了:
- 完整实验的代码地址:点击
- 推荐一个代码实现,这个作者还与从头训练的方法和在学习到的特征上完整训练的方法进行了比较:点击