7

私は現在、NTSB 航空事故データベースを使用していくつかの分析を行っています。このデータセットのほとんどの航空事故には、そのような出来事につながる要因を説明する原因記述があります。

ここでの私の目的の 1 つは、原因をグループ化することです。クラスタリングは、この種の問題を解決する実行可能な方法のようです。k-means クラスタリングを開始する前に、次のことを実行しました。

  1. ストップワードの削除、つまり、テキスト内のいくつかの一般的な機能的な単語を削除します
  2. テキスト ステミング。つまり、単語の接尾辞を削除し、必要に応じて用語を最も単純な形式に変換します。
  3. ドキュメントを TF-IDF ベクトルにベクトル化して、あまり一般的ではないがより有益な単語をスケールアップし、非常に一般的だがあまり有益でない単語を縮小しました
  4. ベクトルの次元を削減するために SVD を適用

これらの手順の後、k-means クラスタリングがベクトルに適用されます。1985 年 1 月から 1990 年 12 月までに発生したイベントを使用すると、クラスター数で次の結果が得られますk = 3

(注: Python と sklearn を使用して分析を行っています)

... some output omitted ... 
Clustering sparse data with KMeans(copy_x=True, init='k-means++', max_iter=100, n_clusters=3, n_init=1,
    n_jobs=1, precompute_distances='auto', random_state=None, tol=0.0001,
    verbose=True)
Initialization complete
Iteration  0, inertia 8449.657
Iteration  1, inertia 4640.331
Iteration  2, inertia 4590.204
Iteration  3, inertia 4562.378
Iteration  4, inertia 4554.392
Iteration  5, inertia 4548.837
Iteration  6, inertia 4541.422
Iteration  7, inertia 4538.966
Iteration  8, inertia 4538.545
Iteration  9, inertia 4538.392
Iteration 10, inertia 4538.328
Iteration 11, inertia 4538.310
Iteration 12, inertia 4538.290
Iteration 13, inertia 4538.280
Iteration 14, inertia 4538.275
Iteration 15, inertia 4538.271
Converged at iteration 15

Silhouette Coefficient: 0.037
Top terms per cluster:
**Cluster 0: fuel engin power loss undetermin exhaust reason failur pilot land**
**Cluster 1: pilot failur factor land condit improp accid flight contribute inadequ**
**Cluster 2: control maintain pilot failur direct aircraft airspe stall land adequ**

そして、次のようにデータのプロット グラフを生成しました。

k-means クラスタリングのプロット結果

結果は私には意味がないようです。すべてのクラスターに「パイロット」や「失敗」などの一般的な用語が含まれているのはなぜでしょうか。

私が考えることができる 1 つの可能性 (ただし、この場合に有効かどうかはわかりません) は、これらの一般的な用語を含むドキュメントが実際にはプロット グラフの中心に位置しているため、効率的にクラスター化することができないということです。右のクラスター。この問題は、クラスターの数を増やしても対処できないと思います。これを行ったばかりで、この問題が解決しないためです。

私が直面しているシナリオを引き起こす可能性のある他の要因があるかどうかを知りたいだけですか? より広い意味で、適切なクラスタリング アルゴリズムを使用しているか?

ありがとうございます。

4

1 に答える 1

6

悪いニュースの運び屋にはなりたくありませんが...

  1. クラスタリングは非常に悪い探索手法です。主に、明確なタスク指向の目的がなければ、クラスタリング手法は実際にはいくつかの数学的基準の最適化に焦点を当てており、達成したいこととはほとんど関係がありません。したがって、特に k-means は、クラスターの中心からクラスター内のすべての点までのユークリッド距離の最小化を探します。これは、達成したいタスクに関連していますか?通常、答えは「いいえ」ですが、最良の場合でも「わかりません」です。
  2. ドキュメントを単語の袋として表現すると、データが非常に一般的に見えるため、類似したオブジェクトを区別するための適切なアプローチではありません。このようなアプローチは、銃に関するテキストとホッケーに関するテキストを区別するために使用できますが、まったく同じドメインの専門的なテキストを区別することはできません (ここではそうであるようです)。
  3. 結局のところ、クラスタリングを実際に評価することはできません。これが最大の問題です。したがって、最適なクラスタリングを適合させる十分に確立された手法はありません。

それで、あなたの最後の質問に答えるために

私が直面しているシナリオを引き起こす可能性のある他の要因があるかどうかを知りたいだけですか?

そのような要因は何千もあります。人間の観点から見て合理的な、実際のクラスターをデータから見つけることは非常に困難です。クラスターを見つけることは非常に簡単です。なぜなら、すべてのクラスター化手法が何かを見つけるからです。しかし、ここで重要なことを見つけるには、ここでデータ全体を調査する必要があります。

より広い意味で、適切なクラスタリング アルゴリズムを使用しているか?

おそらくそうではありません.k-meansは単にユークリッド距離の内部クラスターの合計を最小化する方法であるため、ほとんどの現実のシナリオでは機能しません。

残念ながら、これは単に「どのアルゴリズムを使用するか」と尋ねるような問題ではありません。誰かがあなたに正確な解決策を提供します。

データを掘り下げて、次のことを理解する必要があります。

  • 表現方法 - tfidf は本当に良いですか? 語彙を前処理しましたか?無意味な言葉を削除?たぶん、現代の単語/文書表現学習に行くことを考えているのは悪いことですか?
  • データの構造 - 最適なモデルを見つけるには、データを視覚化し、調査し、統計分析を実行し、基礎となる指標を把握する必要があります。合理的なポイント配分はありますか?これらはガウスですか?ガウス混合?あなたのデータはまばらですか?
  • 専門知識を提供できますか?データセットの一部を自分で分割できますか? 半教師あり手法は、教師なし手法よりもはるかに明確に定義されているため、はるかに優れた結果が簡単に得られる可能性があります。
于 2016-04-07T19:15:57.000 に答える