2

以下のデータセットにK-meansアルゴリズムを実装しようとしています.2つの数値属性間の距離を計算するのは簡単ですが、2つの文字列間の距離を計算する方法と、すべての距離を合計する方法(つまり文字列属性間の距離と数値属性間の距離。) 親切にアドバイスしてください。ありがとうございます。

4

2 に答える 2

6

K-means はユークリッド距離用に設計されています。任意の他の距離関数をプラグインすることはできません。これにより、k-means が収束しなくなる可能性があります。

必要な特性は、平均が分散を最小化する必要があるということです。このプロパティを保証できない場合 (文字列の意味は何ですか?)、保証された収束が失われます。

技術的には、k-means はユークリッド距離にも基づいていませんが、分散を最小限に抑えます。これはたまたまユークリッド距離の 2 乗と同じになります。これらの正方形を最小化すると、ユークリッド距離も最小化されます。しかし、アルゴリズムが実際に最小化を目指しているのはVar(Attribute 1, Cluster 1) + Var(Attribute 2, Cluster 1) + ... + Var(Attribute n, Cluster k).

平均の代わりに medoid を使用することで、平均を計算する必要がなくなり、私の知る限り、任意の距離に対して収束を保証できる k-medians を調べることもできます。

ただし、通常は距離ベースでもあるさまざまな密度ベースのクラスタリングアルゴリズムを含む、真の距離ベースのアルゴリズムを調べることをお勧めします。

于 2012-11-23T08:43:32.447 に答える
0

文字列間の距離を計算するには、レーベンシュタイン距離(別名編集距離) を使用できます。

文字列属性と数値属性の間の値を正規化するために、属性をパーセンテージで表すことができます。属性の各タイプの最小値と最大値を見つけてから、特定のデータ インスタンスについて、それぞれの範囲内のパーセンテージを計算します。

于 2012-11-22T19:16:55.297 に答える