1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn kết thúc học phần khai phá dữ liệu đề tài tìm hiểu về association rules

22 1 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 532,99 KB

Nội dung

TÊN ĐỀ TÀI TÌM HIỂU KHAI MỎ DỮ LIỆU (DATA MINING) SỬ DỤNG LUẬT KẾT HỢP (ASSOCITION RULE) TRƯỜNG ĐẠI HỌC PHENIKAA KHOA CÔNG NGHỆ THÔNG TIN ⸎⸎⸎⸎⸎ BÀI TẬP LỚN KẾT THÚC HỌC PHẦN KHAI PHÁ DỮ LIỆU Đề tài "T[.]

TRƯỜNG ĐẠI HỌC PHENIKAA KHOA CÔNG NGHỆ THÔNG TIN ⸎⸎⸎⸎⸎ BÀI TẬP LỚN KẾT THÚC HỌC PHẦN KHAI PHÁ DỮ LIỆU Đề tài: "Tìm hiểu association rules" Học phần : Khai phá liệu-1-2-22(N01) Giảng viên : Trịnh Thành Sinh viên : Phạm Thành Trung - 21012899 : Nguyễn Thị Tâm - 21012892 HÀ NỘI, THÁNG NĂM 2023 MỤC LỤC Bảng phân công công việc PHẦN MỞ ĐẦU NỘI DUNG I TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU .4 Khái niệm: .4 Các kỹ thuật khai phá liệu 2.1 Các kỹ thuật tiếp cận Data mining 2.2 Dạng liệu khai phá 2.3 Ứng dụng khai phá liệu II LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU .6 Khai phá luật kết hợp Lý thuyết luật kết hợp III KHAI PHÁ LUẬT KẾT HỢP BẰNG THUẬT TOÁN FREQUENT PATTERN GROWTH 1.Thuật toán sinh luật kết hợp Apriori Thuật toán FP-growth 10 2.1 Ý tưởng thuật toán 11 2.2 Thuật toán FP-growth .12 2.3 Thực hành thuật toán FP-growth 13 2.4 Đánh giá thuật toán FP-growth .19 KẾT LUẬN .21 Bảng phân công công việc Họ tên Phạm Thành Trung Nguyễn Thị Tâm Công việc PHẦN MỞ ĐẦU Trong năm gần đây, việc nắm bắt thông tin coi sở hoạt động sản xuất, kinh doanh Cá nhân tổ chức thu thập hiểu thông tin hành động dựa thông tin kết xuất từ thơng tin có đạt thành cơng hoạt động Chính lý đó, việc tạo thông tin, tổ chức lưu trữ khai thác ngày trở nên quan trọng gia tăng không ngừng Sự tăng trưởng vượt bậc sở liệu (CSDL) sống như: thương mại, quản lý khoa học làm nảy sinh thúc đẩy phát triển kỹ thuật thu thập, lưu trữ, phân tích khai phá liệu… khơng phép tốn đơn giản thơng thường như: phép đếm, thống kê… mà đòi hỏi cách xử lý thơng minh hơn, hiệu Từ nhà quản lý có thơng tin có ích để tác động lại trình sản xuất, kinh doanh mình… tri thức Các kỹ thuật cho phép ta khai thác tri thức hữu dụng từ CSDL (lớn) gọi kỹ thuật khai phá liệu (DM – Data Mining) Khai phá luật kết hợp nội dung quan trọng khai phá liệu Khai phá liệu (Data Mining) coi trình trích xuất thơng tin có giá trị tiềm ẩn bên lượng lớn liệu lưu trữ CSDL, kho liệu… Hiện nay, thuật ngữ khai phá liệu, người ta dùng số thuật ngữ khác có ý nghĩa tương tự như: Khám phá tri thức từ sở liệu (Knowledge Discovery in Database-KDD), trích lọc liệu (knowlegde extraction), phân tích liệu/mẫu (data/pattern analysis), khảo cổ liệu (data archaeology), nạo vét liệu (data dredging) Tiểu luận trình bày số vấn đề khai phá liệu, trình bày rõ vấn đề khai phá luật kết hợp ứng dụng số thuật toán khai phá luật kết hợp CSDL NỘI DUNG I TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU Khái niệm: Khai phá liệu khái niệm đời vào năm cuối thập kỷ 80 kỷ XX Nó bao hàm loạt kỹ thuật nhằm phát thơng tin có giá trị tiềm ẩn tập liệu lớn (các kho liệu) Về chất, khai phá liệu liên quan đến việc phân tích liệu sử dụng kỹ thuật để tìm mẫu hình có tính quy tập liệu Năm 1989, Fayyad, Piatestsky-Shapiro Smyth dùng khái niệm khám phá tri thức sở liệu, để toàn q trình phát tri thức có ích từ tập liệu lớn; khai phá liệu bước đặc biệt toàn trình, sử dụng giải thuật đặc biệt để chiết xuất mẫu hay mơ hình từ liệu Ở mức độ trừu tượng định định nghĩa khai phá liệu: Data Mining trình tìm kiếm, phát tri thức mới, tiềm ẩn, hữu dụng CSDL lớn Khám phá tri thức (KDD) mục tiêu khai phá liệu, hai khái niệm xem hai lĩnh vực tương đương Nhưng, phân chia cách tách bạch khai phá liệu bước q trình KDD Các kỹ thuật khai phá liệu 2.1 Các kỹ thuật tiếp cận Data mining Căn vào lớp toán cần giải quyết, khai phá liệu có kỹ thuật áp dụng sau: Phân lớp dự đoán: xếp đối tượng vào lớp biết trước Ví dụ: phân lớp bệnh nhân liệu hồ sơ bệnh án Hướng tiếp cận thường sử dụng số kỹ thuật học máy định, mạng nơ ron nhân tạo Luật kết hợp: Phương pháp nhằm phát luật kết hợp thành phần liệu CSDL Mẫu đầu giải thuật khai phá liệu tập luật kết hợp tìm Có thể lấy ví dụ đơn giản luật kết hợp sau: phân tích CSDL bán hàng nhận thông tin khách hàng mua máy tính có khuynh hướng mua phần mềm quản lý tài lần mua miêu tả luật kết hợp sau: “Mua máy tính  Mua phần mềm quản lý tài chính” [Độ hỗ trợ: 4%, độ tin cậy: 70%] Độ hỗ trợ độ tin cậy hai độ đo đáng quan tâm luật Chúng tương ứng phản ánh hữu ích chắn luật khám phá Độ hỗ trợ 4% có nghĩa là: 4% tất tác vụ phân tích máy tính phần mềm quản lý tài mua Cịn độ tin cậy 70% có nghĩa 70% khách hàng mua máy tính mua phân mềm quản lý tài Phân tích chuỗi theo thời gian: Tượng tự khai phá luật kết hợp có thêm tính thứ tự tính thời gian Hướng tiếp cận ứng dụng nhiều lĩnh vực tài thị trường chứng khốn có tính dự báo cao Phân cụm: xếp đối tượng theo cụm liệu tự nhiên Mô tả khái niệm: thiên mơ tả, tổng hợp tóm tắt khái niệm Ví dụ: tóm tắt văn 2.2 Dạng liệu khai phá Do Data Mining ứng dụng rộng rãi nên làm việc với nhiều kiểu liệu khác Sau số dạng liệu điển hình: CSDL quan hệ, CSDL đa chiều (multidimentional structures, data warehouses), CSDL dạng giao dịch, CSDL quan hệ-hướng đối tượng, liệu không gian thời gian, Dữ liệu chuỗi thời gian, CSDL đa phương tiện, liệu Text Web 2.3 Ứng dụng khai phá liệu Khai phá liệu lĩnh vực quan tâm ứng dụng rộng rãi Một số ứng dụng điển hình khai phá liệu liệt kê: 1) phân tích liệu hỗ trợ định; 2) điều trị y học; 3) phát văn bản; 4) tin sinh học; 5) tài thị trường chứng khoán; 6) bảo hiểm II LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU Khai phá luật kết hợp Khai phá luật kết hợp (Association Rule Mining) kĩ thuật khai phá liệu sử dụng để tìm kiếm quy luật kết hợp mục tập liệu lớn Kĩ thuật thường áp dụng lĩnh vực phân tích liệu khai thác liệu để giúp phát mối quan hệ ẩn mục tập liệu, từ đưa định đề xuất cho người sử dụng Quá trình khai phá luật kết hợp:  Dữ liệu gốc (Raw data)  Tiền xử lí liệu  Tìm mẫu , loại, phần tử (được quan tâm nhiều)  Khai phá tìm mối quan hệ chúng (gọi luật)  Sau xử lý để đưa luật, ứng dụng cho người dùng Mục đích khai phá luật kết hợp: Tìm mẫu (hàng) xuất nhiều, liên quan, tương quan cấu trúc hệ tập hợp mẫu đối tượng CSDL (chủ yếu giao dịch) Như vậy, khai phá luật kết hợp phương pháp xử lý thông tin quan trọng phổ biến, nhằm khám phá mối liên hệ mẫu liệu Tiếp theo, tiểu luận đề cập đến luật kết hợp Đây hướng nghiên cứu quan trọng lĩnh vực khai phá liệu nội dung tìm hiểu, nghiên cứu trọng tâm tiểu luận Ứng dụng khai phá luật kết hợp: Trong hoạt động sản xuất kinh doanh, ví dụ kinh doanh mặt hàng siêu thị, nhà quản lý thích có thơng tin mang tính thống kê như: “90% phụ nữ có xe máy màu đỏ đeo đồng hồ Thuỵ Sỹ dùng nước hoa hiệu Chanel” “70% khách hàng công nhân mua TV thường mua loại TV 21 inches” Những thông tin hữu ích việc định hướng kinh doanh Vậy vấn đề đặt liệu có tìm luật công cụ khai phá liệu hay khơng? Câu trả lời hồn tồn Đó nhiệm vụ khai phá luật kết hợp Giả sử có CSDL D Luật kết hợp cho biết phạm vi mà xuất tập mục S ghi D kéo theo xuất tập mục U ghi Mỗi luật kết hợp đặc trưng cặp tỉ lệ Mỗi tỉ lệ hỗ trợ biểu diễn tỉ lệ % ghi D chứa S U Vấn đề khám phá luật kết hợp phát biểu sau: Cho trước tỉ lệ hỗ trợ  độ tin cậy  Đánh số tất luật D có giá trị tỉ lệ hỗ trợ tin cậy lớn   tương ứng Giả thiết D CSDL giao dịch với  = 40%,  = 90% Vấn đề phát luật kết hợp thực sau: Liệt kê, đếm tất qui luật xuất số mục kéo theo số mục khác Chỉ xét qui luật mà tỉ lệ hỗ trợ lớn 40% độ tin cậy lớn 90% Hãy tưởng tượng, công ty bán hàng qua mạng Internet Các khách hàng yêu cầu điền vào mẫu bán hàng để cơng ty có CSDL u cầu khách hàng Giả sử công ty quan tâm đến mối quan hệ "tuổi, giới tính, nghề nghiệp sản phẩm" Khi có nhiều câu hỏi tương ứng với luật Ví dụ lứa tuổi khách hàng nữ cơng nhân đặt mua mặt hàng đó, ví dụ áo dài chẳng hạn nhiều nhất, thoả mãn ngưỡng ? Lý thuyết luật kết hợp Luật kết hợp biểu thức có dạng: X  Y, X Y tập trường gọi item Ý nghĩa luật kết hợp dễ nhận thấy: Cho trước sở liệu có D tập giao tác - giao tác TD tập item - X  Y diễn đạt ý nghĩa giao tác T có chứa X chắn T có chứa Y Độ tin cậy luật (rule confidence) hiểu xác suất điều kiện p(YT  XT) Ý tưởng việc khai thác luật kết hợp có nguồn gốc từ việc phân tích liệu mua hàng khách nhận “Một khách hàng mua mặt hàng X1 X2 mua mặt hàng Y với xác suất c%” Ứng dụng trực tiếp luật toán kinh doanh làm cho luật kết hợp trở thành phương pháp khai thác phổ biến Hơn nữa, luật kết hợp không bị giới hạn phân tích phụ thuộc lẫn phạm vi ứng dụng bán lẻ mà chúng áp dụng thành cơng nhiều tốn kinh doanh Một số khái niệm luật kết hợp: - Item: Phần tử, mẫu, loại - Itemset: Tập phần tử - Transaction:1 giao dịch - Association( Sự kết hợp): Các phần tử xuất với hay nhiều giao dịch Thể mối liên hệ phần tử/các tập phần tử - Association rules(Luật kết hợp) : qui tắc kết hợp có điều kiện tập phần tử Thể mối liên hệ (có điều kiện) tập phần tử - Support (độ hỗ trợ/ Ủng hộ): phần trăm liệu điều vế trái vế phải xảy  Chú ý : I nhiều items  Ví dụ: I = A; Hoặc I A B - Confidence (độ tin cậy): Nếu vế trái xảy có khả vế phải xảy - Frequent itemset (tập phần tử phổ biến – thường xuyên): Tìm tập mẫu (loại) - itemsets: Những itemset xuất nhiều ngưỡng Một tập tập mẫu xuất nhiều ( frequent itemset) tập mẫu xuất nhiều ( frequent itemset) vd: Nếu {A, B} tập frequent itemsets {A} {B} tập itemsets Lặp lại tìm kiếm tập mẫu xuất nhiều lặp lại từ 1 K (K- itemset) Sử dụng mẫu để tạo luật kết hợp III KHAI PHÁ LUẬT KẾT HỢP BẰNG THUẬT TỐN FREQUENT PATTERN GROWTH 1.Thuật tốn sinh luật kết hợp Apriori Apriori giới thiệu lần đầu tiên bởi Agrawal vào năm 1993 Tư tưởng thuật tốn Apriori là: Tìm tất frequent itemsets, k-itemset (itemsets gồm k items) dùng để tìm (k+1)-itemset Từ frequent itemsets sinh luật kết hợp mạnh (các luật kết hợp thỏa mãn tham số min_sup min_conf) Apriori Algorithm: Bước 1: Duyệt (Scan)  toàn transaction database để tính support S 1-itemset, loại bỏ 1-itemset có support nhỏ min_sup Bước 2: Từ 1-itemset, kết hợp (join) chúng với tạo thành 2-itemset Scan lại database để loại bỏ 2-itemsets có support nhỏ min_sup Bước 3: Lặp lại từ bước khơng tìm thấy frequent itemsets Bước 4: Với frequent itemset I, sinh tất tập s không rỗng I Bước 5: Với tập s không rỗng I, sinh luật  s => (I-s) nếu độ tin cậy (Confidence)  của >= min_conf Nhận xét: Thuật tốn Apriori với n độ dài lớn tập sinh Vậy thuật tốn scan database n+1 lần Như vậy, bỏ qua thời gian so sánh tìm xuất itemset độ phức tạp thuật tốn Apriori O(n*L) L kích thước CSDL cịn n độ dài cần đạt mẫu Ngoài ra, min_sup bị thay đổi thuật tốn phải thực lại từ đầu, điều thời gian Thuật tốn FP-growth 10 2.1 Ý tưởng thuật tốn Trong tình mà số lượng mẫu nhiều, mẫu dài min_sup min_conf thấp, thuật toán Apriori gặp phí lớn: Chi phí cho số lượng khổng lồ tập ứng cử Ví dụ: có 104 tập 1-itemset thuật tốn Apriori cần sinh 107 ứng cử 2-itemset kiểm tra xuất chúng Hơn nữa, để khám phá frequent itemset kích thước L, thuật tốn phải kiểm tra (2L - ) frequent itemset tiềm Ví dụ L = 100, chẳng hạn {a1,a2, ,a100}, phải sinh tổng số 2100  1030 ứng cử (đây số tập tập có 100 phần tử) Duyệt CSDL nhiều lần để kiểm tra tập lớn ứng cử Số lần duyệt CSDL thuật toán Apriori độ dài frequent itemset dài tìm Trong trường hợp mẫu phổ biến dài CSDL lớn, có nhiều ghi, điều thực Thuật tốn Apriori thích hợp cho CSDL thưa (sparse), với CSDL dày (dense) thuật tốn thực hiệu Ngồi chi phí để lưu trữ lớn Thuật toán xuất gần có tên FP-growth giới thiệu Jiawei Hai Jian Pei Yiwen Yin năm 2000, khắc phục nhược điểm nêu Thuật toán tìm frequent itemset hiệu qủa thuật tốn Apriori việc sử dụng kỹ thuật khác không cần sinh ứng cử Sự hiệu khai phá nhận với kỹ thuật chính: Thứ nhất, mẫu phổ biến (frequent pattern tree gọi tắt FPtree) dùng để nén liệu thích hợp Chỉ có l-item nút đặt để nút xuất thường xuyên dễ dàng chia sẻ với nút xuất CSDL lớn nén chặt tới cấu trúc liệu nhỏ (FP-tree), tránh chi phí lặp lại duyệt qua CSDL Thứ hai, phương pháp khai phá phát triển (growth) đoạn dựa Fp-tree gọi phương pháp FP – growth thực Bắt đầu từ mẫu phổ biến độ dài 1, FP-growth xem xét sở mẫu phụ thuộc (condition pattern base) CSDL (sub-database) bao gồm tập mục phổ biến 11 xuất với mẫu hậu tố (suffix pattern), xây dựng condition FP-tree tương ứng thực khai phá đệ qui Mẫu phát triển nhận qua việc nối mẫu hậu tố (suffix pattern) với đoạn mẫu sinh từ condition FP-tree Khai phá dựa FP-tree thực theo cách phát triển (growth) đoạn mẫu để tránh chi phí cho việc sinh số lượng lớn tập ứng cử Thứ ba, kỹ thuật tìm kiếm dùng dựa vào phân chia chế ngự (divide-and-conquer method) để phân rã nhiệm vụ khai phá thành tập nhiệm vụ nhỏ với giới hạn mẫu CSDL nhằm thu gọn khơng gian tìm kiếm Phương pháp FP-growth chứng tỏ tính hiệu thể khai phá cho mẫu ngắn dài, nhanh thuật tốn Apriori, ln cần duyệt CSDL lần 2.2 Thuật toán FP-growth FP-growth Algorithm: Bước 1: Thuật toán duyệt CSDL lần thứ để tính support 1-item đếm số lần xuất chúng Bước 2: Loại bỏ 1-item có support nhỏ min_sup Các mục lại xếp theo thứ tự giảm dần support (cũng tức giảm dần theo số lần xuất CSDL), ta nhận danh sách L 1-item Bước 3: Duyệt CSDL lần thứ 2, với giao dịch T, giữ lại item có danh sách L, xếp item theo thứ tự giảm dần theo độ hỗ trợ Bước 4: Xây dựng FP-tree cách đưa giao dịch T vào Phần thuật tốn khai phá tìm frenquent itemset FP-tree xây dựng mà không cần duyệt lại CSDL Cấu trúc FP-tree:  Root  Header_table: bảng băm lưu lại node cuối đường từ root đến nút có tên item 12  Mỗi nút bao gồm: - Tên item (item identifier) - Count: số lần xuất - Node link: + parent: liên kết đến nút cha + children: liên kết đến nút Thủ tục thêm giao dịch T (đã giảm dần theo support) vào thực đệ quy sau: def add_transaction(transaction): Với item transaction: Nếu item khơng có danh sách node node tại: Thêm node vào header_table[item] Tạo node với name = item, count = Ngược lại: count node += Duyệt đến node Tìm tập mục phổ biến: Sau xây dựng xong FP-tree cho CSDL, việc khai phá tìm mẫu phổ biến thực FP-tree mà khơng cần duyệt CSDL 2.3 Thực hành thuật tốn FP-growth Database: 13 Xử lí liệu: - Tính support item đơn, xếp theo thứ tự giảm dần support: frequency = data.stack().value_counts() frequency /= len(data) print(frequency) - Loại bỏ item có support < min_sup min_support = 0.5 frequency = frequency.drop(frequency[frequency < min_support].index) print(frequency) 14 - Scan lại database, loại bỏ item không đủ độ hỗ trợ: itemlist = frequency.index.tolist() itemlist data = data[data.isin(itemlist)] data = data.dropna(axis=0, how='all', inplace=False) data - Sắp xếp lại theo thứ tự giảm dần support def encode(x): if type(x) == str : return frequency[x] else: return def presort(row): for i in range(len(row) - 1): if type(row[i]) != str: break for j in range(i + 1, len(row)): 15 if type(row[j]) != str: break if row[i] < row[j]: temp = row[i] row[i] = row[j] row[j] = temp def mysort(row): for i in range(len(row) - 1): for j in range(i + 1, len(row)): if encode(row[i]) < encode(row[j]): temp = row[i] row[i] = row[j] row[j] = temp arr = data.values for row in arr: presort(row) for row in arr: mysort(row) print(arr) Xây dựng cây: from anytree import Node, RenderTree # Tạo nút gốc (root) root = Node(['root', 0]) # Tạo header_table rỗng header_table = {} 16 for item in itemlist: header_table[item] = [] # thêm giao dịch vào def add_transaction(transaction, header_table, root): current_node = root for item in transaction: if type(item) != str: return if item not in [child.name[0] for child in current_node.children]: header_table[item].append(current_node) new_child_node = Node(name=[item, 1], parent=current_node) current_node = new_child_node else: for child in current_node.children: if child.name[0] == item: child.name[1] += current_node = child break # Hiển thị def show_fptree(root): for pre, fill, node in RenderTree(root): print("%s%s" % (pre, node.name)) # Tạo for transaction in arr: add_transaction(transaction, header_table, root) # in show_fptree(root) 17 Itemset dựa điều kiện: # Tìm đường từ node root def find_path(cur_node): path = [] while(True): path.append(cur_node.name[0]) if cur_node.parent == None: break cur_node = cur_node.parent return path # Tìm itemset def find_itemset(item, header_table): list = [] for cur_node in header_table[item]: path = find_path(cur_node) path.reverse() path.append(item) for child in cur_node.children: 18 if child.name[0] == item: path.append(child.name[1]) list.append(path) return list Ví dụ cho item 'b': it_b = find_itemset('b', header_table) print(it_b) => item 'b' dựa điều kiện fc: item 'b' dựa điều kiện f: item 'b' dựa diều kiện c: 2.4 Đánh giá thuật toán FP-growth Thuật tốn phân tích trên, thực hiệu thuật tốn Apriori, thực tốt cho mẫu phổ biến ngắn dài Ta có số nhận xét thuật tốn sau: Độ phức tạp thời gian:  Chỉ duyệt CSDL lần  Thời gian xây dựng o(n), với n số giao dịch CSDL Tức tuyến tính với số tác vụ Độ phức tạp không gian:  O(n), với n số giao dịch CSDL  Độ cao giới hạn kích thước giao dịch lớn  Thuật tốn khơng bị ngắn mẫu dài tác vụ Cây FP-tree trì đầy đủ thơng tin cho khai phá frequent itemset Đồng thời thuật toán rút gọn hợp lý thông tin không cần thiết item không phổ biến (support < min_sup) bị loại bỏ từ đầu 19

Ngày đăng: 20/04/2023, 14:18

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w