0

データ行ベクトルの相関に対してクラスタリングを実行する必要があります。つまり、個々の変数をクラスタリング予測変数として使用する代わりに、データ行間の変数のベクトル間の相関を使用するつもりです。

ベクトルベースのクラスタリングを行う R の関数はありますか。そうでない場合、手動で行う必要がある場合、cmeans や kmeans などの関数に入力する適切なデータ形式は何ですか? たとえば、m 個の変数と n 個のデータ行があり、m 個の変数は各データ行に対して 1 つのベクトルを構成します。そのため、相関または余弦の X n 行列があります。このマトリックスをクラスタリング機能に直接組み込むことはできますか、それとも特定の処理が必要ですか?

どうもありがとう。

4

2 に答える 2

1

たとえば、相関行列を非類似度行列に変換できます1-cor(x)(または2-cor(x)または1-abs(cor(x)))。

# Sample data
n <- 200
k <- 10
x <- matrix( rnorm(n*k), nr=k )
x <- x * row(x) # 10 dimensions, with less information in some of them

# Clustering
library(cluster)
r <- pam(1-cor(x), diss=TRUE, k=5)

# Check the results
plot(prcomp(t(x))$x[,1:2], col=r$clustering, pch=16, cex=3)
于 2012-03-08T04:39:42.637 に答える
1

R クラスタリングは、多くの場合、少し制限されています。これは R の設計上の制限です。これは、パフォーマンスが低レベルの C コードに大きく依存しているためです。R に含まれる高速 kmeans 実装は、このような低レベル コードの例であり、ユークリッド距離の使用に結び付けられています。

R に関するコミュニティでは、多数の拡張機能と代替手段が利用可能です。たとえば、PAM、CLARA、CLARANS があります。それらは厳密にはk-means ではありませんが、密接に関連しています。コサイン距離に適した「球面k-means」がどこかにあるはずです。階層型クラスタリングのファミリー全体があります (スケーリングはかなり悪いですが、通常O(n^3)O(n^2)いくつかの例外がありますが、概念的には非常に簡単に理解できます)。

さらにいくつかのクラスタリングオプションを調べたい場合は、ELKIを見てください。相関ベースの距離 (およびそのような距離関数も含まれます) によるクラスタリング (k-means を含むさまざまな方法を使用) を許可する必要があります。ただし、それは Rではなく、Java です。したがって、R を使用しなければならない場合は、うまくいきません。

于 2012-03-07T23:02:25.713 に答える