9.8 相関ルール
oml.arクラスは、Aprioriアルゴリズムを実装することで、高頻度項目セットおよび相関ルールを検索します。これらはすべて、相関モデル・オブジェクトの一部です。
               
Aprioriアルゴリズムは効率的で、トランザクション数、項目数および生成される項目セットとルールの数が有効に測定されます。
oml.arクラスを使用して、マーケット・バスケット分析などで大量のトランザクション・データ内の高頻度項目セットを識別します。相関モデルの結果は、データ内の相関のパターンを識別するルールです。
                  
相関ルールは、トランザクション・レコードで一連のアイテムが出現すれば、もう1つの一連のアイテムが存在するというデータのパターンを特定します。ルールの形成に使用される項目のグループは、発生する頻度(ルールの支持度)および後件が前件に従う回数(ルールの信頼度)に応じて、最小しきい値を渡す必要があります。相関モデルは、ユーザー指定のしきい値よりも大きい支持度および信頼度を備えるすべてのルールを生成します。
Oracle Machine Learningでは、相関モデリングのスコアリング操作はサポートされていません。
oml.arクラスの属性およびメソッドの詳細は、help(oml.ar)を呼び出すか、Oracle Machine Learning for Python APIリファレンスを参照してください。
                  
相関ルール・モデルの設定
次の表は、相関ルール・モデルに適用可能な設定のリストです。
表9-3 相関ルール・モデルの設定
| 設定名 | 設定値 | 説明 | 
|---|---|---|
| 
 | 0<ASSO_ABS_ERROR≤MAX(ASSO_MIN_SUPPORT, ASSO_MIN_CONFIDENCE)  | 相関ルールのサンプリングの絶対誤差を指定します。 
 | 
| 
 | 
 | 集計する列を指定します。これは、集計する列の名前を含む文字列のカンマ区切りリストです。リスト内の列の数は10以下である必要があります。 
 項目値は必須ではありません。 デフォルト値は 項目ごとに、集計する複数の列を指定できます。ただし、これを行うと、追加のデータをバッファするためにより多くのメモリーが必要になるとともに、入力データセットが大きくなり、操作が増えることからパフォーマンスにも影響が生じます。 | 
| 
 | 
 | 前件の包含ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちの少なくとも1つの文字列が、レポートされる各相関ルールの前件部分に出現する必要があります。 デフォルト値は | 
| 
 | 
 | 前件の除外ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちのいずれの文字列も、レポートされる各相関ルールの前件部分に出現できません。 デフォルト値は | 
| 
 | 0≤ASSO_CONF_LEVEL≤1 | 相関ルールのサンプルに対する信頼水準を指定します。 
 | 
| 
 | 
 | 後件の包含ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちの少なくとも1つの文字列が、レポートされる各相関ルールの後件部分に出現する必要があります。 デフォルト値は | 
| 
 | 
 | 後件の除外ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちのいずれの文字列も、レポートされる相関ルールの後件部分に出現できません。 除外ルールを使用すると、格納する必要があるデータを削減できますが、異なる包含ルールまたは除外ルールを実行するための追加のモデルを構築する必要が生じることがあります。 デフォルト値は | 
| 
 | 
 | 各相関ルールに適用される除外ルールを設定します。これは、相関ルールに出現できない文字列のカンマ区切りリストです。リスト内の項目をルールに含めることはできません。 デフォルト値は | 
| 
 | 
 | 各相関ルールに適用される包含ルールを設定します。これは、文字列のカンマ区切りリストです。そのうちの少なくとも1つの文字列が、レポートされる各相関ルールに前件または後件として出現する必要があります デフォルト値は | 
| 
 | 
 | 相関ルールの最大ルール長。 デフォルト値は | 
| 
 | 
 | 相関ルールの最小信頼度。 デフォルト値は | 
| 
 | 
 | 各ルールで満たす必要がある最小逆確信度を設定します。 ルールの逆確信度は、ルールが発生するトランザクションの数を後件が発生するトランザクションの数で割ったものとして定義されています。 値は0から1の実数になります。 デフォルト値は | 
| 
 | 
 | 相関ルールの最小支持度。 デフォルト値は | 
| 
 | 
 | 各ルールで満たす必要がある絶対最小支持度。値は整数である必要があります。 デフォルト値は | 
| 
 | ||
| ODMS_ITEM_ID_COLUMN_NAME | column_name | トランザクションの項目を含む列の名前。この設定を指定すると、アルゴリズムは、次の2つの列で構成されるネイティブ・トランザクション形式でデータが表されると想定します。 
 | 
| ODMS_ITEM_VALUE_COLUMN_ NAME | column_name | トランザクションの各項目に関連付けられている値を含む列の名前。この設定は、データがネイティブ・トランザクション形式で表されることを示す 
 
 
 この項目値列では、(リンゴ3個などの)項目数、(マッキントッシュのリンゴなどの)項目タイプなどの情報を指定できます。 | 
関連項目:
例9-8 oml.arクラスの使用
この例では、oml.arクラスのメソッドを使用します。
                  
import pandas as pd
from sklearn import datasets 
import oml
# Load the iris data set and create a pandas.DataFrame for it.
iris = datasets.load_iris()
x = pd.DataFrame(iris.data,
                 columns = ['Sepal_Length','Sepal_Width',
                            'Petal_Length','Petal_Width'])
y = pd.DataFrame(list(map(lambda x:
                           {0: 'setosa', 1: 'versicolor',
                            2:'virginica'}[x], iris.target)),
                 columns = ['Species']))
try:
    oml.drop('IRIS')
except: 
    pass
# Create the IRIS database table.
oml_iris = oml.create(pd.concat([x, y], axis=1), table = 'IRIS')
# Create training data.
train_dat = oml.sync(table = 'IRIS')
# Specify settings.
setting = {'asso_min_support':'0.1', 'asso_min_confidence':'0.1'}
# Create an AR model object.
ar_mod = oml.ar(**setting)
# Fit the model according to the training data and parameter 
# settings.
ar_mod = ar_mod.fit(train_dat)
# Show details of the model.
ar_modこの例のリスト
>>> import pandas as pd
>>> from sklearn import datasets 
>>> import oml
>>>
>>> # Load the iris data set and create a pandas.DataFrame for it.
... iris = datasets.load_iris()
>>> x = pd.DataFrame(iris.data, 
...                  columns = ['Sepal_Length','Sepal_Width',
...                             'Petal_Length','Petal_Width'])
>>> y = pd.DataFrame(list(map(lambda x: 
...                            {0: 'setosa', 1: 'versicolor', 
...                             2:'virginica'}[x], iris.target)), 
...                  columns = ['Species'])
>>>
>>> try:
...    oml.drop('IRIS')
... except: 
...    pass
>>>
>>> # Create the IRIS database table.
... oml_iris = oml.create(pd.concat([x, y], axis=1), table = 'IRIS')
>>>
>>> # Create training data.
... train_dat = oml.sync(table = 'IRIS')
>>>
>>> # Specify settings.
... setting = {'asso_min_support':'0.1', 'asso_min_confidence':'0.1'}
>>>
>>> # Create an AR model object.
... ar_mod = oml.ar(**setting)
>>> 
>>> # Fit the model according to the training data and parameter 
... # settings.
>>> ar_mod = ar_mod.fit(train_dat)
>>> 
>>> # Show details of the model.
... ar_mod
Algorithm Name: Association Rules
Mining Function: ASSOCIATION
Settings: 
                   setting name                   setting value
0                     ALGO_NAME  ALGO_APRIORI_ASSOCIATION_RULES
1          ASSO_MAX_RULE_LENGTH                               4
2           ASSO_MIN_CONFIDENCE                             0.1
3       ASSO_MIN_REV_CONFIDENCE                               0
4              ASSO_MIN_SUPPORT                             0.1
5          ASSO_MIN_SUPPORT_INT                               1
6                  ODMS_DETAILS                     ODMS_ENABLE
7  ODMS_MISSING_VALUE_TREATMENT         ODMS_MISSING_VALUE_AUTO
8                 ODMS_SAMPLING           ODMS_SAMPLING_DISABLE
9                     PREP_AUTO                              ON
Global Statistics: 
     attribute name  attribute value         
0     ITEMSET_COUNT         6.000000
1       MAX_SUPPORT         0.333333
2          NUM_ROWS       150.000000
3        RULE_COUNT         2.000000
4 TRANSACTION_COUNT       150.000000
Attributes: 
Petal_Length 
Petal_Width 
Sepal_Length 
Sepal_Width 
Species
Partition: NO
Itemsets: 
   ITEMSET_ID   SUPPORT  NUMBER_OF_ITEMS    ITEM_NAME          ITEM_VALUE
0           1  0.193333                1  Petal_Width  .20000000000000001
1           2  0.173333                1  Sepal_Width                   3
2           3  0.333333                1      Species              setosa
3           4  0.333333                1      Species          versicolor
4           5  0.333333                1      Species           virginica
5           6  0.193333                2  Petal_Width  .20000000000000001
6           6  0.193333                2      Species              setosa
Rules: 
   RULE_ID  NUMBER_OF_ITEMS     LHS_NAME           LHS_VALUE     RHS_NAME  \
0        1                2      Species              setosa  Petal_Width
1        2                2  Petal_Width  .20000000000000001      Species
  RHS_VALUE   SUPPORT  CONFIDENCE  REVCONFIDENCE  LIFT  
0      None  0.186667        0.58           1.00     3  
1      None  0.186667        1.00           0.58     3