Tải bản đầy đủ (.pdf) (27 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.14 MB, 27 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

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

<b>TRƯỜNG ĐẠI HỌC CƠNG NGHỆ TP. HỒ CHÍ MINH</b>

<b>ĐỒ ÁN MƠN HỌC: Trí Tuệ Nhân Tạo</b>

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

Ngành:<b>Công Nghệ Thông Tin</b>

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

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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

Mục Lục

<b>I.MƠ TẢ VẤN ĐỀ...3</b>

<b>1.GIỚI THIỆU...3</b>

<b>2.ĐỊNH NGHĨA...3</b>

<b>II. BÀI TỐN...5</b>

<b>1.GIỚI THIỆU BÀI TOÁN:...5</b>

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

<b>3.ỨNG DỤNG...5</b>

<b>4.NGUYÊN TẮC HOẠT ĐỘNG...6</b>

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

<b>1.XÂY DỰNG CÂY PCC_TREE...6</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I. MÔ TẢ VẤN ĐỀ</b>

<b> 1.GIỚI THIỆU</b>

Khai thác tập mục thường xuyên, lần đầu tiên được đề xuất bởi <i>Agrawal et al</i>, 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 tố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.

<b>2.ĐỊNH NGHĨA</b>

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 tố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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

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

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 tốn đã ra đời.

<b>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:</b>

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 tốn và tăng hiệu suất của thuật tốn.

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

<i>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ế q trình tạo frequent itemset theo thuật tốn Apriori. Cây FP-growth</i> 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.

<b>II. BÀI TOÁN</b>

<b>1.GIỚI THIỆU BÀI TOÁN:</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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 tố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.

<b>2.HIỆN TRẠNG VÀ CẢI TIẾN</b>

HIỆN TRẠNG : thuật tố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.

<i>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 </i>

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

<i>2.Đồng bộ hóa dữ liệu: Q 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ử </i>

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.

<i>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 </i>

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 tố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.

<i>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 tốn song song và phân tán để khai phá </i>

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

<i>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ư </i>

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

<i>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ả</i>

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

<b>3.ỨNG DỤNG</b>

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ị.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>4.NGUYÊN TẮC HOẠT ĐỘNG</b>

.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 tốn support global của frequent itemset.

.Dựa vào việc tính tố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.

<b>1.XÂY DỰNG CÂY PCC_TREE</b>

<b>1.1:</b> Đị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.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="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 .

<b>CÂY PPC-TREE:</b>

(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.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>Dòng 7-8: </b>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.

<b>2. nodesets-diffnodesets</b>

<b>Định nghĩa 2. Gọi</b>n được sắp xếp theo thứ tự hỗ

trong .

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

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

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

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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

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

<b>Định nghĩa 4. Nodesets of items</b>() 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.

<b>Định nghĩa 5. (Nodesets of 2-itemsets)</b>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 .

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="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.

<b>Định nghĩa 6. (Nodesets của -itemset):</b> 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:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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.

<b>Định nghĩa 7. (DiffNodesets of 2-itemsets)</b>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 <small>i i 1 2 </small>= {( x.pre-order x.count , ) | x Tập nút <small>i 1</small> y ( Tập nút , nút tương ứng với là nút tổ tiên của nút tương ứng<small>i 2 </small> 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ử

<small>12</small>

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)}

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>IV.ĐỀỀ XUẤẤT THU T Ậ</b>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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 =

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b>9</b>

P.support .support E.count;

<b>10</b>

IF P.support .support THEN

<b>11</b>

Nd.equivalent_items Nd.equivalent_items ;

<b>12</b>

ELSE IF P.support , THEN

<b>13</b>

Create node Ndi;

<b>14</b>

Ndi .label i;

<b>15</b>

Nd<small>i</small> .itemset P;

<b>16</b>

Nd.childnodes Nd.childnodes {Ndi};

<b>17</b>

Next_Cad_ set Next_Cad_ set {i};

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>33</b>

Đang xây dựng_Pattern_Tree ;

<b>34</b>

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).

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="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).

<b>3.DFIN Algorithm</b>

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

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 tố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 tố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ả.

</div>

×