このエンジンは、k-means 系の手法では実現が難しかった多クラスタのクラスタリングを行うための技術です。k-means 等では、k(=クラスタ)数が増えると急激に計算量が増えるという問題があり、多クラスタのクラスタリング問題への適用が難しいという問題がありました。
一方、階層型クラスタリングは多クラスタのクラスタリングは得意ではあるものの、計算量が膨大となり、大規模データへの適用が難しいという問題がありました。
本エンジンでは、これらの問題に対する解として、両手法の中間領域を埋める手法として開発しました。
本エンジンの特徴は以下の通りです。
データ数
特に制限はありません但し、処理はインメモリで行うため、データ数はメモリ使用量に強い影響を与えます。
メモリリッチな環境ならば問題ないのですが、そうでないならばメモリ量と相談しながらデータサイズを決定してください。
クラスタ数
100~10,000 クラスタを想定しています。
マルチスレッド
アルゴリズムとして並列化を強く意識しています。そのため、多数のスレッドが用意できる環境であれば、それだけ処理時間が短くなります。
但し、最大スレッド数は手動で定義する必要があります
密度補正
多次元空間中のデータのゆらぎはクラスタリングをする上で非常に深刻な問題となります。
本手法は、密度補正処理を含んでいるため、密度ゆらぎがあってもクラスタリングの結果に強い影響を与えることはありません。
多次元のベクトルデータが空間内に均等に存在しているというのは、実際にはなかなか難しい条件です。多くのクラスタリング手法では、この密度の変化を吸収するための処理を別途実行する必要があります。写像などを行い、できるだけ密度をそろえることが、良いクラスタリングを行うための条件でもあります。
本手法では、この密度のゆらぎを前提とした手法となっています。手法の内部に密度のゆらぎを打ち消す処理が入っているため、例え密度の不均衡があったとしても極端に小さいクラスタや極端に大きいクラスタが出来ないようになっています。これは、LLM 等で扱うベクトルデータを対象としたクラスタリングで強い効果を発揮します。
現在、Machine Learning Clustering Tool として公開しています。Windows用のアプリケーションとして、Microsoft Store からダウンロード可能です。
このプログラムで簡単に実験することが出来ますので、興味がおありでしたらダウンロードして実行してみてください。