用于在数据集中查找特定特征的算法

时间:2012-02-01 11:58:10

标签: matlab machine-learning detection

我目前正在尝试使用matlab分析大数据集(40 000+个数据点)。这些数据集具有很大程度的高频噪声,幸运的是,与整体信号相比,噪声幅度相对较小。

基本上,我想要做的是找到数据集“开始”的点。通过踢我的意思是,它的梯度在一个小区域显着变化。然而,我正在分析的这些信号遭受“漂移”,其中,在“启动”点之前,信号斜率可能是负的,中性的或正的,但是,“踢”之前和之后的图形的形状“点数大致相同。

例如:“启动”点看起来像这样:

  

[1.25 2.5 3.75 5 7.5 12 21 36 49 64]

显然这是一个大规模简化的版本,但数据将遵循曲线(上面的前5个数据点)之类的直线,然后它将遵循更像指数的曲线(第6点以上)。

所以我一直在研究实现一种机器类型的学习算法,我可以告诉matlab一个“启动”点以及数据的“形状”,其中出现启动点,以便将来它可以准确定位“踢”点。

我对Matlab和机器学习都比较陌生(如果机器学习甚至是解决我的问题的最佳方式),我不知道我应该从哪里开始。我希望有人可以指出我正确的方向,无论是matlab代码示例和/或一些带编码实现的初学者理论。

1 个答案:

答案 0 :(得分:4)

我认为ML在这种情况下是一种矫枉过正。如果数据是直线曲线,则意味着它的导数是常数,这反过来意味着第二个是零。因此,通过使用diff两次计算近似二阶导数,并找出它变得超过某个阈值的位置。该阈值应该接近于零。

x = [ 1.25 2.5 3.75 5 7.5 12 21 36 49 64 ];
plot(diff(diff(x)));