2016-02-29 31 views
0

我需要将数据点分成彼此类似(“好”点)和其他人(“坏”点)类似的数据点。将数据集群分为好的和坏的

它看起来像某种聚类问题和我该怎么办:

我假设,至少有两个“好”之分。

  1. 查找所有类型点之间的成对距离。
  2. 查找最小距离(minDist)。
  3. 对所有点进行分层聚类。
  4. 在5 * minDist的高度进行切割。
  5. 假设与minDist在同一个簇中的所有点与该剪切下的属于所需的“良好”簇。

而且这个工作很好,但如果有两个点彼此非常接近。 minDist非常小,并且这种5 * minDist剪切也很小=>只有这2个点位于期望的“良好”簇中。

我认为,无论是我需要彻底改变这种做法,这里是第1题:

[1]“什么方法都存在相似点,从其他人分开”

或者我需要修改这个5 * minDist minDist的其他功能。问题是:

[2]“我可以选择作为5 * minDist的合理替代品吗?”

弗拉基米尔

回答

0

而不是做集群的,你想要做异常检测

有几十种算法(参见ELKI的大集合)。一些非常基本的方法可能会解决您的问题:

  1. 半径r中的邻居数。如果+ i <阈值,则该点是异常值。

  2. 到k个最近邻居的距离。选择k> 1以避免看到这2个元素集群。

此外,DBSCAN集群可以为你工作。考虑全部集群要好,只有噪音要坏!