ECG的ML/DL算法碎碎念:主动学习(Active Learning)—— Patient Specific

0 写在前面

    很高兴前面的一些总结可以帮助到在这个领域做研究的同学们,不过也有同学有更多的问题。下面也是几点说明吧,先说两个问题:

1. 有人反映Matlab的分类代码不能正常运行(报错:未定义函数或变量 'Classification'),这一点是我的责任。主要是文件名有问题(“Classification-SVM.m”和“Classification-CNN.m”),忽略了m文件名不能有横杠。解决办法就是把中间的横杠去掉(“ClassificationSVM.m”和“ClassificationCNN.m”)。

2. 如果是自己生成并保存的.mat文件无法在Python-Spyder下无法正常被h5py读取,那可能是你的Matlab设置问题。在菜单“Preference/General/MAT-Files”看到的三个选项中选择第一个“MATLAB Version 7.3 or later(save-v7.3)”,然后点击右下“Apply”就可以了。当然你可以不在意这个,直接下载我在github上分享的mat文件。

另外就是想请大家体谅的地方,由于平时比较忙,大家向我提问,我可能真的没有办法每个人都能给出满意的答复,而且我跟大家一样,也是在不停学习,并不比大家厉害,也非大佬,所以有些问题我也没有太好的想法。这些希望各位谅解。当然,各位有问题可以在博客下评论或加我QQ:1621936636,但比较推荐第一种方式。好了,废话不多说了,进入今天的正题。

1 引言

如果多读一些关于ECG的ML/DL算法paper,可能总会看到一个词“Patient Specific”。这个词似乎没有很好的中文翻译,大概的意思是为每个病人量身定做一个分类器。这听起来很怪,我对这个词的认识也是经历了“迷糊-鄙视-思考”的历程。首先要问的是为什么要这么做呢?

2. 关于算法应用的三个层次

    在“ECGxAI :机器/深度学习的ECG应用入门(6)”中,我们特别提到了目前算法面临到的一个挑战:关于个体差异性导致的算法泛化能力恶化。个体差异性是客观存在的,而“在旧病人数据上训练,在新病人数据上测试”的模式更符合实际应用场景。从我们的期望出发,诊断算法的应用其实可以分为三个层次:


最理想:Inter-Patient,严格遵守训练集和测试集数据来自不同病人的规定,与实际应用场景最为符合,但是个体差异性带来的消极影响最大,实现难度最大。

最容易:Intra-Patient,完全不考虑个体差异性问题,训练集和测试集可以来自同一个病人,甚至刻意促成这一点,以达到更高的性能。此时,个体差异性带来的消极影响最小,实现难度最小。

在这两者中间的折衷方案,就是今天的主角:Patient-Specific。这里的训练集分为全局训练集和个体训练集,全局训练集和测试集来自不同的病人。我们用全局训练集训练一个分类器,在遇到一个新病人时,不是直接预测,而是将新病人的一小部分数据打上标签(可以理解为“偷看”标签),作为个体训练集来对分类器作微调训练,然后预测剩下的数据。像下图这样:



不知道当你明白了这个“Patient-Specific”的意思后是什么感觉。反正我当时的感觉是:啥?这不是投机取巧吗?然后心里有点鄙视这种方式。直到看了周志华老师的《机器学习》西瓜书,才知道这种模式还有个专门的学术称呼:主动学习(Active Learning)。主动学习引入了额外的“专家知识”,通过与外界的交互将部分未标记样本转变为有标记样本。在这里,我们“偷看”新病人的一小部分数据的标记,其实就相当于把这部分原来未标记的数据,请一个“专家”来给出标签,然后我们利用这些数据训练通过全局训练得到的分类器,使这个分类器学习到这个病人的个体特点,然后个体差异性所带来的性能恶化就可以大大减轻了。这也就是所谓“Patient-Specific”方案的出发点。

3. 关于Patient-Specific的思考

    前面讲了一下Patient-Specific的思路,可能你跟原来我的想法一样,觉得这个很弱。但其实不得不承认,这个方式很简单,很直接,而且根据许多文献的实验,它也是很有效。但这里我们还要思考两个问题:

1. 关于Patient-Specific训练集的选取。也就是说,来了一个新病人,我们选择这个病人的那一部分数据来训练,使得分类器能适应这个病人呢?直接选取前n个心拍是一个选择,但这样的选择是最能提升分类器泛化能力的吗?在这篇文章:Al Rahhal M M, Bazi Y, AlHichri H, et al. Deep learning approach for active classification of electrocardiogram signals[J]. Information Sciences, 2016, 345: 340-354 中,作者进行了探究。他们分别用了一些不同的标准(Entropy, Breaking-Ties)来给待选的新病人心拍排序,然后选择在这些标准下得分最高的若干心拍作为Patient-Specific训练集。通过跟直接选择前面的若干心拍相对比,发现这种直接选取前面若干心拍的方案的效果几乎是最差的。而那些经过精心设计的标准,则可以带来更好的表现。

2. 关于Patient-Specific的应用场景和实用性。还是跟我们之前所描述的一样,Inter-Patient方案是最理想的,但是像达到一个良好的性能,难度太大。而Patient-Specific方案则需要一些人工的干预,需要提供新病人的一小部分带标记数据。仔细想想,我们选取出的Patient-Specific训练集,其实可以相当于现实中这个病人之前的病历或就诊记录,进行适应性训练的过程,相当于为这个病人定制了一个模型。这样想的话,其实Patient-Specific方案还是有一定的实用意义的。当然,最理想情况下,高性能的Inter-Patient方案仍然是终极目标。

4.小结

这一部分所述的Patient-Specific模式,是机器学习中主动学习(Active Learning)的一种应用。它是一种思想,并不涉及具体的算法和实现。如果不能在Inter-Patient情况下达到高性能,Patient-Specific也不失为一种替代方案。但是,这种方案,或者说主动学习的缺陷在于需要人为干预。自然,它也不适合于打算法比赛,因为算法比赛中一般不会给出测试集的标签,这样用于微调训练的个体训练集也就无法得到。下面推荐了一些文献,有兴趣可以多研究下。


* 推荐阅读:

[1] Al Rahhal M M, Bazi Y, AlHichri H, et al. Deep learning approach for active classification of electrocardiogram signals[J]. Information Sciences, 2016, 345: 340-354.

[2] Luo K, Li J, Wang Z, et al. Patient-Specific Deep Architectural Model for ECG Classification[J]. Journal of healthcare engineering, 2017, 2017.

[3] Dong X, Wang C, Si W. ECG beat classification via deterministic learning[J]. Neurocomputing, 2017, 240: 1-12.

[4] Kiranyaz S, Ince T, Gabbouj M. Real-time patient-specific ECG classification by 1-D convolutional neural networks[J]. IEEE Transactions on Biomedical Engineering, 2016, 63(3): 664-675.

[5] Zhang C, Wang G, Zhao J, et al. Patient-specific ECG classification based on recurrent neural networks and clustering technique[C]//Biomedical Engineering (BioMed), 2017 13th IASTED International Conference on. IEEE, 2017: 63-67.

展开阅读全文
©️2020 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值