TÓM TẮTNghiê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ế
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CUỐI KÌ MÔN PHÂN TÍCH VÀ THIẾT KẾ GIẢI
THUẬT
Mining top-rank-k frequent weighted
itemsets using WN-list structures and an early pruning strategy
Người hướng dẫn: GV NGUYỄN CHÍ THIỆN Người thực hiện: NGUYỄN TRIỆU VI – 52100143
TRẦN THÀNH ĐẠT – 52100879
Khoá : K25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 2TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CUỐI KÌ MÔN PHÂN TÍCH VÀ THIẾT KẾ GIẢI
THUẬT
Mining top-rank-k frequent weighted
itemsets using WN-list
structures and an early pruning strategy
Người hướng dẫn: GV NGUYỄN CHÍ THIỆN Người thực hiện: NGUYỄN TRIỆU VI
TRẦN THÀNH ĐẠT Khoá : K25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 3LỜI CẢM ƠN
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 quá trình hoà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
Trang 4ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
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
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm
về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến
những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)
TP Hồ Chí Minh, ngày tháng năm
Tác giả (ký tên và ghi rõ họ tên)
Nguyễn Triệu Vi
Thành Đạt
Trang 5PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊNPhần xác nhận của GV hướng dẫn
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)
Phần đánh giá của GV chấm bài
_ _ _ _ _ _ _
Tp Hồ Chí Minh, ngày tháng năm (kí và ghi họ tên)
Trang 6Nghiê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 toá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
Trang 7MỤC LỤC
LỜI CẢM ƠN 1
TÓM TẮT 4
MỤC LỤC 5
CHƯƠNG 1 – MỞ ĐẦU 7
1.1 Đặt vấn đề 7
1.2 Mục tiêu 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
1.2.1 Định nghĩa 8
1.2.2 Khai thác tập phổ biến (Mining frequent weighted itemset) 9
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
4.1.1 Cấu trúc Tidset 3
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 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 25
5.3.1 Giới thiệu thuật toán & mã giả: 25
5.3.2 Triển khai thuật toán với Java: 26
5.3.3 Kết quả của thuật toán: 30
5.3.4 Phân tích độ phức tạp của thuật toán: 32
Trang 85.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 34
5.4.1 Giới thiệu thuật toán & mã giả: 34
5.4.2 Triển khai thuật toán với Java: 35
5.4.3 Kết quả của thuật toán: 38
5.4.4 Phân tích độ phức tạp của thuật toán: 40
CHƯƠNG 6 – EMPIRICAL EVALUATION 42
6.1 Mining Time 43
6.2 Memory Usage 44
Trang 9Cá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ệc
xử lý thông tin trọng số của từng sản phẩm một cách hiệu quả
1.2 Mục tiêu
Để 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 toá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
Trang 10CHƯƠNG 2 – TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT
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
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 toá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
1.1 Khai thác dữ liệu (Data mining)
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ữ
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
Mục tiêu: cho phép các doanh nghiệp có thể dự đoán được xu hướng tương lai,
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ố
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ố
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
Trang 111.2 Khai phá luật kết hợp
1.2.1 Định nghĩa
Khai thác luật kết hợp là một phương pháp trong lĩnh vực khám phá tri thức từ
dữ liệu (Knowledge Discovery in Databases - KDD) Nó nhằm mục đích tìm kiếm cácmối quan hệ kết hợp giữa các mục (items) trong cơ sở dữ liệu
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ạnh
2 Tủlạnh, máylạnh
3 Tivi, Tủlạnh, Máylạnh
4 Tivi, Máygiặt, Máylạnh
5 Tivi, Tủlạnh, Máygiặt, Máylạnh, MáyVitính
6 Tivi, Máygiặt, MáyVitính
7 Tivi, Tủlạnh, Máygiặt
8 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."
Khai thác luật kết hợp được chia làm hai giai đoạn:
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)
Trang 605.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
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 toá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+:
Trang 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
*/
Trang 62privateList<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++) {
(if !result.isEmpty() &&
result.get(result.size() -1).preOrder== bJ preOrder
&&result.get(result.size()
Trang 63Nế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
* @paramcandidateK a list
* @paramthreshold float
* @paramttw float
* @return
*/
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();
Trang 64c.items=itemUnion(cI.items cJ, items);
// Thếm c vào danh sách item tiế p theo
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
Trang 65Tí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 cI
và 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+
Trang 66TFWINplusalgorithm=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) throws
UnsupportedEncodingException {
URLurl=MainRunTFWINplus.class.getResource(fileName); returnjava net .URLDecoder.decode(url.getPath(),"UTF-8");
}
}
Kết quả code:
Trang 68•Duyệt qua dữ liệu có số lần lặp là n Thời gian thực hiện: O(n)
•Với mỗi dữ liệu trong cơ sở dữ liệu:
oTìm kiếm vị trí thích hợp cho mỗi dữ liệu trong cây
oThêm dữ liệu vào cây Thời gian thực hiện: O(log n)
Vậy thời gian thực hiện xây dựng WN-list:
max(O(1), O(n), O(log n) = O(n log n)
Tìm tập FWIs xếp hạng thứ k
Xác định các FWIs có trọng số tối thiểu :
Duyệt qua các phần tử trong WN-List thời gian thực hiện O(n)
Tìm các FWIs có trọng số tối thiểu Thời gian thực hiện O(log n)
Thực hiện chiến lược cắt tỉa sớm, chiến lược cắt tỉa sớm làm giảm số lần lặp lại
=>Thời gian thực hiện giảm xuống O(n)
Thời gian xác định các FWIs có trọng số tối thiểu: O(n)
Tìm các FWIs có trọng số cao nhất xếp hạng thứ k Thời gian thực hiện
O(k)
Thời gian tìm tập FWIs xếp hạng thứ k:
max(O(n), O(k)) = O(k)
Thời gian thuật toán TFWIN+: O(n log n + k)
Độ phức tạp của thuật toán TFWIN+ sẽ phụ thuộc vào các yếu tố xây dựng WN-list,sắp xếp FWIs trong WN-list, Tìm tập FWIs thứ k
Trang 69CHƯƠNG 6 – EMPIRICAL EVALUATION
Với cùng bộ dữ liệu với 3196 transaction thì
TFWIT: Time: 3254 ms, Memory:32.266MBTFWID: Time: 2765ms, Memory:28.392MBTFWIN: Time: 1629ms, Memory: 20.128MBTFWIN+: Time: 1388ms, Memory: 20.128MB