3

相関性の高い 4 つの変数 (0.85) があるため、K-means アルゴリズムでマハラノビス距離を使用したいと思います。

この場合、マハラノビス距離を使用する方が良いようです。

問題は、K-means アルゴリズムを使用して R に実装する方法がわからないことです。

クラスタリングステップの前にデータを変換する際に「偽造」する必要があると思いますが、方法がわかりません。

標準化データのユークリッド距離を使用して、古典的なkmeansを試しましたが、前述のように、相関が多すぎます。

フィット <- kmeans(mydata.standardize, 4)

距離パラメーターも見つけようとしましたが、 kmeans() 関数には存在しないと思います。

期待される結果は、マハラノビス距離で K-means アルゴリズムを適用する方法です。

4

2 に答える 2

13

分散行列のコレスキー分解を使用して、アルゴリズムを実行する前にデータを再スケーリングできます。変換後のユークリッド距離は、変換前のマハラノビス距離です。

# Sample data 
n <- 100
k <- 5
x <- matrix( rnorm(k*n), nr=n, nc=k )
x[,1:2] <- x[,1:2] %*% matrix( c(.9,1,1,.9), 2, 2 )
var(x)

# Rescale the data
C <- chol( var(x) )
y <- x %*% solve(C)
var(y) # The identity matrix

kmeans(y, 4)

ただし、これは、すべてのクラスターがデータ全体と同じ形状と方向を持っていることを前提としています。そうでない場合は、楕円クラスターを明示的に許可するモデル (たとえば、mclustパッケージ内) を参照することをお勧めします。

于 2013-04-29T10:05:14.287 に答える