モジュール:K-Means クラスタリングModule: K-Means Clustering

この記事では、Azure Machine Learning デザイナー (プレビュー) で K-Means クラスタリング モジュールを使用して、トレーニングされていない K-Means クラスタリング モデルを作成する方法について説明します。This article describes how to use the K-Means Clustering module in Azure Machine Learning designer (preview) to create an untrained K-means clustering model.

K-Means は、最も単純であり、よく知られている "教師なし" 学習アルゴリズムの 1 つです。K-means is one of the simplest and the best known unsupervised learning algorithms. 以下のようなさまざまな機械学習タスクにこのアルゴリズムを使用できます。You can use the algorithm for a variety of machine learning tasks, such as:

  • 異常データの検出Detecting abnormal data.
  • テキスト ドキュメントのクラスタリング。Clustering text documents.
  • 他の分類法または回帰法を使用する前のデータセットの分析。Analyzing datasets before you use other classification or regression methods.

クラスタリング モデルを作成するには、次の手順を実行します。To create a clustering model, you:

  • このモジュールをパイプラインに追加します。Add this module to your pipeline.
  • データセットを接続します。Connect a dataset.
  • 予想するクラスターの数、クラスターの作成に使用する距離メトリックなどのパラメーターを設定します。Set parameters, such as the number of clusters you expect, the distance metric to use in creating the clusters, and so forth.

モジュールのハイパーパラメーターを構成したら、未トレーニングのモデルを [Train Clustering Model](クラスタリング モデルのトレーニング) に接続します。After you've configured the module hyperparameters, you connect the untrained model to the Train Clustering Model. K-Means アルゴリズムは教師なし学習方法なので、ラベル列は省略可能です。Because the K-means algorithm is an unsupervised learning method, a label column is optional.

  • データにラベルが含まれる場合は、ラベルの値を使用して、クラスターの選択を示し、モデルを最適化することができます。If your data includes a label, you can use the label values to guide selection of the clusters and optimize the model.

  • データにラベルがない場合、アルゴリズムによって、データのみに基づいて可能なカテゴリを表すクラスターが作成されます。If your data has no label, the algorithm creates clusters representing possible categories, based solely on the data.

K-Means クラスタリングの概要Understand K-means clustering

一般に、クラスタリングは反復的な手法を使用して、データセット内のケースを同様の特性を持つクラスターにグループ化します。In general, clustering uses iterative techniques to group cases in a dataset into clusters that possess similar characteristics. これらのグループ化は、データを探索して、データ内の異常を識別し、最終的に予測を行うために便利です。These groupings are useful for exploring data, identifying anomalies in the data, and eventually for making predictions. クラスタリング モデルは、参照またはシンプルな監視によって論理的に派生する可能性がないデータセットで、リレーションシップを識別するのにも役立ちます。Clustering models can also help you identify relationships in a dataset that you might not logically derive by browsing or simple observation. これらの理由から、クラスタリングは、データの詳細を確認し、予期しない相関を検出するために、機械学習タスクの初期フェーズで使用されることが多いです。For these reasons, clustering is often used in the early phases of machine learning tasks, to explore the data and discover unexpected correlations.

K-Means 法を使用してクラスタリング モデルを構成するときは、モデルに必要な "重心" の数を示すターゲット数 k を指定する必要があります。When you configure a clustering model by using the K-means method, you must specify a target number k that indicates the number of centroids you want in the model. 重心は、各クラスターを代表する点です。The centroid is a point that's representative of each cluster. K-Means アルゴリズムでは、クラスター内の平方和を最小限にすることで、クラスターのいずれかに各受信データ ポイントを割り当てます。The K-means algorithm assigns each incoming data point to one of the clusters by minimizing the within-cluster sum of squares.

トレーニング データを処理すると、K-Means アルゴリズムではランダムに選択された重心の初期セットから開始されます。When it processes the training data, the K-means algorithm begins with an initial set of randomly chosen centroids. 重心はクラスターの出発点として機能し、Lloyd のアルゴリズムを適用して、その位置を反復的に絞り込みます。Centroids serve as starting points for the clusters, and they apply Lloyd's algorithm to iteratively refine their locations. 次の条件の 1 つまたは複数に合致するときに、K-Means アルゴリズムによってクラスターのビルドと絞り込みが停止されます。The K-means algorithm stops building and refining clusters when it meets one or more of these conditions:

  • 重心は安定します。つまり、個々の点に対するクラスターの割り当ては変化しなくなり、アルゴリズムは解に収束しました。The centroids stabilize, meaning that the cluster assignments for individual points no longer change and the algorithm has converged on a solution.

  • アルゴリズムによって、指定されたイテレーションの数の実行が完了している。The algorithm completed running the specified number of iterations.

トレーニング フェーズが完了したら、Assign Data to Clusters (クラスターへのデータの割り当て) モジュールを使用して、K-Means アルゴリズムを使用して検出されたクラスターの 1 つに新しいケースを割り当てます。After you've completed the training phase, you use the Assign Data to Clusters module to assign new cases to one of the clusters that you found by using the K-means algorithm. 新しいケースと各クラスターの重心との間の距離を計算することで、クラスターの割り当てを実行します。You perform cluster assignment by computing the distance between the new case and the centroid of each cluster. 新しいケースはそれぞれ、最も近い重心を持つクラスターに割り当てられます。Each new case is assigned to the cluster with the nearest centroid.

K-Means クラスタリング モジュールを構成するConfigure the K-Means Clustering module

  1. K-Means Clustering (K-Means クラスタリング) モジュールを自分のパイプラインに追加します。Add the K-Means Clustering module to your pipeline.

  2. モデルのトレーニング方法を指定するには、 [Create trainer mode](トレーナー モードの作成) オプションを選択します。To specify how you want the model to be trained, select the Create trainer mode option.

    • Single Parameter (単一パラメーター) : クラスタリング モデルで使用する正確なパラメーターを把握している場合は、特定の値のセットを引数として指定できます。Single Parameter: If you know the exact parameters you want to use in the clustering model, you can provide a specific set of values as arguments.
  3. [Number of centroids](重心の数) には、アルゴリズムを開始するクラスターの数を入力します。For Number of centroids, type the number of clusters you want the algorithm to begin with.

    このモデルは、この数のクラスターを正確に生成することが保証されていません。The model isn't guaranteed to produce exactly this number of clusters. このアルゴリズムは、この数のデータ ポイントから開始し、反復処理で最適な構成を見つけます。The algorithm starts with this number of data points and iterates to find the optimal configuration.

  4. プロパティ [Initialization](初期化) は、初期クラスター構成の定義に使用されるアルゴリズムを指定するために使用されます。The properties Initialization is used to specify the algorithm that's used to define the initial cluster configuration.

    • 最初の N: いくつかの初期データ ポイント数がデータセットから選択され、初期の手段として使用されます。First N: Some initial number of data points are chosen from the dataset and used as the initial means.

      この方法は "Forgy 法" とも呼ばれます。This method is also called the Forgy method.

    • ランダム: アルゴリズムによって、クラスターにデータ ポイントがランダムに配置され、クラスターのランダムに割り当てられたポイントの重心になる初期平均値が計算されます。Random: The algorithm randomly places a data point in a cluster and then computes the initial mean to be the centroid of the cluster's randomly assigned points.

      この方法は "ランダム パーティション" 法とも呼ばれます。This method is also called the random partition method.

    • K-Means++ : これは、クラスターの初期化に対する既定のメソッドです。K-Means++: This is the default method for initializing clusters.

      標準の K-Means アルゴリズムによる低品質なクラスタリングを回避するために、2007 年、K-Means ++ アルゴリズムが David Arthur と Sergei Vassilvitskii によって提案されました。The K-means++ algorithm was proposed in 2007 by David Arthur and Sergei Vassilvitskii to avoid poor clustering by the standard K-means algorithm. K-Means ++ は、初期クラスターの中心を選択するために異なる方法を使用することで標準の K-Means を改良しています。K-means++ improves upon standard K-means by using a different method for choosing the initial cluster centers.

  5. [Random number seed](乱数シード) には、クラスターの初期化にシードとして使用する値を必要に応じて入力します。For Random number seed, optionally type a value to use as the seed for the cluster initialization. この値は、クラスターの選択に大きな影響を及ぼすことがあります。This value can have a significant effect on cluster selection.

  6. [Metric](メトリック) で、クラスター ベクター間、または新しいデータ ポイントとランダムに選択された重心の間の距離を測定するために使用する関数を選びます。For Metric, choose the function to use for measuring the distance between cluster vectors, or between new data points and the randomly chosen centroid. Azure Machine Learning は、次のクラスターの距離のメトリックをサポートしています。Azure Machine Learning supports the following cluster distance metrics:

    • ユークリッド: ユークリッド距離は、一般的に K-Means クラスタリング用のクラスター散布図のメジャーとして使用されます。Euclidean: The Euclidean distance is commonly used as a measure of cluster scatter for K-means clustering. ポイントと重心の間の平均距離が最小になるため、このメトリックが推奨されます。This metric is preferred because it minimizes the mean distance between points and the centroids.
  7. [Iterations](イテレーション) に、重心の選択が完了するまでにアルゴリズムがトレーニング データを反復処理する回数を入力します。For Iterations, type the number of times the algorithm should iterate over the training data before it finalizes the selection of centroids.

    このパラメーターを調整して、正確さとトレーニング時間のバランスをとることができます。You can adjust this parameter to balance accuracy against training time.

  8. [Assign label mode](ラベル モードの割り当て) では、ラベル列がデータセット内に存在する場合の処理方法を指定するオプションを選択します。For Assign label mode, choose an option that specifies how a label column, if it's present in the dataset, should be handled.

    K-Means クラスタリングは教師なしの機械学習メソッドのため、ラベルは省略可能です。Because K-means clustering is an unsupervised machine learning method, labels are optional. ただし、データセットに既にラベル列がある場合は、それらの値を使用してクラスターの選択をガイドすることや、値を無視するように指定することができます。However, if your dataset already has a label column, you can use those values to guide the selection of the clusters, or you can specify that the values be ignored.

    • Ignore label column (ラベル列を無視する) : ラベル列の値は無視され、モデルのビルドには使用されません。Ignore label column: The values in the label column are ignored and are not used in building the model.

    • Fill missing values (欠落値を入力する) : ラベル列の値は、クラスターのビルドに役立つフィーチャーとして使用されます。Fill missing values: The label column values are used as features to help build the clusters. 任意の行にラベルが不足している場合は、その値はその他のフィーチャーを使用することで補完されます。If any rows are missing a label, the value is imputed by using other features.

    • Overwrite from closest to center (中心に最も近い値から上書きする) : ラベル列の値は、現在の重心に最も近いポイントのラベルを使用して、予測ラベル値に置き換えられます。Overwrite from closest to center: The label column values are replaced with predicted label values, using the label of the point that is closest to the current centroid.

  9. トレーニングの前に特徴を正規化する場合は、 [Normalize features](特徴の正規化) オプションを選択します。Select the Normalize features option if you want to normalize features before training.

    正規化を適用すると、トレーニングの前に、MinMaxNormalizer によってデータ ポイントが [0,1] に正規化されます。If you apply normalization, before training, the data points are normalized to [0,1] by MinMaxNormalizer.

  10. モデルをトレーニングする。Train the model.

[結果]Results

モデルの構成とトレーニングが完了したら、スコアの生成に使用できるモデルは完成です。After you've finished configuring and training the model, you have a model that you can use to generate scores. しかし、モデルのトレーニングには複数の方法があり、結果を表示して使用するには複数の方法があります。However, there are multiple ways to train the model, and multiple ways to view and use the results:

ワークスペースでモデルのスナップショットをキャプチャするCapture a snapshot of the model in your workspace

Train Clustering Model (クラスタリング モデルのトレーニング) モジュールを使用した場合:If you used the Train Clustering Model module:

  1. [Train Clustering Model](クラスタリング モデルのトレーニング) モジュールを選択し、右側のパネルを開きます。Select the Train Clustering Model module and open the right panel.

  2. [出力] タブを選択します。 [データセットの登録] アイコンを選択して、トレーニング済みモデルのコピーを保存します。Select Outputs tab. Select the Register dataset icon to save a copy of the trained model.

保存されるモデルは、モデルを保存した時点のトレーニング データを表します。The saved model represents the training data at the time you saved the model. パイプラインで使用したトレーニング データを後で更新しても、保存済みのモデルは更新されません。If you later update the training data used in the pipeline, it doesn't update the saved model.

クラスタリングの結果のデータセットを表示するSee the clustering result dataset

Train Clustering Model (クラスタリング モデルのトレーニング) モジュールを使用した場合:If you used the Train Clustering Model module:

  1. Train Clustering Model (クラスタリング モデルのトレーニング) モジュールを右クリックします。Right-click the Train Clustering Model module.

  2. [可視化] を選択します。Select Visualize.

最適なクラスタリング モデルを生成するためのヒントTips for generating the best clustering model

クラスタリング中に使用される "シード" プロセスは、モデルに大きな影響を与える可能性があることがわかっています。It is known that the seeding process that's used during clustering can significantly affect the model. シードとは、潜在的な重心へのポイントの初期配置を意味します。Seeding means the initial placement of points into potential centroids.

たとえば、データセットに多数の異常値が含まれており、クラスターをシードするために異常値が選択されている場合、そのクラスターに適合する他のデータ ポイントは存在せず、クラスターがシングルトンになる可能性があります。For example, if the dataset contains many outliers, and an outlier is chosen to seed the clusters, no other data points would fit well with that cluster, and the cluster could be a singleton. つまり、ポイントが 1 つのみの可能性があります。That is, it might have only one point.

この問題を回避するには、いくつかの方法があります。You can avoid this problem in a couple of ways:

  • 重心の数を変更して、複数のシード値を試します。Change the number of centroids and try multiple seed values.

  • メトリックを変えるか、さらに反復処理して、複数のモデルを作成します。Create multiple models, varying the metric or iterating more.

一般に、クラスタリング モデルでは、どのような構成でもローカルで最適化された一連のクラスターが生成される可能性があります。In general, with clustering models, it's possible that any given configuration will result in a locally optimized set of clusters. つまり、モデルから返される一連のクラスターは現在のデータ ポイントのみに適合し、他のデータに一般化することはできません。In other words, the set of clusters that's returned by the model suits only the current data points and isn't generalizable to other data. 別の初期構成を使用した場合、K-Means 法では、別の優れた構成が見つかる可能性があります。If you use a different initial configuration, the K-means method might find a different, superior, configuration.

次のステップNext steps

Azure Machine Learning で使用できる一連のモジュールを参照してください。See the set of modules available to Azure Machine Learning.