TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FPGROWTH

23 1.8K 16
TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FPGROWTH

Đ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

1 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO THU HOẠCH MÔN KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU ĐỀ TÀI: TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FP-GROWTH Giảng viên: PGS.TS. ĐỖ PHÚC Học viên: Đỗ Văn Cang Mã số: CH1001004 Lớp: Cao học CNTTQM – Khóa 5 ThJng 09 năm 2011 2 TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FP-GROWTH 3 GIỚI THIỆU  Khai khoáng dữ liệu (Data mining) thực hiện chất lọc và tìm ra trong tập muôn vàng thông tin trong cơ sở dữ liệu để tìm ra những tri thức đóng góp vai trò quang trọng cho việc phân tích và ra quyết định thông minh nhất giúp nhà sản xuất và kinh doanh giảm thiểu chi phí và gia tăng lợi nhuận trong tương lai. Một trong những vấn đề quang trọng trong data mining là tìm ra quy luật giữa các thông tin đó để biến chúng thành những tri thức, một trong những cách tìm ra các quy luật này là tìm luật kết hợp – association rules. Có rất nhiều thuật toán tìm luật kết hợp như apriori, apriori cải tiến, sử dụng hash… Các thuật toán này đóng góp vai trò rất quang trọng cho quá trình tìm kiếm luật kết hợp. Trong hầu hết các bài toán tìm luật kết hợp thì công đoạn phát sinh tập phổ biến là làm hao tốn nhiều tài nguyên của máy tính nhất. Do đó để cải tiến bài toán theo cách tốt hơn, trước tiên chúng ra hãy đặt vấn đề làm giảm chi phí cho công đoạn tìm tập phổ biến này. Trong bài thu hoạch này chúng ta sẽ “TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FP-GROWTH”. Có thể nhận xét rằng hầu hết các thuật toán liên quan đến Tree thường cho kết quả rất tuyệt vời, bởi vì bản thân tree nói lên phương pháp thực hiện khác thường so với các phương pháp thông thường, đó là phân hoạch thông tin, chia để trị. Em rất chân thành cám ơn thầy Đỗ Phúc, dạy môn học này đã cho em biết thêm các kiến thức về khái niệm, ý nghĩa, các tài liệu và ứng dụng của môn học này. Trong phạm vi một bài tiểu luận, em chỉ tập trung chủ yếu vào giải thuật Fp- Growth dựa trên Fp-Tree để tìm tập phổ biến chứ không tìm hiểu toàn bộ bài toán luật kết hợp. Tất cả các source codes download tại địa chỉ http://code.google.com/p/cdomaster/downloads/list Ngày 14 tháng 09 năm 2011 Đỗ Văn Cang 4 Mục Lục    ! "#$ %%&'()*+ %,  (/0(1 % (2" "1  (3*/4567" 89 ,%567"$$9 ,, (567" 8% :.;<=)* (%9 >#,, 5 Nội Dung  I/ Luật kết hợp – asscociation rules Giai đọan khám phá trong tiến trình KDD là giai đọan khó khăn và quan trọng nhất. Data mining không là kỹ thuật đơn giản, với ý tưởng có nhiều tri thức tiềm ẩn bên trong dữ liệu hơn là thể hiện ra bên ngoài. Với bất kỳ ứng dụng kỹ thuật nào vào việc phát hiện ra tiềm ẩn thì kỹ thuật đó có ích, do đó các kỹ thuật data mining là một nhóm hỗn hợp. Có một số bài toán điển hình vế data mining sau : • Bài toán khám phá luật kết hợp (association rules). • Bài toán phân lọai(classification) dữ liệu. • Bài toán gom nhóm(clustering) dữ liệu. • Bài toán lập mô hình. • Bài toán dự báo. • …. Trong đó luật kết hợp là tri thức quan trọng nhất tiềm ẩn trong CSDL. Luật kết hợp là một trong những kỹ thuật được nghiên cứu tốt nhất cũng như quan trọng nhất của khai mỏ dữ liệu, nó được giới thiệu lần đầu tiên vào năm 1993. Mục đích của luật kết hợp là rút ra những mối liên quan thú vị, những tập mẫu phỏ biến, những cấu trúc kết hợp hay cấu trúc ngẫu nhiên giữa những tập hợp Item trong các transaction database hoặc trong những kho dữ liệu. Ví dụ : Vi khuẩn Staphylococcus aureus có trong chất dịch khí quản của bệnh nhân sẽ kháng thuốc (lờn thuốc) Oxacillin,Clindamycin,Erythromycin ở tháng thứ 4. Với kết luận này sẽ giúp cho viêc kiểm soát nhiễm trùng bệnh viện tốt hơn. 1.1/ Một số khJi niệm: • Gọi I={i 1 ,i 2 ,…,i n } là tập các trường gọi là items. • D là tập giao tác, ở đó mỗi giao tác T i là tập các item T i ⊆ I. • Ta gọi 1 giao tác T chứa X nếu X ⊆ T (Với X ⊆ I) • Mỗi giao tác T i có chỉ danh là TID. • Luật kết hợp là một mối quan hệ điều kiện giữa hai tập các hạng mục dữ liệu X và Y theo dạng sau : Nếu X thì Y, và ký hiệu là X=>Y. Chúng ta có luật kết hợp : X=>Y, nếu : X ⊂ I, Y ⊂ I và X ∩ Y =∅ Có hai đơn vị đo cơ bản quan trọng cho luật kết hợp là : support là s và confidence là c. • Độ tác động (Support): Thể hiện phạm vi ảnh hưởng của luật trên tòan bộ CSDL. Luật X=>Y có độ support là s nếu s% số giao tác trong D có chứa X∪Y. Hay là : 6 Support(X=>Y) = Support(X ∪ Y) = Card(X ∪ Y) / Card(D)% =s% Với : Card(X ∪ Y) tập các giao tác trên CSDL có chứa cả vế trái lẫn vế phải của luật. Card(D) : Tập tất cả các dòng trên CSDL. • Độ tin cậy (Confidence) : Thể hiện độ chính xác, tính đúng đắn, hay khả năng tin cậy của luật trong phạm vi ảnh hưởng của luật(xác định bởi độ đo support). Luật X=>Y có độ tin cậy là c (confidence) nếu có c% số giao tác trong D chứa X ∪ Y so với tổng số giao tác có trong D chỉ chứa X. Khi đó ta có : Confidence(X=>Y) = Card(X ∪ Y) / Card(X)% = c% Với : Card(X ∪ Y) tập các giao tác trên CSDL có chứa cả vế trái lẫn vế phải của luật. Card(X) : Tổng số dòng chứa vế trái của luật trên CSDL.  Tóm lại tìm luật kết hợp là đi tìm những luật X=>Y trong CDSL sao cho luật thỏa những giới hạn tối thiểu support và confidence cho trước. 7 1.2/ Bài toJn tổng quJt Bài toán tìm luật kết hợp tổng quát ta có thể thực hiện các bước cơ bản sau Bước 1: Biến đổi CSDL thành các số nguyên Phân chia các giá trị của thuột tính thành những khoảng và ứng với mỗi khoảng liên kết nó với một giá trị nguyên dương để dễ dàng thao tác trên các thuột tính. Bước 2: Tìm tập phổ biến Dựa vào dữ liệu đầu vào là tất cả các giao tác (transactions) chứa các giá trị đã thực hiện ở bước 1 (ví dụ danh sách các hóa đơn chứa các mặt hàng các hóa đơn đó) và minsupport cho trước để tìm ra tập phổ biến lớn nhất. Tập phổ biến là tập một hoặc nhiều danh sách các giá trị mà có mức độ xuất hiện đáng kể ( >= minsupport) trong các giao tác. Bước 3: Tìm tập kết hợp Ứng với mỗi tập phổ biến tìm được ở trên thực hiện việc tìm luật như sau: • Tìm tất cả các luật R: X=>Y sao cho : Support(R) ≥ minsup và confidence(R) ≥ minconf. o Bước 1 : Liệt kê tất cả các tập con P của I : | P | > I. o Bước 2 : Với mỗi tập con P, liệt kê tất cả các tập con X khác trống của P ( X khác P ). Luật R hình thành bởi : R : X => P\X • Chọn các luật R thỏa ngưỡng minsup và minconf. 1.3/ Thuật toJn Apriori Trong bài tổng quát, có thể thấy rằng bước 2/ Tìm tập phổ biến là tốn kém nhiều chi phí nhất trong những Cơ sở dữ liệu lớn trong thực tế. Thuật toán Apriori và một số cải tiến của nó cũng có thể nói góp phần giảm chi phí đáng kể. Dưới đây là phần trình bày thuật toán tìm Tập Phổ Biến tổng quát cho trong thuật toán Apriori 8 Bước 1/ Duyệt tất cả các giao tác (transactions) và dựa vào ngưỡng minsupport để tìm ra tập ban đầu. Bước 2/ Giả sử tại bước k-1, đã có được tập phổ biến F- 1 khác rỗng. Tại bước k, phát sinh tập ứng viên Ck(Candidate k- itemset) dựa vào tổ hợp các phần tử trong tập F-1. Tập kết quả chứa các giá trị không bị trùng lắp. Bước 3/ Tiếp tục cho bước k, đã có trước tập ứng viên Ck. Duyệt qua tất cả các giao tác (trong CSDL) để cập nhật giá trị support cho các phần tử trong Ck, đồng thời so sánh với minsupport để chọn ra tập phổ biến Fk. Bước 4/ Nếu tập phát sinh Fk khác rỗng thì quay lại thực hiện các bước 2 và 3 cho bước k+1… Nếu tập phát sinh Fk là rỗng, thì tập phổ biến kết quả sẽ là tập cuối cùng trước đó. Kết thúc quá trình. Các thuật toán cải tiến như AprioriTID cũng dựa trên các bước cơ bản trên, nhưng để hạn chế truy xuất vào CSDL và tăng tốc độ, thuật toán này đã thực hiện công việc : tại mỗi bước k, ghi lại danh sách các ItemSet cho tất cả các giao tác còn đang xét. Giá trị ghi này gọi là Set-of-ItemSets. Nhằm mục đích sử dụng cho tính toán giá trị support ở bước sau. 9 Ngoài ra, có thể kết hợp bộ nhớ cache sử dụng dạng bit array để lưu trữ lại tất cả các giao tác. II/Thuật toJn tìm tập phổ biến FP-Growth Như đã đề cập phần trên, trong thuật toán Apriori bước tìm tìm tập phổ biến là tốn kém rất nhiều chi phí và nặng nề nhất. Do đó phải có một cách nào đó tổ chức lại cấu trúc của các giá trị ( hạng mục – item) và các giao tác (transactions) phải tận dụng được cấu trúc đó để tìm các giá trị support đó một cách trực tiếp từ cấu trúc trên mà không cần phải truy xuất vào CSDL. Một trong những cấu trúc tổ chức thực hiện để giải quyết vấn đề trên là cấu trúc Frequent Pattern Tree (FP-Tree). 2.1/ FP-Tree Cấu trúc FP-Tree được lưu trữ dựa trên các khái niệm sau • Nút gốc có nhãn “null” • Mỗi nút còn lại chứa các thông tin: item-name, count, node-link o Item-name: Tên của phần tử đại diện cho nút o Count: Số giao tác chứa mẫu bao gồm các item duyệt từ nút gốc đến nút đang xét. o Node-link: Chỉ đến nút kế tiếp trong cây hay chỉ đến null nếu nút đang xét là nút lá • Bảng Header có số dòng bằng số item. Mỗi dòng chứa 3 thuộc tính: item- name, item-count, node-link. o Item-count: Tổng số biến count của tất cả các nút chứa item đó • Node-link: Chỉ đến nút sau cùng được tạo ra để chứa item trong cây • Bổ sung phần tử vào tree dựa trên nguyên tắc: o Mỗi lần bổ sung là một tập các phần tử được sắp xếp theo thứ tự ưu tiên trong mỗi giao tác (transaction) – thứ tự ưu tiên này được quy định lần đầu tiên trong tập phần tử trong F1 có support sắp xếp giảm dần. o Với một lần bổ sung, duyệt theo thứ tự các phần tử, nếu phần tử đang xét đã tồn tại node trong tree thì lần theo node đó, ngược lại thì bổ sung node con ngay sau node của phần tử trước đó. Các bước xây dựng FP-Tree 10 Buớc 1: Duyệt CSDL lần thứ nhất, lấy ra tập F1 các phần tử phổ biến và độ support của chúng . Sắp theo thứ tự giảm dần độ support các phần tử trong tập F, ta được tập F1. Buớc 2: Tạo một nút gốc cho cây T và gán nhãn là Null. Duyệt CSDL lần thứ hai, với mỗi giao tác trong CSDL, thực hiện hai việc sau: - Chọn các phần tử phổ biến trong mỗi giao tác sắp xếp support giảm dần theo thứ tự trong tập F1. Ký hiệu danh sách các phần tử đã sắp xếp là [p|P], trong đó p là phần tử đầu tiên của danh sách, P là các phần tử còn lại. - Gọi hàm Insert_tree([p|P],T) để đưa các phần tử trong danh sách vào cây T. Xét ví dụ tạo FP-Tree dưới đây Lần duyệt thứ nhất: Tìm các 1-frequent itemset và sắp xếp chúng theo danh sách với trật tự giảm dần theo tần số xuất hiện, loại bỏ các item nhỏ hơn ngưỡng min_sup Duyệt CSDL lần 2 để xây dựng FP- Tree(chú ý rằng các item trong mỗi giao tác được xử lý theo trật tự F1) [...]... property) để tìm ra các tập phổ biến từ một nút ai trên đuờng đi P, chỉ cần đến đường đi con trước nút ai trên P Và số lần phổ biến của mỗi nút trên đường đi con này phải bằng với số lần phổ biến của nút ai Dựa trên các tính chất trên, chúng ta có thuật toán tìm các tập phổ biến trên cây FP-tree Thuật toán tìm tập phổ biến Input: cây FP-Tree của CSDL D, ngưỡng min_sup Output: Một tập đầy đủ các mẫu phổ biến. .. cứu này nhằm mục đích tìm hiểu về thuật toán tìm tập phổ biến dựa trên FP-Tree Thuật toán FP-Growth phát triển là để khắc phục một số nhược điểm của các thuật toán trước đó, tuy nhiên nó lại sinh ra một số nhược điểm khác Sau đây là các ưu điểm và nhược điểm của FP-Growth Ưu Điểm  Chỉ cần duyệt 2 lần vào Cơ Sở Dữ Liệu  Nén tập dữ liệu theo ý nghĩa vào tree  Không phát sinh tập ứng viên  Không đếm... CSDL cụ thể và thay đổi lại hàm BuildFPTree) B2/ Build Tree : Tree.InitializeFPTree B3/ Chạy FP-Growth tìm tập phổ biến: GrowthFacade .FPGrowth( _fpTree, null); Kết quả được lưu vào GrowthFacade.FrequentPattern : + key = k (số phần tử tham gia) + ItemSet là một tập kết quả Ứng dụng trong thuật toán tìm luật kết hợp (AR) , chỉ cần lấy tập có k lớn nhất - Chạy test cho tập dữ liệu... được tập phổ biến (am:3), và gọi "mine(|am)" chúng ta có tập phổ biến (cm:3), kế đến gọi "mine(cm)" chúngcủacó (fm:3) Cây điều kiện FP ta "cam" Gọi đệ qui sâu hơn nữa với "mine(|am)", chúng ta thu đuợc các tập phổ biến (cam:3), (fam:3), sau đó gọi "mine(|cam)" chúng ta đuợc tập dài nhất (fcam:3) Tương tự, gọi "mine(|cm" chúng ta đuợc (fcm:3) Do đó, tất cả các tập phổ. .. dựa trên cơ sở điều kiện của p ta có một FP-tree (gọi là cây điều kiện FP của p) chỉ có một nhánh là c:3 do đó chỉ tìm được một tập phổ biến là cp:3 Sự tìm kiếm các tập phổ biến có chứa p chấm dứt Với nút m, chúng ta có mẫu phổ biến là (m:3) và hai đường đi đến m là (f:4; c:3; a:3;m:2) và (f:4; c:3; a:3; b:1;m:1) Tương tự như nút p đã phân tích ở trên, chúng ta có cơ sở điều kiện của m là "{(f:2; c:2;... các phần tử, count và node-link FPTree: chứa tất cả các thông tin của Tree,Header table và MinSupport FPGrowthFacade : lớp xử lý tìm tập phổ biến bằng FP Tree Sử dụng: B1/ Khởi tạo dữ liệu cho Tree : - Tree.BuildFrequentItemList(itemname, _count);// add Frequent Item vào Header - Tree.MinSupCount = minsupport - Tree.ListStrList : danh sách giao tác ban đầu để Duyệt tạo cây ( nếu sử dụng CSDL, có thể... = ai của != call FP_growth( } ; , ); 19 18 } } So Sánh FP–growth và Apriori III/ Cài đặt thử nghiệm thuật toán Để cài đặt thuật toán FP-Growth, Cấu trúc dữ liệu cần thiết bao gồm các cấu trúc cơ bản( collection, hashtable, list…) và một số cấu trúc bổ sung như sau: ItemInfo: thông tin phần tử (chưa hoặc đã số hóa, trong mã nguồn sử dụng string chưa số hóa) 20 TreeNodeItem : chứa thông tin node của... to và chia ra làm quá nhiều nhánh  Thời gian tạo FP-Tree khá tốn kém o Thời gian tạo tree khá tốn kém, nhưng chỉ tạo 1 lần và sử dụng nhiều lần o Khi minsuport càng cao thì thời gian tạo cây dường như càng phí Về bộ nhớ hiện nay có thể là phần nào đáp ứng cho tree, ngoài ra cấu trúc tree có thể được lưu xuống đĩa cứng để sử dụng lại sau đó Việc sử dụng có thể thực hiện để thực hiện lại thuật giải tìm. .. Header 9 N.node-link = H[p].head 10 H[p].head = N 11 } // Tăng biến count của p trong bảng header thêm 1 12 H[p].count ++; 13 If (P-p) != null then 14 Call Insert_Tree(P-p, N) ; } 2.2/ Thuật toán FP-Growth Tính chất của FP-Tree Tính chất 1: (Node-link property) Với mỗi phần tử phổ biến ai, tất cả các tập phổ biến có chứa phần tử này có thể tìm được bằng cách dò theo các nút liên kết bắt đầu từ ai Tính... a:3 b:3 m:3 p:3 Trên cơ sở tính chất 1, chúng ta thu thập tất cả các tập phổ biến mà có chứa nút ai bắt đầu từ nút đầu ai trong header table và các nút liên kết tiếp theo Chúng ta xem xét bắt đầu từ nút cuối cùng trong header table Với nút p, chúng ta thu được mẫu phổ biến (p:3) và hai đường đi trên FP-tree : (f:4; c:3; a:3; m:2; p:2) và (c:1; b:1; p:1) Đường đi thứ nhất chỉ ra rằng chuỗi "(f; c; a; m;

Ngày đăng: 11/04/2015, 14:50

Từ khóa liên quan

Mục lục

  • GIỚI THIỆU

  • Nội Dung

    • I/ Luật kết hợp – asscociation rules

      • 1.1/ Một số khái niệm:

      • 1.2/ Bài toán tổng quát

      • 1.3/ Thuật toán Apriori 

      • II/Thuật toán tìm tập phổ biến FP-Growth

        • 2.1/ FP-Tree

        • 2.2/ Thuật toán FP-Growth

        • III/ Cài đặt thử nghiệm thuật toán

        • Kết luận

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

Tài liệu liên quan