11

これが私のシナリオです。さまざまな場所と時間に発生する一連のイベントを考えてみましょう。例として、嵐の最中に都市で落雷を記録した高所の人を考えてみてください。私の目的では、稲妻は瞬間的で、特定の場所 (高層ビルなど) にしか当たらない。また、落雷ごとに固有の ID があり、後でその落雷を参照できると想像してください。この都市にはそのような場所が約 100,000 あります (ご想像のとおり、これは、私の現在の雇用主が実際の問題に敏感であるための例えです)。

フェーズ 1 では、入力は (攻撃 ID、攻撃時間、攻撃場所) タプルのセットです。目的の出力は、短時間内に同じ場所にヒットした複数のイベントのクラスターのセットです。クラスターの数は事前にわかりません (そのため、k-means はここではあまり役に立ちません)。「短い」と見なされているものは、特定のクラスタリング試行に対して事前定義できます。つまり、アルゴリズムを実行するよりも、たとえば 3 分に設定できます。後で 4 分または 10 分で試してください。おそらく、アルゴリズムがクラスタリングの「強さ」を決定し、特定の入力に対して、「短い」に特定の値を使用することによって最もコンパクトなクラスタリングが達成されることを推奨するのが良いかもしれませんが、これは最初は必要ありません。

フェーズ 2 では、ストライクの振幅 (つまり、実数) を考慮して、短時間内に同様の振幅を持つクラスターを探します。

データ クラスタリングに関する回答をグーグルで調べて確認しました。情報は少し当惑します (以下は、私が役に立つと思ったリンクのリストです)。AFAIK、k-means、および関連するアルゴリズムは、クラスターの数をアプリオリに指定する必要があるため、役に立ちません。私は誰かに私の問題を解決するよう求めているわけではありません (私はそれを解決するのが好きです) が、時間を節約するためにデータ クラスタリング アルゴリズムの大規模な世界で何らかのオリエンテーションが役立ちます。具体的には、クラスタ数が不明な場合に適したクラスタリング アルゴリズムはどれか。

編集:イベントは常に発生しますが、場所ごとにクラスター化するだけでよいという意味で、場所は無関係であることに気付きました。したがって、各場所には独自の時系列のイベントがあり、独立して分析できます。

いくつかの技術的な詳細:
- データセットはそれほど大きくないため、すべてをメモリに収めることができます。
- 並列処理はあると便利ですが、必須ではありません。私は 4 コアのマシンしか持っていませんが、MapReduce と Hadoop は多すぎます。
- 私がよく知っている言語は Java です。私はまだ R を使用したことがなく、そのための学習曲線は、与えられた時間に対しておそらく多すぎるでしょう。とにかく暇つぶしに見てみます。
- とりあえず、ツールを使用して分析を実行しても問題ありません。コードだけを作成する必要はありません。おそらくWekaが提案されるので、これについて言及しています。
- 視覚化が役立ちます。データセットはメモリに収まらないほど大きいため、ビジュアライゼーションは少なくともズームとパンをサポートする必要があります。明確にするために: 視覚化 GUI を構築する必要はありません。ツールで生成された結果を確認するために使用する優れた機能です。

ありがとうございました。私が役立つと思った質問は次のとおりです。数値のクラスターの中心を見つける方法は? 統計の問題?, Paper Boys のクラスタリング アルゴリズム, Java クラスタリング ライブラリ,オブジェクトをクラスタ化する方法 (座標なし) ,ドットの「クラスタ」を検出するアルゴリズム

4

3 に答える 3

2

Mean Shift Clusteringを調べることをお勧めします。平均シフト クラスタリングの背後にある基本的な考え方は、データを取得してカーネル密度推定を実行し、密度推定でモードを見つけることです。モードに対するデータ ポイントの収束領域がクラスタを定義します。

平均シフト クラスタリングの優れた点は、クラスターの数を事前に指定する必要がないことです。

私は Weka を使用したことがないので、平均シフト クラスタリングがあるかどうかはわかりません。ただし、MATLAB を使用している場合は、それを行うためのツールボックス ( KDE ツールボックス) があります。それが役立つことを願っています。

于 2010-02-22T02:33:14.783 に答える
0

手遅れですが、それでも追加します:

Rにはパッケージがあり、クラスターを提供するfpcメソッドがあります。pamk()を使用pamk()すると、クラスターの数を最初に言及する必要はありません。入力データのクラスター数を自動的に計算します。

于 2015-11-08T04:50:23.097 に答える