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

mining top rank k frequent weighted itemsets using wn list structures and an early pruning strategy

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 (2.28 MB, 72 trang )

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

<b>TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG </b>

<b>KHOA CÔNG NGHỆ THƠNG TIN </b>

<b>ĐỒ ÁN CUỐI KÌ MƠN PHÂN TÍCH VÀ THIẾT KẾ GIẢITHUẬT</b>

<b>Mining top-rank-k frequent weighteditemsets using WN-list</b>

<b>structures and an early pruning strategy</b>

<i><b>Người hướng dẫn: GV NGUYỄN CHÍ THIỆNNgười thực hiện: NGUYỄN TRIỆU VI – 52100143</b></i>

<b>TRẦN THÀNH ĐẠT – 52100879Khoá : K25</b>

<b>THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023</b>

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

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

<b>TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNGKHOA CƠNG NGHỆ THƠNG TIN</b>

<b>ĐỒ ÁN CUỐI KÌ MƠN PHÂN TÍCH VÀ THIẾT KẾ GIẢITHUẬT </b>

<b>Mining top-rank-k frequent weighteditemsets using WN-list</b>

<b>structures and an early pruning strategy</b>

<b>Người hướng dẫn: GV NGUYỄN CHÍ THIỆNNgười thực hiện: NGUYỄN TRIỆU VITRẦN THÀNH ĐẠTKhoá : K25</b>

<b>THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023</b>

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

<b>LỜI CẢM ƠN</b>

Chúng em xin gửi lời cảm ơn chân thành đến thầy cô đã hướng dẫn và hỗ trợchúng em trong q trình hồn thành báo cáo mơn học về Phân tích và thiết kế giảithuật. Sự kiên nhẫn và kiến thức của thầy đã giúp em nắm bắt một cái nhìn rõ ràng vềchủ đề này.

Em cũng xin cảm ơn bạn bè đã hỗ trợ trong suốt quá trình nghiên cứu và thảoluận.

Lời cảm ơn này dành tặng thầy và các bạn đã đóng góp cho báo cáo này.Chúng em xin chân thành cảm ơn.

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

<b>ĐỒ ÁN ĐƯỢC HOÀN THÀNHTẠI TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG</b>

Tơi xin cam đoan đây là sản phẩm đồ án của riêng chúng tôi và được sự hướngdẫn của TS Nguyễn Chí Thiện;. Các nội dung nghiên cứu, kết quả trong đề tài này làtrung thực và chưa cơng bố dưới bất kỳ hình thức nào trước đây. Những số liệu trongcác bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thuthập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo.

Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệucủa các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc.

<b>Nếu phát hiện có bất kỳ sự gian lận nào tơi xin hồn tồn chịu trách nhiệmvề nội dung đồ án của mình. Trường đại học Tơn Đức Thắng không liên quan đến</b>

những vi phạm tác quyền, bản quyền do tơi gây ra trong q trình thực hiện (nếu có).

<i>TP. Hồ Chí Minh, ngày tháng năm Tác giả</i>

<i>(ký tên và ghi rõ họ tên)</i>

<i>Nguyễn Triệu Vi</i>

<i>Thành Đạt</i>

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

<b>PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN</b>

<b>Phần xác nhận của GV hướng dẫn</b>

Tp. Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

<b>Phần đánh giá của GV chấm bài</b>

Tp. Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)

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

<b>TÓM TẮT</b>

Nghiên cứu này tập trung vào bài toán khai thác các tập phổ biến trên cơ sở dữliệu được đánh trọng số, với mục tiêu chính là phát triển thuật toán khai thác Top-rank-k tập phổ biến, tập trung vào việc xử lý dữ liệu có trọng số. Các thuật toán phổ biếnnhư Apriori, FP-growth, Eclat và các phương pháp dựa trên cấu trúc N-list đã được đềxuất trước đó. Tuy nhiên, việc khai thác tập phổ biến tạo ra một lượng lớn các tập phổbiến, làm cho việc hiểu và khai thác các quy tắc trở nên khó khăn. Một giải pháp chovấn đề này là sử dụng biểu diễn rút gọn giảm kích thước tổng thể của bộ mẫu và quytắc. Hai dạng biểu diễn chính là tập phổ biến đóng (FCIs) và tập phổ biến tối đa(MFIs). Một bộ sưu tập của FCIs hoặc MFIs có thể được sử dụng để suy luận tất cả cáctập phổ biến. Số lượng FCIs hoặc MFIs ít hơn số lượng tập phổ biến, giảm thiểu khơnggian lưu trữ và u cầu thời gian tính tốn.

Nghiên cứu này giới thiệu vấn đề khai thác Top-rank-k tập phổ biến, sử dụnghai cấu trúc dữ liệu tiên tiến là tidset và diffset. Ba thuật toán cơ bản cho vấn đề nàyđược phát triển, bao gồm TFWIT, TFWID và TFWIN. TFWIT và TFWID sử dụng cấutrúc tidset và diffset để khai thác Top-rank-k tập phổ biến. Tuy nhiên, chúng chia sẻhạn chế về nén dữ liệu, dẫn đến thời gian thực hiện lớn. Do đó, thuật tốn TFWIN(Top-rank-k tập phổ biến sử dụng cấu trúc N-list có trọng số) được phát triển. Nghiêncứu này áp dụng chiến lược cắt tỉa động vào thuật toán TFWIN để khai thác Top-rank-k tập phổ biến một cách hiệu quả hơn, từ đó đề xuất thuật toán TFWIN+. Cuối cùng,nghiên cứu tiến hành một thử nghiệm thực nghiệm để so sánh thời gian chạy và sửdụng bộ nhớ giữa các phương pháp thử nghiệm. Kết quả thử nghiệm chỉ ra rằngTFWIN+ là thuật toán tốt nhất cho việc khai thác Top-rank-k tập phổ biến.

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

CHƯƠNG 2 – TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT...8

1.1 Khai thác dữ liệu (Data mining)...8

1.2 Khai phá luật kết hợp...8

<i>1.2.1 Định nghĩa...8</i>

<i>1.2.2 Khai thác tập phổ biến (Mining frequent weighted itemset)...9</i>

2.2 Thuật toán Apriori...12

CHƯƠNG 3 – FREQUENT WEIGHTED ITEMSET...3

3.1 Định nghĩa về Top-rank-k tập được đánh trọng phổ biến:...3

3.2 Ví dụ...4

CHƯƠNG 4 – TIDSET AND DIFFSET STRUCTURES FOR MINING FWIs...3

4.1 Cấu trúc Tidset và Diffset:...3

<i>4.1.1 Cấu trúc Tidset...3</i>

4.1.2 Cấu trúc Diffset...6

4.2 Thuật toán khai thác tập FWIs sử dụng cấu trúc Tidset và Diffset...9

CHƯƠNG 5 – WN-List structure for mining FWIs. Implement JAVA with TFWIN & TFWIN+...22

5.1 Định nghĩa cấu trúc WN-List:...22

5.2 Ví dụ cấu trúc WN-List:...22

5.3 Thuật tốn TFWIN: Tìm kiếm tập FWIs xếp hạng thứ k sử dụng cấu trúc WN-list...25

<i>5.3.1 Giới thiệu thuật toán & mã giả:...25</i>

<i>5.3.2 Triển khai thuật toán với Java:...26</i>

<i>5.3.3 Kết quả của thuật tốn:...30</i>

<i>5.3.4 Phân tích độ phức tạp của thuật tốn:...32</i>

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

5.4 Thuật tốn TFWIN+: Tìm kiếm tập FWIs xếp hạng thứ k sử dụng cấu trúc WN-list và

chiến lược cắt tỉa sớm...34

<i>5.4.1 Giới thiệu thuật toán & mã giả:...34</i>

<i>5.4.2 Triển khai thuật toán với Java:...35</i>

<i>5.4.3 Kết quả của thuật tốn:...38</i>

<i>5.4.4 Phân tích độ phức tạp của thuật toán:...40</i>

CHƯƠNG 6 – EMPIRICAL EVALUATION...42

6.1 Mining Time...43

6.2 Memory Usage...44

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

<b>CHƯƠNG 1 – MỞ ĐẦU</b>

<b>1.1 Đặt vấn đề</b>

Trong thời đại số hóa ngày nay, việc khai thác thơng tin từ cơ sở dữ liệu đangtrở thành một thách thức ngày càng lớn, đặc biệt là khi muốn tìm hiểu mối quan hệgiữa các sản phẩm trong danh mục có đánh trọng số. Điều này đặt ra câu hỏi về cáchthức hiệu quả nhất để khai thác thông tin từ dữ liệu có tính chất này.

Các thuật toán khai thác truyền thống như Apriori, FP-growth, và Eclat đãchứng minh được sự hiệu quả trong việc khai thác tập phổ biến từ cơ sở dữ liệu. Tuynhiên, khi dữ liệu được đánh trọng số, sự phức tạp tăng lên, đặt ra thách thức trong việcxử lý thông tin trọng số của từng sản phẩm một cách hiệu quả.

<b>1.2 Mục tiêu </b>

Để giải quyết vấn đề này, đề tài này tập trung vào bài toán khai thác Top-rank-ktập phổ biến từ cơ sở dữ liệu được đánh trọng số. Sự tiếp cận này đặt ra nhu cầu pháttriển thuật tốn mà khơng chỉ xử lý dữ liệu trọng số mà còn giảm thiểu lượng kết quảtạo ra, tăng tính hiệu quả trong việc hiểu và áp dụng thông tin.

Để đối mặt với thách thức này, nghiên cứu giới thiệu hai cấu trúc dữ liệu tiêntiến là tidset và diffset. Bằng cách sử dụng những cấu trúc này, ba thuật toán cơ bản(TFWIT, TFWID, TFWIN, TFWIN+) được phát triển để khai thác Top-rank-k tập phổbiến. Mục tiêu là vượt qua những hạn chế của các thuật toán truyền thống, đồng thờicải thiện thời gian thực hiện và khả năng nén dữ liệu.

Những nghiên cứu này không chỉ đề cập đến vấn đề lý thuyết mà còn tập trungvào sự thực tế và tính ứng dụng của việc khai thác thông tin từ cơ sở dữ liệu có đánhtrọng số. Kết quả của thử nghiệm thực nghiệm sẽ cung cấp cái nhìn rõ ràng về sự hiệuquả của các phương pháp đề xuất và mở ra hướng nghiên cứu tương lai trong lĩnh vựcnày.

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

<b>CHƯƠNG 2 – TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT</b>

<i>Tổng quan: Đề tài này tập trung vào lĩnh vực khai thác thơng tin từ cơ sở dữ liệu</i>

có tính chất đặc biệt, khi dữ liệu được đánh trọng số. Mục tiêu chính của nó là pháttriển thuật tốn khai thác Top-rank-k tập phổ biến, nơi tập trung vào xử lý thơng tin cótrọng số, giúp tìm ra những mẫu thơng tin quan trọng mà không phải xử lý tất cả cáckết quả có thể xuất hiện.

<b>1.1 Khai thác dữ liệu (Data mining)</b>

<b>Data mining – khai phá dữ liệu là quá trình phân loại, sắp xếp các tập hợp dữ</b>

liệu nhất định để xác định xu hướng, các mẫu và thiết lập các mối liên hệ hữu ích nhằmgiải quyết các vấn đề nhờ phân tích dữ liệu.

<b>Mục tiêu: cho phép các doanh nghiệp có thể dự đốn được xu hướng tương lai,</b>

nhằm đưa ra các quyết định được hỗ trợ dữ liệu từ các tập dữ liệu khổng lồ.

Trọng số của một giao dịch được tính bằng trung bình của trọng số của các mụctrong giao dịch đó. Mức hỗ trợ có trọng số của một tập mục (hoặc tập mục) được xácđịnh bằng tỷ lệ của tổng trọng số của các giao dịch chứa tập mục đó trên tổng trọng sốcủa tất cả các giao dịch. Điều này giúp đo lường sự quan trọng của một tập mục cụ thểtrong dữ liệu, đặc biệt khi dữ liệu có sự biến đổi về trọng số.

<b>Ví dụ: nếu bạn có một tập dữ liệu về mua sắm và mỗi sản phẩm có một trọng số</b>

dựa trên giá trị của nó, bạn có thể tính trọng số của mỗi giao dịch bằng cách lấy trungbình của trọng số của các sản phẩm trong giao dịch đó. Sau đó, mức hỗ trợ có trọng sốcho một tập mục cụ thể sẽ đo lường mức độ phổ biến của tập mục đó trong các giaodịch dựa trên tổng trọng số của các giao dịch mà tập mục đó xuất hiện.

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

Mục đích của luật kết hợp (Association Rule - AR) là tìm ra các mối quan hệgiữa các đối tượng trong khối lượng lớn dữ liệu.

Ví dụ: Xét CSDL khảo sát tiện nghi sử dụng ở các hộ gia đình:

1 Tivi, máylạnh2 Tủlạnh, máylạnh3 Tivi, Tủlạnh, Máylạnh4 Tivi, Máygiặt, Máylạnh

5 Tivi, Tủlạnh, Máygiặt, Máylạnh, MáyVitính6 Tivi, Máygiặt, MáyVitính

7 Tivi, Tủlạnh, Máygiặt8 Tivi, Máygiặt, MáyVitính

Luật kết hợp là biểu thức có dạng: Tivi->MáyVitính [50%,57%] hay sử dụng:Tivi-> sửdụng:Máyvitính [50%, 57%]

Nghĩa là: “57% hộ gia đình sử dụng Tivi thì cũng sử dụng Máyvitính. Tivi và Máyvitính xuất hiện chung trong 50% dòng dữ liệu."

<b>Khai thác luật kết hợp được chia làm hai giai đoạn:</b>

1. Khai thác tập phổ biến (FIs – Frequent Itemsets). 2. Sinh luật từ các tập phổ biến (ARs – Association Rules).

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

<b>5.4 Thuật toán TFWIN+: Tìm kiếm tập FWIs xếp hạng thứ k sử dụng cấu trúc WN-list và chiến lược cắt tỉa sớm</b>

5.4.1 Giới thiệu thuật toán & mã giả:

Thuật toán TFWIN+ sử dụng cấu trúc WN-List tương tự thuật toán TFWIN, tuy nhiênthuật toán TFWIN+ sử dụng thêm chiến lược cắt tỉa sớm.

Chiến lược cắt tỉa sớm tức là TFWIN+ sẽ không tạo ứng cử viên của hai FWIs C(u) vàC(v) có C(u).ws < ngưỡng tối thiểu hoặc C(v).ws < ngưỡng tối thiểu. Bên cạnh đó,thuật tốn cũng loại bỏ bất kỳ ứng cử viên nào có trọng số hỗ trợ ít hơn ngưỡng trongthủ tục đó.

Mã giả của TFWIN+:

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

* @parama Danh sách NodeCode thứ nhầ t * @paramb Danh sách NodeCode thứ hai

* @paramsumTw Tham chiế u đế n FloatByRef đế. tính tố.ng trọng số

* @return Danh sách NodeCode kế t hợp */

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

privateList<NodeCode> nodeCodeCombination(List NodeCode< >

a, List NodeCode< > , b FloatByRefsumTw) { List NodeCode< > result=newArrayList<>(); // Lặp qua phầ-n tư. cu.a danh sách thứ hai (b) for (int =0; j<b.size(); j++) { NodeCode bJ=b.get(j);

// Lặp qua phầ-n tư. cu.a danh sách thứ nhầ t (a) for (int =0; i<a.size(); i++) { NodeCode aI=a.get(i);

// Kiế.m tra điế-u kiện cho việc kế t hợp NodeCode (if bJ.preOrder <aI preOrder. &&bJ.postOrder>

aI postOrder. ) {

// Kiế.m tra và kế t hợp nế u có các NodeCode liến tiế p có cùng preOrder và

// postOrder

(if !result.isEmpty() &&

result.get(result.size() -1).preOrder== .bJ preOrder

&&result.get(result.size() 1).postOrder==bJ.postOrder) {

result.get(result.size() -1).tw+=

aI tw. ;

} else {

NodeCodetemp=newNodeCode(); temp preOrder bJ preOrder. = . ; temp postOrder bJ postOrder. = . ; temp tw. =aI tw. ;

result.add(temp); }

// Tính tố.ng trọng số sumTw.value+=aI.tw; }

} } returnresult; }

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

Nếu điều kiện đúng, phương thức tạo một đối tượng NodeCode mới (được lưu trữtrong biến temp). Nếu có các NodeCode liên tiếp có cùng preOrder và postOrder, nó sẽkết hợp chúng bằng cách cộng thêm trọng số.

Sau đó, đối tượng temp (hoặc NodeCode kết hợp) được thêm vào danh sách kết quả.Tổng trọng số (sumTw.value) được cập nhật trong quá trình lặp.

Danh sách kết quả (result) chứa các NodeCode đã được kết hợp./**

*/

privateList<FWI> tfwinPlusCandidateGeneration(List FWI< >

candidateK, floatthreshold, floatttw) {

List FWI< > candidateNext=newArrayList<>(); for (int =candidateK.size() ; -1 i>0; ) {i-- FWI cI=candidateK.get( );i

for (int = -1; j>=0; ) {j FWI cJ=candidateK.get( );j

FWI c=newFWI();

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

// Kiế.m tra tính tương đương giữa cI và cJ (if checkSameEquivalence(cI cJ, )) { // Kiế.m tra ngưỡng cu.a cI và cJ (if cI.ws<threshold||cJ.ws<threshold) continue;

// Tính tố.ng trọng số cu.a các nút FloatByRefsumTw=newFloatByRef( );0 c.nCs =nodeCodeCombination(cI.nCs cJ nCs, . ,

// Tính trọng số cu.a c c.ws= (sumTw.value ttw); // Kiế.m tra ngưỡng cu.a c (if c.ws<threshold) continue;

// Ghép các phầ-n tư. cu.a cI và cJ đế. tạo ra c

c.items=itemUnion(cI.items cJ, .items); // Thếm c vào danh sách item tiế p theo candidateNext.add( );c

} } }

returncandidateNext; }

List Candidate (candidateK): Danh sách các item hiện tại.Ngưỡng (threshold): Ngưỡng để kiểm tra tính hợp lệ của một item.

Tổng Trọng Số Của Nút (sumTw): Biến để tính tổng trọng số của các nút trong itemkết hợp.

Kiểm Tra Tính Tương Đương (checkSameEquivalence): Gọi phương thứccheckSameEquivalence để kiểm tra tính tương đương giữa cI và cJ.

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

Tính Trọng Số (c.ws = (sumTw.value / ttw);): Tính trọng số của item kết hợp.Kiểm Tra Ngưỡng (if (c.ws < threshold) continue;): Nếu trọng số của item kết hợp thấphơn ngưỡng, tiếp tục vòng lặp.

Ghép Các Phần Tử (c.items = itemUnion(cI.items, cJ.items);): Ghép các phần tử của cIvà cJ để tạo ra item mới c.

Thêm item Mới (candidateNext.add(c);): Thêm item mới c vào danh sách item tiếptheo.

Trả Về Danh Sách item Tiếp Theo (return candidateNext;): Trả về danh sách các itemmới được sinh ra.

5.4.3 Kết quả của thuật toán:packagerun;

importjava io IOException. . ;

importjava io UnsupportedEncodingException. . ;importjava net URL. . ;

importalgorithm TFWINplus. ;public classMainRunTFWINplus{

publicstaticvoidmain(String [] arg) throwsIOException { // Đường dầLn tệp tin chứa dữ liệu giao dịch StringinputTrans=fileToPath("chess.tran"); // Đường dầLn tệp tin chứa trọng số

StringinputWeights =fileToPath("chess.pro"); // Tến tệp tin đầ-u ra

Stringoutput="outputTFWIN.txt"; // Khơ.i tạo đố i tượng TFWIN+

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

TFWINplusalgorithm=newTFWINplus(); // Số lượng top rank-k

intrank=50; // Thực thi thuật toán

algorithm.executeAlogrithm(inputTrans inputWeights, ,

output rank, );

// In thống tin vế- thời gian chạy và bộ nhớ sư. dụng System.out.println("rank: " +rank);

algorithm.printStats(); }

// Phương thức chuyế.n đố.i tến tệp thành đường dầLn publicstaticStringfileToPath(StringfileName) throwsUnsupportedEncodingException {

URLurl=MainRunTFWINplus.class.getResource(fileName); returnjava net. .URLDecoder.decode(url.getPath(),"UTF-8");

}}

<b>Kết quả code:</b>

</div>

×