特徴点ごとのデータではなく、距離行列のみを使用してK平均(またはその近縁)クラスタリングを実行します。


22

所有しているオブジェクトに対してK-meansクラスタリングを実行したいのですが、オブジェクトは空間内のポイント、つまりobjects x featuresデータセットによって記述されていません。ただし、2つのオブジェクト間の距離は計算できます(類似度関数に基づいています)。そのため、距離行列を破棄しobjects x objectsます。

私は以前にK-meansを実装しましたが、それはポイントデータセットの入力でした。距離行列の入力では、ポイント表現なしでクラスタを「中心」に更新する方法が明確ではありません。これは通常どのように行われますか?そのために、それに近いK-meansまたはメソッドのバージョンはありますか?


ポイントとして記述されていないことはどういう意味ですか?
好奇心が強い

回答:


24

明らかに、K-手段が計算できるようにする必要がある手段

ただし、k-medoidsまたはPAM(Partitioning Around Medoids)と呼ばれる既知のバリエーションがあり、medoidはクラスターの最も中心にある既存のオブジェクトです。K-medoidにはペアワイズ距離のみが必要です。


21

カーネル -meansの問題設定を正確に説明しています。データポイントをユークリッドベクトルとして表すことができないが、2つのデータポイント間の内積を計算(または定義)できる場合は、アルゴリズムをカーネル化できます。次のWebページは、アルゴリズムの簡単な説明を提供します。k

カーネル平均ページk

このカーネルトリックは、統計と機械学習で非常に一般的で基本的なアイデアです。

カーネルトリックに関するWikiページ

興味のある方は、BernhardSchölkopfとAlexander J. Smola の著書 『Learning with Kernels』が非常に良い紹介になります。

マックス・ウェリングからのこのメモはとてもいいようです。また、Rを使用している場合は、このRパッケージをご覧ください

MDSは問題を解決する1つの方法かもしれませんが、解決したい問題を直接攻撃するわけではありません。カーネルk-meansはそうです。


リンクを追加したかったのですが、評判が低いためできませんでした。マックスウェリングのからこのノートノートは非常に良いようです。また、Rを使用している場合は、このRパッケージを
-d_ijk_stra

(+1)サイトへようこそ。コメントのリンクを投稿の本文に加え、SchölkopfとSmolaのテキストへのリンクを追加しました。
枢機

9

@gungは完全に正しいので、距離行列からデータを作成するための予備ツール として多次元スケーリング(MDS)を推奨しますpoints X dimensions。ストロークをいくつか追加するだけです。K平均クラスタリングはユークリッド距離を意味します。MDSは次元座標を提供し、ユークリッド距離を保証します。目的は2Dまたは3Dにマッピングするのではなく、データの再構築のエラーを最小限に抑えることであるため、メトリックMDSを使用し、できるだけ多くのディメンション数を要求する必要があります。

MDSソフトウェアを手元に持っていないが、固有値分解や特異値分解などの行列関数を持っている場合はどうなりますか?次に、単純なメトリックMDSを自分で実行できます。これは、プリンシパル座標分析(PCoA)とも呼ばれるTorgerson MDSです。それは、主成分分析の少し「ねじれた」ものになります。ここでは説明しませんが、非常に簡単です。あなたはそれについて多くの場所で読むことができます、例えばここ

最後に、PCoAまたは別のメトリックMDSを実行する関数を呼び出したり記述したりすることなく、「距離行列入力のK-means」を直接プログラムできます。(a)重心からの偏差の二乗合計は、対ごとの二乗ユークリッド距離の合計をポイント数で割ったものに等しいことを知っています。(b)距離行列からクラスター重心間の距離を計算する方法を知っている。(c)さらに、平方和がK-meansでどのように相互に関連しているを知っています。すべてを組み合わせることで、複雑な作業ではなく、簡単なアルゴリズムを作成できます。ただし、K-meansはユークリッド距離/ユークリッド空間専用であることを覚えておいてください。非ユークリッド距離には、K-medoidまたは他の方法を使用します。

同様の質問


7

私は確かにそれがどのように「通常」行われるかを知りません、そして、記録のために、私はクラスター分析についてあまり知りません。ただし、多次元スケーリングに精通していますか?(ここに別のリファレンスwikiがあり、タグでCVを検索できます。)多次元スケーリングは、ペアワイズ距離のマトリックスを取ります。これは状況のように聞こえます。MDSから、オブジェクトを適切に表すために必要な最も低い次元の空間でオブジェクトの位置を取得できます。これらの場所を使用して、k-meansなどの後続のクラスター分析を実行できると思います。または、出力が得られたら、CAは不要になる可能性があります。

Rを使用しているかどうかはわかりませんが、ここにPsychometricsのタスクビューがあります。これには、RのMDSに関するセクションが含まれています。


4

k

あなたの場合、基本的に必要なことは次のとおりです。

  1. D
  2. DjDj
  3. を取得するためにそれを中央に配置します(つまり、行と列の平均を減算します)Dc
  4. 計算Sc=12Dc
  5. ScScSc
  6. Sc=VΛV
  7. n1バツ=VΛ1/2

n


説明する手順は、回答で言及したプリンシパル座標分析に他なりません。
ttnphns

手順5を例示してください。S行列要素から最後の(負の)固有値を減算すると、Sが半正定値になるのに役立たないようです。
ttnphns

@ttnphns:基本的にはPCAです。ただし、距離がメートル法である必要はありません。手順5の説明は、見つけられなかったため、残念でした。今では明らかですか?
-blubb

すべての固有値から負の固有値の和を減算した後、復元SマトリックスはS.これの対角要素からその合計を差し引くことと等価であるendeedなるS正の(半)明確な、しかし...
ttnphns

...しかし、この方法は、結果のユークリッドデータXが元の非類似度Dから非常に離れたユークリッド距離D_newを生成するという意味で非常に悪いです。したがって、ステップ5はお勧めしません。固有値を0にしてステップ7にスキップします。または、もう少し細かいアプローチ:負の固有値を0に設定し、正の固有値を合計して元の値(= trace(S))にし、ステップ7にスキップします。私に。
ttnphns

2

データをネットワークとして表示することもでき、利用可能な多くのネットワーククラスタリングアルゴリズムのいずれかを使用できます。このためには、おそらくエッジの重みにしきい値を適用し、距離を類似性に変換する必要があります。それは物事を行うための「統計」的な方法ではありませんが、クラスター分析は最初は不十分な問題であり、探索ツールとしてネットワーククラスタリングアルゴリズムは非常にうまく機能します。


2

文献でそれほど珍しい理由はわかりませんが、@ gungと@ttnphnsによって提案された解決策(最初にPrincipal Coordinates Analysisを使用してペアワイズ距離をユークリッド空間に投影します。たとえば、Rを使用する場合はこのパッケージを使用し、 K-meansを通常の方法で実行する)は簡単であり、特殊なアルゴリズムを必要としません。私は個人的に最適化フレームワークに埋め込まれたここでそれを使用し、それはかなりうまくいきました。


1

クラスタリングとMDSに関して、次のリソースをお勧めします。

これらのリファレンスは、バイナリデータと連続データの類似性と距離関数(近接度)のトピックもうまくカバーしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.