>  기사  >  데이터 베이스  >  연관 규칙 마이닝에 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?

연관 규칙 마이닝에 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?

PHPz
PHPz원래의
2023-07-12 20:06:07767검색

연관 규칙 마이닝에 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?

소개:
연관 규칙 마이닝은 데이터 세트의 항목 간 연관성을 발견하는 데 사용되는 데이터 마이닝 기술입니다. MySQL은 강력한 데이터 처리 및 쿼리 기능을 갖춘 널리 사용되는 관계형 데이터베이스 관리 시스템입니다. 이 기사에서는 데이터 준비, 연관 규칙 마이닝 알고리즘, SQL 문 구현 및 코드 예제를 포함하여 연관 규칙 마이닝을 위해 MySQL 데이터베이스를 사용하는 방법을 소개합니다.

1. 데이터 준비
광업 협회 규칙에 앞서 먼저 적합한 데이터 세트를 준비해야 합니다. 데이터 세트는 마이닝해야 하는 트랜잭션 및 항목 세트를 포함하는 연관 규칙 마이닝의 기초입니다. MySQL에서는 데이터 테이블을 생성하여 데이터 세트를 저장할 수 있습니다. 예를 들어 장바구니 데이터의 연관 규칙을 마이닝한다고 가정하면 "transactions"라는 데이터 테이블을 만들어 각 고객의 쇼핑 기록을 저장할 수 있습니다. 여기서 각 기록에는 고객의 여러 구매가 포함됩니다.

CREATE TABLE transaction (
customer_id INT,
item_id INT
);

그런 다음 장바구니 데이터를 데이터 테이블에 삽입합니다.

INSERT INTO transaction (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 문을 사용하여 이 두 가지 알고리즘을 구현할 수 있습니다.

3. SQL 문 구현

  1. Apriori 알고리즘
    Apriori 알고리즘은 빈발 항목 집합 생성과 연관 규칙 생성의 두 단계로 구성됩니다. 먼저 다음 SQL 문을 통해 빈발 항목 집합을 생성합니다.

SELECT item_id, COUNT(*) AS support
FROM transaction
GROUP BY item_id
HAVING support >= min_support;

여기서 "item_id"는 항목입니다. itemset 에서 "support"는 항목 세트의 지원이고 "min_support"는 설정된 최소 지원 임계값입니다. 이 SQL 문은 최소 지원 요구 사항을 충족하는 빈발 항목 집합을 반환합니다.

그런 다음 다음 SQL 문을 통해 연관 규칙을 생성합니다.

SELECT t1.item_id AS antecedent, t2.item_id AS consequent,

   COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence

FROM transaction AS t1, transaction AS t2
WHERE t1.item_id != t2.item_id
GROUP BY t1.item_id, t2.item_id
HAVING Confidence >= min_confidence;

여기서 "antecedent"는 규칙의 전항이고, "consequent"는 규칙의 결과이고, "confidence"는 규칙의 신뢰도입니다. , "min_confidence"는 최소 신뢰도 임계값 설정입니다. 이 SQL 문은 최소 신뢰도 요구 사항을 충족하는 연관 규칙을 반환합니다.

  1. FP-성장 알고리즘
    FP-성장 알고리즘은 접두사 트리를 구축하여 빈번한 항목 집합과 연관 규칙을 마이닝합니다. MySQL에서는 임시 테이블과 사용자 정의 변수를 사용하여 FP-Growth 알고리즘을 구현할 수 있습니다.

먼저, 항목의 빈번한 항목 집합을 저장할 임시 테이블을 생성합니다:

CREATE TEMPORARY TABLEfrequent_items (
item_id INT,
support INT
)

그런 다음, 다음 SQL 문을 통해 빈번한 항목 집합을 생성합니다.

INSERT INTO frequent_items
SELECT item_id, COUNT(*) AS support
FROM transaction
GROUP BY item_id
HAVING support >= min_support;

다음으로 자주 사용하는 항목 집합을 저장하기 위한 사용자 정의 변수를 만듭니다.

SET @frequent_items = ' ';

그런 다음 다음 SQL 문을 통해 연관 규칙을 생성합니다.

SELECT t1.item_id AS antecedent, t2.item_id AS consequent,

   COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence

FROM transaction AS t1, transaction AS t2
WHERE t1.item_id != t2 .item_id _ 및 Find_in_Set(T1.Item_id, @Frequent_items) & GT; 0
및 Find_in_SET(T2.ITEM_ID, @Frequent_items) & GT 0
Group by T1.item_id, Onhaving Confident; , 다음 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);

-- Apriori 알고리즘
-- 자주 사용하는 항목 집합 생성
SELECT item_id, COUNT(*) AS support

FROM transaction

GROUP BY item_id
HAVING support >= 2;

- - 연관 규칙 생성
SELECT t1.item_id AS antecedent, t2.item_id AS consequent,

   COUNT(*) / (SELECT COUNT(*) FROM transactions) AS confidence

FROM transaction AS t1, transaction AS t2

WHERE t1.item_id != t2.item_id
GROUP BY t1.item_id, t2.item_id

신뢰도 확보 > = 0.5;


-- FP-성장 알고리즘
-- 임시 테이블 생성
CREATE TEMPORARY TABLE 자주_items(

item_id INT,

지원 INT
);

-- 빈번한 항목 집합 생성
잦은 항목에 삽입
SELECT item_id, COUNT(*) AS support
FROM transaction
GROUP BY item_id
HAVING support >= 2;

-- 사용자 정의 변수 만들기
SET @frequent_items = ' ';

-- 연관 규칙 생성
SELECT t1.item_id AS 선행, t2.item_id AS 결과,

   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
HAVING Confidence >= 0.5;

결론:
이 소개를 통해 기사, 우리는 연관 규칙 마이닝을 위해 MySQL 데이터베이스를 사용하는 방법을 배웠습니다. Apriori 알고리즘과 FP-Growth 알고리즘은 모두 SQL 문을 통해 구현할 수 있습니다. 이 기사가 연관 규칙 마이닝에 MySQL을 사용할 때 도움이 되기를 바랍니다.

위 내용은 연관 규칙 마이닝에 MySQL 데이터베이스를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.