相関について

相関は、ある集合内の項目が同時に発生する確率を見つけるOracle Machine Learning for SQL機能です。

同時に発生する項目間の関係は、相関ルールで表されます。

相関ルール

データ内の相関のパターンを特定します。

相関モデルの結果は、データ内の相関のパターンを識別するルールです。Oracle Machine Learning for SQLでは、相関モデルのスコアリング操作はサポートされていません。

相関ルールは次のように適用できます。

  • 支持度: 各項目がデータで同時に発生する頻度。
  • 信頼度: 前件を含むトランザクション内で後件が発生する頻度。
  • : 項目相関に結び付けられるビジネス価値の大きさ

マーケット・バスケット分析

相関ルールは、よく販売トランザクションの分析に使用されます。たとえば、食料品店でシリアルを購入する顧客は同時に牛乳も購入することが多いことがわかっているとします。実際に相関分析を行うと、精算時にシリアルと牛乳の両方が含まれている確率は85%である、という結果が得られます。この関係は、次のルールで表すことができます。

Cereal implies milk with 85% confidence 

相関モデルのこうした応用は、マーケット・バスケット分析と呼ばれています。マーケット・バスケット分析は、ダイレクト・マーケティングや販促活動、ビジネス上の傾向の把握などに役立ちます。また、店舗レイアウト、カタログのデザイン、抱合せ販売などにも活用できます。

マーケット・バスケット・データの使用

マーケット・バスケット分析での相関とAprioriの使用について理解します。

マーケット・バスケット・データは、一連のバスケットまたはトランザクションで販売された商品群を表します。Oracle Machine Learning for SQLには、マーケット・バスケット分析用の相関機械学習機能があります。

相関モデルで使用されるAprioriアルゴリズムでは、ある商品が別の商品と同時に購入される傾向を記述する相関ルールが生成されます。たとえば、相関ルールで、ピーナッツ・バターを購入する顧客は80%の確率でジャムも購入すると示される場合があります。

マーケット・バスケット・データは通常、トランザクショナルです。トランザクショナルなデータでは、1つのケースが1回の取引(トランザクション)を表し、トランザクションのデータは複数の行に格納されます。OML4SQL相関モデルは、トランザクショナル・データまたは単一レコード・ケースのデータで構築できます。ODMS_ITEM_ID_COLUMN_NAMEおよびODMS_ITEM_VALUE_COLUMN_NAMEの設定では、相関ルールのデータがトランザクショナル形式かどうかを指定できます。

ノート:

相関モデルは、ネイティブ・トランザクショナル・データで構築できる唯一のモデルです。その他すべての種類のモデルについて、OML4SQLでは、単一レコード・ケース形式で存在するデータが必要です。

Aprioriアルゴリズムでは、データがトランザクショナルで、データに多数の欠損値が含まれていることが想定されます。Aprioriは、すべての欠損値をスパース・データとして解釈し、スパース・データを処理するための独自のネイティブ・メカニズムを持っています。

参照:

ODMS_ITEM_ID_COLUMN_NAME設定およびODMS_ITEM_VALUE_COLUMN_NAME設定の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

例: マーケット・バスケット分析用のネストした列の作成

例に、マーケット・バスケット分析用のネストした列を定義する方法を示します。

相関モデルは、ネイティブ・トランザクショナル・データまたはネストしたデータで構築できます。次の例に、マーケット・バスケット分析用のネストした列を定義する方法を示します。

次のSQL文は、SALES_TRANS_CUST_NESTEDというビューで、このデータをDM_NESTED_NUMERICALS型の列に変換します。このビューは、機械学習のケース表として使用できます。

CREATE VIEW sales_trans_cust_nested AS
             SELECT trans_id,
                     CAST(COLLECT(DM_NESTED_NUMERICAL(
                     prod_name, 1))
                     AS DM_NESTED_NUMERICALS) custprods
                  FROM sales_trans_cust
             GROUP BY trans_id;

この問合せは、変換されたデータから2つの行を戻します。

SELECT * FROM sales_trans_cust_nested 
               WHERE trans_id < 101000
               AND trans_id > 100997;
 

出力内容は次のようになります。


TRANS_ID  CUSTPRODS(ATTRIBUTE_NAME, VALUE)
-------  ------------------------------------------------
100998   DM_NESTED_NUMERICALS
          (DM_NESTED_NUMERICAL('O/S Documentation Set - English', 1)
100999   DM_NESTED_NUMERICALS
          (DM_NESTED_NUMERICAL('CD-RW, High Speed Pack of 5', 1),
           DM_NESTED_NUMERICAL('External 8X CD-ROM', 1), 
           DM_NESTED_NUMERICAL('SIMM- 16MB PCMCIAII card', 1))

例7-1 ネストした列への変換

ビューSALES_TRANS_CUSTは、各マーケット・バスケットを識別するトランザクションIDと、各バスケット内の製品のリストを表示します。

describe sales_trans_cust

出力内容は次のようになります。


 Name                                                  Null?    Type
 ----------------------------------------------------- -------- ----------------
 TRANS_ID                                              NOT NULL NUMBER
 PROD_NAME                                             NOT NULL VARCHAR2(50)
 QUANTITY                                                       NUMBER

関連トピック

相関ルールとE-Commerce

別のドメインでの相関ルールの適用について学習します。

相関モデルは、その他の分野でも重要な用途に応用されています。たとえば、E-Commerceにおいて、Webページのパーソナライズに相関ルールを使用することがあります。相関モデルから、ページAとページBにアクセスするユーザーは70%の確率で同じセッション内でページCにアクセスすることがわかったとします。このルールに基づいて、ページCに関心を持ちそうなユーザー向けに動的なリンクを作成することが可能です。この相関ルールは次のように表します。

A and B imply C with 70% confidence 

関連トピック

小売データの分析への使用

小売分析では、相関ルールおよび相関モデルが頻繁に使用されます。

相関ルールは、ルールまたは項目セットともに集計を計算するように拡張されています。

例: 集計の計算

この例は、顧客の食品購入データと利益データを使用して、集計を計算する方法を示しています。

食料品店データの集計の計算

食料品店に次のデータがあると仮定します。

表7-1 食料品店データ

顧客 品目A 品目B 品目C 品目D
顧客1 購入(利益$5.00) 購入(利益$3.20) 購入(利益$12.00) 該当なし
顧客2 購入(利益$4.00) 該当なし 購入(利益$4.20) 該当なし
顧客3 購入(利益$3.00) 購入(利益$10.00) 購入(利益$14.00) 購入(利益$8.00)
顧客4 購入(利益$2.00) 該当なし 該当なし 購入(利益$1.00)

各顧客のバスケットは、トランザクションとして表示できます。店舗の管理者は、特定の相関ルールだけではなく、そのようなルールが存在する場合、集計された利益にも関心があります。

この例では、顧客1と顧客3の相関ルールの1つは、(A, B)=>Cとなります。このルールと合せて、店舗管理者は、次の項目を知りたいと場合があります。

  • このルールに出現する品目Aの利益合計

  • このルールに出現する品目Bの利益合計

  • このルールに出現する結果としてのCの利益合計

  • このルールに出現する全品目の利益合計

このルールの場合、品目Aの利益は$5.00 + $3.00 = $8.00、品目Bの利益は$3.20 + $10.00 = $13.20、結果のCの品目は$12.00 + $14.00 = $26.00、前件の項目セット(A, B)は$8.00 + $13.20 = $21.20です。ルール全体の利益は、$21.20 + $26.00 = $47.40です。

トランザクショナル・データ

マーケット・バスケット・データとも呼ばれるトランザクショナル・データについて学習します。

他の機械学習機能と異なり、相関はトランザクションに基づきます。トランザクション処理では、清算カウンタにおけるマーケット・バスケットの内容などの項目の集まりがケースに含まれます。トランザクションの項目の集まりが、そのトランザクションの1つの属性です。トランザクションに関連するタイムスタンプやユーザーIDなどがその他の属性となります。

マーケット・バスケット・データとも呼ばれるトランザクショナル・データは、レコード(行)のセットでケースが構成されるため、複数レコード・ケースの形式であると言えます。たとえば、次の図で、ケース11は3つの行で構成され、ケース12および13はそれぞれ4つの行で構成されています。

図7-1 トランザクショナル・データ

図7-1の説明を次に示します
「図7-1 トランザクショナル・データ」の説明

トランザクショナル・データ以外のデータは、単一レコード(行)でケースが構成されるため、単一レコード・ケースの形式であると言えます。Oracle Machine Learning for SQLでは、トランザクショナルまたはトランザクショナル以外または二次元のデータ形式を使用して相関モデルを作成できます。データは、トランザクショナルでない場合は、相関機械学習アクティビティを実行する前に、ネストした列に変換してトランザクショナルにすることができます。トランザクショナル形式は通常の形式ですが、相関ルール・モデルは2次元入力形式を受け入れます。トランザクショナル以外の入力形式の場合、ケースID列以外のすべての列のコンテンツのそれぞれ異なる組合せが一意の項目として扱われます。

相関のアルゴリズム

Oracle Machine Learning for SQLは、高頻度項目セット内の項目に関する相関ルールを計算するときにAprioriアルゴリズムを使用します。

関連トピック