6

clara() 関数の k-medoids は距離を使用してクラスターを形成するため、次のパターンが得られます。

a <- matrix(c(0,1,3,2,0,.32,1,.5,0,.35,1.2,.4,.5,.3,.2,.1,.5,.2,0,-.1), byrow=T, nrow=5)
cl <- clara(a,2)
matplot(t(a),type="b", pch=20, col=cl$clustering) 

clara() によるクラスタリング

しかし、傾向に従って各ラインにクラスターを割り当てるクラスタリング方法を見つけたいので、ライン 1、2、および 3 は 1 つのクラスターに属し、ライン 4 および 5 は別のクラスターに属します。

4

3 に答える 3

5

この質問は stats.stackexchange.com の方が適しているかもしれませんが、とにかくここに解決策があります。

あなたの質問は、実際には「正しい距離メトリックを選択するにはどうすればよいですか?」です。これらのベクトル間のユークリッド距離の代わりに、傾向の類似性を測定する距離が必要です。

1 つのオプションを次に示します。

a1 <- t(apply(a,1,scale))
a2 <- t(apply(a1,1,diff))

cl <- clara(a2,2)
matplot(t(a),type="b", pch=20, col=cl$clustering) 

ここに画像の説明を入力

新しい距離メトリックを定義する代わりに、データを変換することで本質的に同じことを達成しました。最初に各行をスケーリングします。これにより、スケールの違いに惑わされることなく相対的な傾向を比較できます。次に、データを差分に変換するだけです。

警告: これは必ずしもすべての「トレンド」データで機能するとは限りません。特に、連続した違いを見ると、「トレンド」の限られた 1 つの側面しか捉えられません。より洗練されたメトリクスについて考える必要があるかもしれません。

于 2012-05-11T17:25:56.793 に答える
2

さらに前処理を行います。どのようなデータ マイニングでも、前処理は労力の 90% を占めます。

たとえば、傾向によってクラスター化する場合は、生の値ではなく、傾向にクラスター化を適用する必要があります。たとえば、各曲線を平均 0 と標準偏差 1 に標準化します。次に、ある値から次の値への差を計算し、この前処理されたデータにクラスタリングを適用します。

于 2012-05-11T18:37:50.383 に答える