Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

クラスタリング

Tunny Dashboard のクラスタリングウィジェット(Cluster Scatter 2D / 3D ウィジェット)で使用する手法の概要です。 詳細な理論は、各手法の個別ドキュメントを参照してください。


クラスタリング手法

手法 役割 強み 注意点 詳細
k-means(Lloyd's アルゴリズム) データを kk 個のクラスタに分割 高速、直感的、WCSS で品質評価可能 球形クラスタを仮定、局所最適解のリスク kmeans.md

k-means の初期化戦略(Init)

k-means の初期重心の選び方です。 どちらもクラスタリング手法ではなく k-means の内部設定であり、Lloyd's アルゴリズム本体(割り当て、更新、収束)は共通です。

初期化戦略 説明 適した場面
k-means++ D² 比例確率でサンプリング(Xoshiro256Plus、n・k から導出した固定シード) 局所最適を避けたい、品質優先
Deterministic k-means++ と同じ D² 比例確率サンプリング(linfa 委譲)。シードを 42 に固定 完全な決定論的再現性が必要

分割数(k)の決め方

エルボー法は k-means を補助する手法であり、クラスタリング手法そのものではありません。 k-means を実行する前に、いくつのクラスタに分割するかを決めるために使います。

手法 役割 強み 注意点 詳細
エルボー法 クラスタ内二乗和(WCSS)の変化率から最適な kk を自動推定 ユーザが kk を指定不要 WCSS が滑らかだと推定精度が下がる elbow.md

ワークフロー

flowchart TD
    start["クラスタリング実行"] --> sel{"k 選択モード"}
    sel -- "Elbow (Auto)" --> elbowStep["エルボー法で k=2〜max_k を総当たりし<br/>最適 k を自動推定"]
    elbowStep --> runElbow["推定した k で k-means を実行<br/>(Init 戦略を適用)"]
    sel -- "Manual" --> runManual["ユーザ指定の k で k-means を直接実行<br/>(Init 戦略を適用)"]

    init{"Init 戦略<br/>(k-means の初期化のみ異なる)"}
    init -- "k-means++" --> initA["D² 比例確率サンプリング<br/>(シードは n・k から導出)"]
    init -- "Deterministic" --> initB["同じ D² 比例確率サンプリング、<br/>シードを 42 に固定"]

入力空間の選び方

設定 使うフィーチャー 向いている分析
Objective Space 目的関数値のみ 性能が似たトライアルを見つけたい
Variable Space パラメータ値のみ 設計変数のパターンを把握したい
Combined 目的関数 + パラメータ 両空間の関係を統合的に見たい

関連手法

同じ目的(構造の把握)を持つ別のウィジェットとして、次のものも利用できます。

  • Dendrogram:階層クラスタリングにより、事前に kk を決め打ちせず完全な併合木を構築します
  • PCA Biplot:trial と変数を標準化済みの 2D 主成分平面に投影します
  • SOM Map:自己組織化マップにより、固定 kk 分割を補完するトポロジー保存の 2D マップを描きます