22 k-Means

Oracle Machine Learningでは、拡張されたk-Meansクラスタリング・アルゴリズムがサポートされています。そのアルゴリズムの使用方法を学習します。

22.1 k-Meansとは

k-Meansアルゴリズムは、指定した数のクラスタにデータを分割する、距離ベースのクラスタリング・アルゴリズムです。

距離ベースのアルゴリズムは、距離関数を使用して、ケース間の類似度を計測します。各ケースは、使用される距離関数に従って、最も近いクラスタに割り当てられます。

22.1.1 Oracle Machine Learning for SQLの拡張k-Means

Oracle Machine Learningでは、効率的な初期化、スケーラブル・パラレル・モデル作成および詳細なクラスタ・プロパティを備えた拡張k-Meansアルゴリズムが提供されます。

Oracle Machine Learning for SQLに実装されている拡張バージョンのk-Meansアルゴリズムには、次の特徴があります。

  • 距離関数: アルゴリズムでは、ユークリッドおよびコサインの各距離関数がサポートされます。デフォルトはユークリッドです。

  • スケーラブル・パラレル・モデルの作成: アルゴリズムは、次のドキュメントに基づく非常に効率的な初期化方法を使用します。Bahmani、Bahman等「スケーラブルなk-means++。」VLDB寄付の手続き5.7 (2012): 622-633

  • クラスタ・プロパティ: クラスタごとに、アルゴリズムによって、重心、各属性のヒストグラム、およびクラスタに割り当てられるデータの大部分を囲むハイパーボックスを記述するルールが戻されます。重心は、質的属性については最頻値を、量的属性については平均および分散を示します。

k-Meansをこのように処理することによって、複数のk-Meansモデルを作成する必要がなくなります。また、常に従来のk-Meansよりも優れたクラスタリング結果が得られます。

22.1.2 重心

重心は、量的属性の場合は平均値、質的属性の場合は最頻値により、クラスタ内の最も典型的なケースを表します。

重心は、クラスタ内の最も典型的なケースを表します。たとえば、顧客の年齢および収入のデータセットの場合、各クラスタの重心は、年齢と収入がそのクラスタの平均値である顧客となります。重心は一種の典型です。必ずしもクラスタに割り当てられた特定のケースを表すものではありません。

重心の属性値は、量的属性の場合は平均値、質的属性の場合は最頻値となります。

22.2 k-Meansアルゴリズム構成

Oracle Machine Learningの拡張k-Meansクラスタリング・アルゴリズムでは、いくつかの作成時設定がサポートされています。

すべての設定にはデフォルト値があります。特定の方法でアルゴリズムの動作に影響を与える場合を除き、デフォルトを上書きする必要はありません。

次の考慮事項を指定してk-Meansを構成できます。

  • クラスタ数

  • 距離関数。デフォルトの距離関数はユークリッドです。

関連項目:

使用可能なモデル設定のリストおよび説明は、DBMS_DATA_MINING - アルゴリズムの設定: k-Meansを参照してください。

ノート:

モデル設定と同じ意味でハイパーパラメータという用語も使用されます。

22.3 k-Means用のデータ準備

k-Meansアルゴリズム用のデータの準備について学習します。

k-Meansアルゴリズムでは、通常、正規化が必要です。自動データ準備では、k-Meansに対して、正規化が実行されます。ADPを使用しない場合、モデルを作成または適用する前に量的属性を正規化する必要があります。

単純な(ネストしていない)データ型の列に欠損値がある場合、k-Meansではそれらをランダムに欠損した値として解釈します。質的データの欠損値は最頻値に置換され、量的データの欠損値は平均値に置換されます。

ネストした列に欠損値がある場合、k-Meansではそれらをスパースとして解釈します。スパースな量的データは0 (ゼロ)に置換され、スパースな質的データはゼロ・ベクトルに置換されます。

KMNS_WINSORIZEパラメータを使用すると、平均値の周囲の6つの標準偏差のウィンドウ・サイズでデータを制約できます。ADPがONに設定されているかOFFに設定されているかに関係なく、KMNS_WINSORIZEパラメータを使用できます。範囲外の値は範囲の端にマップされます。このパラメータは、ユークリッド距離が使用される場合にのみ適用されます。