データセットでクラスター分析を使用して同様のケースをグループ化する場合、多数のクラスタリング手法と距離の測定値から選択する必要があります。場合によっては、1つの選択が他の選択に影響を与える可能性がありますが、多くの方法の組み合わせが可能です。
誰もがさまざまなクラスタリングアルゴリズム/方法と距離測定の選択方法に関する推奨事項を持っていますか?これは、変数の性質(カテゴリまたは数値など)およびクラスタリングの問題とどのように関連していますか?最適なテクニックはありますか?
データセットでクラスター分析を使用して同様のケースをグループ化する場合、多数のクラスタリング手法と距離の測定値から選択する必要があります。場合によっては、1つの選択が他の選択に影響を与える可能性がありますが、多くの方法の組み合わせが可能です。
誰もがさまざまなクラスタリングアルゴリズム/方法と距離測定の選択方法に関する推奨事項を持っていますか?これは、変数の性質(カテゴリまたは数値など)およびクラスタリングの問題とどのように関連していますか?最適なテクニックはありますか?
回答:
同じ方法の中でも、階層的クラスタリングでユークリッド対平方ユークリッドを使用する場合など、同じ(非)類似性を表す距離の選択によって異なる結果が得られる可能性があるため、あなたの質問に対する決定的な答えはありません。他の例として、バイナリデータの場合、類似性の尺度としてJaccardインデックスを選択し、古典的な階層クラスタリングを続行できます。しかし、Mona(Monothetic Analysis)一度に1つの変数のみを考慮するアルゴリズム。他の階層的アプローチ(従来のHC、Agnes、Dianaなど)は、各ステップですべての変数を使用します。k-meansアプローチは、重心(Kaufman and Rousseuw、1990)ではなくmedoid(PAM)または代表オブジェクトの周りのパーティション分割、またはファジークラスタリング(Chung and Lee、1992)など、さまざまな方法で拡張されています。たとえば、k-meansとPAMの主な違いは、PAMがユークリッド距離の2乗の合計ではなく、非類似度の合計を最小化することです。ファジークラスタリングにより、「部分的なメンバーシップ」を考慮できます(各メンバーシップにクラスメンバーシップを反映する重みを関連付けます)。そして、確率的フレームワークに依存する方法、またはいわゆるモデルベースのクラスタリング(または潜在プロファイル分析)心理学者向け)、Mclustという素晴らしいパッケージがあります。そのため、個人の類似性を定義する方法と、個人をリンクする方法(再帰的または反復的なクラスタリング、厳密なまたはファジーなクラスメンバーシップ、教師なしまたは半教師付きアプローチなど)を決定する必要があります。
通常、クラスターの安定性を評価するために、いくつかの類似性を基本的に「共有する」いくつかのアルゴリズムを比較することは興味深いです(例えば、ユークリッド距離は両方で機能するため、k平均と階層的クラスター化)。2つのクラスターソリューション間の一致を評価するために、この質問への回答としていくつかのポインターが提案されました。(このWebサイトの他のリンクの相互参照も参照してください)。Rを使用している場合、いくつかのパッケージがクラスター分析のタスクビューで既に利用可能であることがわかります。いくつかのパッケージには、特定の方法を説明したりケーススタディを提供するビネットが含まれています。
クラスター分析:基本概念とアルゴリズムでは、クラスター分析で使用されるいくつかの手法の概要を説明しています。Rのイラスト付きの最近の良い本については、Izenman、Modern Multivariate Statistics Techniques(Springer、2008)の第12章をお勧めします。他のいくつかの標準参照を以下に示します。
Hastie、Tibshirani、Friedman、 統計学習の要素、p。506:
「クラスタリングの成功を得るには、クラスタリングアルゴリズムの選択よりも適切な非類似度の方がはるかに重要です。問題のこの側面は、ドメイン固有の知識に依存し、一般的な研究にはあまり適していません。」
(つまり、(wibni)学生がいくつかの小さな標準データセットでいくつかのアルゴリズムとメトリックを試すことができるサイトがあったらいいと思いませんか?)
どのクラスタリングアルゴリズムが優れているかを前もって知ることはできませんが、いくつかの手がかりがあります。たとえば、画像をクラスタリングする場合は、ファジーアートのように最初に試す必要がある特定のアルゴリズムがあります。 (GGCI)画像のグローバルな幾何学的クラスタリング。
とにかくこれは最良の結果を保証するものではないので、weka、RapidMiner、またはR(非ビジュアル)などのさまざまなクラスターアルゴリズムを系統的に実行できるプログラムを使用します。そこでプログラムを設定します可能なすべての異なる距離で可能なすべての異なるクラスタリングアルゴリズムを起動し、パラメーターが必要な場合は、さまざまな異なるパラメーター値を使用してそれぞれを実験します(クラスターの量がわからない場合は、さまざまなそれの数の)。実験を確定したら、実行したままにしますが、各クラスタリング実行の結果をどこかに保存することを忘れないでください。
次に、結果を比較して、最適な結果のクラスタリングを取得します。比較できるメトリックがいくつかあり、すべてのアルゴリズムですべてが提供されるわけではないため、これは注意が必要です。たとえば、ファジークラスタリングアルゴリズムには非ファジーとは異なるメトリックがありますが、ファジーの結果のグループを非ファジーと見なすことで比較できます。以下のような従来のメトリックとの比較に固執します。
•SSE:各クラスターのアイテムからの二乗誤差の合計。
•クラスター間距離:各クラスター重心間の平方距離の合計。
•各クラスターのクラスター内距離:各クラスターのアイテムからその重心までの平方距離の合計。
•最大半径:インスタンスからそのクラスター重心までの最大距離。
•平均半径:インスタンスからそのクラスター重心までの最大距離をクラスター数で割った合計。
適切な距離を選択することは基本的なタスクではありません。データセットでクラスター分析を行う場合、異なる距離を使用して異なる結果が表示される可能性があるため、どの距離を選択するかに注意することが非常に重要です私たちの問題を理解してください。
連続的な数値変数があり、絶対距離を反映したい場合は、ユークリッド距離が適切です。この距離はすべての変数を考慮し、冗長性を削除しません。したがって、同じことを説明する(相関している)3つの変数がある場合、この効果に3の重みを付けます。さらに、この距離は縮尺不変ではないため、通常、距離を使用するには事前に縮尺する必要があります。
エコロジーの例:多くの地域からさまざまな観察結果が得られており、専門家は微生物学的、物理的、化学的要因のサンプルを採取しています。生態系のパターンを見つけたい。これらの要因には高い相関関係がありますが、誰もが関連していることがわかっているため、これらの冗長性を削除したくありません。単位の影響を避けるために、スケーリングされたデータでユークリッド距離を使用します。
マハラノビス距離は、私が連続数値変数を持っていると私は絶対的な距離を反映したいのですが、我々は重複を削除したい場合に適しています。変数を繰り返している場合、それらの反復効果は消えます。
Hellinger、Species Profile、Chord distanceファミリーは、プロファイルを区別したい場合、変数間の違いを強調したい場合に適しています。これらの距離は、各観測の総量によって重み付けされ、変数ごとに変数が異なる場合に距離が小さくなるように、絶対的な大きさは非常に異なっていました。気を付けて!これらの距離は、プロファイル間の違いを非常によく反映していますが、大きさの効果は失われています。サンプルサイズが異なる場合に非常に便利です。 エコロジーの例:多くの土地の動物相を調査したいと思います。腹足類のインベントリのデータマトリックスがあります(行のサンプリング位置と列の種名)。ある種の地域には他の種があり、他の地域には他の種があるため、マトリックスは多くのゼロと異なる大きさを持つことを特徴としています。ヘリンジャー距離を使用できます。
Bray-Curtisは非常に似ていますが、プロファイルを区別し、相対的な大きさも考慮したい場合に適しています。
私が懸念している限り、安全な選択が必要な場合、スペクトルクラスタリング手法は、少なくとも画像クラスタリングにおいて、近年最高の精度を達成しています。
距離メトリックに関しては、データの編成方法に大きく依存します。安全な選択は単純なユークリッド距離ですが、データに多様体が含まれていることがわかっている場合は、カーネルメソッドを使用してポイントをマッピングする必要があります。
PS:それらはすべて、数値ではなく、カテゴリに関連しています。カテゴリデータをクラスタリングする方法がわからない。
以下は、質問に答えるのに役立ついくつかのクラスタリングアルゴリズムの概要です。
「どのクラスタリング手法を使用する必要がありますか?」
客観的に「正しい」クラスタリングアルゴリズムRefはありません
クラスタリングアルゴリズムは、「クラスターモデル」に基づいて分類できます。特定の種類のモデル用に設計されたアルゴリズムは、通常、異なる種類のモデルでは失敗します。たとえば、k-meansは非凸クラスターを見つけることができず、円形のクラスターのみを見つけることができます。
したがって、これらの「クラスターモデル」を理解することは、さまざまなクラスタリングアルゴリズム/方法から選択する方法を理解するための鍵となります。典型的なクラスターモデルは次のとおりです。
[1]接続モデル:距離接続に基づいてモデルを構築します。たとえば、階層クラスタリング。ツリーカットの高さに基づいて異なるパーティションが必要な場合に使用されます。R関数:statsパッケージのhclust。
[2]重心モデル:各クラスターを単一の平均ベクトルで表すことにより、モデルを構築します。後述のファジークラスタリングとは対照的に、鮮明なパーティション分割が必要な場合に使用します。R関数:統計パッケージのkmeans。
[3]分布モデル:期待値最大化アルゴリズムで使用される多変量正規分布などの統計分布に基づいてモデルを構築します。円形クラスターを想定するk-meansとは異なり、クラスター形状が任意である場合に使用されます。R関数:emclusterパッケージのemcluster。
[4]密度モデル:データ空間で接続された密な領域としてクラスターに基づいてモデルを構築します。たとえば、DBSCANおよびOPTICS。クラスターが円形クラスターであると想定するk-meansとは異なり、クラスター形状が任意である場合に使用します。パッケージdbscanのR関数dbscan。
[5]サブスペースモデル:クラスターメンバーと関連属性の両方に基づいてモデルを構築します。たとえば、二重クラスタリング(共クラスタリングまたは2モードクラスタリングとも呼ばれます)。行と列の同時クラスタリングが必要な場合に使用されます。biclustパッケージのR関数biclust。
[6]モデルのグループ化:グループ化情報に基づいてモデルを構築します。たとえば、協調フィルタリング(推奨アルゴリズム)。RecommendederLabパッケージのR機能リコメンダー。
[7]グラフベースのモデル:クリークに基づいてモデルを構築します。コミュニティ構造検出アルゴリズムは、有向グラフまたは無向グラフで密なサブグラフを見つけようとします。例えば、igraphパッケージのR関数cluster_walktrap。
[8] Kohonen自己組織化機能マップ:ニューラルネットワークに基づいてモデルを構築します。kohonenパッケージのR関数som。
[9]スペクトルクラスタリング:非凸クラスター構造に基づいて、または中心の測定値が完全なクラスターの適切な記述ではない場合にモデルを構築します。kernlabパッケージのR関数specc。
[10]部分空間クラスタリング:高次元データの場合、距離関数に問題が生じる可能性があります。クラスターモデルには、クラスターに関連する属性が含まれます。たとえば、RパッケージHDclassifのhddc関数。
[11]シーケンスクラスタリング:関連するグループシーケンス。rBlastパッケージ。
[12]アフィニティ伝播:データポイント間のメッセージの受け渡しに基づいてモデルを構築します。アルゴリズムを実行する前にクラスターの数を決定する必要はありません。k-means、Ref Rpackage APCluster よりも、特定のコンピュータービジョンや計算生物学のタスク(人間の顔の写真のクラスタリングや規制された転写物の特定など)に適しています。
[13]ストリームクラスタリング:電話レコード、金融取引など、継続的に到着するデータに基づいてモデルを構築します。例:RパッケージBIRCH [ https://cran.r-project.org/src/contrib/Archive/birch/]
[14]ドキュメントクラスタリング(またはテキストクラスタリング):SVDに基づいてモデルを構築します。トピック抽出で使用されています。たとえば、Carrot [ http://search.carrot2.org]は、ドキュメントをテーマ別カテゴリにクラスタリングできるオープンソースの検索結果クラスタリングエンジンです。
[15]潜在クラスモデル:観測された多変量変数のセットを潜在変数のセットに関連付けます。LCAは協調フィルタリングで使用できます。RecommendederLabパッケージのR関数Recommendedには、協調フィルタリング機能があります。
[16]バイクラスタリング:2モードデータの行と列を同時にクラスター化するために使用されます。たとえば、biclustパッケージのR関数biclust。
[17]ソフトクラスタリング(ファジークラスタリング):各オブジェクトは、ある程度、各クラスターに属します。例えば、fclustパッケージのR Fclust関数。