分配新的数据点在内核k均值聚类(kernlab包在R)?(Assign new data point

2019-06-26 11:53发布

我有一个关于这个问题kkmeans功能在kernlab R的包我是新来这个包,请原谅我,如果我失去了一些东西很明显这里。

我想在一组使用内核k均值与函数“kkmeans”创建的集群分配一个新的数据点以一个集群。 通过定期聚集,人们会通过计算新的数据点和聚类中心之间的欧氏距离做到这一点,并选择与最接近的重心集群。 在内核K-手段,必须在特征空间做到这一点。

采取在kkmeans描述中使用的例如:

data(iris)

sc <- kkmeans(as.matrix(iris[,-5]), centers=3)

说我有一个新的数据点在这里,我想分配给上面创建的最近的聚类sc

Sepal.Length  Sepal.Width  Petal.Length  Petal.Width
     5.0         3.6          1.2         0.4 

如何做到这一点的任何提示? 你的帮助是非常赞赏。

Answer 1:

内核K-装置使用的内核函数来计算对象的相似性。 在简单的k意味着你通过所有质心环,并选择最小化的距离(下使用度量),以给定的数据点的一个。 在核方法(在默认核函数的情况下kkmeansradial basis function ),则简单地通过质心环,并选择最大化核函数值 (RBF的情况下)或最小化内核诱导距离 (任何内核)的一个。 提供转换内核距离量度的详细描述这里 -在由内核诱导一般距离K可以通过计算d^2(a,b) = K(a,a)+K(b,b)-2K(a,b) ,但作为在RBF的情况下, K(x,x)=1对于所有x ,可以只最大化K(a,b)而不是最小化整个K(a,a)+K(b,b)-2K(a,b)

为了让内核函数从kkmeans对象,你可以使用kernelf功能

> data(iris)
> sc <- kkmeans(as.matrix(iris[,-5]), centers=3)
> K = kernelf(sc)

因此,对于你的榜样

> c=centers(sc)
> x=c(5.0, 3.6, 1.2, 0.4)
> K(x,c[1,])
             [,1]
[1,] 1.303795e-11
> K(x,c[2,])
             [,1]
[1,] 8.038534e-06
> K(x,c[3,])
          [,1]
[1,] 0.8132268
> which.max( c( K(x,c[1,]), K(x,c[2,]), K(x,c[3,]) ) )
[1] 3

最接近的质心是c[3,]=5.032692 3.401923 1.598077 0.3115385中使用的核函数的意义。



文章来源: Assign new data point to cluster in kernel k-means (kernlab package in R)?