2012-03-07 11 views
0

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

ベクトルベースのクラスタリングを行うRには関数がありますか?そうでなければ、手動で行う必要があります.cmeansやkmeansなどの関数では、正しいデータ形式は何ですか? 私はm個の変数とn個のデータ行を持っています、m個の変数は各データ行のための1つのベクトルを構成します。したがって、相関またはコサインのためのn×n行列があります。このマトリクスを直接クラスタリング機能にプラグインすることができますか、または特定の処理が必要ですか?

多くのありがとうございます。

+0

「?kmeans」と「example(kmeans)」から始めることができます。また、http://cran.r-project.org/web/views/Cluster.html – bdemarest

答えて

1

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

Rの周りのコミュニティには、いくつかの拡張機能や代替機能があります。たとえば、PAM、CLARA、CLARANSなどがあります。彼らは正確に k - 手段ではありませんが、密接に関連しています。どこかに「球状のk-means」があるはずです。これはコサイン距離には合理的です。階層的なクラスタリングのファミリがあります(通常はO(n^3)、いくつかの例外を除いてO(n^2)ですが、概念的に理解しやすい)。

さらにクラスタリングオプションを調べたい場合は、ELKIを見てください。これは相関ベースの距離によるクラスター化(k-meansを含むさまざまな方法)と(そのような距離関数も含みます)。しかし、ではなく、Rですが、Javaです。あなたがRを使うことに縛られているなら、あなたのためにはうまくいかないでしょう。

+0

私は2つの理由でdownvoted:(1)クラスタリング方法を提供する93のRパッケージがあります。非常に一般的に使用され、引用されています。 (2)具体的にはRの解決策を求められた質問。 – bdemarest

+0

さて、それでもかなり限られていることが多い。 kmeansをR(それ自体ではなく、拡張子ではない)のクラスタリングをすると、別の距離または類似性行列をプラグインできなくなります。非常に多くの拡張パッケージがある理由かもしれません。オーバーラップと矛盾がかなりあります。 –

+0

いい解説。私は何か新しいことを学び、私のダウンボートを逆転させた。 – bdemarest

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) 
関連する問題