私はまったく同じ問題に出くわし、(kプロトタイプが存在することを知らずに)その問題を回避しようとしました。さらに、さまざまな情報ソースが存在する可能性があり、それはデータの異なる構造または「ビュー」を暗示する可能性があります。これは、ツイッター/ウェブサイトなどの社会的関係に直面するたびに自然な問題です
可能な解決策の1つは、変数の各サブセット(つまり、数値とカテゴリ)を別々にアドレス指定することです。距離尺度が数値スケールで行うことは簡単に理解できます。カテゴリデータだけでも簡単に理解できます。バイナリ観測ベクトルの使用を検討してください。2つの観測ベクトル間の0/1の分割表には、これら2つの観測間の類似性に関する多くの情報が含まれています。バイナリベクトルのカスタマイズされたさまざまな類似性測定に関する豊富な文献があります-ほとんどは分割表から始まります。
両方が同じ観測値を記述する距離/類似度マトリックスの両方を考えると、それらのそれぞれについてグラフを抽出するか(Multi-View-Graph-Clustering)、または複数のエッジを持つ単一のグラフを抽出することができます-各ノード(観測)情報マトリックスがあるため、別のノード(マルチエッジクラスタリング)。各エッジには、対応する類似性/距離測定の重みが割り当てられます。ここから開始:Githubのグラフクラスタリングアルゴリズムのリストとその論文。単一の観測では複数の情報セットが利用可能であるため、これらは、たとえばスペクトル分析の子孫またはリンクされた行列因子分解を使用して織り交ぜる必要があります。スペクトル分析は、単一グラフの高度に接続された、または重く重み付けされた部分を見つけるためのデフォルトの方法です。織り交ぜられたデータのスペクトル埋め込みにより、数値データのクラスタリングアルゴリズムは簡単に機能します。文献のデフォルトは、単純さのためにkmeansですが、はるかに高度です-そして、このコンテキストで互換的に使用できる制限アルゴリズムがそこにあるわけではありません。
このアプローチの美しさと一般性は、単なるdtypeではなく複数の情報セットに容易に拡張可能であり、各データサブセットの特定の「メジャー」をさらに尊重する点で気に入っています。これは、さまざまな距離と類似性のメトリックでモデルを微調整したり、変数をスケーリングしたりすることを軽減しません(私は自分の分析の文脈で数値変数を比率スケールのものにスケーリングすることに気付きました)
スケーラビリティの観点から考えると、主に2つの問題があります。
- 固有問題の近似(アルゴリズムの豊富な文献も存在する場合)
- 距離行列の推定(純粋に組み合わせの問題で、非常に急速に大きくなる-まだ効率的な方法を見つけていない)
それを楽しんでください!