1Dデータのクラスタリング


16

データセットがあり、1つの変数のみに基づいてそのデータにクラスターを作成します(欠損値はありません)。その1つの変数に基づいて3つのクラスターを作成します。

使用するクラスタリングアルゴリズム、k-means、EM、DBSCANなど

私の主な質問は、どのような状況でEMよりもk-meansを使用すべきか、k-meansよりもEMを使用すべきかということです。


1
EMアルゴリズムは、欠損データを使用して最尤推定を行うための汎用ツールです。「クラスタリングアルゴリズム」について詳しく説明していただけますか?
マクロ

wekaをツールとして使用していますが、クラスタリングアルゴリズムでは、EMがアルゴリズムとしてリストされています。不十分な質問で申し訳ありませんが、データマイニングは初めてです。
アリ

私は、EMアルゴリズムが潜在変数モデル(「欠損データ」と考えることができる)の最尤推定を行うために使用され、潜在変数がクラスタリングのモデル化によく使用されることを知っています。おそらくこれが意味するものです。
マクロ

@macro:あなたがここを見てしたいことがあります。stat.washington.edu/mclust開始のために。
user603

3
クラスタリングの目的は何ですか? ほとんどの統計的な質問と同様に、複数の答えがあり、目的を知ることは、適切な質問または良い質問を選択するための不可欠なガイドです。
whuber

回答:


11

K-meansアルゴリズムとEMアルゴリズムは、1Dクラスタリングで非常によく似ています。

K-meansでは、平均の位置の推測から始めて、最も近い平均を持つクラスターに各ポイントを割り当てます。次に、現在のポイントの割り当てに基づいて平均(および分散)を再計算し、ポイントの割り当てを更新してから更新しますその手段 ...

EMでは、平均がどこにあるかを推測することから始めて、割り当ての期待値(基本的に各クラスター内にある各ポイントの確率)を計算し、期待値を使用して推定平均(および分散)を更新します重みとして、次に新しい期待値を計算し、次に新しい平均を計算します...

主な違いは、K-meansのクラスターへのポイントの割り当ては、すべてまたはゼロであり、EMはグループメンバーシップの割合/確率を提供することです(1つのポイントは、グループAに存在する確率80%、18%の確率を持つと見なされる場合があります)グループBに属していること、およびグループCにいる確率2%)。グループ間に多くの分離がある場合、2つの方法は非常に類似した結果をもたらします。しかし、かなりの量のオーバーラップがある場合、EMはおそらくより意味のある結果を提供します(分散/標準偏差に関心がある場合はさらに多くなります)。ただし、パラメーターを気にせずにグループメンバーシップを割り当てることだけが必要な場合は、おそらくK-meansの方が簡単です。

両方を行って、答えがどれほど違うのか見てみましょう。それらが類似している場合は、より単純なものを使用し、異なる場合は、グループ化をデータおよび外部の知識と比較することを決定します。


あなたの投稿が助けてくれたおかげで、私は両方を適用し、EMはk-meanよりも優れたクラスターを生成したようです。(主に私が持っているデータは連続的で、ギャップがないためだと思います)。1Dデータしか持っていないので、少し混乱していますが、おそらくデータを分類するためにビニングを行う必要があります。どう思いますか?パラメーターとはどういう意味ですか?インスタンスの属性を参照していますか?ありがとうアリ
アリ

Hm EMだけでは不十分のようです。混合物の基礎となる分布の分布に関する仮定が必要です。
トムカ

2

EMは、結果に関してk-meansよりも優れています。

ただし、K-meansの実行時間は高速です。

標準偏差/共分散行列がほぼ等しい場合、同様の結果が得られます。これが正しいと思われる場合は、k-meansを使用してください。

DBSCANは、データが非ガウスの場合に使用されます。1次元データを使用している場合、ガウス近似は通常1次元で有効であるため、これは一般に適用できません。


0

別の簡単な方法は、基本的に1D配列の並べ替えを使用することです。つまり、各ポイントを反復処理し、正方向と負方向の両方で最小距離にある値を取得します。例えば:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

配る:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

どのポイント、特定のポイントに近いアイテムは基本的にそのグループの下にあります。この手法で熟考する唯一のものは変数kです。これはクラスターの固定サイズです:-)。


-2

変数が1つだけの場合、クラスタリングの必要はありません。変数の分布に基づいて、観測を簡単にグループ化できます。

または、ここでいくつかの点が欠けていますか?


5
変数の分布に基づいて観測値をグループ化する方法の具体例を教えてください。
アリ

@ composer314:ヒストグラム付き?
ニコ

1
申し訳ありませんが、まだフォローしていません。ヒストグラムを使用して関連する観測をグループ化するにはどうすればよいですか?(私が尋ねるかもしれない質問は、実際にどのようにヒストグラム内で塊を見つけるのでしょうか?これはスペクトルピークのピッキングに似ていますか?)
アリ

5
@composerヒストグラムを使用したり、データを滑らかにしたカーネルを使用したりすることは、通常、「簡単な」クラスタリング方法ではありません。この方法を使用する場合は、有限混合モデルを近似する必要があります。ヒストグラムのカジュアルビューが示唆するものだけが必要な場合は、K-means(地図作成者の間で一般的なJenksの方法としても知られています)を使用します。
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.