データベースから1Dデータの異なるクラスターを決定する


24

異なるノード間のデータ転送のデータベーステーブルがあります。これは巨大なデータベースです(約4,000万回の転送)。属性の1つは、0バイトから2テラバイトの範囲のバイト数(nbytes)転送です。n個のクラスターを、k個のクラスターの一部のx1転送がk1クラスターに属し、x2トランスファーがk2に属するようにクラスター化したいと思います。

私が使用した用語から、あなたは私が何をしようとしていたかを推測したかもしれません:K-means。nbytesが私が気にする唯一の機能なので、これは1dデータです。これとは異なる方法を探していたとき、EMが非クラスタリングアプローチとともに数回言及されているのを見ました。この問題にアプローチする方法についてのあなたの見解を知りたい(具体的にはクラスター化するかしないか)。

ありがとう!


「x1転送」、「x2転送」などとは何ですか?「転送タイプ」は2番目の変数ですか?
ピーターフロム-モニカの復職

x1転送は、これらの500個の転送が何らかの値の転送サイズを持っていると言うための単なる方法です(これはk-meansでのそのクラスターの平均です)。
ショーン

5
私はクラスタリングの専門家ではありませんが、非常に多くのデータと1次元だけで、異なる帯域幅を使用していくつかのカーネル密度プロットを作成し、見つかったモード/ピークの数と結果が次のように見えるかどうかを見ることができますか?役に立つでしょう。
グング-モニカの復職

1
クラスター化するかどうかを尋ねました。クラスタリングの目標は何ですか?クラスターを他の目的に使用しますか、またはこれは理論的に興味深いですか?
ピーターフロム-モニカの復職

テーブルのその他の属性には、ユーザー名、開始日、終了日があります。私の希望は、転送サイズに基づいて転送をクラスタリングすることです。特定の転送の他の属性を参照して、誰がどの月にどれだけ転送しているかを確認できます。この観察で何をするかは、まだわかりません。しかし、それは私が行くようなものです。
ショーン

回答:


43

1次元データでは、クラスター分析を使用しないでください。

通常、クラスター分析は多変量手法です。または、別の言い方をすれば、1次元データ(完全に順序付けられている)には、はるかに優れた手法があります。ここでk-meansおよび同様の手法を使用することは、1-dの場合に実際に最適化するのに十分な努力を払わない限り、まったく無駄です。

例を挙げると、k-meansの場合、k個のランダムオブジェクトを初期シードとして使用するのが一般的です。1次元データの場合、データを1回並べ替えてから適切な分位数(1 / 2k、3 / 2k、5 / 2kなど)を使用するだけで、この開始点から最適化するのはかなり簡単です。ただし、2Dデータを完全に並べ替えることはできません。そして、グリッドでは、空のセルが存在する可能性があります。

また、クラスターとは呼びません。私はそれをインターバルと呼びます。本当にやりたいことは、間隔の境界を最適化することです。k-meansを実行すると、各オブジェクトを別のクラスターに移動する必要があるかどうかがテストされます。1Dでは意味がありません。間隔の境界にあるオブジェクトのみをチェックする必要があります。そこには〜2kのオブジェクトしかないため、それは明らかにはるかに高速です。彼らがまだ他の間隔を好まない場合、より多くの中央オブジェクトもそうではありません。

たとえば、Jenks Natural Breaks最適化などの手法を検討することをお勧めします。

または、カーネル密度の推定を行い、密度の局所的な最小値を探してそこで分割することができます。良い点は、このためにkを指定する必要がないことです!

PS検索機能を使用してください。逃した1次元データクラスタリングに関するいくつかの質問を次に示します。


分位点は必ずしもクラスターと一致するとは限りません。1d分布には3つの自然なクラスターがあり、2つはそれぞれデータの10%を保持し、最後の分布はデータの80%を含みます。ですから、ここでクラスタ化することは可能だと思いますが、種を賢く選ぶなどして他のアイデアを使って実行を最適化することは理にかなっています。
ビット単位

変位値は、おそらく最適化のための良い種点であり、それは私が言及していたものでした。また、1次元で何ができるかを示す例を示しますが、2次元ではうまく機能しません。
アノニムース

クォンタイルをシードとして使用することは一見の価値があると思いますが、ランダムな初期化をいくつか試してみます(たとえば、私が与えたようなもの)。いずれにせよ、最良の方法は、ヒストグラム/密度プロットを見て、手動でシードを選択し、クラスタリングで最適化することです。それはすぐに優れたソリューションに収束します。
ビット単位

3
Jenks 1Dのk-meansです。
whuber

1
@whuberは数学的にはそうですが、彼がデータを注文できることを十分に活用してくれたらいいと思います。1次元データでk-meansを実行するためにロイドアプローチを使用する場合、スキップできる多くの計算を実行しているため、愚かです。そして、ほとんどの人にとって、k-meansはロイドです。また、一部の人々は、不必要な再計算を避けたいと考えています。
アノニムース

1

クラスター化する必要があるのか​​、それともクラスター化にどの方法を使用するのかという質問はありますか?

クラスタリングする必要があるかどうかについては、データを自動的にパーティション分割するかどうかによって異なります(たとえば、このパーティション分割を複数回繰り返したい場合)。これを1回だけ行う場合は、コメントで提案されているように、値の分布のヒストグラムを見て、目で分割するだけです。とにかくデータを目で見ることをお勧めします。これは、必要なクラスターの数と、クラスタリングが「機能した」かどうかを判断するのに役立つからです。

クラスタリングのタイプに関して、データに「実際の」クラスターがある場合、k-meansは適切です。ヒストグラムにクラスターが表示されない場合、データ範囲を分割すると有効なクラスターが得られるため(または、kmeansのランダムな開始の場合は、異なるクラスターが得られるため、とにかくクラスター化する意味はありません)各実行)。


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