7.4 相関ルール

ore.odmAssocRules関数は、Aprioriアルゴリズムを実装することで、高頻度アイテム・セットを検索して相関モデルを生成します。

この関数は、マーケット・バスケット分析などの大量のトランザクション・データにおいて、アイテムの同時発生を検出します。相関ルールは、トランザクション・レコードで一連のアイテムが出現すれば、もう1つの一連のアイテムが存在するというデータのパターンを特定します。ルールの形成に使用されるアイテムのグループは、発生(ルールの支持度)する頻度および後件が前件(ルールの信頼度)に従う回数に応じて、最小しきい値を渡す必要があります。相関モデルは、ユーザー指定のしきい値よりも大きい支持度および信頼度を備えるすべてのルールを生成します。Aprioriアルゴリズムは効率的で、トランザクション数、アイテム数および生成されるアイテム・セットおよびルールの数が有効に測定されます。

formulaの指定には~ termsという形式があり、ここでtermsは分析に含まれる一連の列名です。複数の列名は列名の間に+を使用することで指定されます。~ .は、dataのすべての列をモデル構築に使用する場合に使用します。列を除外するには、除外する各列名の前に-を使用します。関数は変換を確認するためにtermsの項目に適用できます。

ore.odmAssocRules関数は、次の形式のデータを受け入れます。

  • トランザクション・データ

  • アイテムIDおよびアイテム値を使用した複数レコードのケース・データ

  • リレーショナル・データ

データの形式の指定の例および関数の引数の詳細は、help(ore.odmAssocRules)をコールしてください。

関数rulesは、クラスore.rules (一連の相関ルールを指定します)のオブジェクトを返します。ore.pullを使用して、ore.rulesオブジェクトをローカルのRセッションのメモリーにプルできます。ローカルのインメモリー・オブジェクトは、arulesパッケージで定義されているクラスrulesのものです。help(ore.rules)を参照してください。

関数itemsetsは、クラスore.itemsets (一連のアイテムセットを指定します)のオブジェクトを返します。ore.pullを使用して、ore.itemsetsオブジェクトをローカルのRセッションのメモリーにプルできます。ローカルのインメモリー・オブジェクトは、arulesパッケージで定義されているクラスitemsetsのものです。help(ore.itemsets)を参照してください。

相関ルール・モデルの設定

次の表に、相関ルール・モデルに適用される設定を示します。

表7-4 相関ルール・モデルの設定

設定名 設定値 説明
ASSO_ABS_ERROR

0<ASSO_ABS_ERROR≤MAX(ASSO_MIN_SUPPORT, ASSO_MIN_CONFIDENCE)

相関ルールのサンプリングの絶対誤差を指定します。

ASSO_ABS_ERRORの値を小さくするとサンプル・サイズが大きくなり、正確な結果が得られますが、計算時間が長くなります。ASSO_ABS_ERRORには適切な値(デフォルト値など)を設定して、サンプル・サイズが大きくなりすぎないようにしてください。

デフォルト値は0.5* MAX(ASSO_MIN_SUPPORT, ASSO_MIN_CONFIDENCE)です。

ASSO_AGGREGATES

NULL

集計する列を指定します。これは、集計する列の名前を含む文字列のカンマ区切りリストです。リスト内の列の数は10以下にする必要があります。

ODMS_ITEM_ID_COLUMN_NAMEで列名を指定した場合、ASSO_AGGREGATESを設定できます。ODMS_ITEM_ID_COLUMN_NAMEから導出されるITEM_IDおよびCASE_IDのような有効な列名がデータ表に含まれている必要があります。

項目値は必須ではありません。

デフォルト値はNULLです。

項目ごとに、集計する複数の列を指定できます。ただし、これを行うと、追加のデータをバッファするためにより多くのメモリーが必要になるとともに、入力データセットが大きくなり、操作が増えることからパフォーマンスにも影響が生じます。

ASSO_ANT_IN_RULES

NULL

前件の包含ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちの少なくとも1つの文字列が、レポートされる各相関ルールの前件部分に出現する必要があります。

デフォルト値はNULLです。

ASSO_ANT_EX_RULES

NULL

前件の除外ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちのいずれの文字列も、レポートされる各相関ルールの前件部分に出現できません。

デフォルト値はNULLです。

ASSO_CONF_LEVEL

0ASSO_CONF_LEVEL1

相関ルールのサンプルに対する信頼水準を指定します。

ASSO_CONF_LEVELの値を大きくすると、サンプル・サイズが大きくなります。0.9から1の間の値が適しています。デフォルト値は0.95です。

ASSO_CONS_IN_RULES

NULL

後件の包含ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちの少なくとも1つの文字列が、レポートされる各相関ルールの後件部分に出現する必要があります。

デフォルト値はNULLです。

ASSO_CONS_EX_RULES

NULL

後件の除外ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちのいずれの文字列も、レポートされる相関ルールの後件部分に出現できません。

除外ルールを使用すると、格納する必要があるデータを削減できますが、異なる包含ルールまたは除外ルールを実行するための追加のモデルを構築する必要が生じることがあります。

デフォルト値はNULLです。

ASSO_EX_RULES

NULL

各相関ルールに適用される除外ルールを設定します。これは、相関ルールに出現できない文字列のカンマ区切りリストです。リスト内の項目をルールに含めることはできません。

デフォルト値はNULLです。

ASSO_IN_RULES

NULL

各相関ルールに適用される包含ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちの少なくとも1つの文字列が、レポートされる各相関ルールに前件または後件として出現する必要があります

デフォルト値はNULLで、フィルタリングが適用されないことを示します。

ASSO_MAX_RULE_LENGTH TO_CHAR( 2<= numeric_expr <=20)

相関ルールの最大ルール長。

デフォルト値は4です。

ASSO_MIN_CONFIDENCE TO_CHAR( 0<= numeric_expr <=1)

相関ルールの最小信頼度。

デフォルト値は0.1です。

ASSO_MIN_REV_CONFIDENCE TO_CHAR( 0<= numeric_expr <=1)

各ルールで満たす必要がある最小逆確信度を設定します。

ルールの逆確信度は、ルールが発生するトランザクションの数を後件が発生するトランザクションの数で割ったものとして定義されています。

値は0から1の実数になります。

デフォルト値は0です。

ASSO_MIN_SUPPORT

TO_CHAR( 0<= numeric_expr <=1)

相関ルールの最小支持度。

デフォルト値は0.1です。

ASSO_MIN_SUPPORT_INT

TO_CHAR( 0<= numeric_expr <=1)

各ルールで満たす必要がある絶対最小支持度。値は整数である必要があります。

デフォルト値は1です。

ASSO_CONS_EX_RULES

   

ODMS_ITEM_ID_COLUMN_NAME

column_name

トランザクションの項目を含む列の名前。この設定を指定すると、アルゴリズムは、次の2つの列で構成されるネイティブ・トランザクション形式でデータが表されると想定します。

  • ケースID: 質的または量的のいずれか
  • 項目ID: 質的または量的のいずれか
ODMS_ITEM_VALUE_COLUMN_ NAME column_name

トランザクションの各項目に関連付けられている値を含む列の名前。この設定は、データがネイティブ・トランザクション形式で表されることを示すODMS_ITEM_ID_COLUMN_NAMEの値を指定した場合にのみ使用してください。

ASSO_AGGREGATESも使用する場合は、次の3つの列とAGGREGATES設定で指定した列がビルド・データに含まれている必要があります。

  • ケースID: 質的または量的のいずれか
  • 項目ID: 質的または量的のいずれか(ODMS_ITEM_ID_COLUMN_NAMEによって指定)
  • 項目値: 質的または量的のいずれか(ODMS_ITEM_VALUE_COLUMN_ NAMEによって指定)

ASSO_AGGREGATES、ケースIDおよび項目ID列が存在する場合、項目値列が表示される場合とされない場合があります。

この項目値列では、(リンゴ3個などの)項目数、(マッキントッシュのリンゴなどの)項目タイプなどの情報を指定できます。

例7-3 ore.odmAssocRules関数の使用方法

この例では、トランザクション・データセットに基づいて相関モデルを構築します。パッケージarulesおよびarulesVizは、生成されるルールおよびアイテムセットをクライアントのRセッションのメモリーにプルしてビジュアル化するために必要です。ルールのグラフは、例の後の図に示されています。

# Load the arules and arulesViz packages.
library(arules)
library(arulesViz)
# Create some transactional data.
id <- c(1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
item <- c("b", "d", "e", "a", "b", "c", "e", "b", "c", "d", "e")
# Push the data to the database as an ore.frame object.
transdata_of <- ore.push(data.frame(ID = id, ITEM = item))
# Build a model with specifications.
ar.mod1 <- ore.odmAssocRules(~., transdata_of, case.id.column = "ID",
             item.id.column = "ITEM", min.support = 0.6, min.confidence = 0.6,
             max.rule.length = 3)
# Generate itemsets and rules of the model.
itemsets <- itemsets(ar.mod1)
rules <- rules(ar.mod1)
# Convert the rules to the rules object in arules package.
rules.arules <- ore.pull(rules)
inspect(rules.arules)          
# Convert itemsets to the itemsets object in arules package.
itemsets.arules <- ore.pull(itemsets)
inspect(itemsets.arules)
# Plot the rules graph.
plot(rules.arules, method = "graph", interactive = TRUE)

この例のリスト

R> # Load the arules and arulesViz packages.
R> library(arules)
R> library(arulesViz)
R> # Create some transactional data.
R> id <- c(1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
R> item <- c("b", "d", "e", "a", "b", "c", "e", "b", "c", "d", "e")
R> # Push the data to the database as an ore.frame object.
R> transdata_of <- ore.push(data.frame(ID = id, ITEM = item))
R> # Build a model with specifications.
R> ar.mod1 <- ore.odmAssocRules(~., transdata_of, case.id.column = "ID",
+             item.id.column = "ITEM", min.support = 0.6, min.confidence = 0.6,
+             max.rule.length = 3)
R> # Generate itemsets and rules of the model.
R> itemsets <- itemsets(ar.mod1)
R> rules <- rules(ar.mod1)
R> # Convert the rules to the rules object in arules package.
R> rules.arules <- ore.pull(rules)
R> inspect(rules.arules)          
   lhs    rhs   support confidence lift
1  {b} => {e} 1.0000000  1.0000000    1
2  {e} => {b} 1.0000000  1.0000000    1
3  {c} => {e} 0.6666667  1.0000000    1
4  {d,                                 
    e} => {b} 0.6666667  1.0000000    1
5  {c,                                 
    e} => {b} 0.6666667  1.0000000    1
6  {b,                                 
    d} => {e} 0.6666667  1.0000000    1
7  {b,                                 
    c} => {e} 0.6666667  1.0000000    1
8  {d} => {b} 0.6666667  1.0000000    1
9  {d} => {e} 0.6666667  1.0000000    1
10 {c} => {b} 0.6666667  1.0000000    1
11 {b} => {d} 0.6666667  0.6666667    1
12 {b} => {c} 0.6666667  0.6666667    1
13 {e} => {d} 0.6666667  0.6666667    1
14 {e} => {c} 0.6666667  0.6666667    1
15 {b,                                 
    e} => {d} 0.6666667  0.6666667    1
16 {b,                                 
    e} => {c} 0.6666667  0.6666667    1
R> # Convert itemsets to the itemsets object in arules package.
R> itemsets.arules <- ore.pull(itemsets)
R> inspect(itemsets.arules)
   items   support
1  {b}   1.0000000
2  {e}   1.0000000
3  {b,            
    e}   1.0000000
4  {c}   0.6666667
5  {d}   0.6666667
6  {b,            
    c}   0.6666667
7  {b,            
    d}   0.6666667
8  {c,            
    e}   0.6666667
9  {d,            
    e}   0.6666667
10 {b,            
    c,            
    e}   0.6666667
11 {b,            
    d,            
    e}   0.6666667

R> # Plot the rules graph.
R> plot(rules.arules, method = "graph", interactive = TRUE)

図7-1 相関ルールの視覚的デモンストレーション

図7-1の説明を次に示します
「図7-1 相関ルールの視覚的デモンストレーション」の説明