この章では、データ内の自然なグループを検出するための監視なしマイニング機能であるクラスタリングについて説明します。
この章では、次の項目について説明します。
クラスタリング分析では、相互になんらかの類似性を持つデータ・オブジェクトの集まり(クラスタ)を見つけます。つまり、あるクラスタのメンバーは、別のクラスタのメンバーよりも同じクラスタのメンバーに類似していることになります。クラスタリング分析の目的は、クラスタ間の類似度が低くなり、クラスタ内の類似度が高くなるような、質の高いクラスタを見つけることです。
クラスタリングは、分類と同じくデータを分割するために使用します。クラスタリング・モデルが分類と異なるのは、事前に定義されていないグループにデータを分割する点です。分類モデルの場合は、あらかじめ定義済のクラスをターゲットとして指定し、それらのクラスに割り当てることによってデータを分割します。クラスタリング・モデルではターゲットを使用しません。
クラスタリングはデータの調査に役立ちます。ケース数が多くグループが明らかでない場合、クラスタリング・アルゴリズムを使用すると、自然なグループを見つけることができます。クラスタリングは、監視ありモデルの作成対象となる同種グループを識別するためのデータの前処理手段としても有効です。
クラスタリングは、異常検出用としても使用できます。データがいくつかのクラスタに分割された後に、どのクラスタにも適合しないケースを検出することが可能です。これらのケースが異常値または外れ値です。
クラスタリングでは既知のクラスを使用しないため、クラスタの解釈が難しい場合があります。ビジネスの意思決定に使用するにあたってクラスタが信頼できるものかどうか、どのようにして判断すればよいのでしょうか。
クラスタは、クラスタリング・アルゴリズムにより生成される情報を調べることによって分析できます。Oracle Data Miningでは、各クラスタについて次の情報が生成されます。
クラスタ階層内での位置(「クラスタ・ルール」を参照)
階層内での位置を表すルール(「クラスタ・ルール」を参照)
属性ヒストグラム(「属性ヒストグラム」を参照)
クラスタの重心(「クラスタの重心」を参照)
その他の種類のデータ・マイニングと同じように、クラスタリングのプロセスは反復的であったり、複数のモデルの作成が必要となったりする場合があります。無関係な属性を削除する、または新しい属性を追加することによって、クラスタリング・モデルにより生成されるセグメントの質が向上する場合もあります。
クラスタを計算する方法にはいくつかの種類があります。それぞれのクラスタリング・アルゴリズムを次のように特徴付けることができます。
階層化: データ・オブジェクトを複数のクラスタから成る階層にグループ化します。階層は、トップダウン式またはボトムアップ式のどちらでも形成が可能です。階層化による方法では、距離関数を使用してクラスタ間の類似度を計測します。
注意: Oracle Data Miningがサポートするクラスタリング・アルゴリズムは、階層クラスタリングを実行します。 |
パーティション化: データ・オブジェクトを特定の数のクラスタにグループ化します。クラスタは、距離などの客観的な基準を最適化するように形成されます。
局所性ベース: 局所的な条件に基づいて隣接するデータ・オブジェクトをグループ化します。
グリッドベース: 入力空間を超矩形セルに分割し、低密度のセルを破棄してから、隣り合う高密度のセルを結合してクラスタを形成します。
参考: 『O-Cluster: Scalable Clustering of Large High Dimensional Data Sets』(Campos, M.M.、Milenova, B.L共著、Oracle Data Mining Technologies, 10 Van De Graaff Drive, Burlington, MA 01803) |
Oracle Data Miningでは階層クラスタリングを実行します。リーフ・クラスタは、アルゴリズムによって生成される最終クラスタです。階層内で上位にあるクラスタは中間クラスタです。
各クラスタ内のデータはルールによって説明されます。ルールとは、親クラスタを複数の子クラスタに分岐させるためのロジックを表した条件文です。ルールは、ある確率で特定のクラスタに割り当てられるケースについての条件を記述します。たとえば、次のルールはクラスタ19に割り当てられるケースに適用されます。
IF OCCUPATION in Cleric. AND OCCUPATION in Crafts AND OCCUPATION in Exec. AND OCCUPATION in Prof. CUST_GENDER in M COUNTRY_NAME in United States of America CUST_MARITAL_STATUS in Married AFFINITY_CARD in 1.0 EDUCATION in < Bach. AND EDUCATION in Bach. AND EDUCATION in HS-grad AND EDUCATION in Masters CUST_INCOME_LEVEL in B: 30,000 - 49,999 AND CUST_INCOME_LEVEL in E: 90,000 - 109,999 AGE lessOrEqual 0.7 AND AGE greaterOrEqual 0.2 THEN Cluster equal 19.0
Oracle Data Minerでは、クラスタ内の属性の値の分布をヒストグラムで表します。図7-1は、顧客データのクラスタにおける職業の分布を表したヒストグラムです。
このクラスタでは、顧客のうち専門技術職は約13%、管理職は約13%、農業従事者は約2%、などとなっています。軍隊に所属する顧客および住宅販売に従事する顧客は、このクラスタには含まれていません。
重心は、クラスタ内の最も典型的なケースを表します。たとえば、顧客の年齢および収入のデータセットの場合、各クラスタの重心は、年齢と収入がそのクラスタの平均値である顧客となります。データセットに性別が含まれている場合、重心はクラスタ内で最も登場頻度が高い性別を持ちます。図7-1には、クラスタの重心の値が表示されています。
重心は一種の典型です。必ずしもクラスタに割り当てられた特定のケースを表すものではありません。重心の属性値は、量的属性の場合は平均値、質的属性の場合は最頻値となります。
次の例では、Oracle Data Miningのサンプル・プログラムの1つによって作成されるクラスタリング・モデルkm_sh_clus_sample
を使用して、作成データ内の自然なグループを検出したり、新しいデータをスコアリングしたりするためにクラスタリングを利用する方法を紹介します。
図7-2は、モデルの作成に使用したケース表から抜粋した6つの列と10の行です。ターゲットとして指定されている列がないことに注意してください。
関連項目: Oracle Data Miningのサンプル・プログラムの詳細は、『Oracle Data Mining管理者ガイド』を参照してください。 |
詳しい分析を実行する前に、顧客データを分割する場合について考えてみます。まず、クラスタリング・アルゴリズムによって生成された、データのメトリックを分析します。図7-3は、Oracle Data Minerに表示されたクラスタの詳細です。これらの詳細は、クラスタ3のyrs_residence
属性に関するものです。現住所に2年間住んでいる顧客は20%、3年間住んでいる顧客は約25%、などの情報が表示されています。
市場調査に使用する目的で、ある地域の顧客データのデータベースを分割する必要があるとします。そこで、別の地域用に作成したクラスタリング・モデルを使用して試してみることにします。図7-4は、スコアリングした顧客データにおけるクラスタの割当ての一部です。顧客100,001がクラスタ15に含まれる確率は95.5%、顧客100,002がクラスタ6に含まれる確率は89%、などの情報が表示されています。
注意: Oracle Data Minerでは、適用出力表のDMR$CASE_ID 列に一般化されたケースIDが表示されます。各ケースのクラスタの割当ては、CLUSTER_ID 列に表示されます。当該クラスタに含まれる確率は、PROBABILITY 列に表示されます。 |
クラスタのメンバーとなる条件は、ルールに記述されます。図7-5には、クラスタ15のルールが表示されています。
Oracle Data Miningでは、k-Meansの拡張バージョン、およびOracle独自のアルゴリズムである直行パーティショニング・クラスタリング(O-Cluster)という2種類のクラスタリング・アルゴリズムをサポートしています。どちらのアルゴリズムでも、階層クラスタリングを実行します。
表7-1に、拡張k-MeansアルゴリズムとO-Clusterアルゴリズムの比較をまとめています。
表7-1 クラスタリング・アルゴリズムの比較
特徴 | 拡張k-Means | O-Cluster |
---|---|---|
クラスタリングの方法 |
距離ベース |
グリッドベース |
ケース数 |
任意のサイズのデータセットを処理可能 |
ケース数が500を超えるデータセットにより適しており、アクティブなサンプリングによって大きな表を処理する |
属性数 |
属性数が少ないデータセットにより適している |
属性数が多いデータセットにより適している |
クラスタ数 |
ユーザーが指定する |
自動的に決定される |
階層クラスタリング |
可 |
可 |
確率的なクラスタの割当て |
可 |
可 |
関連項目: Oracleによるk-Meansアルゴリズムの実装の詳細は、第13章「k-Means」を参照してください。 Oracle独自のアルゴリズムである直行パーティショニング・クラスタリングの詳細は、第17章「O-Cluster」を参照してください。 |