Báo cáo sẽ giới thiệu về khâu tiền xử lý để làm sạch dữ liệu tr ớc khi tiến hành khai phá, sau đó bốn giải thuật đ ợc học trong ch ơng trình sẽ đ ợc giới thiệu, tiếp đến là giới thiệu mộ
Khai phá d ữ li ệ u
Khái ni ệ m
Khái niệm khai phá dữ liệu (data mining) hay khám phá tri thức từ dữ liệu (knowledge discovery from data) là quá trình trích rút các mẫu và tri thức có ý nghĩa từ một tập dữ liệu rất lớn Quá trình này tìm ra những thông tin không tầm thường, ẩn giấu, chưa được biết đến và có thể hữu ích cho người dùng hoặc tổ chức, từ đó giúp nhận diện xu hướng, mối quan hệ và mẫu dữ liệu Kết quả của khai phá dữ liệu có thể là các mẫu, quy luật, mô hình hoặc báo cáo nhận diện, phục vụ cho việc ra quyết định kinh doanh, tối ưu hóa quy trình vận hành và khám phá cơ hội mới dựa trên dữ liệu lớn.
- Khám phá tri th c trong các cơ s dữ liệu (Knowledge discovery in databases KDD)
- Trích rút tri th c (knowledge extraction)
- Phân tích mẫu/dữ liệu (data/pattern analysis)
Các b ớ c trong quá trình khai phá
Quá trình đ ợc thực hiện qua 9 b ớc:
1- Tìm hiểu lĩnh vực c a bài toán ( ng dụng): Các mục đích c a bài toán, các tri th c cụ thể c a lĩnh vực
2- Tạo nên (thu thập) một tập dữ liệu phù hợp
3- Làm sạch và tiền xử lý dữ liệu
4- Giảm kích th c c a dữ liệu, chuyển đổi dữ liệu: Xác định thuộc tính quan trọng, giảm số chiều (số thuộc tính), biểu diễn bất biến
5- Lựa chọn ch c năng khai phá dữ liệu: Phân loại, gom cụm, dự báo, sinh ra các luật kết hợp
6- Lựa chọn/ Phát triển (các) giải thuật khai phá dữ liệu phù hợp
7- Tiến hành khai phá dữ liệu
8- Đánh giá mẫu thu đ ợc và biểu diễn tri th c: Hiển thị hóa, chuyển đổi, bỏ đi các mẫu d thừa,…
9- Sữ dụng tri th c đ ợc khai phá
Quá trình khám phá tri th c theo cách nhìn c a giới nghiên c u về các hệ thống dữ liệu và kho dữ liệu về quá trình khám phá tri th c
Hình 1.1.2_Quá trình khai phá tri thức
Chuẩn bị dữ liệu (data preparation), bao gồm các quá trình làm sạch dữ liệu
(data cleaning), tích hợp dữ liệu (data integration), chọn dữ liệu (data selection), biến đổi dữ liệu (data transformation)
Trong khai thác dữ liệu, việc xác định nhiệm vụ khai thác và lựa chọn kỹ thuật phù hợp là bước đầu để đạt được mục tiêu phân tích Kết quả của quá trình này là một nguồn tri thức thô có thể được làm giàu và chuyển đổi thành thông tin hữu ích thông qua xử lý tiếp theo Đánh giá (evaluation) dựa trên một tập tiêu chí để tiến hành kiểm tra và lọc nguồn tri thức thu được, nhằm bảo đảm tính chính xác, tính đầy đủ và tính ứng dụng của kết quả khai thác dữ liệu.
Quá trình khai thác tri thức không phải là một chuỗi các bước tuyến tính từ bước đầu đến bước cuối, mà là một quá trình lặp đi lặp lại với việc quay lại các bước trước để điều chỉnh và tối ưu kết quả Thực tế, quá trình này đòi hỏi phân tích dữ liệu liên tục, kiểm tra giả thuyết và điều chỉnh phương pháp dựa trên những phát hiện mới Do đó, nó liên tục đi vòng giữa các giai đoạn thu thập dữ liệu, tiền xử lý, khám phá mẫu và đánh giá, nhằm đảm bảo sự phù hợp và độ chính xác của kiến thức thu được Việc lặp lại như vậy giúp tối ưu hiệu suất và thích ứng với thay đổi của dữ liệu cũng như mục tiêu kinh doanh.
ng d ụ ng c a khai phá d ữ li ệ u
Kinh tế và ứng dụng trong kinh doanh, tài chính, tiếp thị, bán hàng, bảo hiểm, thương mại và ngân hàng đang tạo nền tảng cho các quyết định chiến lược hiệu quả Việc xây dựng các báo cáo giàu thông tin và phân tích rủi ro trước khi đưa ra các chiến lược kinh doanh và sản xuất giúp nhận diện cơ hội, giảm thiểu rủi ro và tối ưu hóa hiệu quả hoạt động Qua việc phân loại khách hàng, doanh nghiệp có thể xác định thị trường mục tiêu, phân khúc khách hàng và thị phần, từ đó điều chỉnh chiến lược tiếp thị và phạm vi phục vụ một cách chính xác hơn.
Khoa học: Thiên văn học – dự đoán đ ng đi các thiên thể, hành tinh, …; Công nghệ sinh học – tìm ra các gen mới, cây con giống mới, …; …
Web: các công cụ tìm kiếm.
Ti ề n x ử lý d ữ li ệ u
D ữ li ệ u
- Một tập dữ liệu (dataset) là một tập hợp các đối t ợng (object) và các thuộc tính c a chúng
- Mỗi thuộc tính (attribute) mô tả một đặc điểm c a một đối t ợng
Ví dụ: Các thuộc tính Refund, Marital Status , Taxable Income, Cheat b) Các kiểu tập dữ liệu
- Bản ghi (record): Các bản ghi trong c s dữ liệu quan hệ Ma trận dữ liệu
Biểu diễn văn bản Hay dữ liệu giao dịch.„
- Đồ thị (graph): World wide web Mạng thông tin, hoặc mạng xã hội
Dữ liệu có trật tự được phân thành các nhóm chính: dữ liệu không gian (ví dụ bản đồ), dữ liệu thời gian (ví dụ time-series data) và dữ liệu chuỗi (ví dụ chuỗi giao dịch) Bên cạnh đó, các kiểu giá trị thuộc tính (attribute value types) xác định bản chất và đặc điểm của từng trường dữ liệu, ảnh hưởng đến cách thu thập, lưu trữ và phân tích dữ liệu trong các hệ thống thông tin.
- Kiểu định danh/chuỗi (norminal): không có th tự Ví dụ: Các thuộc tính nh : Name, Profession, …
- Kiểu nhị phân (binary): là một tr ng hợp đăc biệt c a kiểu định danh Tập các giá trị chỉ gồm có 2 giá trị (Y/N, 0/1, T/F)
Ordinal type refers to values drawn from an ordered set, enabling meaningful ranking among values It includes numeric representations like Integer and Real, with each attribute obtaining its value from a predefined ordered domain For example, attributes such as Age and Height can take numerical values, while Income can be defined from the ordered set {low, medium, high} Using an ordered domain for attributes preserves hierarchy and supports ranking, sorting, and threshold-based analyses in data models and databases.
Thuộc tính rời rạc (discrete-valued attributes) là kiểu thuộc tính có tập các giá trị rời rạc, tức là một tập hữu hạn các giá trị có thể xuất hiện Các thuộc tính này có thể có kiểu giá trị như số nguyên hoặc nhị phân, giúp giới hạn đầu vào ở các trạng thái cố định Trong phân tích dữ liệu và học máy, nhận diện và xử lý đúng các thuộc tính rời rạc giúp mô hình dễ hiểu hơn và tối ưu hóa quá trình xử lý khi làm việc với tập dữ liệu lớn.
Kiểu thuộc tính liên tục (continuous-valued attributes):Các giá trị làsố thực d) Các đặc tính mô tả c a dữ liệu:
- Giúp hiểu rõ về dữ liệu có đ ợc: chiều h ớng chính/trung tâm, sự biến thiên, sự phân bố
- Sự phân bố c a dữ liệu (data dispersion):
+ Giá trị cực tiểu/cực đại (min/max)
+ Giá trị xuất hiện nhiều nhất (mode)
+ Giá trị trung bình (mean)
+ Giá trị trung vị (median)
+ Sự biến thiên (variance) và độ lệch chuẩn (standard deviation)
Làm s ạ ch d ữ li ệ u (data cleaning)
Đối với dữ liệu thu thập được, cần xác định các vấn đề ảnh hưởng đến chất lượng dữ liệu để đảm bảo sự tin cậy của thông tin Dữ liệu không sạch có thể chứa thiếu sót, nhiễu, sai lệch hoặc mâu thuẫn, khiến các kết quả phân tích và các quyết định dựa trên dữ liệu trở nên không đáng tin cậy Vì vậy, quy trình làm sạch dữ liệu nên gồm gán giá trị cho các trường còn thiếu, sửa chữa các lỗi và nhiễu, xác định hoặc loại bỏ các ngoại lệ (outliers) và giải quyết mọi mâu thuẫn dữ liệu a) Các vấn đề của dữ liệu.
Trên thực thế dữ liệu thu có thể ch a nhiễu, lỗi, không hoàn chỉnh, có mâu thuẫn
- Không hoàn chỉnh (incomplete): Thiếu các giá trị thuộc tính hoặc thiếu một số thuộc tính Ví dụ: salary =
Trong quản trị dữ liệu, nhiễu và lỗi (noise/error) ám chỉ những giá trị không hợp lệ hoặc không nhất quán tồn tại trong tập dữ liệu, làm sai lệch kết quả phân tích và quá trình xử lý Dữ liệu có nhiễu có thể xuất hiện dưới dạng sai định dạng, giá trị ngoài phạm vi hoặc trường rỗng, khiến quá trình làm sạch và tiền xử lý khó khăn hơn Ví dụ, salary = "-525" cho thấy giá trị tiền lương bị âm và không hợp lệ theo quy tắc nghiệp vụ Để đảm bảo chất lượng dữ liệu và tối ưu hóa hiệu suất hệ thống, cần thực hiện kiểm tra và làm sạch dữ liệu, thiết lập ràng buộc dữ liệu (validation rules), và chuẩn hóa định dạng cũng như sửa hoặc loại bỏ các trường sai định dạng, đảm bảo các thuộc tính hợp lệ như lương không âm và các trường bắt buộc phải có giá trị.
- Mâu thuẫn (inconsistent): Ch a đựng các mâu thuẫn (không thống nhất)
Ví dụ: salary = “abc” , không phù hợp với kiểu dữ liệu số c a thuộc tính salary b) Nguồn gốc/lý do c a dữ liệu không sạch
Không hoàn chỉnh (incomplete) là tình trạng mà giá trị thuộc tính không có tại thời điểm thu thập dữ liệu (not available) Nguyên nhân có thể là lỗi từ phần cứng hoặc phần mềm, hoặc do người thu thập dữ liệu gây ra, dẫn đến dữ liệu thiếu hụt và ảnh hưởng đến chất lượng phân tích.
- Nhiễu/lỗi (noise/error): Do việc thu thập dữ liệu, hoăc việc nhập dữ liệu, hoặc việc truyền dữ liệu
Mâu thuẫn dữ liệu (inconsistent) phát sinh khi dữ liệu được thu thập từ các nguồn gốc khác nhau hoặc vi phạm các ràng buộc (điều kiện) đối với thuộc tính, dẫn tới sự không nhất quán và sai lệch trong tập dữ liệu Để xử lý mâu thuẫn này, cần chuẩn hóa định dạng, đồng nhất các quy tắc xác thực và thực hiện đối chiếu giữa các nguồn dữ liệu để đảm bảo tính nhất quán của các thuộc tính và ràng buộc c) Giải pháp khi thiếu giá trị thuộc tính: áp dụng các phương pháp điền giá trị (imputation) như ước lượng bằng trung bình hoặc trung vị, dựa trên mô hình dự đoán hoặc khai thác dữ liệu từ các thuộc tính liên quan; đánh giá và lựa chọn bỏ qua các bản ghi thiếu quá nhiều mà ảnh hưởng đến chất lượng phân tích; đồng thời ghi nhận mức độ thiếu hụt để duy trì sự minh bạch và cải thiện các chiến lược thu thập dữ liệu trong tương lai.
Trong tiền xử lý dữ liệu, bỏ qua các bản ghi có thuộc tính thiếu giá trị là một kỹ thuật phổ biến Phương pháp này được áp dụng trong các bài toán phân lớp và đặc biệt hữu ích khi tỷ lệ phần trăm các giá trị thiếu ở các thuộc tính quá cao Việc loại bỏ các bản ghi này giúp làm sạch dữ liệu, giảm nhiễu và cải thiện hiệu suất của mô hình, nhất là khi dữ liệu còn lại đủ đại diện cho tập huấn luyện và kiểm tra.
- Một số ng i sẽ đảm nhiệm việc kiểm tra và gán các giá trị thuộc tính còn thiếu, nh ng đòi hỏi chi phí cao và rất tẻ nhạt
- Gán giá trị tự động b i máy tính:
+ Gán giá trị mặc định
+ Gán giá trị trung bình c a thuộc tính đó.
+ Gán giá trị có thể xảy ra nhất – dựa theo ph ơng pháp xác suất d) Giải pháp khi dữ liệu ch a nhiễu/lỗi
Phân khoảng (binning) là kỹ thuật sắp xếp dữ liệu và phân chia thành các khoảng (bins) có tần suất xuất hiện tương tự nhau Sau khi chia, mỗi khoảng dữ liệu có thể được mô tả bằng các giá trị đại diện như trung bình, trung vị, hoặc các giới hạn của các giá trị nằm trong khoảng đó Quá trình này giúp giản lược dữ liệu, làm nổi bật các xu hướng và đặc điểm thống kê tổng quan, từ đó hỗ trợ phân tích dữ liệu và ra quyết định hiệu quả.
- Hồi quy (regression): Gắn dữ liệu với một hàm hồi quy
- Phân cụm (clustering): Phát hiện và loại bỏ các ngoại lai (sau khi đư xác định các cụm)
Việc kết hợp giữa máy tính và kiểm tra của con người cho phép hệ thống tự động phát hiện các giá trị nghi ngờ và cảnh báo kịp thời Những giá trị này được máy tính nhận diện và trình bày để con người rà soát lại, nhằm xác thực tính đúng đắn và an toàn của dữ liệu Quá trình kiểm tra chéo này tận dụng ưu thế của tự động hóa để xử lý nhanh thông tin, đồng thời nhờ sự can thiệp của con người để giảm thiểu sai lệch và tăng độ tin cậy của kết quả.
Tích h ợ p d ữ li ệ u (data integration)
Tích hợp dữ liệu là quá trình trộn dữ liệu từ các nguồn khác nhau vào một kho dữ liệu có sẵn cho quá trình khai phá dữ liệu
Khi tích hợp cần xác định thực thể từ nhiều nguồn dữ liệu để tránh d thừa dữ liệu Ví dụ: Bill Clinton ≡ B.Clinton
Việc dư thừa dữ liệu thường xuyên xảy ra khi tích hợp nhiều nguồn dữ liệu khác nhau Cùng một thuộc tính hoặc cùng một đối tượng có thể được đặt tên khác nhau giữa các nguồn cơ sở dữ liệu, làm phức tạp quá trình ghép nối và gia tăng nguy cơ trùng lặp thông tin Dữ liệu có thể được suy ra từ các thuộc tính của bảng này sang bảng khác, dẫn đến dư thừa và mâu thuẫn dữ liệu Các thuộc tính dư thừa có thể được phát hiện và loại bỏ bằng phân tích tương quan giữa chúng, từ đó cải thiện chất lượng dữ liệu và tối ưu hóa quá trình khai thác thông tin.
Phát hiện và xử lý các mâu thuẫn về giá trị dữ liệu: Đối với cùng một thực thể trên thực tế, các giá trị thuộc tính từ nhiều nguồn khác nhau có thể khác nhau do cách biểu diễn, phương pháp đánh giá hoặc thang đo khác nhau Để đảm bảo tính nhất quán và độ tin cậy của dữ liệu, cần nhận diện mâu thuẫn, phân tích nguyên nhân và chuẩn hóa dữ liệu về một định dạng chuẩn, đánh giá độ tin cậy của từng nguồn, sau đó áp dụng quy tắc hòa giải dữ liệu hoặc kỹ thuật tích hợp dữ liệu để kết hợp các giá trị lại thành một bản ghi thống nhất.
Yêu cầu chung đối với quá trình tích hợp dữ liệu là giảm thiểu tối đa dữ liệu thừa và các mâu thuẫn, nhằm tránh chồng chéo và bất nhất thông tin Việc tối ưu hóa quá trình tích hợp dữ liệu giúp tăng tốc độ khai phá dữ liệu và nâng cao chất lượng các kết quả tri thức thu được từ quá trình khai phá.
Bi ến đổ i d ữ li ệ u (data transformation)
Biến đổi dữ liệu là quá trình chuyển toàn bộ tập giá trị của một thuộc tính sang một tập giá trị thay thế, sao cho mỗi giá trị cũ được ánh xạ tương ứng với một giá trị mới Quá trình này đóng vai trò quan trọng trong tiền xử lý dữ liệu và khai thác dữ liệu, giúp chuẩn hóa, làm sạch và đồng nhất dữ liệu để tăng chất lượng phân tích Việc biến đổi có thể thực hiện bằng nhiều phương pháp như thay thế giá trị, ghép nhóm hoặc ánh xạ mã, nhằm đảm bảo tính nhất quán và dễ dàng cho các bước xử lý tiếp theo Nhờ biến đổi dữ liệu, các mô hình phân tích và hệ thống lưu trữ có hiệu suất cao hơn, đồng thời tối ưu hóa quá trình xử lý và khai thác thông tin từ dữ liệu.
Các ph ơng pháp biến đổi dữ liệu:
- Làm trơn (smoothing): Loại bỏ nhiễu/lỗi khỏi dữ liệu
- Kết hợp (aggregation): Sự tóm tắt dữ liệu, xây dựng các khối dữ liệu
- Khái quát hóa (generalization): Xây dựng các phân cấp khái niệm
- Chuẩn hóa (normalization): Đ a các giá trị về một khoảng đ ợc chỉđịnh + Chuẩn hóa min-max, giá trị mới nằm khoảng [new_min i , new_max i ]
+ Chuẩn hóa z-score, với μi , σi : giá trị trung bình và độ lệch chuẩn c a thuộc tính i
+ Chuẩn hóa b i thang chia 10, với j là giá trị số nguyên nhỏ nhất sao cho: max({v new }) Y, trong đó X, Y là các tập mục
- Tổng số hỗ trợ (support count)- kí hiệu σ : là số lần xuất hiện c a một tập mục Ví dụ: σ({Milk, Bread, Diaper}) = 2
- Độ hỗ trợ (support)- kí hiệu s: là tỷ lệ các giao dịch ch a cả X và Y đối với tất cả các giao dịch Ví dụ: s({Milk, Diaper, Beer}) = 2/5
- Độ tin cậy (confidence) – kí hiệu c: là tỷ lệ các giao dịch ch a cả X và Y đối với các giao dịch ch a X Ví dụ: c({Milk, Diaper, Beer}) = 2/3
- Tập mục th ng xuyên (frequent/large itemset): là tập mục mà độ hỗ trợ lớn hơn hoặc bằng một giá trịng ỡng minsup.
Phát hi ệ n lu ậ t k ế t h ợ p
Với một tập các giao dịch T, mục đích c a bài toán phát hiện luật kết hợp là tìm ra tất cả các luật có:
- Độ hỗ trợ s ≥ giá trịng ỡng minsup, và
- Độ tin cậy ≥ giá trịng ỡng minconf
Cách tiếp cận vét cạn (Brute-force):
- Liệt kê tất cả các luật kết hợp có thể
- Tính toán độ hỗ trợvà độ tin cậy cho mỗi luật
- Loại bỏ đi các luật có độ hỗ trợ nhỏ hơn minsup hoặc có độ tin cậy nhỏ hơn minconf.
=> Ph ơng pháp vét cạn này có chi phí tính toán quá lớn, không áp dụng đ ợc trong thực tế
Xét tập mục: {Milk, Diaper, Beer}
{Milk, Diaper} → {Beer} (s=0.4,c=0.67) {Milk, Beer} → {Diaper} (s=0.4, c=1.0)
{Diaper, Beer} → {Milk} (s=0.4,c=0.67) {Beer} → {Milk, Diaper} (s=0.4, c=0.67) {Diaper} → {Milk Beer} (s , c=0.5) {Milk} → {Diaper, Beer} (s=0.4, c=0.5)
Ta thấy tất cả các luật trên đều là sự phân tách (thành 2 tập con) c a cùng tập mục : {Milk, Diaper, Beer}
Các luật sinh ra từ cùng một tập mục sẽ có cùng độ hỗ trợ, nh ng có thể khác vềđộ tin cậy
Do đó, trong quá trình phát hiện luật kết hợp, chúng ta có thể tách riêng 2 yêu cầu vềđộ hỗ trợ và độ tin cậy
Vây nên quá trình phát hiện luật kết hợp sẽ phân gồm 2 b ớc (2 giai đoạn) quan trọng:
- Sinh ra các tập mục th ng xuyên (frequent/large itemsets): Sinh ra tất cả các tập mục có độ hỗ trợ≥ minsup
- Sinh ra các luật kết hợp: Từ mỗi tập mục th ng xuyên (thu đ ợc b ớc trên), sinh ra tất cả các luật có độ tin cậy cao( ≥ minconf)
Tuy vậy, b ớc sinh ra các tập mục th ng xuyên (b ớc 1) vẫn có chi phí tính toán quá cao
Với d mục, thì phải xét đến 2 d các tập mục có thể
L ợc đồ biểu diễn các tập mục cần xét, với d = 5
Với ph ơng pháp vét cạn(Brute-force) để sinh ra các tập mục th ng xuyên (b ớc 1):
Hình 1.6.2_Sinh tập mục thường xuyên bằng phương pháp vét cạn
- Mỗi tập mục trong l ợc đồđều đ ợc xét
- Tính độ hỗ trợ c a mỗi tập mục, bằng cách duyệt qua tất cả các giao dịch
- Với mỗi giao dịch, so sánh nó với mỗi tập mục đ ợc xét
- Độ ph c tạp ~ O(N.M.w) Nếu M = 2 d thì độ ph c tạp này là quá lớn
1.6.3 Các chiến l ợc sinh tập th ờng xuyên
Dựa vào các phân tích mục 1.6.2, ta có các chiến l ợc:
- Giảm bớt sốl ợng các tập mục cần xét (M): Tìm kiếm (xét) đầy đ M = 2 d Sau đó, sử dụng các kỹ thuật cắt tỉa để giảm giá trị M
- Giảm bớt số l ợng các giao dịch cần xét (N): Giảm giá trị N, khi kích th ớc (số l ợng các mục) c a tập mục tăng lên.
Giảm số lượng so sánh giữa các tập mục và các giao dịch (NM) bằng cách sử dụng các cấu trúc dữ liệu phù hợp và hiệu quả để lưu trữ các tập mục cần xét hoặc các giao dịch Việc này tối ưu hóa quá trình xử lý dữ liệu và giảm chi phí tính toán, vì không cần so sánh từng tập mục với mọi giao dịch mà chỉ tập trung vào các cặp có khả năng phù hợp nhờ cấu trúc dữ liệu được tối ưu.
Từ các chiến l ợc ta xét 2 giải thuật cơ bản:
- Giải thuật Apriori (đ ợc trình bày mục 3.1)
FP-Growth biểu diễn dữ liệu c a các giao dịch bằng một cấu trúc dữ liệu gọi là FP –tree
FP-Growth sử dụng cấu trúc FP-tree để xác định trực tiếp các tập mục th ng xuyên
Biểu diễn bằng FP-tree:
- Với mỗi giao dịch, FP-tree xây dựng một đ ng đi (path) trong cây.
Trong khai thác dữ liệu giao dịch, khi hai giao dịch chứa một số mục giống nhau, đường đi của chúng sẽ có phần chung Càng nhiều giao dịch có phần chung này, việc biểu diễn bằng FP-tree sẽ càng gọn và hiệu quả hơn, giúp giảm dư thừa và tiết kiệm không gian lưu trữ Kết quả là FP-tree cho phép khai thác các mẫu hay xuất hiện một cách nhanh chóng và tối ưu hơn nhờ chia sẻ phần chung giữa các đường đi.
Khi FP-tree có kích thước đủ nhỏ để lưu trữ trong bộ nhớ làm việc, FP-Growth có thể xác định trực tiếp các tập thường xuyên từ FP-tree được lưu trữ trong bộ nhớ Điều này giúp quá trình khai thác các tập hợp thường xuyên diễn ra nhanh chóng và hiệu quả hơn so với các phương pháp phải quét dữ liệu nhiều lần Vì FP-tree được nắm giữ trong bộ nhớ, FP-Growth tận dụng cấu trúc nén và thứ tự xuất hiện của các mục để xác định các tập hợp phổ biến một cách tối ưu.
- Ban đầu, FP-tree chỉ ch a duy nhất nút gốc (đ ợc biểu diễn b i ký hiệu null)
- Cơ s dữ liệu các giao dịch đ ợc duyệt lần th 1, đểxác định (tính) độ hỗ trợ c a mỗi mục
- Các mục không th ng xuyên bị loại bỏ
- Các mục th ng xuyên đ ợc sắp xếp theo th tự giảm dần về độ hỗ trợ
- Cơ s dữ liệu các giao dịch đ ợc duyệt lần th 2, để xậy dựng FP-tree
Ví dụ: Xây dựng FP-tree
Sinh các tập mục th ng xuyên:
- FP-Growth sinh các tập mục th ng xuyên trực tiếp từ FP-tree từ m c lá đến m c gốc (bottom-up)
Vì mỗi giao dịch được biểu diễn bằng một đường đi trong FP-tree, ta có thể xác định các tập mục có mặt trong FP-tree và thông qua đó khai thác các tập mục một cách hiệu quả Bằng cách duyệt các đường đi chứa một mục cụ thể (ví dụ: E), ta có thể xác định được các tập mục kết thúc bằng mục đó, từ đó tối ưu hoá quá trình khai thác và sinh các quy tắc liên kết dựa trên FP-tree Quá trình này giúp rút ngắn không gian lưu trữ và tăng hiệu suất khám phá các tập mục phổ biến trên dữ liệu giao dịch.
Gi ả i thu ậ t FP-Growth
FP-Growth biểu diễn dữ liệu c a các giao dịch bằng một cấu trúc dữ liệu gọi là FP –tree
FP-Growth sử dụng cấu trúc FP-tree để xác định trực tiếp các tập mục th ng xuyên
Biểu diễn bằng FP-tree:
- Với mỗi giao dịch, FP-tree xây dựng một đ ng đi (path) trong cây.
- Hai giao dịch có ch a cùng một số mục, thì đ ng đi c a chúng sẽ có phần (đoạn) chung Càng nhiều các đ ng đi có các phần chung, thì việc biểu diễn bằng FP-tree sẽ càng gọn
- Nếu kích th ớc c a FP-tree đ nhỏ có thể l u trữ trong bộ nhớ làm việc, thì giải thuật FP-Growth có thể xác định các tập th ng xuyên trực tiếp từ FP-tree l u trong bộ nhớ
- Ban đầu, FP-tree chỉ ch a duy nhất nút gốc (đ ợc biểu diễn b i ký hiệu null)
- Cơ s dữ liệu các giao dịch đ ợc duyệt lần th 1, đểxác định (tính) độ hỗ trợ c a mỗi mục
- Các mục không th ng xuyên bị loại bỏ
- Các mục th ng xuyên đ ợc sắp xếp theo th tự giảm dần về độ hỗ trợ
- Cơ s dữ liệu các giao dịch đ ợc duyệt lần th 2, để xậy dựng FP-tree
Ví dụ: Xây dựng FP-tree
Sinh các tập mục th ng xuyên:
- FP-Growth sinh các tập mục th ng xuyên trực tiếp từ FP-tree từ m c lá đến m c gốc (bottom-up)
Trong FP-tree, mỗi giao dịch được biểu diễn dưới dạng một đường đi trên cây, giúp nén và tổ chức các tập dữ liệu giao dịch thành các tập mục Ta có thể xác định các tập mục phổ biến bằng cách duyệt các đường đi kết thúc bằng một mục cụ thể (ví dụ E); qua đó, các đường đi chứa mục đó cho phép xác định các tập mục và tính hỗ trợ của chúng Quá trình này là nền tảng của khai thác tập mục liên tục trong FP-Growth, giúp nhận diện nhanh các itemset có tần suất xuất hiện đáng kể và tối ưu hóa quá trình khai thác dữ liệu giao dịch.
Ch ơng 2 ng dụng c a khai phá dữ liệu
H ỗ tr ợ ra quy ết đị nh nh ậ p kho trong siêu th ị
Gi ớ i thi ệ u v ề bài toán
Để phân tích dữ liệu, ta sử dụng dữ liệu về mặt hàng quạt máy tại một siêu thị sau một năm kinh doanh và tiến hành đồ thị hóa lượng quạt theo tháng, với trục hoành là tháng và trục tung là sản lượng tương ứng Qua biểu đồ kinh doanh này, ta xác định được một dạng đồ thị thích hợp để biểu diễn gần đúng sự biến thiên của dữ liệu Trong năm kế tiếp, dạng đồ thị này được áp dụng lại để dự đoán số lượng quạt khách hàng sẽ mua, dựa trên khuynh hướng đã xác định Việc áp dụng mô hình dự báo này giúp người quản lý lên kế hoạch nhập hàng quạt một cách hiệu quả, đảm bảo đáp ứng tốt nhất nhu cầu khách hàng và tối ưu hóa tồn kho.
Đánh giá c a th ầ y sau khi gi ớ i thi ệ u v ề bài toán
Trong buổi trình bày bằng slide về nội dung đề tài ứng dụng khai phá dữ liệu nhằm hỗ trợ quyết định quản lý kho và đáp ứng nhu cầu khách hàng, thầy đã có nhận xét sau phần trình bày Việc sử dụng hồi quy dữ liệu để dự báo nhu cầu nhập mặt hàng quạt máy được cho là không phù hợp với mục tiêu bài toán; nhóm tập trung giới thiệu cách khai thác pattern từ một mô hình để khi pattern đó xuất hiện lần sau, ta có thể dự đoán cách thức diễn biến của nó dựa trên các lần xuất hiện trước đây Đồng thời, nên duy trì đầy đủ các trường dữ liệu liên quan đến chi tiết ngày để tăng độ chính xác của thuật toán và tránh bỏ bớt thông tin quan trọng.
Ti ế p th ị chéo
Gi ớ i thi ệ u v ề bài toán
Trong một cửa hàng bán lẻ, người quản lý có nhiều cách sắp xếp vị trí sản phẩm dựa trên hành vi mua sắm của khách hàng Thực tế cho thấy khi khách hàng mua sản phẩm A, họ thường có xu hướng mua thêm các sản phẩm liên quan như B, C, D, tạo thành những cụm hàng được mua chung với nhau Vì vậy, người quản lý cần phân tích giỏ hàng của khách qua các giao dịch để rút ra các quy luật mua sắm, từ đó sắp xếp lại các mặt hàng sao cho những mặt hàng được mua trước sau đó ở gần nhau, giúp khách hàng di chuyển ngắn hơn, tăng khả năng gợi ý mua hàng và đẩy mạnh doanh số Để thực hiện điều này, có thể áp dụng khai phá luật kết hợp (association rule mining) nhằm tìm ra các mối quan hệ mua sắm có ý nghĩa và tối ưu bố cục hàng hóa, từ đó nâng cao hiệu quả kinh doanh.
Ví dụ: Cửa hàng bán lẻ trích ra một số giao dịch mà khách hàng đư thực hiện trong lịch sử giao dịch tr ớc đây c a cửa hàng
Sau khi tiến hành áp dụng một giải thuật khai phá luật kết hợp (vd:Apriori) thì ta đ ợc bảng Frequent Itemset nh sau:
Theo bảng quy trình, người quản lý cửa hàng bán lẻ sẽ yêu cầu nhân viên bố trí các sản phẩm thuộc Itemset ở cùng một hàng, hoặc đặt gần nhau trong cùng một gian hàng, nhằm tạo sự thuận tiện cho người mua và kích thích nhu cầu tiêu dùng Việc sắp xếp sản phẩm liên quan như vậy không chỉ giúp khách hàng dễ dàng tìm thấy các mặt hàng liên quan mà còn gia tăng cơ hội mua sắm chéo, từ đó tối ưu doanh số và cải thiện trải nghiệm mua sắm tại cửa hàng.
Ch ơng 3 Giải thuật Apriori
Trong ch ơng này trình bày giải thuật Apriori c a Luật kết hợp, đ a ra các đánh giá và biện pháp cải tiến cho giải thuật.
Gi ả i thu ậ t Apriori
Quá trình sinh ra luật kết hợp được chia thành hai bước chính: bước đầu tiên là sinh ra các tập thường xuyên, và bước thứ hai là sinh ra các luật kết hợp từ các tập này Mục 1.6.3 cho thấy bước đầu tiên của quá trình rất phức tạp, đòi hỏi phân tích sâu để xác định các tập thường xuyên có ý nghĩa Thuật toán Apriori được giới thiệu như một phương pháp nhằm làm giảm độ phức tạp của bước này bằng cách khai thác mối liên hệ giữa các tập thường xuyên và các luật kết hợp, từ đó tối ưu hóa quá trình khai thác luật kết hợp.
Nguyên tắc c a giải thuật Apriori – Loại bỏ dựa trên độ hỗ trợ:
- Nếu một tập mục là th ng xuyên, thì tất cả các tập con (subsets) c a nó đều là các tập mục th ng xuyên
- Nếu một tập mục là không th ng xuyên (not frequent) thì tất cả các tập cha (supersets) c a nó đều là các tập mục không th ng xuyên
Nguyên tắc c a giải thuật Apriori dựa trên đặc tính không đơn điệu (anti- monotone) c a độ hỗ trợ:
L ợc đồ biểu diễn các tập mục cần xét đ ợc loại bỏ bớt theo độ hỗ trợ
Ví dụ: Loại bỏ dựa trên độ hỗ trợ minsup = 3
1- Sinh ra tất cả các tập mục th ng xuyên m c 1(frequent 1-itemsets) 2- Gán k =1
3- Lặp lại, cho đến khi không có thêm bất kỳ tập mục th ng xuyên nào mới
3.1- Từ các tập mục th ng xuyên m c k, sinh ra các tập mục m c (k+1) cần xét
3.2- Loại bỏ các tập mục m c k+1 ch a các tập con là các tập mục không th ng xuyên m c k
3.3- Tính độ hỗ trợ c a các tập mục m c k+1, bằng cách duyệt qua tất cả các giao dịch
3.4- Loại bỏ các tập mục không th ng xuyên m c k+1
3.5- Thu đ ợc các tập mục th ng xuyên m c k+1
4- Với mỗi tập mục th ng (I) thu đ ợc, sinh ra tất cả các tập con (B) không rỗng
5- Với mỗi tập B, sinh ra các luật kết hợp: B (I-B)
6- Với mỗi luật kết hợp, duyệt qua tất cả các giao dịch Chọn các luật có độ tin cậy(c) ≥ minconf
Có các luật kết hợp sau:
Với frequent itemsets I ={B,C,E}, min_conf % Ta có 2 luật kết hợp là:{B,C} =>{E}; {C,E} =>{B}.
Đánh giá giả i thu ậ t Apriori
Việc lựa chọn ngưỡng minsup là yếu tố then chốt trong khai phá tập mục Minsup quá thấp sẽ sinh ra nhiều tập mục thông dụng, làm tăng số lượng tập mục phải xét và làm giảm hiệu quả tính toán Ngược lại, minsup quá cao có thể bỏ sót các tập mục quan trọng Vì vậy, cần cân nhắc giữa độ phủ dữ liệu và hiệu suất xử lý bằng cách thiết lập minsup hợp lý dựa trên tính chất dữ liệu và mục tiêu phân tích, nhằm tối ưu kết quả khai phá và tiết kiệm tài nguyên tính toán.
Trong cơ sở dữ liệu giao dịch, số lượng mục càng nhiều đồng nghĩa với việc cần thêm bộ nhớ để lưu trữ giá trị độ hỗ trợ cho mỗi mục Khi số lượng mục liên tục tăng lên, chi phí lưu trữ và chi phí I/O (duyệt và xử lý giao dịch) cũng tăng theo, ảnh hưởng đến hiệu suất và chi phí vận hành của hệ thống.
Kích thước của cơ sở dữ liệu chứa các giao dịch là yếu tố ảnh hưởng trực tiếp đến hiệu suất của giải thuật Apriori Thuật toán này buộc phải duyệt cơ sở dữ liệu nhiều lần để xác định các tập mục phổ biến, vì vậy chi phí tính toán của Apriori tăng lên khi số lượng giao dịch càng nhiều Do đó, khi số lượng giao dịch tăng lên, khối lượng dữ liệu phải xử lý càng lớn, dẫn tới thời gian xử lý lâu hơn và hiệu suất giảm đi.
Kích thước trung bình của các giao dịch tăng lên, tức là mỗi giao dịch chứa nhiều mục hơn Khi đó, độ dài tối đa của các tập mục thường xuyên cũng tăng theo, cho thấy dữ liệu giao dịch có xu hướng sinh ra các tập mục dài hơn và sự phức tạp khi khai thác các tập mục này cũng tăng lên.
So sánh giữa giải thuật Apriori và giải thuật FP-Growth
Biểu đồ: Độ hỗ trợ - Th i gian chạy
Biểu đồ: Sốl ợng giao dịch - Th i gian chạy
Các c ả i ti ế n c a gi ả i thu ậ t Apriori
Kỹ thuật dựa trên bảng băm (hash-based technique): Một k-itemset ng với hashing bucket count nhỏ hơn minimum support threshold không là một frequent itemset
Giảm giao dịch (transaction reduction): Một giao dịch không ch a frequent k-itemset nào thì không cần kiểm tra các lần sau (cho k+1-itemset)
Phân hoạch (partitioning): Một itemset phải frequent trong ít nhất một phân hoạch thì mới có thể frequent trong toàn bộ tập dữ liệu
Lấy mẫu (sampling) là kỹ thuật khai phá dữ liệu nhằm khai thác chỉ một tập con dữ liệu trước với ngưỡng hỗ trợ (support threshold) thấp hơn và yêu cầu một phương pháp xác định tính toàn diện (completeness) của kết quả Đếm itemset động (dynamic itemset counting) là quá trình chỉ thêm các itemset dự tuyển khi tất cả các tập con của chúng được dự đoán là frequent, từ đó tối ưu hóa hiệu suất và độ chính xác của quá trình khai phá dữ liệu.
Ch ơng 4 Demo giải thuật Apriori
Hi ệ n th ự c gi ả i thu ậ t Apriori
Giải thuật Apriori cải tiến được hiện thực dựa trên cấu trúc dữ liệu bảng băm và giảm số lần quét dữ liệu giao dịch, nhằm tăng tốc quá trình khai thác các tập phổ biến trên tập dữ liệu lớn Toàn bộ dữ liệu được truy xuất trực tiếp từ database để đảm bảo tính nhất quán và hiệu suất truy vấn Trong khuôn khổ phần a) Ngôn ngữ và công cụ sử dụng, bài viết nêu rõ các lựa chọn ngôn ngữ lập trình, thư viện và công cụ hỗ trợ triển khai giải thuật Apriori cải tiến này.
Ngôn ngữ sử dụng : Java.
Kết nối database: sử dụng th viện mysql-connector-java-5.1.14-bin.jar Giao diện: sử dụng th viện Swing. b) Giải Thích Code
Ch ơng trình đ ợc viết với 4 class chính, sau đây là mô tả cho từng class:
1-Class “node”: ch a các thông tin key, count, next đ ợc dùng đểl u các thông tin c a các item hoặc 1 tập các item
2-Class “pushData”: đây là class có hàm: getInput với tham sốđầu vào là username, password c a database, và file dùng để import vào database
3-Class “getHash”: Đây là class chính, ch a các hàm con, thực thi giải thuật apriori cải tiến
Namedb: tên database cần lấy danh sách database
Trả về danh sách các database hiện có trong sever
Data: tên c a database cần lấy data
Trả về một mảng node các item và count c a mỗi item sau khi đư quét toàn bộ database
C: là mảng node các key và count c a key đó.
Minsub: độ hỗ trợmà ng i dùng nhập
Trả về một danh sách các node có độ hỗ trợ lớn hơn minSub.
L: là danh sách các node mà mỗi node với key là một item
Count: th tự tập c a c a L k+1 sẽđ ợc sinh ra tiếp theo từ tập Ck Vì key là 1 item => count = 2;
Trả về một bảng băm trong đó khóa (key) là một chuỗi đại diện cho tập các phần tử được ghép lại với nhau bằng dấu phẩy, ví dụ '123,987' Mỗi nút có thể chứa một key và trường đếm (count) cho key đó được khởi tạo bằng 0 khi bảng được tạo.
L: là danh sách các node mà mỗi node với key gồm nhiều item
Count: th tự tập c a c a L k+1 sẽđ ợc sinh ra tiếp theo từ tập Ck Vì key gồm nhiều item => count > 2;
Trả về một bảng băm trong đó key đại diện cho một tập hợp các phần tử của các item được ngăn cách bằng dấu phẩy, ví dụ (123,987) Các nút chưa có key và count của key đó được khởi tạo bằng 0.
+ Input: hasTable: bảng băm với key là một th ng xuyên, và value là node Count: th tự c a tập L
Trả về một danh sách node từ bảng băm, sau khi đư quét qua database.
L: là danh sách các node, với mỗi node là một tập th ng xuyên + Output:
Trả về một danh sách c a một danh sách, ch a các luật đ ợc sinh ra, nh ng ch a so sánh với độ hỗ trợ
L: là danh sách c a một danh sách, ch a các luật ch a đ ợc so sánh với độ hỗ trợ
MinCon: độ hỗ trợ tối thiểu c a các luật
Trả về một danh sách c a một sanh sách, với một danh sách là một luật thỏa mưn độ hỗ trợ tối thiểu
4-Class “AppAprioriImprove”: đây là class ch a giao diện đồ họa, để thao tác với ng i dùng, gồm các sự kiện:
+ Input: username và password c a database c a ng i dùng
Nếu kết nối thành công, hiện ra danh sách các database có trong server combobox c a name Data
Kết nối lỗi, hiện thông báo, và yêu cầu ng i dùng nhập lại
Username và password c a database getFile: tên file cần import vào database
NameData: tên database cần import vào
Import dữ liệu vào database thành công , xuất hiện thông báo import to database successful
- jButton5ActionPerformed : t ơng tự nh sự kiện jButton4ActionPerformed
Username và password c a ng i dùng nameData: cần khai phá
Min Support và Min Confidence do ng i dùng nhập vào
Xuất ra các tập th ng xuyên thỏa độ MinSup, và các luật thỏa
H ớ ng d ẫ n s ữ d ụ ng demo
Cài đặt môi tr ng
Cài đặt bộ jdk c a java, có thể download từ : http://www.oracle.com/technetwork/java/javase/downloads/index.html
Cài đặt MySQL, đây giới thiệu dung bộ Wamp Server, có thể download từ : http://www.wampserver.com/en/
Sử dụng th viện kết nối database MySQL: mysql-connector-java-5.1.14- bin.jar
Sử dụng th viện tổ hợp ra một tập từ một danh sách : combinatoricslib-2.0.jar
ng d ụ ng
a) Import Data từ File dữ liệu
Kh i chạy file AppAprioriImprove.jar, hiện thị giao diện:
Chọn Tab “import Data” , nhập user name và password c a Database Nếu User name hoặc password sai, thì sẽ báo lỗi connect to database, và băt ng i dùng nhập lại
Nhập đúng Username và Password, sẽ hiện ra danh sách các database
Chọn File, và sau đó nhấn Import, sẽ import file vào database, với bảng
“Transaction”, Có hiện File Log
Xuất log ra file tại đường dẫn cố định E:\logPushToData.txt để ghi nhận hoạt động và lỗi hệ thống Đường dẫn này là cố định; nếu máy không có ổ đĩa E:, quá trình sẽ gặp lỗi và bạn cần khởi động lại ứng dụng Tiếp theo, chạy Giải Thuật Apriori cải tiến trên cơ sở dữ liệu vừa được import để khai thác các mẫu dữ liệu phổ biến.
Chọn Tab Apriori Improve Nhập User name và password t ơng tự nh import data
Chọn Data để chạy Giải thuật, l u ý Data phải ch a bảng “Transaction”.
Để nhập tham số, Min Support phải là một số nguyên dương (> 0) và Min Confidence phải là một số thực thuộc khoảng 0 < MinCon < 1 Nếu nhập sai, chương trình sẽ hiển thị thông báo lỗi và bắt bạn phải nhập lại cho đến khi hai tham số hợp lệ được xác nhận.
Sau nhập đúng input, chọn Start Ch ơng trình chạy và xuất ra kết quả
Nếu muốn Export kết quả, chọn “Export Result”, ch ơng trình sẽ mặt định l u file kết quả vào “E:\Result_GenRule.txt”.
Ch ơng 5 Đánh giá tổng kết
u điể m
Hiểu và triển khai thành công thuật toán Apriori bằng các cải tiến quan trọng, trong đó dùng cấu trúc dữ liệu bảng băm để giảm số giao dịch và rút ngắn thời gian chạy của thuật toán Đồng thời, tăng tốc độ xử lý bằng cách nạp toàn bộ dữ liệu vào database và thực hiện mọi truy vấn trực tiếp từ database Ứng dụng có giao diện trực quan, dễ sử dụng, cho phép người dùng khám phá và khai thác các quy tắc phổ biến từ dữ liệu một cách nhanh chóng và hiệu quả.
Nh ợc điể m
Ch a tìm đ ợc cách kiểm tra tính đúng đắn c a các luật kết hợp, là kết quả c a ng dụng
Chưa hiện thực việc loại bỏ các luật kết hợp khi chúng không có tính khả dụng trong thực tế Ứng dụng vẫn chưa thể hiện thanh trạng thái cho quá trình xử lý dữ liệu ở dạng trực quan dành cho người dùng, khiến trải nghiệm khó theo dõi tiến độ và trạng thái hệ thống Để cải thiện hiệu suất và sự minh bạch, cần triển khai giao diện hiển thị trạng thái xử lý dữ liệu bằng thanh trạng thái trực quan và rà soát các luật kết hợp để loại bỏ khi không còn khả thi.