テキストのクラスタリングをどのように評価しますか?


8

テキストクラスタリングモデルの評価に使用できるメトリックは何ですか?私が使用しましたtf-idf+ k-meanstf-idf+ hierarchical clusteringdoc2vec+ k-means (metric is cosine similarity)doc2vec+ hierarchical clustering (metric is cosine similarity)。どのモデルが最適かを判断するにはどうすればよいですか?

回答:


6

このペーパーをチェックしてください。また、使用するクラスターの数に関する質問にも対応します。Rパッケージmclustには、さまざまなクラスターモデル/クラスター数を試し、ベイズ推論基準(BIC)をプロットするルーチンがあります。(ここで素晴らしいビネット)。これは一般的な方法です。つまり、ドメイン/データ固有でなくてもできることです。(時間とデータがある場合は、常にドメイン固有であることをお勧めします。)

チャートは、ルッカスクルッカのビネットからのものです。MClustは14の異なるクラスタリングアルゴリズム(異なるシンボルで表されます)を試行し、クラスターの数を1からいくつかのデフォルト値に増やします。毎回BICを検出します。通常、最高のBICが最良の選択です。この方法論は、独自の安定したクラスタリングアルゴリズムに適用できます。

ここに画像の説明を入力してください


2

シルエットスコアを確認する

i番目のデータポイントの数式

(b(i) - a(i)) / max(a(i),b(i))

ここで、b(i) ->最も近い隣接クラスターとの相違点

a(i) ->クラスタ内のポイント間の非類似性

これにより、スコアは-1から+1の間になります。

解釈

+1は非常に良い適合を意味します

-1は誤分類を意味します[別のクラスターに属している必要があります]

各データポイントのシルエットスコアを計算した後、クラスター数の選択について電話をかけることができます。

コード例

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples, silhouette_score

X, y = make_blobs(n_samples=500,
                  n_features=2,
                  centers=4,
                  cluster_std=1,
                  center_box=(-10.0, 10.0),
                  shuffle=True,
                  random_state=1)  # For reproducibility

range_n_clusters = [2, 3, 4, 5, 6]

for n_clusters in range_n_clusters:
    # Initialize the clusterer with n_clusters value and a random generator
    # seed of 10 for reproducibility.
    clusterer = KMeans(n_clusters=n_clusters, random_state=10)
    cluster_labels = clusterer.fit_predict(X)

    # The silhouette_score gives the average value for all the samples.
    # This gives a perspective into the density and separation of the formed
    # clusters
    silhouette_avg = silhouette_score(X, cluster_labels)
    print("For n_clusters =", n_clusters,
          "The average silhouette_score is :", silhouette_avg)

    # Compute the silhouette scores for each sample
    sample_silhouette_values = silhouette_samples(X, cluster_labels)

0

クラスタリングの品質測定は非常に便利です。残念ながら、その測定値を計算することは困難です-おそらくAIハードです。非常に複雑なものを1つの数に削減しようとしています。

AIが難しい場合は、クラスタリングを何らかの方法で評価するようにユーザーに依頼できます。これは理想的ではなく、スケーリングされませんが、希望するものに近いものを表す単一の数値になります。


これは正しいとは思いません。よく研究されたテキストドキュメントをモデルにフィードするだけです。次に、クラスターのメンバーシップを私の期待と比較します。
HelloWorld

うん。「あなたの」期待を使用することは、メジャーがAIハードであるときに行うことです。他の人の期待を含めると、より良い測定結果が得られます。
Ray

考えがある。分類子をトレーニングして、同じ数のクラスターを持つ異なるモデルのラベルに適合させることができます。より良いaccurancy_score、より良いモデル。
–ТолкачёвИван2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.