13

kkmeansRのパッケージの関数について質問がありkernlabます。私はこのパッケージを初めて使用します。明らかな何かが欠けている場合はご容赦ください。

関数 'kkmeans' でカーネル k-means を使用して作成された一連のクラスター内のクラスターに新しいデータ ポイントを割り当てたいと考えています。通常のクラスタリングでは、新しいデータ ポイントとクラスターの重心との間のユークリッド距離を計算することでこれを行い、最も近い重心を持つクラスターを選択します。カーネル k-means では、特徴空間でこれを行う必要があります。

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 

これを行う方法に関するヒントはありますか?よろしくお願いいたします。

4

1 に答える 1

9

カーネル K-means は、カーネル関数を使用してオブジェクトの類似度を計算します。単純な k-means では、すべての重心をループし、指定されたデータ ポイントまでの距離 (使用されるメトリックの下) を最小化するものを選択します。カーネル法 ( のデフォルトのカーネル関数kkmeans)radial 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、使用されたカーネル関数の意味にあります。

于 2013-09-01T05:47:49.930 に答える