web-dev-qa-db-ja.com

距離に基づくクラスタリングアルゴリズム

だから、私は包装センターAを持っています。そして、nポイントがAに点在しています。それらを私と呼びましょう1、 私2 ... 私

Dと呼ばれる最大距離のしきい値があります。

私の仕事は、これらのnポイントを最大mのポイントのグループに分割することです。各グループはmポイントを超えることはできません。つまり、Aから始まり、特定のグループに属するすべてのポイントに行く人は、最適な距離を移動します。

たとえば、A-> i1 ->私4 ->私10 -> A <= D

上で説明したのはTSP問題です。現在、私が行ったことは、K-meansアルゴリズムを使用してそれらをクラスターに分割し、各グループがmポイントを超えないように手動でそれらをより多くのグループに分割することです。

この問題へのより良いアプローチはありますか?

要するに、私は次のようなクラスタリングアルゴリズムを探しています。

  1. 各クラスターは、特定のポイント数を超えることはできません。
  2. クラスタリングは距離(私の場合は緯度/経度)で発生します。
4
Sandeep Verma

https://en.wikipedia.org/wiki/K-means_clustering

これは大規模な研究分野です。つまり、セントロイドを使用するかmedoidsのみを使用するかを定義すると、アルゴリズムの複雑さが変わります。簡単な答えは、文書化された多くの方法があるということです。データがなければ、正しく意見を述べることは困難です。 MATLABまたは無料のOctaveで作成されたグラフから始めることができれば、適切な同様のアプローチが見つかるかもしれません。

オクターブは無料で、k-meansアルゴリズムが含まれています。

コンテキストのアプリケーション例が必要な場合、Kurzweilの最新の書籍「How To Create a Mind」が彼の音声認識クラスタリングについて説明したことを思い出します。

2
daemondave

別の形式のクラスタリングを試すこともできます: 凝集型階層クラスタリング

具体的には、凝集型階層的クラスタリングは、独自のクラスター内の各観測から始まります。その後、階層を上に移動すると、クラスターのペアがマージされます。

enter image description here

このクラスタリングアルゴリズムは、次の要件によく適合します。

各クラスターは特定のポイント数を超えることはできません

また、K平均クラスタリングはK(またはクラスターの数)の事前知識(または漠然とした考え)を必要としますが、階層型クラスターリングでは入力としてクラスターの数を必要としません。

すべての主要なML /科学ソフトウェアは、階層的クラスタリングを実装しています(例:Octave linkage function 、Mathematica Agglomerate function 、SciKit AgglomerativeClustering object ...)。

1
manlio

たぶん見てください https://en.wikipedia.org/wiki/Travelling_salesman_problem あなたが考慮したいと思うかもしれないいくつかのアルゴリズムを与えます。私はおそらく最近傍(NN)アルゴリズム(欲張りアルゴリズム)を選び、いくつかの異なる開始点をランダムに選択します。それを投げるd波がない場合はそうです。

0
andrew pate