聚类二进制矩阵的合适方法是什么
what is the appropriate method to cluster binary matrix
我是聚类的初学者,我有一个二进制矩阵,其中每个学生都有他们注册的课程。我想对具有相同课程的学生进行聚类。
聚类方法很多,而且根据数据集不同
例如 k-means 是不合适的,因为数据是二进制的,标准 "mean" 操作对二进制没有多大意义。
我愿意接受任何建议
这是一个例子:
+------------+---------+--------+--------+
| session1 | session2|session3|session4|
+------------+---------+--------+--------+
| 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
+------------+---------+--------+--------+
结果:
clusterA = [user1,user3]
clusterB = [user2,user4]
您可以对每对点使用 Jaccard 距离。
在 R 中:
# create data table
mat = data.frame(s1 = c(T,F,T,F), s2 = c(F,T,F,T),
s3 = c(T,F,T,F), s4 = c(F,T,F,T))
结果:
s1 s2 s3 s4
1 TRUE FALSE TRUE FALSE
2 FALSE TRUE FALSE TRUE
3 TRUE FALSE TRUE FALSE
4 FALSE TRUE FALSE TRUE
dist(mat, method="binary") # jaccard distance
结果:
1 2 3
2 1
3 0 1
4 1 0 1
第 3 行与第 4 行的距离为 1。
碰巧的是,这里的距离都正好是 1 和 0。这些实际上是花车。 (您的玩具数据集在这里可能过于简单)
将它们聚类:
hclust(dist(mat, method="binary"))
结果(信息量不大):
Call:
hclust(d = dist(mat, method = "binary"))
Cluster method : complete
Distance : binary
Number of objects: 4
创建树状图
plot(hclust(dist(mat, method="binary")))
我是聚类的初学者,我有一个二进制矩阵,其中每个学生都有他们注册的课程。我想对具有相同课程的学生进行聚类。
聚类方法很多,而且根据数据集不同
例如 k-means 是不合适的,因为数据是二进制的,标准 "mean" 操作对二进制没有多大意义。
我愿意接受任何建议
这是一个例子:
+------------+---------+--------+--------+
| session1 | session2|session3|session4|
+------------+---------+--------+--------+
| 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
+------------+---------+--------+--------+
结果:
clusterA = [user1,user3]
clusterB = [user2,user4]
您可以对每对点使用 Jaccard 距离。
在 R 中:
# create data table
mat = data.frame(s1 = c(T,F,T,F), s2 = c(F,T,F,T),
s3 = c(T,F,T,F), s4 = c(F,T,F,T))
结果:
s1 s2 s3 s4
1 TRUE FALSE TRUE FALSE
2 FALSE TRUE FALSE TRUE
3 TRUE FALSE TRUE FALSE
4 FALSE TRUE FALSE TRUE
dist(mat, method="binary") # jaccard distance
结果:
1 2 3
2 1
3 0 1
4 1 0 1
第 3 行与第 4 行的距离为 1。 碰巧的是,这里的距离都正好是 1 和 0。这些实际上是花车。 (您的玩具数据集在这里可能过于简单)
将它们聚类:
hclust(dist(mat, method="binary"))
结果(信息量不大):
Call:
hclust(d = dist(mat, method = "binary"))
Cluster method : complete
Distance : binary
Number of objects: 4
创建树状图
plot(hclust(dist(mat, method="binary")))