4

python と scikits.learn を使用して、使用する最適なクラスタ化手法について提案をお願いします。私たちのデータは、さまざまな基質上の細胞の代謝活性を経時的に測定する表現型マイクロアレイから得られます。出力は一連のシグモイド曲線であり、シグモイド関数へのフィッティングを通じて一連の曲線パラメーターを抽出します。

固定数のクラスターを使用して、クラスター化によってこのアクティビティ曲線を「ランク付け」したいと考えています。今のところ、(init='random', k=10, n_init=100, max_iter=1000) で、パッケージによって提供される k-means アルゴリズムを使用しています。入力は、n_samples と各サンプルの 5 つのパラメーターを含む行列です。サンプル数はさまざまですが、通常は数千 (つまり 5,000) 程度です。クラスタリングは効率的で効果的だと思われますが、さまざまな方法やクラスタリングの品質を評価するための最良の方法についての提案をいただければ幸いです。

ここに役立つかもしれないいくつかの図があります:

  • 入力パラメーターの散布図 (それらのいくつかは非常に相関しています)、単一サンプルの色は、割り当てられたクラスターに関連しています。 入力パラメータの散布図

  • 入力パラメータが抽出されたシグモイド曲線。その色は、割り当てられたクラスタに関連しています ここに画像の説明を入力

編集

いくつかのエルボー プロットの下に、各クラスター数のシルエット スコアがあります。 クラスタリング統計

4

2 に答える 2

6

プロットの縞模様に気づきましたか?

これは、データを十分に正規化していないことを示しています。

「面積」と「高さ」は相関性が高く、おそらく最大規模です。すべてのクラスタリングはこの軸で発生しました。

あなたは絶対にしなければなりません:

  • 慎重な前処理を行う
  • 距離関数が (コンピューターだけでなく、あなたにとって) 意味のある類似性の概念を生成することを確認してください
  • 結果の現実を確認し、たとえば単一の属性によって決定される、単純すぎないことを確認します

やみくもに数字に従わないでください。K-means は、与えられたデータに関係なく、喜んで k 個のクラスターを生成します。いくつかの数を最適化するだけです。結果が有用であることを確認し、その意味的な意味を分析するのはあなた次第です。それは数学的には局所最適であっても、あなたのタスクには無意味である可能性があります。

于 2013-06-11T20:51:14.410 に答える
5

5000 サンプルの場合、すべての方法が問題なく機能するはずです。ここ はかなり良い概要です。考慮すべきことの 1 つは、クラスターの数を固定するかどうかです。それに応じたクラスタリング アルゴリズムの可能な選択肢については、表を参照してください。

スペクトル クラスタリングはかなり良い方法だと思います。たとえば、RBF カーネルと一緒に使用できます。ただし、ガンマを調整する必要があり、接続を制限する可能性があります。

n_clusters を必要としない選択肢は、WARD と DBSCAN であり、これも堅実な選択肢です。また、scikit-learn ドキュメントでリンクが見つからない私の個人的な意見のこのチャートを参照することもできます...

結果を判断するため: いかなる種類のグラウンド トゥルースも持っていない場合 (これが探索的なものである場合、これはないと思います) [まだ] (scikit-learn で) 良い尺度はありません。

監視されていない尺度が 1 つあります。シルエット スコアですが、k-means によって検出された非常にコンパクトなクラスターを優先することがわかっています。sklearn にはまだ実装されていませんが、役立つクラスターの安定性対策があります。

私の最善の策は、データを検査してクラスタリングを視覚化する良い方法を見つけることです。PCA を試して、多様体学習手法について考えたことはありますか?

于 2013-06-11T15:53:26.410 に答える