近似高斯混合 - 不能适合正确数量的峰

时间:2014-03-20 16:02:10

标签: c++ histogram gaussian

大约两周前,我问(Number of peaks in histogram)快速算法检测直方图中的高斯峰数。一个非常好的方法:建议使用近似高斯混合(AGM)。

我通过article并试图在我的C ++应用程序中实现这种方法,具有用于控制EM收敛的类似日志功能。我不得不说这个方法非常快,它可以看到解决方案。但是,我无法在合适的时间停止清洗。我想知道这是不是由我的数据引起的。

问题解释:

在我的数据中有5个峰值(见图here),平均值为(100,200,300,400,500),高度差异很大(第一个比第二个高4倍,第二个是比第三个高出3倍......)

当我将参数设置为(threshold = 0.6,expansion_factor = 0.25)时,我得到了这个解决方案:http://pastebin.com/4P5w2sDx(结果位于文件的底部)。算法以三个峰值结束,其中只有中间的一个似乎是正确的。

我尝试使用参数和(阈值= 0.55,expansion_factor = 0.50)我收到http://pastebin.com/y8qvVL5V

结果中又有三个峰值,但是:

  • 第二和第三个峰似乎是正确的
  • 无法找到500的峰值,但我知道这个峰值的数据非常糟糕,以至于没有高斯分布
  • 100和200处的峰值混合成一个巨大的峰值,方差大,中间平均值(150)

我可能在实施中犯了一些错误,或者你可以指出错误可能在哪里,当两个最重要的峰值识别为单个峰值时。

0 个答案:

没有答案