クラスタリング(特に文字列クラスタリング)はどのように機能しますか?質問する

クラスタリング(特に文字列クラスタリング)はどのように機能しますか?質問する

類似したデータをグループ化するクラスタリングについて聞きました。文字列の特定のケースでそれがどのように機能するかを知りたいです。

100,000 語以上の異なる単語を含む表があります。

いくつかの違いがある同じ単語を識別したい (例: house, house!!, hooouse, HoUse, @house, "house", etc...)。

類似性を識別し、各単語をクラスターにグループ化するには何が必要ですか? これにはどのアルゴリズムがより推奨されますか?

ベストアンサー1

クラスタリングとは何かを理解するには、地図を想像してください。多くの異なるオブジェクト (家など) が見えます。オブジェクトの中には互いに近いものもあれば、遠いものもあります。これに基づいて、すべてのオブジェクトをグループ (都市など) に分割できます。クラスタリング アルゴリズムはまさにこれを実現します。つまり、事前にグループの境界を指定せずにデータをグループに分割できます。

すべてのクラスタリングアルゴリズムは、距離2 つのオブジェクト間の距離 (または尤度) です。地図上では 2 つの家の間の通常の距離ですが、多次元空間ではユークリッド距離になることがあります (実際、地図上の 2 つの家の間の距離もユークリッド距離です)。文字列の比較には別の方法を使用する必要があります。ここでは 2 つの良い選択肢があります。ハミングそしてレーベンシュタイン距離あなたの場合レーベンシュタイン距離より望ましい場合 (ハミング距離は同じサイズの文字列でのみ機能します)。

ここで、既存のクラスタリング アルゴリズムの 1 つを使用できます。 アルゴリズムは数多くありますが、すべてがニーズに合うわけではありません。 たとえば、すでにここで説明した純粋な k-means は、最初にグループ数を見つける必要があり、文字列の大きな辞書ではその数が 100、200、500、10000 になる可能性があり、その数はわからないため、ほとんど役に立ちません。 そのため、他のアルゴリズムの方が適している場合があります。

その一つは期待最大化アルゴリズム。その利点は、クラスターの数を自動的に見つけることができることです。しかし、実際には他のアルゴリズムよりも精度の低い結果が得られることが多いため、EM 上の k-meansつまり、最初に EM を使用してクラスターの数とその中心を見つけ、次に k-means を使用して結果を調整します。

あなたのタスクに適しているかもしれないアルゴリズムの別の分野は、階層的クラスタリングこの場合のクラスター分析の結果は、独立したグループの集合ではなく、ツリー (階層) であり、いくつかの小さなクラスターが 1 つの大きなクラスターにグループ化され、すべてのクラスターが最終的に 1 つの大きなクラスターの一部になります。この場合、すべての単語がある程度まで互いに類似していることを意味します。

おすすめ記事