Tìm Hiểu Các Thuật Toán Khám Phá Các Tập Mục Phổ Biến Trong Cơ Sở Dữ Liệu Giao Tác (Dfin-Negfin).Pdf

27 1 0
Tìm Hiểu Các Thuật Toán Khám Phá Các Tập Mục Phổ Biến Trong Cơ Sở Dữ Liệu Giao Tác (Dfin-Negfin).Pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH

ĐỒ ÁN MÔN HỌC: Trí Tuệ Nhân Tạo

Tìm hiểu các thuật toán khám phá các tập mục phổ biến trong cơ sở dữ liệu giao tác (Dfin-Negfin)

Ngành:Công Nghệ Thông Tin

Giảng viên hướng dẫn: Nguyễn Khắc Chiến

Sinh viên thực hiện: Ngô Minh ThiênMã SV: 2180601472Sinh viên thực hiện: Nguyễn Minh QuânMã SV:2180605943

Trang 2

Mục Lục

I.MÔ TẢ VẤN ĐỀ 3

1.GIỚI THIỆU 3

2.ĐỊNH NGHĨA 3

II BÀI TOÁN 5

1.GIỚI THIỆU BÀI TOÁN: 5

2.HIỆN TRẠNG VÀ CẢI TIẾN 5

3.ỨNG DỤNG 5

4.NGUYÊN TẮC HOẠT ĐỘNG 6

III.CÁC KHÁI NIỆM VÀ ĐỊNH NGHĨA 6

1.XÂY DỰNG CÂY PCC_TREE 6

Trang 3

I MÔ TẢ VẤN ĐỀ 1.GIỚI THIỆU

Khai thác tập mục thường xuyên, lần đầu tiên được đề xuất bởi Agrawal et al, là một nhiệm vụ cơ bản và thiết yếu trong lĩnh vực khai thác dữ liệu vì nó đã được sử dụng rộng rãi trong nhiều ứng dụng khai thác dữ liệu quan trọng Các ứng dụng này bao gồm việc khám phá các quy tắc kết hợp, quy tắc tuần tự, mối tương quan, tập, v.v Kể từ đề xuất đầu tiên về khai thác tập mục thường xuyên, hàng trăm thuật toán đã được đề xuất trên nhiều loại tiện ích mở rộng và ứng dụng khác nhau, từ các phương pháp khai thác dữ liệu có thể mở rộng, cho đến xử lý nhiều loại dữ liệu, các tác vụ khai thác mở rộng khác nhau và nhiều ứng dụng mới

Dựa trên DiffNodeset, chúng tôi thiết kế dFIN, một thuật toán hiệu quả để khai thác các tập mục phổ biến Hiệu quả cao của dFIN đạt được bằng ba kỹ thuật:

(1) các tập mục được biểu diễn bằng DiffNodesets, đây là một cấu trúc rất cô đọng và nhỏ hơn nhiều, có thể hỗ trợ rất nhiều cho quá trình khai thác các tập mục thường xuyên, (2) nó sử dụng chiến lược tìm kiếm kết hợp để tìm các tập phổ biến trong cây liệt kê tập hợp và

(3) nó liệt kê trực tiếp các tập phổ biến mà không cần tạo ứng cử viên trong một số trường hợp

Một nghiên cứu hiệu suất sâu rộng đã được thực hiện để so sánh hiệu suất của dFIN với FIN, PrePost, FP-growth* và Eclat_g, những thuật toán khai thác hàng đầu hiện nay Nghiên cứu thử nghiệm sâu rộng của chúng tôi cho thấy dFIN hiệu quả và luôn chạy nhanh hơn các thuật toán khác.

2.ĐỊNH NGHĨA

DFIN là viết tắt của "Distributed Frequent Itemset Mining" (khai phá tập hợp mục phổ biến phân tán) DFIN là một thuật toán được sử dụng trong khai phá dữ liệu để tìm các tập hợp mục phổ biến trong các hệ thống phân tán

Thuật toán DFIN được thiết kế để xử lý dữ liệu lớn và phân tán trên nhiều nút xửlý Nó sử dụng phân chia dữ liệu và tính toán song song để tìm kiếm các tập hợp mục phổ biến mà xuất hiện với tần suất cao trong toàn bộ tập dữ liệu.

Trang 4

Thuật toán bao gồm các thành phần:

LƯU Ý :Minsup tỉ lệ nghịch đối với Frquent itemsets,với Minsup càng nhỏ thì Frequent itemsets sẽ cho ra càng nhiều vậy nên đối với người dùng như chúng ta,ta sẽ ưu tiên đặt minsup cao nhằm giảm thiểu Frquent itemsets giúp tăng tốc độ tìm kiếm và giảm thiểu bộ nhớ cần thiết để tìm kiếm Frquent itemsets Nhưng việc tăng minsup là một phương pháp giải quyết không mang tính hiệu quả cao vậy nên các thuật toán đã ra đời

DFin có thể áp dụng các kỹ thuật tối ưu hóa sau để cải thiện hiệu suất:

Cắt tỉa (Pruning): Kỹ thuật cắt tỉa giúp loại bỏ các itemset không cần thiết và giảm số lượng phép tính cần thực hiện DFin có thể sử dụng các phương pháp như cắt tỉa dựa trên ngưỡng hỗ trợ (support threshold) để loại bỏ các itemset có tần suất xuất hiện thấp hơn ngưỡng đã định trước Điều này giúp giảm độ phức tạp tính toán và tăng hiệu suất của thuật toán

Cải tiến quá trình tạo frequent itemset: DFin có thể sử dụng các cải tiến trong quá trình tạo

frequent itemset từ dữ liệu giao dịch Một trong những cải tiến phổ biến là sử dụng cây FP-growth để thay thế quá trình tạo frequent itemset theo thuật toán Apriori Cây FP-growth giúp tạo frequent itemset một cách nhanh chóng và hiệu quả bằng cách sử dụng cấu trúc cây để lưu trữ thông tin về các itemset và tần suất của chúng

II BÀI TOÁN 1.GIỚI THIỆU BÀI TOÁN:

Trang 5

DFIN là viết tắt của "Distributed Frequent Itemset Mining" (khai phá tập hợp mục phổ biến phân tán) DFIN là một thuật toán được sử dụng trong khai phá dữ liệu để tìm các tập hợp mục phổ biến trong các hệ thống phân tán.

Thuật toán DFIN được thiết kế để xử lý dữ liệu lớn và phân tán trên nhiều nút xử lý Nó sử dụng phân chia dữ liệu và tính toán song song để tìm kiếm các tập hợp mục phổ biến mà xuất hiện với tần suất cao trong toàn bộ tập dữ liệu.

2.HIỆN TRẠNG VÀ CẢI TIẾN

HIỆN TRẠNG : thuật toán còn dựa vào overhead liên lạc, đồng bộ hóa dữ liệu, không hiệu quả với dữ liệu thưa và phụ thuộc vào cấu trúc mạng phân tán.

1.Overhead liên lạc: khi kích thước dữ liệu lớn và mạng phân tán có băng thông hạn chế Overhead

liên lạc có thể làm giảm hiệu suất của thuật toán

2.Đồng bộ hóa dữ liệu: Quá trình này có thể gây ra trễ và tốn thời gian, đặc biệt là khi số lượng nút xử

lý lớn và dữ liệu phân tán rộng Đồng bộ hóa dữ liệu là một thách thức trong việc đảm bảo tính nhất quán và đúng đắn của kết quả cuối cùng

3.Không hiệu quả khi dữ liệu thưa: Các thuật toán khai phá tập hợp mục phổ biến như Apriori hoặc

FP-Growth dựa trên việc xem xét các tập hợp con của các mục, dữ liệu thưa có thể dẫn đến số lượng tập hợp con lớn và tăng đáng kể thời gian xử lý

4.Tính phân tán và mạng phân tán: Nếu mạng phân tán không được thiết kế tối ưu hoặc dữ liệu không được phân chia đều, hiệu suất của thuật toán có thể bị giảm Không đảm bảo tìm kiếm tối ưu nhất.

CẢI TIẾN: DFIN thường có hiệu suất tốt trong việc khai phá tập hợp mục phổ biến trên dữ liệu lớn Các ưu điểm và hiệu suất.

1.Xử lý dữ liệu lớn: DFIN được thiết kế để xử lý dữ liệu lớn và phân tán trên nhiều nút xử lý.2.Tính song song và phân tán: DFIN sử dụng tính toán song song và phân tán để khai phá

tập hợp mục phổ biến

3.Hiệu suất cao: DFIN sử dụng các thuật toán khai phá tập hợp mục phổ biến hiệu quả như

Apriori hoặc FP-Growth để tìm kiếm các tập hợp mục phổ biến.

4.Tính mở rộng được: DFIN có khả năng mở rộng để xử lý dữ liệu lớn hơn và tăng cường khả

năng tính toán bằng cách thêm nút xử lý vào hệ thống phân tán.

3.ỨNG DỤNG

1.Phân tích hành vi người dùng: DFIN có thể được sử dụng để khai phá tập hợp mục phổ biến trong dữ liệu hành vi người dùng, chẳng hạn như lịch sử mua hàng trực tuyến, hoạt động trên mạng xã hội, lịch sử duyệt web và nhiều hơn nữa

2.Phân tích dữ liệu bán hàng: DFIN có thể được áp dụng trong lĩnh vực bán lẻ và phân tích dữ liệu bán hàng để khai phá tập hợp mục phổ biến.

3.Phát hiện gian lận tín dụng: DFIN có thể được sử dụng để phát hiện các mô hình mua hàng đáng ngờ hoặc không bình thường để giúp trong việc phát hiện gian lận tín dụng.

4.Phân tích dữ liệu y tế: DFIN có thể được áp dụng trong lĩnh vực y tế để khai phá tập hợp mục phổ biến trong dữ liệu bệnh nhân và lịch sử điều trị

Trang 6

4.NGUYÊN TẮC HOẠT ĐỘNG

.DFin là một thuật toán dùng để khai thác frequent itemset từ dữ liệu phân tán Nó sử dụng mô hình cây để phân tán dữ liệu và tính toán support global của frequent itemset.

.Dựa vào việc tính toán support global, DFin có thể xác định các frequent itemset trong dữ liệu phân tán.

VD: a=4=>4/5=0,8>minsup=0,4 =>a là một frequent itemset.

1.XÂY DỰNG CÂY PCC_TREE 1.1: Định nghĩa 1 Cây PPC là một cấu trúc cây:

(1) Nó bao gồm một gốc có nhãn là "null" và một tập hợp các cây con tiền tố mục là con của gốc (2) Mỗi nút trong cây con tiền tố mục bao gồm năm trường: tên mục, số đếm, danh sách con, thứ tự trước và thứ tự sau tên mục đăng ký mục mà nút này đại diện count đăng ký số lượng giao dịch được trình bày theo phần đường dẫn đến nút này danh sách con đăng ký tất cả con của nút pre-order là số thứ tự trước của nút và thứ tự sau là số thứ tự sau của nút.

PCC_TREE (Prefix-Compressed Compact Tree) là một cấu trúc dữ liệu quan trọng trong thuật toán DFin (Distributed Frequent Itemset Mining) Nó được sử dụng để lưu trữ và quản lý các itemset phổ biến trong quá trình khai phá dữ liệu phân tán

Cây PPC-TREE bao gồm:

Thuộc tính 1 Đối với bất kỳ nút nào và trong cây PPC, là tổ tiên của khi và chỉ khi pre-order pre-order và post-order post-.post-order.

Trang 7

Thuộc tính 2 Đối với bất kỳ nút nào và trong cây PPC đăng ký cùng một mục itemname item-name), nếu pre-order pre-.pre-order thì post-.pre-order post-.pre-order

CÂY PPC-TREE:

(1) Quét một lần để tìm tập hợp các mục thường xuyên (2) Sắp xếp theo thứ tự hỗ trợ giảm dần là (3) Tạo gốc của cây PPC và gắn nhãn là "null" (4) Foreach giao dịch trong DB Do

(5) Xóa tất cả các mục không thường xuyên và sắp xếp theo thứ tự Đặt danh sách mục thường xuyên được sắp xếp trong Trans là , phần tử đầu tiên và là danh sách còn lại.

Trang 8

Dòng 7-8: Quét cây PPC để tạo pre-order và post-order của mỗi nút.

min-sup=0,4 ta thu được tập mục phổ biến:Cột bên phải của Bảng 1 hiển thị các giao dịch được sắp xếp có xóa các mục không thường xuyên.

- Trong cây PCC-TREE bao gồm các phần như: PRE-ORDER,POST-ORDER và COUNT.

+ PRE-ORDER: duyệt cây theo thứ tự gốc-trái-phải +POST-ORDER:duyệt cây theo thứ tự trái-phải-gốc +COUNT:số lượng các item.

2 nodesets-diffnodesets

Định nghĩa 2 Gọin được sắp xếp theo thứ tự hỗ

trong

Ví dụ: xét ví dụ 1, xét table 1: Ta có: c =>L1

Quy ước 1 Một tập mục được coi là có thứ tự

được sắp xếp theo thứ tự Ví dụ: tập mục bao g

Định nghĩa 3 ( PP CODE) Cho một nút trongorder, N.post-order, count) mã PP của Ví dụ: (N.pre-order, N.post-order, count)

Trang 9

Từ cây PPC-TREE b->{2,3,1},{6,6,3}

Định nghĩa 4 Nodesets of items() Cho một cây PPC, Tập nút của mục thường xuyên là một chuỗi có thứ tự của tất cả các mã PP của các nút đăng ký trong cây PPC, trong đó các mã PP được sắp xếp theo thứ tự tăng dần trước.

Ví dụ:

Thuộc tính 3 Cho một mục, giả sử là Nodeset của nó Chúng tôi có cái đó và Bằng chứng Theo Định nghĩa 4, ta có Đặt và là hai chỉ mục Theo Tính chất 2, ta có từ Do đó, Tính chất 3 đúng.

Định nghĩa 5 (Nodesets of 2-itemsets)Cho các mục và , Tập nút của 2itemset , ký hiệu là Nodesets , được định nghĩa như sau:

Nodesets pre-order, count Nodesets Nodesets , nút tương ứng là tổ tiên của nút tương ứng với )}

trong đó Nodesets và Nodesets lần lượt là Nodesets của mục

Trang 10

Ví dụ:

Nodeset i1 = Nodeset của ab = {a,b} Nodeset i2 = Nodeset của ad = {a} Nút xử lý 1 chứa mục "a" và mục “b” => thuộc vào tập nút Nodesets _i1i2.

Nút xử lý 2 chứa mục "a" và không chứa mục "b" => thuộc vào tập nút Nodesets _i1i2.

Nút xử lý 3 không chứa cả mục "a" và "B" => thuộc vào tập nút Nodesets _i1i2.

Nút xử lý 4 chứa mục "b" và không chứa mục "a" => không thuộc vào tập nút Nodesets _i1i2.

Định nghĩa 6 (Nodesets của -itemset): Cho là một tập mục ( và ) Chúng tôi biểu thị Nodeset Nodeset và Nodeset Nodeset

Nodeset của , ký hiệu là Nodeset , được định nghĩa là giao điểm của Nodeset và Nodeset

Tức là Nodeset Nodeset Nodeset Ví dụ:

Nodeset1 = Nodeset của ab = {a, b}Nodeset2 = Nodeset của ad = {a}Theo định nghĩa:

Trang 11

Nodeset = Nodeset1 ∩ Nodeset2 = {a, b} ∩ {a} = {a}

Định lý 1 Cho tập mục , ta ký hiệu Tập nút của nó là , độ hỗ trợ của , , bằng E.đếm.

Định lý 2 Cho 2-itemset , chúng ta ký hiệu DiffNodeset của nó là Độ hỗ trợ của , , bằng với độ hỗ trợ count.

Định nghĩa 7 (DiffNodesets of 2-itemsets)Cho item và , chúng ta biểu thị Tập nút của chúng lần lượt là Tập nút và Tập nút DiffNodeset của 2 -itemset , ký hiệu là DiffNodesets , được định nghĩa như sau:

DiffNodesets i i 1 2 = {( x.pre-order x.count , ) | x Tập nút i 1 y ( Tập nút , nút tương ứng với là nút tổ tiên của nút tương ứngi 2 y với x )}.

trong đó Nodesets i và Nodesets i lần lượt là Nodesets của mục Ngoài ra, các phần tử 12

trong DiffNodesets được sắp xếp theo thứ tự tăng dần trước Ví dụ:

Nodeset i1 = {a, b, c} (các nút có nhãn i1) Nodeset i2 = {A,d} (các nút có nhãn i2) Nodeset b,c thuộc Tập nút i1

Nodeset b,c không có nút tổ tiên trong Tập nút i2

Do đó DiffNodesets i1i2 = {(b.pre-order, b.count), (c.pre-order, c.count)}

Trang 12

IV.ĐỀỀ XUẤẤT THU T Ậ

Trang 13

Dòng 4:Bắt đầu vòng lặp while.

Dòng 5:N_x[0].post-order (3) >N_y[0].post-order (1)=>j=j+1

Dòng 4:tiếp tục vòng lặp while.

Dòng 5: N_x[0].post-order (3)<N_y[1].post-order (4)=> không thỏa mãn => Dòng 8

Dòng 8: N_x[0].post-order (3)< N_y[1].post-order (4) và pre-order(8)=>(N_x[0].pre-order = 2, N_x[0].count = 1) vào DN_xy.

Dòng 12:tăng k lên 1 ,k=1

Dòng 4:Tiếp tục vòng lặp while.

Dòng 5:N_x[1].post-order (6)< N_y[1].post-order (4), không thỏa mãn điều kiện, di chuyển đến bước (8).

Dòng 8:N_x[1].post-order (6)< N_y[1].post-order (4) và (6)> N_y[1].pre-order (8) =>thêm (N_x[1].pre-order = 6, N_x[1].count = 3) vào DN_xy.

Dòng 12: Tăng k lên 1, k = 2.

Dòng 4: Kết thúc vòng lặp while, vì k = 2 >= l_x = 2.

Dòng 16: Vì k = 2 >= l_x = 2, không thỏa mãn điều kiện, không thực hiện bước (17).

Dòng 21: Trả về DN_xy, trong trường hợp này DN_xy = {(2, 1), (6, 3)}.

Đây chính là tập hợp DN_xy, chứa các cặp (pre-order, count) Trong ví dụ này, DN_xy =

Trang 14

9 P.support support E.count;

10 IF P.support support THEN

11 Nd.equivalent_items Nd.equivalent_items ;

12 ELSE IF P.support , THEN

13 Create node Ndi;

14 Ndi label i;

15 Ndi itemset P;

16 Nd.childnodes Nd.childnodes {Ndi};

17 Next_Cad_ set Next_Cad_ set {i};

Trang 15

33 Đang xây dựng_Pattern_Tree ;

34 Else return;

Nd là nút gốc của cây

Cad_set là tập hợp các mục tiêu lựa chọn

FIS_parent là tập FIS (frequent itemsets) của nút cha của Nd Gán Nd.equivalent_items và Nd.childnodes là tập rỗng (bước 1 và 2).

Nếu P.support bằng X.support (bước 10), tức là không có sự thay đổi trong hỗ trợ, thì thêm phần tử i vào tập Nd.equivalent_items (bước 11)

Nếu P.support lớn hơn hoặc bằng |DB| * ξ (bước 12), tức là hỗ trợ đủ lớn, thì tạo một nút mới Ndi (bước 13) và gán nhãn Ndi.label bằng i (bước 14), tập mục Ndi.itemset bằng P (bước 15), sau đó thêm Ndi vào tập Nd.childnodes (bước 16) và thêm i vào tập Next_Cad_set (bước 17)

Sau khi hoàn thành vòng lặp, nếu tập Nd.equivalent_items khác rỗng (bước 21): Tạo tập SS là tập con của Nd.equivalent_items (bước 22).

Tạo tập PSet chứa tất cả các tập A mà A là tổng hợp của Nd.label và một tập con của SS (bước 23)

Nếu FIS_parent là tập rỗng (bước 24), tức là Nd là nút gốc, gán FIT_Nd bằng PSet(bước 25)

Trang 16

Ngược lại, gán FIT_Nd bằng tập hợp các tập P' mà P' là tổng hợp của P1 và P2, với điều kiện P1 khác rỗng và thuộc PSet, và P2 khác rỗng và thuộc FIS_parent (bước 27)

Sau đó, thêm FIT_Nd vào tập F (bước 29)

Nếu tập Nd.childnodes khác rỗng (bước 31), đệ quy gọi thuật toán Constructing_Pattern_Tree với mỗi nút con Ndi của Nd (bước 33)

Nếu tập Nd.childnodes rỗng, kết thúc thuật toán và trả về (bước 35).

3.DFIN Algorithm

1.1 DFin (Distributed Frequent Itemset Mining) là một thuật toán được sử dụng để khai phá

và tìm kiếm các itemset phổ biến từ dữ liệu phân tán Với tập dữ liệu lớn và phân tán trên nhiều nút xử lý, DFin cho phép khám phá các mẫu dữ liệu phổ biến một cách hiệu quả và song song trên các nút khác nhau.

DFin algorithm sẽ phân tán dữ liệu vào các nút xử lý khác nhau và thực hiện khai phá frequent itemset trên mỗi nút

Mỗi nút sẽ tính toán support local (support trong phạm vi của nút đó) của các item và gửi kết quả về nút gốc để tính toán support global (support trên toàn bộ tập dữ liệu)

Dựa trên support global, DFin algorithm sẽ xác định frequent itemset và trả về kết quả.

Ngày đăng: 23/04/2024, 16:31

Tài liệu cùng người dùng

Tài liệu liên quan