假设一组数据点,例如此处绘制的一个数据点(此图并非针对我的问题,只是用作一个合适的示例):
目视检查散点图,很明显数据点形成两个“组”,一些随机点显然不属于任何一个。
我正在寻找一种算法,它可以让我:
- 从两个或多个维度的数据集开始。
- 在事先不知道可能存在多少(或是否存在)的情况下从数据集中检测此类群体
- 检测到组后,“询问”组模型,看新样本点是否适合任何组
最佳答案
有很多选择,但如果您对新数据点属于特定混合的概率感兴趣,我会使用概率方法,例如通过最大似然估计或贝叶斯估计的高斯混合建模。
mixtures models is implemented in Matlab 的最大似然估计.
您对组件数量未知的要求使您的模型更加复杂。占主导地位的概率方法是先于混合分布放置狄利克雷过程,并通过某种贝叶斯方法进行估计。例如,参见 this paper on infinite Gaussian mixture models . DP 混合模型会给你推断组件的数量和每个元素所属的组件,这正是你想要的。或者,您可以根据组件数量执行模型选择,但这通常不太优雅。
DP mixture models模型的实现有很多,但不一定都那么方便。例如,这是一个 Matlab implementation .
您的图表表明您是 R 用户。在这种情况下,如果您正在寻找预包装的解决方案,您的问题的答案就在这个 Task View for cluster analysis 上。 .
关于algorithm - 数据集中的组检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052321/