如何将实验性聚类算法与预期结果进行比较
How to compare a experimental cluster algorithm with expected results
检查聚类算法(在本例中为 K-Means)准确度的最佳方法是什么?我已经知道真正的分组分离,是通过更高级的算法实现的。
但是,我面临着一堵墙。我如何确定我的第 1 组与他们的第 2 组相同?如果分离相同,这可以手动完成。但是,由于结果各不相同,似乎不值得做"by hand",还是拿个CS比较好approach/statistics。
你知道我可以使用哪种算法来解决这个问题吗?
请看一下这两个对象。第一个是时间序列的预期分离,第二个是我对它们的分组方式。
检查两者的前 6 个元素,发现预期数据中的组 3 可能与 my 组 3 相同。但是,他们的 元素 4 和 5,在第 4 组和第 2 组中,插入到 my 第 6 组中。因此,我如何确定我的第 6 组是否是他们的第 2或 4,这样我就可以计算命中率。
c(3L, 3L, 3L, 4L, 2L, 2L, 5L, 6L, 4L, 4L, 6L, 6L, 6L, 5L, 1L,
1L, 2L, 2L, 3L, 6L, 5L, 6L, 4L, 5L, 5L, 5L, 2L, 5L, 2L, 2L, 5L,
5L, 1L, 2L, 1L, 6L, 5L, 4L, 4L, 5L, 2L, 2L, 3L, 2L, 1L, 5L, 6L,
6L, 2L, 6L, 6L, 4L, 3L, 6L, 4L, 3L, 2L, 3L, 5L, 3L, 5L, 1L, 5L,
6L, 5L, 2L, 1L, 6L, 3L, 6L, 3L, 3L, 3L, 5L, 5L, 2L, 2L, 4L, 5L,
4L, 6L, 3L, 2L, 3L, 1L, 4L, 2L, 3L, 4L, 3L, 1L, 3L, 1L, 5L, 3L,
4L, 5L, 1L, 5L, 5L, 5L, 4L, 3L, 6L, 2L, 6L, 6L, 1L, 5L, 4L, 2L,
1L, 2L, 5L, 2L, 5L, 6L, 2L, 3L, 6L, 6L, 3L, 4L, 6L, 4L, 3L, 1L,
6L, 2L, 5L, 6L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 6L, 2L, 3L, 2L, 1L,
5L, 3L, 4L, 4L, 2L, 5L, 3L, 4L, 1L, 1L, 5L, 2L, 3L, 6L, 2L, 1L,
4L, 2L, 3L, 1L, 6L, 5L, 6L, 1L, 6L, 1L, 1L, 4L, 1L, 1L, 2L, 1L,
4L, 3L, 3L, 3L, 4L, 2L, 4L, 4L, 6L, 3L, 5L, 6L, 5L, 6L, 2L, 4L,
1L, 1L, 2L, 1L, 2L, 4L, 4L, 1L, 4L, 5L, 6L, 3L, 5L, 5L, 5L, 1L,
3L, 6L, 3L, 4L, 1L, 6L, 3L, 3L, 3L, 5L, 6L, 6L, 2L, 4L, 3L, 5L,
6L, 1L, 1L, 1L, 1L, 2L, 5L, 5L, 4L, 2L, 3L, 5L, 1L, 4L, 4L, 3L,
2L, 4L, 6L, 1L, 3L, 3L, 5L, 3L, 3L, 2L, 1L, 4L, 4L, 1L, 6L, 1L,
6L, 6L, 6L, 3L, 2L, 5L, 5L, 2L, 2L, 5L, 2L, 4L, 2L, 4L, 4L, 2L,
5L, 5L, 6L, 4L, 4L, 3L, 3L, 4L, 3L, 2L, 4L, 6L, 2L, 1L, 2L, 3L,
5L, 6L, 5L, 3L, 1L, 6L, 5L, 1L, 4L, 4L, 4L, 4L, 2L, 3L, 1L, 4L,
3L, 5L, 4L, 6L, 1L, 5L, 6L, 1L, 1L, 1L, 1L, 6L, 6L, 2L, 1L, 1L,
5L, 4L, 1L, 3L, 3L, 6L, 2L, 2L, 1L, 6L, 2L, 2L, 3L, 4L, 6L, 1L,
3L, 4L, 6L, 6L, 3L, 6L, 4L, 1L, 4L, 1L, 3L, 4L, 5L, 2L, 5L, 3L,
4L, 6L, 6L, 1L, 1L, 1L, 3L, 4L, 5L, 5L, 4L, 2L, 1L, 1L, 2L, 2L,
2L, 4L, 5L, 5L, 2L, 5L, 2L, 3L, 6L, 4L, 4L, 5L, 6L, 4L, 6L, 4L,
3L, 5L, 5L, 3L, 2L, 2L, 3L, 6L, 2L, 4L, 5L, 1L, 6L, 2L, 4L, 1L,
6L)
--
c(3, 3, 3, 6, 6, 6, 2, 6, 6, 6, 6, 6, 6, 2, 1, 1, 6, 6, 3, 6,
2, 6, 6, 2, 2, 2, 6, 2, 6, 6, 2, 2, 1, 6, 1, 6, 2, 6, 6, 2, 6,
6, 3, 6, 1, 2, 6, 6, 6, 6, 6, 6, 3, 6, 6, 3, 6, 3, 2, 3, 2, 1,
2, 6, 2, 6, 1, 6, 3, 6, 3, 3, 3, 2, 2, 6, 6, 6, 2, 6, 6, 3, 6,
3, 1, 6, 6, 3, 6, 3, 1, 3, 1, 2, 3, 6, 2, 1, 2, 2, 2, 6, 3, 6,
6, 6, 6, 1, 2, 6, 6, 1, 6, 2, 6, 2, 6, 6, 3, 6, 6, 3, 6, 6, 6,
3, 1, 6, 6, 2, 6, 3, 3, 1, 6, 1, 1, 1, 6, 6, 3, 6, 1, 2, 3, 6,
6, 6, 2, 3, 6, 1, 1, 2, 6, 3, 6, 6, 1, 6, 6, 3, 1, 6, 2, 6, 1,
6, 1, 1, 6, 1, 1, 6, 1, 6, 3, 4, 3, 6, 6, 6, 6, 6, 3, 2, 6, 2,
6, 6, 6, 1, 1, 6, 1, 6, 6, 6, 1, 6, 2, 6, 3, 2, 2, 2, 1, 3, 6,
3, 6, 1, 6, 3, 3, 3, 2, 6, 6, 6, 6, 3, 2, 6, 1, 1, 1, 1, 6, 2,
2, 6, 6, 3, 2, 1, 6, 6, 3, 6, 6, 6, 1, 3, 3, 2, 3, 3, 6, 1, 6,
6, 1, 6, 1, 6, 6, 6, 3, 6, 5, 2, 6, 6, 2, 6, 6, 6, 6, 6, 6, 2,
2, 6, 6, 6, 3, 3, 6, 3, 6, 6, 6, 6, 1, 6, 3, 2, 1, 4, 3, 1, 6,
2, 1, 6, 6, 6, 6, 6, 3, 1, 6, 3, 2, 6, 6, 1, 2, 6, 1, 1, 1, 1,
6, 6, 6, 1, 1, 2, 6, 1, 3, 3, 6, 6, 6, 1, 6, 6, 6, 3, 6, 6, 1,
3, 6, 6, 6, 3, 6, 6, 1, 6, 1, 3, 6, 2, 6, 2, 3, 6, 6, 6, 1, 1,
1, 3, 6, 2, 2, 6, 6, 1, 1, 6, 6, 6, 6, 2, 2, 6, 2, 6, 3, 6, 6,
6, 2, 6, 6, 6, 6, 3, 2, 2, 3, 6, 6, 3, 6, 6, 6, 2, 1, 6, 6, 6,
1, 6)
注:对象由R中的函数dput生成
看看兰特指数:https://en.wikipedia.org/wiki/Rand_index
library(fossil)
> rand.index(x, y)
[1] 0.8304887
> adj.rand.index(x,y)
[1] 0.5589514
(这里 x
是你的第一个矩阵,y
是你的第二个矩阵)
Rand Index 计算x
和y
之间两对聚集在一起或不聚集在一起的次数比例。
示例:
x: 1,2 ... y: 1,3 ...
This case is +1
x: 1,1 ... y: 2,2 ...
This case is also +1
x: 1,1 ... y: 1,2 ...
This case is 0.
然后除以总对数。
调整后的兰特指数减去了偶然获得的比例(所以adj.rand.index = 0是随机的)。在这种情况下,您的集群运行良好。
检查聚类算法(在本例中为 K-Means)准确度的最佳方法是什么?我已经知道真正的分组分离,是通过更高级的算法实现的。
但是,我面临着一堵墙。我如何确定我的第 1 组与他们的第 2 组相同?如果分离相同,这可以手动完成。但是,由于结果各不相同,似乎不值得做"by hand",还是拿个CS比较好approach/statistics。
你知道我可以使用哪种算法来解决这个问题吗?
请看一下这两个对象。第一个是时间序列的预期分离,第二个是我对它们的分组方式。
检查两者的前 6 个元素,发现预期数据中的组 3 可能与 my 组 3 相同。但是,他们的 元素 4 和 5,在第 4 组和第 2 组中,插入到 my 第 6 组中。因此,我如何确定我的第 6 组是否是他们的第 2或 4,这样我就可以计算命中率。
c(3L, 3L, 3L, 4L, 2L, 2L, 5L, 6L, 4L, 4L, 6L, 6L, 6L, 5L, 1L,
1L, 2L, 2L, 3L, 6L, 5L, 6L, 4L, 5L, 5L, 5L, 2L, 5L, 2L, 2L, 5L,
5L, 1L, 2L, 1L, 6L, 5L, 4L, 4L, 5L, 2L, 2L, 3L, 2L, 1L, 5L, 6L,
6L, 2L, 6L, 6L, 4L, 3L, 6L, 4L, 3L, 2L, 3L, 5L, 3L, 5L, 1L, 5L,
6L, 5L, 2L, 1L, 6L, 3L, 6L, 3L, 3L, 3L, 5L, 5L, 2L, 2L, 4L, 5L,
4L, 6L, 3L, 2L, 3L, 1L, 4L, 2L, 3L, 4L, 3L, 1L, 3L, 1L, 5L, 3L,
4L, 5L, 1L, 5L, 5L, 5L, 4L, 3L, 6L, 2L, 6L, 6L, 1L, 5L, 4L, 2L,
1L, 2L, 5L, 2L, 5L, 6L, 2L, 3L, 6L, 6L, 3L, 4L, 6L, 4L, 3L, 1L,
6L, 2L, 5L, 6L, 3L, 3L, 1L, 2L, 1L, 1L, 1L, 6L, 2L, 3L, 2L, 1L,
5L, 3L, 4L, 4L, 2L, 5L, 3L, 4L, 1L, 1L, 5L, 2L, 3L, 6L, 2L, 1L,
4L, 2L, 3L, 1L, 6L, 5L, 6L, 1L, 6L, 1L, 1L, 4L, 1L, 1L, 2L, 1L,
4L, 3L, 3L, 3L, 4L, 2L, 4L, 4L, 6L, 3L, 5L, 6L, 5L, 6L, 2L, 4L,
1L, 1L, 2L, 1L, 2L, 4L, 4L, 1L, 4L, 5L, 6L, 3L, 5L, 5L, 5L, 1L,
3L, 6L, 3L, 4L, 1L, 6L, 3L, 3L, 3L, 5L, 6L, 6L, 2L, 4L, 3L, 5L,
6L, 1L, 1L, 1L, 1L, 2L, 5L, 5L, 4L, 2L, 3L, 5L, 1L, 4L, 4L, 3L,
2L, 4L, 6L, 1L, 3L, 3L, 5L, 3L, 3L, 2L, 1L, 4L, 4L, 1L, 6L, 1L,
6L, 6L, 6L, 3L, 2L, 5L, 5L, 2L, 2L, 5L, 2L, 4L, 2L, 4L, 4L, 2L,
5L, 5L, 6L, 4L, 4L, 3L, 3L, 4L, 3L, 2L, 4L, 6L, 2L, 1L, 2L, 3L,
5L, 6L, 5L, 3L, 1L, 6L, 5L, 1L, 4L, 4L, 4L, 4L, 2L, 3L, 1L, 4L,
3L, 5L, 4L, 6L, 1L, 5L, 6L, 1L, 1L, 1L, 1L, 6L, 6L, 2L, 1L, 1L,
5L, 4L, 1L, 3L, 3L, 6L, 2L, 2L, 1L, 6L, 2L, 2L, 3L, 4L, 6L, 1L,
3L, 4L, 6L, 6L, 3L, 6L, 4L, 1L, 4L, 1L, 3L, 4L, 5L, 2L, 5L, 3L,
4L, 6L, 6L, 1L, 1L, 1L, 3L, 4L, 5L, 5L, 4L, 2L, 1L, 1L, 2L, 2L,
2L, 4L, 5L, 5L, 2L, 5L, 2L, 3L, 6L, 4L, 4L, 5L, 6L, 4L, 6L, 4L,
3L, 5L, 5L, 3L, 2L, 2L, 3L, 6L, 2L, 4L, 5L, 1L, 6L, 2L, 4L, 1L,
6L)
--
c(3, 3, 3, 6, 6, 6, 2, 6, 6, 6, 6, 6, 6, 2, 1, 1, 6, 6, 3, 6,
2, 6, 6, 2, 2, 2, 6, 2, 6, 6, 2, 2, 1, 6, 1, 6, 2, 6, 6, 2, 6,
6, 3, 6, 1, 2, 6, 6, 6, 6, 6, 6, 3, 6, 6, 3, 6, 3, 2, 3, 2, 1,
2, 6, 2, 6, 1, 6, 3, 6, 3, 3, 3, 2, 2, 6, 6, 6, 2, 6, 6, 3, 6,
3, 1, 6, 6, 3, 6, 3, 1, 3, 1, 2, 3, 6, 2, 1, 2, 2, 2, 6, 3, 6,
6, 6, 6, 1, 2, 6, 6, 1, 6, 2, 6, 2, 6, 6, 3, 6, 6, 3, 6, 6, 6,
3, 1, 6, 6, 2, 6, 3, 3, 1, 6, 1, 1, 1, 6, 6, 3, 6, 1, 2, 3, 6,
6, 6, 2, 3, 6, 1, 1, 2, 6, 3, 6, 6, 1, 6, 6, 3, 1, 6, 2, 6, 1,
6, 1, 1, 6, 1, 1, 6, 1, 6, 3, 4, 3, 6, 6, 6, 6, 6, 3, 2, 6, 2,
6, 6, 6, 1, 1, 6, 1, 6, 6, 6, 1, 6, 2, 6, 3, 2, 2, 2, 1, 3, 6,
3, 6, 1, 6, 3, 3, 3, 2, 6, 6, 6, 6, 3, 2, 6, 1, 1, 1, 1, 6, 2,
2, 6, 6, 3, 2, 1, 6, 6, 3, 6, 6, 6, 1, 3, 3, 2, 3, 3, 6, 1, 6,
6, 1, 6, 1, 6, 6, 6, 3, 6, 5, 2, 6, 6, 2, 6, 6, 6, 6, 6, 6, 2,
2, 6, 6, 6, 3, 3, 6, 3, 6, 6, 6, 6, 1, 6, 3, 2, 1, 4, 3, 1, 6,
2, 1, 6, 6, 6, 6, 6, 3, 1, 6, 3, 2, 6, 6, 1, 2, 6, 1, 1, 1, 1,
6, 6, 6, 1, 1, 2, 6, 1, 3, 3, 6, 6, 6, 1, 6, 6, 6, 3, 6, 6, 1,
3, 6, 6, 6, 3, 6, 6, 1, 6, 1, 3, 6, 2, 6, 2, 3, 6, 6, 6, 1, 1,
1, 3, 6, 2, 2, 6, 6, 1, 1, 6, 6, 6, 6, 2, 2, 6, 2, 6, 3, 6, 6,
6, 2, 6, 6, 6, 6, 3, 2, 2, 3, 6, 6, 3, 6, 6, 6, 2, 1, 6, 6, 6,
1, 6)
注:对象由R中的函数dput生成
看看兰特指数:https://en.wikipedia.org/wiki/Rand_index
library(fossil)
> rand.index(x, y)
[1] 0.8304887
> adj.rand.index(x,y)
[1] 0.5589514
(这里 x
是你的第一个矩阵,y
是你的第二个矩阵)
Rand Index 计算x
和y
之间两对聚集在一起或不聚集在一起的次数比例。
示例:
x: 1,2 ... y: 1,3 ...
This case is +1
x: 1,1 ... y: 2,2 ...
This case is also +1
x: 1,1 ... y: 1,2 ...
This case is 0.
然后除以总对数。
调整后的兰特指数减去了偶然获得的比例(所以adj.rand.index = 0是随机的)。在这种情况下,您的集群运行良好。