問題タブ [elki]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cluster-analysis - ELKI DBSCAN の入力として Java 配列を渡す
Java コードを使用して DBSCAN に ELKI を使用することができましたが、他のどのツールよりも驚くほど高速です。これまで、私は CSV ファイルを操作し、以下を使用してそれを入力として与えていました。
CSV ファイルの代わりに (緯度、経度、タイムスタンプ) の配列を入力として渡す方法を知りたいです。私はそれを理解することができません。
cluster-analysis - ELKI - k-means クラスタリング。
コマンド ラインで ELKI k-means クラスタリングを実行するのが好きです。
Rプログラミングに比べて実行時間が短すぎるようです。R で k-means クラスタリングを実行しようとしましたが、約 100 秒かかりました。また、k=5、k=10 などでも変化はありません。
file.tsv
60,000 行 25 列あります。
出力は"It took 5 seconds"
このケースk=10
も"It took 5 seconds"
です。
クラスタ サイズに変化がないのはなぜですか? コードに問題はありますか?
java - ELKI Maven OPTICS
ELKI ( http://elki.dbs.ifi.lmu.de/#GettingELKI:DownloadandCitationPolicy ) を使用しようとしていますが、Maven の依存関係が見つかりません。どこで見つけられるか知っている人はいますか?
OPTICSXi の実装でいくつかの実験を行いたいのですが、非常に難しいと感じています。誰かアドバイスをくれませんか?リンク?私を始めるための何か?これは使用するのに適した OPTICS 実装ですか?
これらのリンクを見つけました: ELKI で OPTICS アルゴリズムを実行 する Weka の DBSCAN を使用してインスタンスをクラスター化する方法は? しかし、彼らは本当に私を助けません..
cluster-analysis - OPTICSxi クラスタリングの結果の解釈
都市のユーザー生成データなど、密度が変化する領域でクラスターを検出することに興味があり、そのためにOPTICSアルゴリズムを採用しました。
DBSCANとは異なり、OPTICS アルゴリズムは厳密なクラスター パーティションを生成しませんが、データベースの順序付けを拡張します。クラスター パーティションを生成するために、OPTICSxi を使用します。これは、OPTICS の出力に基づいて分類を生成する別のアルゴリズムです。OPTICS の出力からクラスター パーティションを抽出できるライブラリはほとんどなく、ELKIの OPTICSxi 実装はその 1 つです。
DBSCAN の結果をどのように解釈するかは、私には非常に明確です (ただし、「意味のある」グローバル パラメータを設定するのはそれほど簡単ではありません)。DBSCAN は、面積あたりのポイント数 (minpts/epsilon) で表される密度によって特徴付けられるクラスターの「プロトタイプ」を検出します。OPTICSxi の結果は、解釈が少し難しいようです。
OPTICSxi の出力で時々検出する現象が 2 つありますが、説明できません。1 つは、マップの一部をリンクする「スパイク」クラスターの出現です。それらは非常に少数のポイントで構成されているように見え、アルゴリズムがそれらを同じクラスターにグループ化する方法を理解していないため、説明できません。それらは本当に密度変化の「回廊」を表しているのでしょうか? 基礎となるデータを見ると、そのようには見えません。これらの「スパイク」は、次の画像で確認できます。
私が説明できないもう 1 つの現象は、同じ階層レベルの「重複する」クラスターが存在する場合があるという事実です。OPTICSxi は、データベース (樹形図など) の OPTICS 順序付けに基づいており、そのダイアグラムには繰り返しポイントはありません。
これは階層的クラスタリングであるため、下位レベルのクラスターには上位レベルのクラスターが含まれていると見なし、凸包を構築するときにその考えが適用されます。ただし、同じ階層レベルで他のクラスターと交差するクラスターを持つことの正当性はわかりません。これは、実際には、いくつかのポイントが二重のクラスター「メンバーシップ」を持つことを意味します。以下の画像では、同じ階層レベル (0) を持ついくつかの交差するクラスターを見ることができます。
最後に、私があなたに残しておきたい最も重要な考え/質問は、OPTICSxi クラスタリング分類で何が見られると予想されるかということです。この問題は、OPTICSxi をパラメータ化するタスクと密接に関連しています。
特定のクラスター問題に対して OPTICSxi を実行した研究はほとんど見られないため、最適なクラスター分類が何であるかを見つけるのに苦労しています。つまり、意味のある/有用な結果を提供し、DBSCAN クラスタリングに何らかの価値を追加できるものです。その質問に答えるために、さまざまなパラメーターの組み合わせで OPTICSxi を何度も実行し、以下で説明する 3 つを選択しました。
この実行では、大きな値のイプシロン (2Km) を使用しました。この値の意味は、大きなクラスター (最大 2Km) を受け入れることです。アルゴリズムはクラスターを「マージ」するため、非常に大きなクラスターになり、ほぼ確実に密度が低くなります。私はこの出力が好きです。なぜなら、それは分類の階層構造を明らかにするからです。また、実際には、OPTICS の宣伝されている「強み」である、異なるパラメーターの組み合わせ (異なる密度) を使用して DBSCAN をいくつか実行したことを思い出させます。前に述べたように、クラスターが小さいほど、階層スケールのレベルが高くなり、密度が高くなります。
この実行では、「コントラスト」パラメーターが前回の実行と同じであっても、多数のクラスターが見られます。これは主に、少数の minpts を選択したためです。これにより、少数のポイントを持つクラスターを受け入れることが確立されました。この場合のイプシロンは短いため、これらの大きなクラスターがマップの大部分を占めることはありません。この出力は、前の出力ほど興味深いものではないと思います。主な理由は、階層構造を持っていても、同じレベルに多くのクラスターがあり、それらの多くが交差しているためです。解釈的には先ほどと似た全体的な「形」が見えますが、実際には「ノイズ」として見逃されやすい小さなクラスターがたくさん散らばっています。
この実行では、minpts が大きいことを除いて、前の実行と同様のパラメーターの選択があります。その結果、検出されるクラスターが少なくなり、重なりが少なくなるだけでなく、ほとんど同じレベルになります。
DBSCAN に価値を付加する観点から、最初のパラメーターの組み合わせを選択します。これは、データの階層図を提供し、どの領域がより密度が高いかを明確に明らかにするためです。パラメータの最後の組み合わせである私見は、調査地域全体で同様のクラスターを見つけているため、密度のグローバル分布のアイデアを提供できません。私は他の意見を読むことに興味があります。
cluster-analysis - ELKI の EM クラスタリングでデルタ値を選択する方法
EM クラスタリングのデルタの値は何を選択する必要がありますか?
さまざまなデルタ値に対してさまざまな測定値が得られます。
java - ELKI でカスタム距離をプラグインする方法は?
ELKI ドキュメント ( http://elki.dbs.ifi.lmu.de/wiki/Tutorial/DistanceFunctions ) のチュートリアルを既に読みました。
残念ながら、生成された .class を MiniGUI (または提供された .jar の bash スクリプト) にプラグインする方法を把握していません。それはどのように行うことができますか?
Ps: 絶対にばかげているように聞こえますが、クラス名を「入力」しようとすると、提案されているように、「次のパラメーターを処理できませんでした: HammingDistance」などのエラーが表示されます。
performance - R*-Tree を使用した ELKI DBSCAN
ELKI ライブラリを使用して DBSCAN クラスタリング テスト アプリケーションを実装しようとしています。私のデータセットは 6 次元で、約 100.000 個のオブジェクトで構成されています。
コード内で R*-Tree ELKI 最適化を使用しようとしましたが、コードをベンチマークすると、まだ O(n^2) で動作しているようです。
これは、アプリケーション内で使用するコードです。
上記のコードを実行すると、次の結果が得られます。
時間は、dbscan.run(db) の周りで単純な System.currentTimeMillis() を使用してベンチマークされます。時間の列を見ると、n^2 のような傾向であり、nlog(n) のような傾向ではないことがわかりますが、R*-Tree 最適化で ELKI DBSCAN を使用するために何が欠けているのか理解できません。
助けや提案をありがとう。