我有一个嘈杂的信号,我正在尝试找到一种使用 ML 检测峰值的方法。“峰”很容易像人类一样找到,因为它们是有节奏的并且具有相同的“一般”形状,但所需峰的幅度和宽度可能因样本而异。
基本上我不能只写一个简单的方法来检测峰值,所以我想知道我是否可以使用 ML 来训练一个可以学习更准确地找到峰值的模型。我是 ML 新手,所以虽然我了解 CNN、RNN 和 LSTM 是什么,但我不知道在我的场景中哪个有用。
我有一个嘈杂的信号,我正在尝试找到一种使用 ML 检测峰值的方法。“峰”很容易像人类一样找到,因为它们是有节奏的并且具有相同的“一般”形状,但所需峰的幅度和宽度可能因样本而异。
基本上我不能只写一个简单的方法来检测峰值,所以我想知道我是否可以使用 ML 来训练一个可以学习更准确地找到峰值的模型。我是 ML 新手,所以虽然我了解 CNN、RNN 和 LSTM 是什么,但我不知道在我的场景中哪个有用。
老实说,我不认为 CNN、RNN 和 LSTM 对这类问题有用——带通滤波器后跟阈值就可以了。
现在,这将具有三个参数:
而通常所说的“机器学习”只不过是在多维字段上找到具有实际价值的一些(损失)函数的局部最小值。
你去 - 三个维度,找到那个三维参数字段中的点,当用于参数化过滤器阈值算法时,会产生最接近你手动标记的点。
您可以很好地尝试使用神经网络解决这个问题!但老实说,如果我要为这个问题编写一个优化器,它可能会查看你的信号频谱,通过 STFT 识别感兴趣的频率,然后只扫描剩余的阈值参数以找到一个好的解决方案。
是的,您可以将深度学习应用于峰值检测。1D CNN 将适合此任务。
以下是此类应用的示例:Risum、Anne Bech 和 Rasmus Bro。“使用深度学习评估色谱数据中的峰。” 塔兰塔 204(2019):255-260。
您需要有注释数据。
如果您决定坚持使用经典算法,请尝试使用突出的峰值检测,这在 Matlab 和 Python 中都可用。
这是质谱法的一个例子。在 2D 数据集中查找峰值。
https://pubs.acs.org/doi/10.1021/acs.analchem.9b04811
我认为当您对某种峰感兴趣时,NN 方法很有用。就像在这个例子中一样,作者对具有某些属性的峰感兴趣,而其他峰被归类为噪声。NN 提供了一种机制,可以仅从提供的(标记的)示例中学习有效峰的任意特征。