ホーム Topics k平均法 k平均法とは
watsonx.aiでk平均法を活用する AI関連の最新情報の購読を申し込む
雲、円グラフ、グラフのピクトグラムをコラージュしたイラスト

公開日:2024年6月26日
寄稿者: Eda Kavlakoglu、Vanna Winland

k平均法は、データ・クラスタリングに使用される教師なし学習アルゴリズムで、ラベルなしデータ・ポイントをグループまたはクラスターにグループ化します。


機械学習で最もよく使われるクラスタリング手法のひとつです。教師あり学習とは異なり、このアルゴリズムが使用するトレーニング・データにはラベル付けされていません。つまり、データ・ポイントには定義された分類構造がありません。

排他的クラスタリング、重複的クラスタリング、階層的クラスタリング、確率的クラスタリングなど、さまざまな種類のクラスタリング・アルゴリズムが存在しますが、k平均法は、排他的クラスタリングまたは「ハード」クラスタリング手法の一例です。この種のグループ化では、データ・ポイントは1つのクラスターにのみ存在できると規定します。このタイプのクラスター分析は、市場セグメンテーション、ドキュメントのクラスタリング、画像セグメンテーション、および画像圧縮を行うデータサイエンスによく使用されます。k平均法アルゴリズムは、効率的で効果的かつシンプルなため、クラスター分析で広く使用されている方法です。

k平均法は、データ・セットをセントロイド間の距離に基づいて類似のグループに分割する、反復的なセントロイド・ベースのクラスタリング・アルゴリズムです。セントロイド(クラスターの中心)は、データの特性に基づいた、クラスター内のすべてのポイントの平均または中央値です。

企業の人工知能を拡大するためにAIガバナンスがビジネス上欠かせない理由

特にAIガバナンスやリスク管理ソリューションの欠如など、AI導入の障壁について学びましょう。

関連コンテンツ

基盤モデルについてのガイドに登録する

k平均法はどのように機能しますか

k平均法は、データ・ポイントとそのクラスターのセントロイドの間の距離の合計を最小化する反復的なプロセスです。

k平均法アルゴリズムは、クラスターの中心からの数学的距離尺度(通常はユークリッド距離)を使用してデータ・ポイントをクラスターに分類する操作を行います。データ・ポイントとデータ・ポイントに割り当てられたクラスター間の距離の合計を最小化することを目的としています。セントロイドに最も近いデータ・ポイントは、同じカテゴリ内にグループ化されます。k値(つまりクラスターの数)が大きいほど、より詳細度の高い小さなクラスターであることを意味し、k値が小さいほど、より詳細度の低い大きなクラスターであることを意味します。

kを初期化する

従来のk平均法アルゴリズムではいくつかの手順を行う必要があります。まず kセントロイドの初期化を行います。 kは特定のデータ・セットに対して選択されたクラスターの数に等しくなります。ここではランダム選択法または初期セントロイドのサンプリングによる方法のいずれかを使用します。

セントロイドを割り当てる

次に、期待値最大化法に基づく2ステップの反復プロセスを行います。1 予測ステップでは、距離(くり返しとなりますが、通常はユークリッド距離)に基づいて最も近いセントロイドに各データ・ポイントを割り当てます。最大化ステップでは、各クラスターのすべての点の平均が計算され、クラスターの中心またはセントロイドが再度割り当てられます。セントロイドの位置が収束するか、反復の最大数に到達するまでこのプロセスは繰り返されます。

k平均法はシンプルですが、初期条件や外れ値の影響を受けやすいです。最も意味のあるクラスターを実現するには、セントロイドの初期化とクラスター数kを最適化することが重要です。評価指標と初期セントロイドのサンプリング法を使用して、アルゴリズムのクラスタリング構成要素を評価し最適化する方法がいくつかあります。

クラスターの評価指標

高品質のクラスターには少なくとも2つの特性があります。

  1. クラスター内のすべてのデータポイントが類似していること。
  2. クラスターが互いに明確であること。

これらの特性は、クラスター内の距離を最小化し、データ・セット内のすべてのデータ・ポイントのクラスター間の距離を最大化することで実現されます。言い換えれば、クラスターがよりコンパクトで他のクラスターから分離されているほど、より良いクラスターということです。k平均法アルゴリズムの目標は、残差平方和(SSE)を最小化することです。2 各点から最も近いセントロイドまでのユークリッド距離の二乗のSSEを計算するおとで、各クラスター内の全変動を測定し、クラスター割り当ての品質を評価します。

クラスター評価指標は品質をチェックすると共に、クラスタリングの結果を分析するためのさまざまな視点を提供します。最適なクラスター数の選択とセントロイドの初期化を行う際に有用です。以下の評価指標は、クラスタリングにおけるクラスター内距離とクラスター間距離を測定する一般的な方法です。

イナーシャ

k平均法アルゴリズムは、イナーシャを最小化するセントロイド(クラスターの中心)を選択することを目的としています。イナーシャとは、距離指標に基づいてデータ・セットがどの程度うまくクラスタ化されたかを測定する評価指標です。イナーシャは、データ・ポイントとそのセントロイドとの距離を測定し、距離を2乗し、クラスター内の各データ・ポイントについてその2乗を合計することで計算されます。その和またはイナーシャ値がクラスター内距離です。合計が低いほどクラスター内のデータ・ポイントがコンパクトであるか、より類似していることを意味するため、より良いクラスターとなります。3

ダンインデックス

2 番目のプロパティはダンインデックスを使用して測定されます。ダンインデックスは、最小クラスター間距離と最大クラスター内距離の関係を表します。クラスター間距離が長いクラスターは、品質がより良いことを示します。クラスター同士が可能な限り異なっていることを意味するためです。4

 

K平均法のパフォーマンスの最適化

k平均法を使用して最良のクラスタリング結果を得るには、最適化を行うことが重要です。

k平均法は、初期化のステップにおいてランダム選択法を使用するため、確定的でない結果をもたらします。この方法では、同一のデータに対して2回アルゴリズムを実行すると、異なるクラスターが割り当てられる可能性があることを意味します。初期のセントロイドと最適なクラスタ数を適切に選択することでk平均法アルゴリズムの精度と速度が向上し、最適なクラスタリング結果が得られます。

クラスター・セントロイドの初期化

各クラスターは、クラスターの中心を表すデータ・ポイントであるセントロイドによって表現されます。k平均法は、クラスター内のデータ・ポイントとセントロイド(k平均値)との距離を最小化することにより、類似したデータ・ポイントをクラスターにグループ化します。k平均法アルゴリズムの主な目標は、各ポイントとポイントが割り当てられているクラスターのセントロイド間の合計距離を最小化することです。このアルゴリズムは反復的に動作し、最初のパーティション選択が最終的に得られるクラスターに大きな影響を与えることがあります。

初期化がランダムに行われるため、一貫性のない結果が生じるリスクがあります。このリスクを軽減する、セントロイドの初期化方法があります。NUS Computingによる研究では、一般的なk-means++などの方法とランダムな初期化について説明し、それらを比較しています。5

k-means++

k-means++は、初期クラスターのセントロイド選択を最適化するk平均法アルゴリズムです。研究者のArthurとVassilvitskiiによって開発されたk-means++は、最終的なクラスター割り当ての品質を向上させます。6

k-means++を使用した初期化の最初のステップは、データ・セットから1つのセントロイドを選択することです。次の各セントロイドについて、最も近いクラスターの中心から各データ・ポイントまでの距離を計算します。次のセントロイドは、ある点が既に選ばれた最も近いセントロイドからの距離に比例する確率を考慮して選択されます。このプロセスでは、選択した数のクラスター・センターが初期化されるまで繰り返し実行されます。

以下は、k-means++法を使用して初期化を行うIBM Developerのチュートリアルです。

最適なクラスター数の選択

k平均法アルゴリズムでは、最適なクラスター数に達するまで反復処理を行うのが理想的です。セントロイドが収束に達すると、最大反復回数に達したものとされます。

エルボー法

最適なクラスター数を実現する方法の1つにエルボー法があります。エルボー法は、グラフを用いてk平均法アルゴリズム内で最適なクラスター数を見つける手法です。エルボー法は各データ・ポイントとそのクラスター中心の間のユークリッド距離を測定し、「クラスター内の二乗和(WCSS)」のレベルの変化が緩やかになる点に基づいてクラスター数を選択します。この値は、クラスター数に対してプロットされた各クラスター内の総分散を表します。7

エルボー法の最初のステップは、各クラスター(k)のWCSSを計算することです。次に、WCSS値がy軸に沿ってプロットされ、クラスター数がX軸にプロットされます。クラスター数が増加するにつれて、プロットされた点は一貫したパターンを形成するようになります。このパターンから、最適なクラスター数の範囲が導き出されます。8 クラスター数を決定するときは、計算にかかるコストを考慮してください。クラスター数が増えるほど、特に大規模なデータ・セットにおいて、より多くの処理能力が必要になります。

この方法は、特に高次元や不規則な形状のデータ・セットに対して、最適とは限りません。最適なクラスター数を選択する別の方法は、シルエット解析です。9

IBM watsonx.aiにおいてPythonを使用したk平均法

watsonx.aiのIBM Watson Studio Jupyter Notebookを使用して、Pythonでk平均法を実行するための基礎を学習します。

機械学習における活用

k平均法アルゴリズムは、ほぼすべての領域や業界で使用されています。通常、次元が少なく、数値的で、簡単に分割できる機械学習データに使用されます。

研究者は、k平均法をCNNRNNなどのディープラーニング手法と統合し、コンピューター・ビジョンやNLPのほか、多くのドメインのさまざまな機械学習タスクの性能を向上させています。よくあるk平均法の活用例は次のとおりです。

顧客セグメンテーション: 企業の顧客を、共通の特徴に基づいて類似性を反映したグループに分割する手法。この戦略により、企業は特定のクラスターまたは顧客グループをターゲットとして、個別の広告キャンペーンが展開できるようになります。

ドキュメントの分類: ドキュメントにさまざまなカテゴリーや分類を割り当てる手順この方法は、多くの組織でコンテンツの管理に使用されています。ドキュメント分類器を構築するには、このWatson Discoverドキュメントを確認してください。

画像セグメンテーション:デジタル画像を個別の画素群に分割するコンピュータービジョン技法。この研究では、k平均法モデルを使用して医療画像における境界を判別する方法について詳しく説明します。10

レコメンデーション・エンジン: ウェブ上のあらゆるアプリケーションでレコメンデーション・エンジンが使用されています。主成分分析とk平均法は、eコマースビジネスを対象とした商品おすすめ機能の構築に使用されます。11

Pythonを使用したk平均法モデルのトレーニング

ハンズオンで学習されたい場合は、watsonx.aiIBM Watson Studioを使用してPythonでk平均法を実行するための基礎を説明しているチュートリアルをご覧ください。

このチュートリアルでは、k平均法を実行するscikit-learn(sklearn)ライブラリーのモジュールを使用します。このモジュールには、クラス・パラメーターで調整を行う組み込み最適化手法が含まれています。モジュールのクラスは次のようになります。

class sklearn.cluster.KMeans(n_clusters=8*init='k-means++'n_init='auto'max_iter=300tol=0.0001verbose=0random_state=Nonecopy_x=Truealgorithm='lloyd')12

パラメーターには、形成するクラスタの数と生成するセントロイドの数(n_clusters)が含まれます。初期化の方法はk-means++とrandom選択の2つが用意されています。また、最大反復回数を設定する属性も含まれています。各反復は、データ・セットをn_clustersparameterの値に分割することから始まります。

これらのライブラリーは、テスト・データ・セットを生成し、クラスタリングを実行するために使用されます。

import pandas as pd 
import sklearn
import matplotlib.pyplot as plt
import seaborn as sns
import numpy

from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
メリットとデメリット

メリット

機械学習にk平均法を活用する一般的なメリットとして、次のようなものがあります。

シンプル:k平均法はわかりやすく、実践も簡単です。k平均法は最も一般的な教師なし機械学習の手法です。

速い:k平均法は、計算的に単純な反復アプローチで設計されています。k平均法アルゴリズムは、クラスターの樹形図を構築し、すべてのデータ・ポイント間のペアワイズ距離を計算する必要がある階層クラスタリングよりも高速です。

スケーラブル:K-meansは大規模なデータ・セットにも容易に拡張でき、さまざまな形や大きさのクラスタに一般化されるため、クラスタ分析に理想的である。このアルゴリズムは計算効率が非常に高いため、他の方法と比較してスケーラブルで、大規模なデータ・セットに適しています。

デメリット

k平均法クラスタリングに関連する一般的な課題には、次のようなものがあります。

入力パラメータへの依存K-平均クラスタリングは適切に設定された入力パラメータに依存する。適切なセントロイドとクラスタ数を初期化することは、意味のあるクラスタ結果を得るために非の打ちどころがない。セントロイドの初期化がうまくいかないと、実行時間が長くなったり、クラスターの割り当てが低品質になったりする可能性がある。より良いクラスタリング結果と収束時間の短縮のために、重心初期化手順の改良に多くの研究がなされてきた。

データ・セットによっては性能不足の可能性:K-meansは、データ・セットに同程度の大きさのクラスタが含まれ、顕著な外れ値や密度のばらつきがない場合に効果的に機能する。K平均法は、データ・セットに多くのバリエーションが含まれている場合や高次元である場合にパフォーマンスが低下します。特定のデータ・セットの仮定と一致しないデータにより、k-means によって低品質のクラスターが生成される可能性があります。13 例えば、サイズが不均衡なクラスターは、重心が大きなクラスターに向かって歪め、小さなクラスター間で偏りや誤分類が生じる可能性があります。この問題を解決するには、ガウス混合ノードなどの確率モデルを使用して k-means を一般化できます。

外れ値の影響が大きい: 外れ値はk-meansクラスタリングの結果に大きな影響を与える。異なるクラスターは大きく離れている必要がありますが、データ・ポイントが歪むほど離れていてはなりません。K平均法を適用する前に、データの仮定を考慮することが重要です。K平均法は、クラスターで値を平均化することで重心を決定することを目的としているため、外れ値に特に影響を受けやすくなります。この影響を受けやすいため、過剰に適合し、外れ値を含める傾向があります。

参考情報 IBM watsonx.AIでPythonを使用したK平均法(K-means)クラスタリング

watsonx.AIのIBM Watson Studio Jupyter Notebookを使用して、PythonでK平均法(K-means)クラスタリングを実行するための基礎を学習します。

クラスタリングとは

データ・クラスタリングの詳細はこちら。

IBM watsonx.aiでRを使用したK-means法クラスタリング

watsonx.aiのIBM Watson Studio Jupyter Notebookを使用して、RでK-means法クラスタリングを実行するための基礎を学習します。

次のステップ

AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、デプロイしましょう。わずかなデータとわずかな時間でAIアプリケーションを構築できます。

watsonx.aiの詳細はこちら デモの予約
脚注

1 Todd K. Moon、「期待値最大化アルゴリズム」、IEE 信号処理マガジン、 https://ieeexplore.ieee.org/document/543975(ibm.com外部へのリンク)

2 Kevin Arvai、「Python での K-Means クラスタリング: 実践ガイド」、 https://realpython.com/k-means-clustering-python/#:~:text=Understanding%20the%20K%2DMeans%20Algorithm、-Conventional%20k%2Dmeans&text=The%20quality%20of%20the%20cluster、point%20to%20its%20closest%20centroid。(ibm.com外部へのリンク)

3 「クラスタリング: K-Means」、 https://www.codecademy.com/learn/dspath-unsupervised/modules/dspath-clustering/cheatsheet(ibm.com外部へのリンク)

4 「ダンインデックス」、 https://ruivieira.dev/dunn-index.html(ibm.com外部へのリンク)

5 Xiangyuan、Siyuan、Hao、「k-means 初期化方法の調査」、 https://www.comp.nus.edu.sg/~arnab/randalg20/HLW.pdf (リンクは ibm.com 外部にあります)

6 Arthur, Vassilvitskii、「k-means++: 慎重なシーディングの利点」、スタンフォード、 https://theory.stanford.edu/~sergei/papers/kMeansPP-soda.pdf(ibm.com外部へのリンク)

7 Gutierrez、「教師なし学習: クラスターの評価」、 https://opendatascience.com/unsupervised-learning-evaluating-clusters/ (リンクは ibm.com 外部にあります)

8 「IBM watsonx.AIでの Python を使用した K 平均法クラスタリング」https://developer.ibm.com/tutorials/awb-k-means-clustering-in-python/ 、ステップ4 (ibm.com外部へのリンク)

9 Shutaywi, Kachouie、「クラスタリングへのアプリケーションによる機械学習のパフォーマンス評価のためのシルエット分析」、2021 年 6 月、 https://www.mdpi.com/1099-4300/23/6/759(ibm.com外部へのリンク)

10 Dhanachandra、Manglem、Chanu、「K平均法クラスタリングアルゴリズムと減算クラスタリングアルゴリズムを使用した画像セグメンテーション」、ScienceDirect Vol 54、764-771ページ、 https://www.sciencedirect.com/science/article/pii/S1877050915014143(ibm.com外部へのリンク)

11 Bagus Mulyawan 他、「K-Means クラスタリング法による顧客分類に基づく推奨製品」、2019 IOP Conf.Ser.: MaterSci.Eng.508 012123 https://iopscience.iop.org/article/10.1088/1757-899X/508/1/012123/pdf#:~:text=The%20K%2DMeans%20algorithm%20is,group%20customer%20based%20on %20 属性。(ibm.com外部へのリンク)

12 scikit-learn、https://github.com/scikit-learn/scikit-learn/blob/5491dc695/sklearn/cluster/_kmeans.py#L1193 (ibm.com外部へのリンク)

13 「k-meansの仮定のデモンストレーション」、 https://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_assumptions.html (リンクibm.com外部のリンク)