クラスタリングのスイープ

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

パラメータースイープを実行して、クラスターモデルに最適な設定を決定します。

カテゴリ: Machine Learning/トレーニング

注意

適用対象: Machine Learning Studio (クラシック)のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) のスイープクラスタリングモジュールを使用して、パラメータースイープを使用してモデルをトレーニングする方法について説明します。 パラメータースイープは、データのセットを指定して、モデルに最適なハイパーパラメーターを検索する方法です。

スイープクラスタリングモジュールは、クラスターモデル専用に設計されています。 クラスターモデルは、データセットと共に入力として指定します。 モジュールは、指定された一連のパラメーターに対して反復処理を行い、最適なクラスターセットを持つモデルが見つかるまで、異なるパラメーターを使用してモデルを構築およびテストします。 自動的に最適な構成が計算され、その構成を使用してモデルがトレーニングされます。

また、テストされたモデルを説明する一連のメトリックと、最適なモデルに基づく一連のクラスター割り当てを返します。

スイープクラスタリングを構成する方法

  1. Studio (クラシック) の実験に スイープクラスタリング モジュールを追加します。 このモジュールはMachine Learningの [トレーニング] カテゴリにあります。

  2. K を 意味するクラスタリング モジュールとトレーニングデータセットを実験に追加し、両方を スイープクラスタリング モジュールに接続します。

  3. 次のようにパラメータースイープを使用するように、 K を意味するクラスター モジュールを構成します。

    1. " トレーナーモードの作成 " を パラメーター範囲に設定します。

    2. 各パラメーターに 範囲ビルダー (または複数の値を手動で入力) を使用して、反復処理する値の範囲を設定します。

    3. スイープの初期化: K-のアルゴリズムが初期クラスター重心を検索する方法を指定します。 ランダムに初期化してから重心をテストするために、複数のアルゴリズムが用意されています。

      トレーニングデータセットにラベル列が含まれている場合 (部分的な値を含む場合でも)、それらの値を重心に使用できます。 ラベルの値の使用方法を指定するには、[ ラベルモードの割り当て ] オプションを使用します。

      ヒント

      ラベル列を事前に設定する必要があります。 エラーが発生した場合は、[ メタデータの編集 ] を使用して、ラベルを含む列を特定します。

    4. スイープするシード数: パラメータースイープを実行したときに試行される、異なるランダム開始シードの数を示します。

    5. クラスターの類似性を測定するときに使用するメトリックを選択します。 詳細については、「 K-のクラスター化 」を参照してください。

    6. イテレーション: K アルゴリズムで実行する必要があるイテレーションの合計数を指定します。 これらのイテレーションは、クラスター重心の選択を最適化するために使用されます。

    7. ラベル列を使用してスイープを初期化する場合は、[ ラベルモードの割り当て ] オプションを使用して、ラベル列の値をどのように処理するかを指定します。

      • 欠損値の塗りつぶし: ラベル列に欠損値が含まれている場合は、このオプションを使用して、データポイントが割り当てられているクラスターに基づいてカテゴリを作成します。

      • [最も近いセンターからの上書き]: クラスターの中央に最も近いポイントのラベルを使用して、クラスターに割り当てられているすべてのデータポイントのラベル値を生成します。

      • [ラベル列を無視する]: 上記のいずれかの操作を実行しない場合は、このオプションを選択します。

  4. スイープクラスタリングモジュールで、クラスタリングの結果を測定するためのメトリックにオプションを使用して、トレーニング済みのクラスタリングモデルの適合性を推定するときに使用する数学的手法を指定します。

    • 簡略化されたシルエット: このメトリックは、各クラスター内のデータポイントの tightness をキャプチャします。 これは、各行とクラスターの類似性と、次に最も近いクラスターとの類似性の組み合わせとして計算されます。 クラスターに1行しかない場合、結果として0を取得しないように、次に最も近い重心までの日割り計算が計算されます。 "単純化" とは、クラスター重心への距離が単純な類似性メジャーとして使用されるという事実を意味します。 一般に、スコアが高いほど優れています。 データセットの平均値は、データがどの程度クラスター化されているかを示します。 クラスターの数が多すぎたり少なすぎたりすると、一部のクラスターは残りよりも低いシルエット値を持つことになります。 詳細については、 Wikipedia の記事をご覧ください。

    • Davies-Bouldin: このメトリックは、最小のスキャッターを持つクラスターの最小セットを識別することを目的としています。 メトリックはクラスター分離を通じて各クラスター内のスキャッターの比率として定義されるので、値が小さいほどクラスタリングの方が適していることを意味します。 最適なクラスタリングモデルでは、このメトリックが最小限に抑えられます。 Davies-Bouldin メトリックを計算するために、平均値が重心の距離はクラスターごとに計算されます。 クラスターのペアごとに、これらの平均の合計は重心間の距離で除算されます。 他のすべてのクラスターに対する最大値は、クラスターごとに選択され、すべてのクラスターで平均化されます。 詳細については、 Wikipedia の記事をご覧ください。

    • D: このメトリックは、最もコンパクトなクラスターの最小セットを特定することを目的としています。 一般に、このメトリックの値が大きいほど、クラスタリングが向上します。 D メトリックを計算するために、重心から重心までの最小距離は、各データポイントからクラスターセンターまでの最大距離で除算されます。 詳細については、 Wikipedia の記事をご覧ください。

    • 平均偏差: このメトリックは、各データポイントからクラスターセンターまでの平均距離を取得することによって計算されます。 重心の数が増えるにつれて値が減少します。このため、重心の数を検出するためにスイープする場合は便利です。 このメトリックは、最適な重心初期化シードを選択する場合に使用することをお勧めします。

  5. パラメータースイープモードの指定: トレーニング時に使用される値の組み合わせと、その選択方法を定義するオプションを選択します。

    • グリッド全体: 特定の範囲内のすべての値が試行され、評価されます。 このオプションは通常、計算コストが高くなります。

    • ランダムスイープ: 実行回数を制限するには、このオプションを使用します。 クラスターモデルは、許容範囲のパラメーター値からランダムに選択された値の組み合わせを使用して構築および評価されます。

  6. ランダムスイープでの実行の最大数: ランダムスイープ オプションを選択した場合は、このオプションを設定します。 ランダムに選択されたパラメーターのセットをテストするときのイテレーションの最大数を制限する値を入力します。

    警告

    K であることを意味しています。クラスター化モジュールは異なる目的で、この設定の影響を受けません。各データポイントからクラスター重心への平均距離を最小限に抑えることで、クラスターを改善するために作成されるデータのパス数を制限します。 これに対して、 スイープクラスタリング モジュールパラメーターによって定義される反復は、異なるランダム重心初期化を試行するために実行されます。 この最小化問題は、NP ハードであることがわかっています。そのため、複数のランダムシードを実行すると、より良い結果が得られる可能性があります。

    ランダムスイープを選択する場合は、[ ランダムシード ] オプションを使用して、重心の作成を開始する最初のランダムシード値を指定します。 パラメータースイープを使用してクラスターモデルを作成する利点の1つは、複数のシード値を簡単にテストして、クラスターモデルの既知の感度を初期シード値に減らすことができることです。

  7. [ 列セット] をクリックし、クラスターを構築するときに使用する列を選択します。 既定では、クラスターモデルをビルドおよびテストするときに、すべての機能列が使用されます。

    データセット内にラベル列がある場合は、それを含めることができます。 ラベルが存在する場合は、それを使用して重心の選択をガイドしたり、ラベルを機能として使用したり、ラベルを無視したりすることができます。 上記の手順 3. で説明したように、 Kmeans クラスター モジュールを処理するラベルに対してこれらのオプションを設定します。

  8. [結果のみを追加または選択解除する]: このオプションは、結果に返される列を制御する場合に使用します。

    既定では、モジュールはトレーニングデータセットの元の列を結果と共に返します。 このオプションを選択解除した場合。 クラスターの割り当てのみが返されます。

  9. 実験に データをクラスターに割り当てる モジュールを追加します。

  10. [トレーニング済みのモデルをトレーニング済みモデルとして、クラスターにデータを割り当てます。 "というラベルの付いた出力を Connect します。

  11. 評価用のデータセットを追加し、[クラスターにデータを割り当てる] モジュールのデータセットポートに接続します。

  12. [ モデルの評価 ] モジュールを追加し、それを接続して クラスターにデータを割り当てます。 必要に応じて、評価データセットを接続できます。

  13. 実験を実行します。

結果

スイープクラスタリングモジュールは、次の3つの異なる結果を出力します。

  • 最適なトレーニング済みモデル。 スコア付けと評価に使用できるトレーニング済みのモデル。 右クリックして [トレーニング済み モデルとして保存] を選択して、最適化されたクラスタリング モデルをキャプチャし、スコアリングに使用します。

  • 結果データセット。 最適化されたモデルに基づくクラスター割り当てのセット。

    列名 説明
    代入 この値は、各データ ポイントが割り当てられているクラスターを示します。 トレーニング済みモデルのクラスターには、0 からベースのインデックスのラベルが付けされます。
    DistancesToClusterCenter No.1

    DistancesToClusterCenter no.n
    この値は、データ ポイントが各クラスターの中央にどれだけ近い位置にあるか示します。

    最適化されたモデルで作成されたクラスターごとに列が作成されます。

    [重心の数] オプションを使用して、クラスター の数を制限 できます。

    既定では、結果と共にトレーニング データセットから列を返して、クラスターの割り当てを簡単に確認および解釈できます。

  • 結果をスイープします。 クラスターの次の評価メトリックを含むデータセット。

    列名 説明
    クラスター メトリック その実行の平均クラスター品質を示す 値。 実行は、最適なスコア順に並べらされます。
    重心の数 スイープのこの特定のイテレーションで作成されたクラスターの数
    実行のインデックス 各イテレーションの識別子

    ヒント

    クラスター メトリックに返される値は、スイープの設定時に選択したメトリックに応じて、異なる方法で解釈する必要があります。 既定のメトリックである簡略化 されたデザインでは、スコアが高い方が優れたものになります。 Davies-Bouldin の場合は、スコアが低い方が良いです。

K-Means クラスタリングを使用したパラメーター スイープの例については、次のAzure AI Gallery。

テクニカル ノート

このセクションでは、ヒントと実装の詳細について説明します。

クラスタリング モデルの最適化

クラスター モデルの品質と精度は、重心の数やクラスターの初期化に使用されるシード値など、初期パラメーターの選択によって強く影響を受ける可能性があります。 初期パラメーターに対するこの感度を軽減するために、 Sweep クラスタリング モジュールを使用すると、パラメーターの最適な組み合わせを見つけるのに役立ちます。 テストするパラメーターの範囲を指定すると、モジュールによって複数のモデルが自動的にビルドおよびテストされ、最後に最適な数のクラスターが選択されます。

パラメーター スイープを作成するには、パラメーター スイープを使用する K-Means クラスタリング モジュールも構成する必要があります。 スイープでパラメーターのすべての可能な組み合わせを反復処理するか、パラメーターのランダムな組み合わせを使用することができます。 また、反復モデルの構築およびテスト プロセス中に重心の精度を測定するためのいくつかの標準メトリックのいずれかを選択できます。 指定したイテレーション数が完了すると、モジュールは選択したメトリックに基づいて最適な数のクラスターを選択し、結果の評価に使用できるレポートを出力します。

使用上のヒント

  • 場合によっては、検索するクラスターの数が既にわかっている場合があります。 たとえば、データにクラス ラベルが含まれており、重心の選択をガイドするために使用できる場合があります。 その場合は、 K-Means クラスタリング モジュールを構成して、ラベル列を使用して初期重心の選択をガイドできます。

  • 予想されるクラスターの一部がわかっているが、最適なクラスターの数がわかっていない場合は、重心の数を既知のラベル値の数より大きい数に設定します。 Sweep Clustering モジュールは 、既知のデータ ポイントのクラスターを作成し、残りのデータ ポイントの追加クラスターの最適な数を決定します。

ラベル列の欠損値の処理

ラベル列の欠損値を処理するには、いくつかの方法があります。 たとえば、画像分類タスクが作成され、一部の画像だけがラベル付けされたとします。

ラベル列を使用して重心の選択をガイドできますが、不足しているラベルはクラスターの割り当てを使用して入力します。 つまり、既存のラベル値は変更されませんが、不足しているラベルは入力されます。

または、クラスターに割り当てられているすべてのデータ ポイントについて、クラスターを最も表す 1 つのラベルを使用して、既存のラベルを上書きすることもできます。 このオプションがどのように役立つのか理解するために、さまざまな犬種など、非常に詳細なラベルを持つ画像データを使用している場合を想像してください。 このオプションを使用すると、すべての詳細ラベルを単一のカテゴリ ラベル "dog" に置き換える可能性があります。

ログ内のシード値

Train Clustering Model (クラスタリング モデルのトレーニング) モジュールによって生成されたログ ファイルは、Random Seed プロパティで指定されたシードに関係なく、K-Means クラスタリング アルゴリズムのすべてのイテレーションに同じシードが使用されている可能性があります。

実際、実装では、ユーザー指定のシードを使用して、実行ごとに異なる一連の乱数を生成します。 したがって、ランダムに生成された数値を作成するために必要なシードは 1 つのみです。

ログの目的は、ユーザーが [プロパティ] ウィンドウでシードを指定しない場合にモジュールが使用するシードを します。

想定される入力

名前 説明
未トレーニング モデル ICluster インターフェイス 未トレーニング クラスタリング モデル
データセット データ テーブル 入力データ ソース

モジュールのパラメーター

名前 Type 省略可能 Default 説明
クラスタリング結果を測定するためのメトリック クラスター メトリック 簡略化されたレガシ、Davies-Dunldin、Dunn、Average Deviation 必須 簡略化されたデザイン 回帰モデルの評価に使用するメトリックを選択します
パラメーター スイープ モードの指定 Sweep メソッド グリッド全体またはランダム スイープ 必須 ランダム スイープ パラメーター空間のグリッド全体をスイープします。または、限定した数のサンプル実行を使用してスイープします
列セット ColumnSelection 必須 列選択パターン
ランダム スイープの最大実行数 Integer [1;10000] SweepingMode がランダム スイープに設定されている場合にのみ使用できます 5 ランダム スイープを使用する場合に実行する実行の最大数を設定する
Random seed (ランダム シード) Integer SweepingMode がランダム スイープに設定されている場合にのみ使用できます 0 ランダム スイープの乱数ジェネレーターをシードする値を指定します
オンで追加またはオフで結果のみ Boolean 必須 出力データセットに代入列が追加された入力データセットを含む必要がある場合に選択します。 割り当て列のみを出力する必要がある場合は、選択を解除します。

出力

名前 説明
最適なトレーニング済みモデル ICluster インターフェイス トレーニング済みクラスタリング モデル
結果のデータセット データ テーブル 割り当てのデータ列により追加された入力データセットまたは割り当て列のみ
スイープ結果 データ テーブル クラスター スイープ実行の結果のメトリック ログ

例外

例外 説明
エラー 0003 1 つまたは複数の入力が null または空の場合、例外が発生します。

Studio (クラシック) モジュールに固有のエラーの一覧については、「エラー コードMachine Learning参照してください

API の例外の一覧については、「エラー コードMachine Learning REST API参照してください

こちらもご覧ください

K-Means クラスタリング
クラスターへのデータの割り当て
Machine Learning/トレーニング
機械学習/モデルの初期化/クラスタリング