相関ルール マイニングに MySQL データベースを使用するにはどうすればよいですか?
はじめに:
アソシエーション ルール マイニングは、データ セット内の項目間の相関関係を発見するために使用されるデータ マイニング テクノロジです。 MySQL は、強力なデータ処理機能とクエリ機能を備えた、広く使用されているリレーショナル データベース管理システムです。この記事では、データの準備、相関ルール マイニング アルゴリズム、SQL ステートメントの実装、コード例など、相関ルール マイニングに MySQL データベースを使用する方法を紹介します。
1. データの準備
マイニング関連ルールの前に、まず適切なデータ セットを準備する必要があります。データ セットは相関ルール マイニングの基礎となり、マイニングが必要なトランザクションとアイテム セットが含まれます。 MySQL では、データ テーブルを作成することでデータ セットを保存できます。たとえば、ショッピング バスケット データの関連付けルールをマイニングすると仮定すると、各顧客のショッピング レコードを保存する「トランザクション」という名前のデータ テーブルを作成できます。各レコードには顧客による複数の購入が含まれます。
CREATE TABLE トランザクション (
customer_id INT,
item_id INT
);
次に、ショッピング バスケットのデータをデータ テーブルに挿入します:
INSERT INTO トランザクション (customer_id, item_id) VALUES
(1, 101),
(1, 102),
(1, 103),
(2, 101),
(2, 104),
(3, 102),
(3, 105),
(4, 101),
(4, 103),
(4, 104);
2. 相関ルール マイニング アルゴリズム
一般的な相関ルール マイニング アルゴリズムには、Apriori アルゴリズムと FP-Growth アルゴリズムが含まれます。 Apriori アルゴリズムは、候補セットに基づく反復アルゴリズムであり、徐々に候補セットを生成し、サポートしきい値を計算することによって、頻繁に使用されるアイテム セットと関連付けルールを発見します。 FP-Growth アルゴリズムは、頻繁に使用されるアイテム セットと関連付けルールを効率的にマイニングできるプレフィックス ツリー ベースのアルゴリズムです。 MySQL では、SQL ステートメントを使用してこれら 2 つのアルゴリズムを実装できます。
3. SQL ステートメントの実装
SELECT item_id, COUNT(*) AS support
FROMtransactions
GROUP BY item_id
HAVING support >= min_support ;
このうち、「item_id」はアイテム セット内のアイテム、「support」はアイテム セットのサポート、「min_support」は設定された最小サポートしきい値です。この SQL ステートメントは、最小サポート要件を満たす頻繁なアイテムセットを返します。
次に、次の SQL ステートメントを通じて関連付けルールを生成します:
SELECT t1.item_id AS anecedent, t2.item_id AS consequent,
COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence
FROM トランザクション AS t1, トランザクション AS t2
WHERE t1.item_id != t2.item_id
GROUP BY t1.item_id, t2.item_id
HAVINGconfidence>= min_confidence;
このうち、「前件」は前のものです。ルールの項目、「consequent」はルールの後件、「confidence」はルールの信頼度、「min_confidence」は設定された最小信頼度しきい値です。この SQL ステートメントは、最小信頼要件を満たす関連付けルールを返します。
まず、アイテムの頻繁なアイテムセットを保存する一時テーブルを作成します:
CREATE TEMPORARY TABLEfrequency_items (
item_id INT,
support INT
) ;
次に、次の SQL ステートメントを使用して頻繁なアイテムセットを生成します:
INSERT INTOfrequency_items
SELECT item_id, COUNT(*) AS support
FROMtransactions
GROUP BY item_id
HAVING support >= min_support;
次に、頻繁に使用される項目のセットを保存するユーザー定義変数を作成します:
SET @frequent_items = '';
次に、次の SQL ステートメントを使用して関連付けルールを生成します:
SELECT t1.item_id AS anecedent、t2.item_id AS consequent、
COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence
FROM トランザクション AS t1、トランザクション AS t2
WHERE t1.item_id ! = t2.item_id
AND FIND_IN_SET(t1.item_id, @frequent_items) > 0
AND FIND_IN_SET(t2.item_id, @frequent_items) > 0
GROUP BY t1.item_id, t2 .item_id
HAVINGconfidence >= min_confidence;
最後に、次の SQL ステートメントを使用してユーザー定義変数を更新します。
SET @frequent_items = (SELECT GROUP_CONCAT(item_id) FROMfrequent_items );
4. コード例
以下は、MySQL データベースを使用した相関ルール マイニングのコード例です:
--データ テーブルの作成
CREATE TABLE トランザクション (
) customer_id INT,
item_id INT
);
--買い物かごデータを挿入
INSERT INTO トランザクション (customer_id, item_id) VALUES
(1, 101),
( 1, 102)、
(1, 103)、
(2, 101)、
(2, 104)、
(3, 102)、
(3, 105)、
(4, 101) ,
(4, 103),
(4, 104);
-- アプリオリ アルゴリズム
-- 頻繁に使用される項目セットを生成
SELECT item_id, COUNT(*) AS サポート
FROM トランザクション
GROUP BY item_id
HAVING サポート >= 2;
-- 関連付けルールを生成
SELECT t1.item_id AS 先行、 t2.item_id AS consequent,
COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence
FROM トランザクション AS t1、トランザクション AS t2
WHERE t1.item_id != t2.item_id
GROUP BY t1.item_id, t2.item_id
HAVING 自信>= 0.5;
-- FP-Growth アルゴリズム
-- 一時テーブルの作成
CREATE TEMPORARY TABLEfrequency_items (
item_id INT,
support INT
);
-- 頻繁に使用するアイテムセットを生成します
INSERT INTOfrequency_items
SELECT item_id, COUNT(*) AS support
FROMtransactions
GROUP BY item_id
HAVING support >= 2;
-- ユーザー定義変数の作成
SET @frequent_items = '';
-- 関連付けルールの生成
SELECT t1.item_id AS anecedent, t2.item_id AS consequent,
COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence
FROM トランザクション AS t1、トランザクション AS t2
WHERE t1.item_id != t2.item_id
AND FIND_IN_SET(t1.item_id, @frequent_items) > 0
AND FIND_IN_SET(t2.item_id, @frequent_items) > 0
GROUP BY t1.item_id, t2.item_id
HAVINGconfidence>= 0.5;
結論:
この記事の導入部を通じて、次の方法を理解しました。相関ルール マイニングには MySQL データベースを使用します。 Apriori アルゴリズムと FP-Growth アルゴリズムはどちらも SQL ステートメントを通じて実装できます。この記事が、相関ルール マイニングに MySQL を使用する際に役立つことを願っています。
以上がMySQL データベースを相関ルール マイニングに使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。